From d0fe9712b9551c33cb8273dc7415b54478383c87 Mon Sep 17 00:00:00 2001 From: satish Date: Wed, 22 Jul 2026 18:09:13 +0530 Subject: [PATCH 01/10] Update Cart.js --- actions/common/Cart.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actions/common/Cart.js b/actions/common/Cart.js index 23f9cce..9188073 100644 --- a/actions/common/Cart.js +++ b/actions/common/Cart.js @@ -8,7 +8,7 @@ * Unless required by applicable law or agreed to in writing, software distributed under * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS * OF ANY KIND, either express or implied. See the License for the specific language - * governing permissions and limitations under the License. + * governing permissions and limitations under the License * ******************************************************************************/ From 43da6f23cf422bb91db3bc29ed5f778affd20a84 Mon Sep 17 00:00:00 2001 From: satish Date: Wed, 22 Jul 2026 18:10:57 +0530 Subject: [PATCH 02/10] Update Cart.js --- actions/common/Cart.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/actions/common/Cart.js b/actions/common/Cart.js index 9188073..1227970 100644 --- a/actions/common/Cart.js +++ b/actions/common/Cart.js @@ -8,7 +8,7 @@ * Unless required by applicable law or agreed to in writing, software distributed under * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS * OF ANY KIND, either express or implied. See the License for the specific language - * governing permissions and limitations under the License + * governing permissions and limitations under the License. * ******************************************************************************/ @@ -47,7 +47,7 @@ class Cart { /** * Converts some cart data from the 3rd-party commerce system into the Magento GraphQL format. - * Properties that require some extra data fetching with the 3rd-party system must have dedicated getters + * Properties that require some extra data fetching with the 3rd-party system must have dedicated getter * in this class. * * @param {Object} data From d6d6ddda103a5c424c97f0781f3a39e98d47ca7d Mon Sep 17 00:00:00 2001 From: del60718 Date: Wed, 22 Jul 2026 19:27:35 +0530 Subject: [PATCH 03/10] fixing existing issue plus adding github actions --- .github/codecov.yml | 14 ++++++++ .github/workflows/ci.yml | 58 ++++++++++++++++++++++++++++++ .github/workflows/deploy_prod.yml | 6 ++-- .github/workflows/deploy_stage.yml | 7 ++-- .github/workflows/pr_test.yml | 6 ++-- 5 files changed, 84 insertions(+), 7 deletions(-) create mode 100644 .github/codecov.yml create mode 100644 .github/workflows/ci.yml diff --git a/.github/codecov.yml b/.github/codecov.yml new file mode 100644 index 0000000..0e1e8e7 --- /dev/null +++ b/.github/codecov.yml @@ -0,0 +1,14 @@ +coverage: + status: + project: + default: + enabled: true + target: 80% + threshold: null + base: auto + patch: + default: + enabled: true + target: 80% + threshold: null + base: auto diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..3ad5532 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,58 @@ +name: CI + +# Mirrors the CircleCI 'build' job so GitHub Actions runs the same pipeline: install +# dependencies, run the lint + unit tests with coverage, and upload coverage to Codecov. +# CircleCI is kept in parallel for now and will be removed once this fully replaces it. +on: + push: + branches: + - '**' + +env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + name: build + runs-on: ubuntu-latest + permissions: + contents: read + checks: write + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '12' + cache: npm + + - name: Install + run: npm install + + - name: Test + run: npm test + + # On a test failure only, publish a "Tests" check with the failed tests, their error + # message and stack trace (reads the Mocha JUnit report). Green runs show nothing. + - name: Publish test results + if: failure() + uses: mikepenz/action-junit-report@v5 + with: + check_name: Tests + report_paths: 'test/results/**/*.xml' + skip_success_summary: true + fail_on_failure: false + + - name: Upload coverage to Codecov + if: success() + uses: codecov/codecov-action@v6 + with: + files: coverage/lcov.info + fail_ci_if_error: false diff --git a/.github/workflows/deploy_prod.yml b/.github/workflows/deploy_prod.yml index 7b3e41d..444f979 100644 --- a/.github/workflows/deploy_prod.yml +++ b/.github/workflows/deploy_prod.yml @@ -3,6 +3,7 @@ name: AIO App CI on: release: types: [released] + jobs: deploy: name: Deploy to Prod @@ -14,11 +15,12 @@ jobs: os: [ubuntu-latest] steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} + cache: npm - name: npm install run: npm i - name: Setup CLI diff --git a/.github/workflows/deploy_stage.yml b/.github/workflows/deploy_stage.yml index 3d39fc5..bd2bc79 100644 --- a/.github/workflows/deploy_stage.yml +++ b/.github/workflows/deploy_stage.yml @@ -1,4 +1,4 @@ -name: AIO App CI +name: Deploy to Stage on: push: @@ -15,11 +15,12 @@ jobs: os: [ubuntu-latest] steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} + cache: npm - name: npm install run: npm i - name: Setup CLI diff --git a/.github/workflows/pr_test.yml b/.github/workflows/pr_test.yml index 1a7ec1e..57a8951 100644 --- a/.github/workflows/pr_test.yml +++ b/.github/workflows/pr_test.yml @@ -1,6 +1,7 @@ name: AIO App CI on: [pull_request] + jobs: test: name: Test PR @@ -11,11 +12,12 @@ jobs: os: [macOS-latest, ubuntu-latest, windows-latest] steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} + cache: npm - name: npm install run: npm i - name: Setup CLI From b90d7555d98dbd2438c000afb57b37004d1375ed Mon Sep 17 00:00:00 2001 From: del60718 Date: Wed, 22 Jul 2026 19:39:18 +0530 Subject: [PATCH 04/10] fixing existing issue plus adding github actions --- .github/workflows/pr_test.yml | 2 +- actions/common/Cart.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr_test.yml b/.github/workflows/pr_test.yml index 57a8951..e862ec1 100644 --- a/.github/workflows/pr_test.yml +++ b/.github/workflows/pr_test.yml @@ -9,7 +9,7 @@ jobs: strategy: matrix: node-version: ['12'] - os: [macOS-latest, ubuntu-latest, windows-latest] + os: [macos-13, ubuntu-latest, windows-latest] steps: - name: Checkout uses: actions/checkout@v4 diff --git a/actions/common/Cart.js b/actions/common/Cart.js index 1227970..23f9cce 100644 --- a/actions/common/Cart.js +++ b/actions/common/Cart.js @@ -47,7 +47,7 @@ class Cart { /** * Converts some cart data from the 3rd-party commerce system into the Magento GraphQL format. - * Properties that require some extra data fetching with the 3rd-party system must have dedicated getter + * Properties that require some extra data fetching with the 3rd-party system must have dedicated getters * in this class. * * @param {Object} data From 7f7c5553837983697c74309cde42876b67f2b786 Mon Sep 17 00:00:00 2001 From: del60718 Date: Thu, 23 Jul 2026 22:22:53 +0530 Subject: [PATCH 05/10] node upgrade --- .github/workflows/deploy_prod.yml | 2 +- .github/workflows/deploy_stage.yml | 2 +- .github/workflows/pr_test.yml | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy_prod.yml b/.github/workflows/deploy_prod.yml index 444f979..bf2e4fc 100644 --- a/.github/workflows/deploy_prod.yml +++ b/.github/workflows/deploy_prod.yml @@ -11,7 +11,7 @@ jobs: strategy: max-parallel: 1 matrix: - node-version: ['12'] + node-version: ['18'] os: [ubuntu-latest] steps: - name: Checkout diff --git a/.github/workflows/deploy_stage.yml b/.github/workflows/deploy_stage.yml index bd2bc79..089b38b 100644 --- a/.github/workflows/deploy_stage.yml +++ b/.github/workflows/deploy_stage.yml @@ -11,7 +11,7 @@ jobs: strategy: max-parallel: 1 matrix: - node-version: ['12'] + node-version: ['18'] os: [ubuntu-latest] steps: - name: Checkout diff --git a/.github/workflows/pr_test.yml b/.github/workflows/pr_test.yml index e862ec1..de66d34 100644 --- a/.github/workflows/pr_test.yml +++ b/.github/workflows/pr_test.yml @@ -7,8 +7,9 @@ jobs: name: Test PR runs-on: ${{ matrix.os }} strategy: + fail-fast: false matrix: - node-version: ['12'] + node-version: ['18'] os: [macos-13, ubuntu-latest, windows-latest] steps: - name: Checkout From dc39ce4ea90f0aa63e6020adee645070c5336a43 Mon Sep 17 00:00:00 2001 From: del60718 Date: Thu, 23 Jul 2026 22:38:11 +0530 Subject: [PATCH 06/10] os upgrade --- .github/workflows/pr_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr_test.yml b/.github/workflows/pr_test.yml index de66d34..8bb4697 100644 --- a/.github/workflows/pr_test.yml +++ b/.github/workflows/pr_test.yml @@ -10,7 +10,7 @@ jobs: fail-fast: false matrix: node-version: ['18'] - os: [macos-13, ubuntu-latest, windows-latest] + os: [macos-latest, ubuntu-latest, windows-latest] steps: - name: Checkout uses: actions/checkout@v4 From 3a833222fef2d0f8de0fe7a086ec8a934e3d962e Mon Sep 17 00:00:00 2001 From: del60718 Date: Thu, 23 Jul 2026 22:49:00 +0530 Subject: [PATCH 07/10] python fix for os latest mac --- .github/workflows/pr_test.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/pr_test.yml b/.github/workflows/pr_test.yml index 8bb4697..e804f25 100644 --- a/.github/workflows/pr_test.yml +++ b/.github/workflows/pr_test.yml @@ -21,6 +21,13 @@ jobs: cache: npm - name: npm install run: npm i + # aio-cli 8.x bundles an old node-gyp that imports distutils, removed from + # Python 3.12+. Pin Python 3.11 so native deps (e.g. @parcel/watcher) build + # on runners that compile from source (macOS arm64). + - name: Use Python 3.11 + uses: actions/setup-python@v5 + with: + python-version: '3.11' - name: Setup CLI uses: adobe/aio-cli-setup-action@1.1.0 with: From c2a511fd701cac22d58f27b4a7aa904750af97ce Mon Sep 17 00:00:00 2001 From: del60718 Date: Fri, 24 Jul 2026 17:35:31 +0530 Subject: [PATCH 08/10] SITES-46903: add tsconfig.json to fix aio app build webpack resolver aio-cli's action bundler now searches for a tsconfig.json when resolving every module; this pure-JS repo had none, so webpack threw ENOENT node_modules/tsconfig.json. A minimal root tsconfig.json satisfies it. Co-Authored-By: Claude Opus 4.8 --- tsconfig.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 tsconfig.json diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..ed52fe9 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "allowJs": true, + "checkJs": false, + "target": "ES2019", + "module": "commonjs", + "moduleResolution": "node", + "esModuleInterop": true, + "resolveJsonModule": true + }, + "include": ["actions/**/*.js"], + "exclude": ["node_modules"] +} From 79870c91a4dd65145076a3b040a14bd62ea59de7 Mon Sep 17 00:00:00 2001 From: del60718 Date: Fri, 24 Jul 2026 17:45:10 +0530 Subject: [PATCH 09/10] deleteing tsconfig file --- tsconfig.json | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 tsconfig.json diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index ed52fe9..0000000 --- a/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "compilerOptions": { - "baseUrl": ".", - "allowJs": true, - "checkJs": false, - "target": "ES2019", - "module": "commonjs", - "moduleResolution": "node", - "esModuleInterop": true, - "resolveJsonModule": true - }, - "include": ["actions/**/*.js"], - "exclude": ["node_modules"] -} From de6306fb33b9553a194427dcd2c49f882ee859c5 Mon Sep 17 00:00:00 2001 From: del60718 Date: Fri, 24 Jul 2026 18:22:07 +0530 Subject: [PATCH 10/10] proper failure fix --- actions/common/RemoteResolverFetcher.js | 27 +- actions/local/dispatcher.js | 165 ++++--- package-lock.json | 595 ++++++++++++++++++++---- package.json | 4 +- 4 files changed, 625 insertions(+), 166 deletions(-) diff --git a/actions/common/RemoteResolverFetcher.js b/actions/common/RemoteResolverFetcher.js index 5d11f95..cb67f17 100644 --- a/actions/common/RemoteResolverFetcher.js +++ b/actions/common/RemoteResolverFetcher.js @@ -18,21 +18,34 @@ const openwhisk = require('openwhisk'); const { print } = require('graphql'); /** - * This class implements a GraphQL Fetcher that can be used with the graphql-tools - * library to query a remote GraphQL endpoint deployed in an Adobe I/O Runtime action. + * This class implements a GraphQL Executor that can be used with the @graphql-tools/wrap + * library (introspectSchema/wrapSchema) to query a remote GraphQL endpoint deployed in an + * Adobe I/O Runtime action. */ class RemoteResolverFetcher { constructor(actionName) { this.actionName = actionName; // We export a method which MUST be bound to the object - // because it's not going to be called with 'this.fetcher()' - this.fetcher = this.__fetch.bind(this); + // because it's not going to be called with 'this.executor()' + this.executor = this.__execute.bind(this); } - __fetch(params) { - let query = print(params.query); // Convert from AST to String + __execute(params) { + let query = print(params.document); // Convert from AST to String let context = params.context ? params.context.graphqlContext : null; + + // Derive the operation name from the first named OperationDefinition in the document + let operationName = null; + if (params.document && Array.isArray(params.document.definitions)) { + let operationDefinition = params.document.definitions.find( + (definition) => definition.kind === 'OperationDefinition' && definition.name && definition.name.value + ); + if (operationDefinition) { + operationName = operationDefinition.name.value; + } + } + let ow = openwhisk(); return ow.actions.invoke({ actionName: this.actionName, @@ -41,7 +54,7 @@ class RemoteResolverFetcher { params: { query, variables: params.variables, - operationName: params.operationName, + operationName, context } }); diff --git a/actions/local/dispatcher.js b/actions/local/dispatcher.js index e0ac3bd..9c5e88d 100644 --- a/actions/local/dispatcher.js +++ b/actions/local/dispatcher.js @@ -19,8 +19,10 @@ const libState = require('@adobe/aio-lib-state'); const { errorResponse, stringParameters } = require('../utils'); const magentoSchema = require('../resources/magento-schema-2.4.3ee.min.json'); -const { makeRemoteExecutableSchema, introspectSchema, mergeSchemas } = require('graphql-tools'); -const { graphql, printSchema } = require('graphql'); +const { wrapSchema, introspectSchema } = require('@graphql-tools/wrap'); +const { stitchSchemas } = require('@graphql-tools/stitch'); +const { addResolversToSchema } = require('@graphql-tools/schema'); +const { graphql, printSchema, buildSchema } = require('graphql'); const { Products, CategoryTree } = require('../common/Catalog.js'); const ProductsLoader = require('../common/ProductsLoader.js'); @@ -30,6 +32,52 @@ const RemoteResolverFetcher = require('../common/RemoteResolverFetcher.js'); let cachedSchema = null; +// Local resolvers for the executable local schema. They resolve the local root fields and read the +// per-request dataloaders from the GraphQL execution context so that caching is shared across the +// local root fields of a single query. +const localResolvers = { + Query: { + products: (source, args, context) => { + return new Products({ + search: args, + graphqlContext: context, + actionParameters: args, + productsLoader: context.productsLoader, + categoryTreeLoader: context.categoryTreeLoader + }); + }, + category: (source, args, context) => { + return new CategoryTree({ + categoryId: args.id, + graphqlContext: context, + actionParameters: args, + categoryTreeLoader: context.categoryTreeLoader, + productsLoader: context.productsLoader + }); + }, + categoryList: (source, args, context) => { + // returns an Array of categories + let categoryId = args.filters.ids + ? args.filters.ids.eq + : args.filters.url_key + ? args.filters.url_key.eq + : 1; + return [ + new CategoryTree({ + categoryId: categoryId, + graphqlContext: context, + actionParameters: args, + categoryTreeLoader: context.categoryTreeLoader, + productsLoader: context.productsLoader + }) + ]; + }, + customAttributeMetadata: () => { + return null; // Not supported by example integration + } + } +}; + async function resolve(params) { const logger = Core.Logger('dispatcher', { level: params.LOG_LEVEL || 'info' @@ -63,23 +111,39 @@ async function resolve(params) { return Promise.all(remoteResolvers) .then(async (remotes) => { if (cachedSchema == null) { - let remoteExecutableSchemas = [localSchema()]; + // The local schema is made executable by attaching resolvers that resolve the local + // root fields ("products", "category", ...). The resolvers read the per-request + // dataloaders from the GraphQL execution context (see below). + let local = localSchema(); + let localOrder = local.sortOrder; + let localExecutableSchema = addResolversToSchema({ + schema: local, + resolvers: localResolvers + }); + localExecutableSchema.sortOrder = localOrder; + + let subschemas = [localExecutableSchema]; if (params.remoteSchemas) { let cachedSchemas = []; remotes.forEach((remote) => { - let remoteExecutableSchema = makeRemoteExecutableSchema({ - schema: remote.schema, - fetcher: remote.fetcher + // When loaded from the aio-lib-state cache, the remote schema is an SDL + // string and must be rebuilt into a GraphQLSchema before being wrapped. + let remoteSchema = + typeof remote.schema === 'string' ? buildSchema(remote.schema) : remote.schema; + + let remoteExecutableSchema = wrapSchema({ + schema: remoteSchema, + executor: remote.executor }); remoteExecutableSchema.sortOrder = remote.order; - remoteExecutableSchemas.push(remoteExecutableSchema); + subschemas.push(remoteExecutableSchema); // We store the remote schemas in SDL form in the aio-lib-state cache if (storeSchema) { cachedSchemas.push({ - schema: printSchema(remote.schema), + schema: printSchema(remoteSchema), action: remote.action, order: remote.order }); @@ -95,69 +159,35 @@ async function resolve(params) { } } - let finalSchema = mergeSchemas({ - schemas: remoteExecutableSchemas, + // Sort the subschemas by ascending sort order so that, on type conflicts, + // the schema with the lowest sort order wins (see onTypeConflict). + subschemas.sort((a, b) => a.sortOrder - b.sortOrder); + + let finalSchema = stitchSchemas({ + subschemas: subschemas, onTypeConflict: onTypeConflict }); cachedSchema = finalSchema; // eslint-disable-line require-atomic-updates } - // Passed to all resolver actions, can for example contain an authentication token - let context = { - dummy: 'Can be some authentication token' - }; - - // We instantiate some loaders common to the "products" and "category" resolvers + // We instantiate some loaders common to the "products" and "category" resolvers. + // They are passed to the local resolvers through the GraphQL execution context so that + // caching/deduplication is shared across all the local root fields of a single query. let categoryTreeLoader = new CategoryTreeLoader(params); let productsLoader = new ProductsLoader(params); - // Local resolvers object - let resolvers = { - products: (params, context) => { - return new Products({ - search: params, - graphqlContext: context, - actionParameters: params, - productsLoader: productsLoader, - categoryTreeLoader: categoryTreeLoader - }); - }, - category: (params, context) => { - return new CategoryTree({ - categoryId: params.id, - graphqlContext: context, - actionParameters: params, - categoryTreeLoader: categoryTreeLoader, - productsLoader: productsLoader - }); - }, - categoryList: (params, context) => { - // returns an Array of categories - let categoryId = params.filters.ids - ? params.filters.ids.eq - : params.filters.url_key - ? params.filters.url_key.eq - : 1; - return [ - new CategoryTree({ - categoryId: categoryId, - graphqlContext: context, - actionParameters: params, - categoryTreeLoader: categoryTreeLoader, - productsLoader: productsLoader - }) - ]; - }, - customAttributeMetadata: () => { - return null; // Not supported by example integration - } + // Passed to all resolver actions, can for example contain an authentication token + let context = { + dummy: 'Can be some authentication token', + productsLoader: productsLoader, + categoryTreeLoader: categoryTreeLoader }; // convert variables parameter to JSON object (requiered for GET requests) const variables = typeof (params.variables) === 'string' ? JSON.parse(params.variables) : params.variables; // Main resolver action, partially delegating resolution to the "remote schemas" - return graphql(cachedSchema, params.query, resolvers, context, variables, params.operationName).then( + return graphql(cachedSchema, params.query, {}, context, variables, params.operationName).then( (response) => { logger.info(`successful request`); return { @@ -174,12 +204,15 @@ async function resolve(params) { } /** - * When merging schemas, this method keeps the data of the schema with lowest order. - * The parameters are automatically passed by the graphql-tools library. + * When stitching schemas, this method keeps the data of the schema with the lowest sort order. + * + * The subschemas passed to stitchSchemas are sorted by ascending sortOrder, and stitchSchemas + * resolves type conflicts by reducing the type candidates in subschema order (left = earlier + * candidate = lowest sortOrder). Keeping the "left" candidate therefore preserves the original + * "lowest sortOrder wins" merge priority. */ -function onTypeConflict(left, right, info) { - let diff = info.left.schema.sortOrder - info.right.schema.sortOrder; - return diff <= 0 ? left : right; +function onTypeConflict(left) { + return left; } /** @@ -192,11 +225,11 @@ function prepareRemoteSchemaFetchers(remoteSchemas) { // Get all resolver actions to fetch the remote schemas dynamically return Object.values(remoteSchemas).map((resolver) => { console.debug(`Preparing remote schema fetcher for action ${resolver.action}`); - let fetcher = new RemoteResolverFetcher(resolver.action).fetcher; - return introspectSchema(fetcher).then((schema) => { + let executor = new RemoteResolverFetcher(resolver.action).executor; + return introspectSchema(executor).then((schema) => { return Promise.resolve({ schema, - fetcher, + executor, order: resolver.order, action: resolver.action }); @@ -217,7 +250,7 @@ async function fetchRemoteSchemasFromCache(state) { return schemas.value.map((obj) => { return Promise.resolve({ schema: obj.schema, - fetcher: new RemoteResolverFetcher(obj.action).fetcher, + executor: new RemoteResolverFetcher(obj.action).executor, order: obj.order }); }); diff --git a/package-lock.json b/package-lock.json index f63f9e4..de84979 100644 --- a/package-lock.json +++ b/package-lock.json @@ -569,6 +569,21 @@ } } }, + "@ardatan/aggregate-error": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@ardatan/aggregate-error/-/aggregate-error-0.0.6.tgz", + "integrity": "sha512-vyrkEHG1jrukmzTPtyWB4NLPauUw5bQeg4uhn8f+1SSynmrOcyvlb1GKQjjgoBzElLdfXCRYX8UnBlhklOHYRQ==", + "requires": { + "tslib": "~2.0.1" + }, + "dependencies": { + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + } + } + }, "@azure/abort-controller": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.0.4.tgz", @@ -1768,6 +1783,67 @@ "meros": "^1.1.4" } }, + "@graphql-tools/batch-delegate": { + "version": "6.2.6", + "resolved": "https://registry.npmjs.org/@graphql-tools/batch-delegate/-/batch-delegate-6.2.6.tgz", + "integrity": "sha512-QUoE9pQtkdNPFdJHSnBhZtUfr3M7pIRoXoMR+TG7DK2Y62ISKbT/bKtZEUU1/2v5uqd5WVIvw9dF8gHDSJAsSA==", + "requires": { + "@graphql-tools/delegate": "^6.2.4", + "dataloader": "2.0.0", + "tslib": "~2.0.1" + }, + "dependencies": { + "@graphql-tools/delegate": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-6.2.4.tgz", + "integrity": "sha512-mXe6DfoWmq49kPcDrpKHgC2DSWcD5q0YCaHHoXYPAOlnLH8VMTY8BxcE8y/Do2eyg+GLcwAcrpffVszWMwqw0w==", + "requires": { + "@ardatan/aggregate-error": "0.0.6", + "@graphql-tools/schema": "^6.2.4", + "@graphql-tools/utils": "^6.2.4", + "dataloader": "2.0.0", + "is-promise": "4.0.0", + "tslib": "~2.0.1" + } + }, + "@graphql-tools/utils": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-6.2.4.tgz", + "integrity": "sha512-ybgZ9EIJE3JMOtTrTd2VcIpTXtDrn2q6eiYkeYMKRVh3K41+LZa6YnR2zKERTXqTWqhobROwLt4BZbw2O3Aeeg==", + "requires": { + "@ardatan/aggregate-error": "0.0.6", + "camel-case": "4.1.1", + "tslib": "~2.0.1" + } + }, + "camel-case": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.1.tgz", + "integrity": "sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==", + "requires": { + "pascal-case": "^3.1.1", + "tslib": "^1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "dataloader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.0.0.tgz", + "integrity": "sha512-YzhyDAwA4TaQIhM5go+vCLmU0UikghC/t9DTQYZR2M/UvZ1MdOhPezSDZcjj9uqQJOMqjLcpWtyW2iNINdlatQ==" + }, + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + } + } + }, "@graphql-tools/batch-execute": { "version": "8.3.1", "resolved": "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-8.3.1.tgz", @@ -1804,6 +1880,56 @@ "value-or-promise": "1.0.11" }, "dependencies": { + "@graphql-tools/merge": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.1.tgz", + "integrity": "sha512-BMm99mqdNZbEYeTPK3it9r9S6rsZsQKtlqJsSBknAclXq2pGEfOxjcIZi+kBSkHZKPKCRrYDd5vY0+rUmIHVLg==", + "requires": { + "@graphql-tools/utils": "8.9.0", + "tslib": "^2.4.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.9.0.tgz", + "integrity": "sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg==", + "requires": { + "tslib": "^2.4.0" + } + }, + "tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + } + } + }, + "@graphql-tools/schema": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.5.1.tgz", + "integrity": "sha512-0Esilsh0P/qYcB5DKQpiKeQs/jevzIadNTaT0jeWklPMwNbT7yMX4EqZany7mbeRRlSRwMzNzL5olyFdffHBZg==", + "requires": { + "@graphql-tools/merge": "8.3.1", + "@graphql-tools/utils": "8.9.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.9.0.tgz", + "integrity": "sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg==", + "requires": { + "tslib": "^2.4.0" + } + }, + "tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + } + } + }, "dataloader": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.0.0.tgz", @@ -1886,6 +2012,17 @@ "tslib": "~2.3.0" }, "dependencies": { + "@graphql-tools/schema": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.1.tgz", + "integrity": "sha512-3R0AJFe715p4GwF067G5i0KCr/XIdvSfDLvTLEiTDQ8V/hwbOHEKHKWlEBHGRQwkG5lwFQlW1aOn7VnlPERnWQ==", + "requires": { + "@graphql-tools/merge": "^8.2.1", + "@graphql-tools/utils": "^8.5.1", + "tslib": "~2.3.0", + "value-or-promise": "1.0.11" + } + }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -1918,20 +2055,184 @@ } }, "@graphql-tools/schema": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.1.tgz", - "integrity": "sha512-3R0AJFe715p4GwF067G5i0KCr/XIdvSfDLvTLEiTDQ8V/hwbOHEKHKWlEBHGRQwkG5lwFQlW1aOn7VnlPERnWQ==", + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-6.2.4.tgz", + "integrity": "sha512-rh+14lSY1q8IPbEv2J9x8UBFJ5NrDX9W5asXEUlPp+7vraLp/Tiox4GXdgyA92JhwpYco3nTf5Bo2JDMt1KnAQ==", "requires": { - "@graphql-tools/merge": "^8.2.1", - "@graphql-tools/utils": "^8.5.1", - "tslib": "~2.3.0", - "value-or-promise": "1.0.11" + "@graphql-tools/utils": "^6.2.4", + "tslib": "~2.0.1" }, "dependencies": { + "@graphql-tools/utils": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-6.2.4.tgz", + "integrity": "sha512-ybgZ9EIJE3JMOtTrTd2VcIpTXtDrn2q6eiYkeYMKRVh3K41+LZa6YnR2zKERTXqTWqhobROwLt4BZbw2O3Aeeg==", + "requires": { + "@ardatan/aggregate-error": "0.0.6", + "camel-case": "4.1.1", + "tslib": "~2.0.1" + } + }, + "camel-case": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.1.tgz", + "integrity": "sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==", + "requires": { + "pascal-case": "^3.1.1", + "tslib": "^1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + } + } + }, + "@graphql-tools/stitch": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/@graphql-tools/stitch/-/stitch-6.2.4.tgz", + "integrity": "sha512-0C7PNkS7v7iAc001m7c1LPm5FUB0/DYw+s3OyCii6YYYHY8NwdI0roeOyeDGFJkFubWBQfjc3hoSyueKtU73mw==", + "requires": { + "@graphql-tools/batch-delegate": "^6.2.4", + "@graphql-tools/delegate": "^6.2.4", + "@graphql-tools/merge": "^6.2.4", + "@graphql-tools/schema": "^6.2.4", + "@graphql-tools/utils": "^6.2.4", + "@graphql-tools/wrap": "^6.2.4", + "is-promise": "4.0.0", + "tslib": "~2.0.1" + }, + "dependencies": { + "@graphql-tools/delegate": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-6.2.4.tgz", + "integrity": "sha512-mXe6DfoWmq49kPcDrpKHgC2DSWcD5q0YCaHHoXYPAOlnLH8VMTY8BxcE8y/Do2eyg+GLcwAcrpffVszWMwqw0w==", + "requires": { + "@ardatan/aggregate-error": "0.0.6", + "@graphql-tools/schema": "^6.2.4", + "@graphql-tools/utils": "^6.2.4", + "dataloader": "2.0.0", + "is-promise": "4.0.0", + "tslib": "~2.0.1" + } + }, + "@graphql-tools/merge": { + "version": "6.2.17", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-6.2.17.tgz", + "integrity": "sha512-G5YrOew39fZf16VIrc49q3c8dBqQDD0ax5LYPiNja00xsXDi0T9zsEWVt06ApjtSdSF6HDddlu5S12QjeN8Tow==", + "requires": { + "@graphql-tools/schema": "^8.0.2", + "@graphql-tools/utils": "8.0.2", + "tslib": "~2.3.0" + }, + "dependencies": { + "@graphql-tools/merge": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.1.tgz", + "integrity": "sha512-BMm99mqdNZbEYeTPK3it9r9S6rsZsQKtlqJsSBknAclXq2pGEfOxjcIZi+kBSkHZKPKCRrYDd5vY0+rUmIHVLg==", + "requires": { + "@graphql-tools/utils": "8.9.0", + "tslib": "^2.4.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.9.0.tgz", + "integrity": "sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg==", + "requires": { + "tslib": "^2.4.0" + } + }, + "tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + } + } + }, + "@graphql-tools/schema": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.5.1.tgz", + "integrity": "sha512-0Esilsh0P/qYcB5DKQpiKeQs/jevzIadNTaT0jeWklPMwNbT7yMX4EqZany7mbeRRlSRwMzNzL5olyFdffHBZg==", + "requires": { + "@graphql-tools/utils": "8.9.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.9.0.tgz", + "integrity": "sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg==", + "requires": { + "tslib": "^2.4.0" + } + }, + "tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + } + } + }, + "@graphql-tools/utils": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.0.2.tgz", + "integrity": "sha512-gzkavMOgbhnwkHJYg32Adv6f+LxjbQmmbdD5Hty0+CWxvaiuJq+nU6tzb/7VSU4cwhbNLx/lGu2jbCPEW1McZQ==", + "requires": { + "tslib": "~2.3.0" + } + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, + "@graphql-tools/utils": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-6.2.4.tgz", + "integrity": "sha512-ybgZ9EIJE3JMOtTrTd2VcIpTXtDrn2q6eiYkeYMKRVh3K41+LZa6YnR2zKERTXqTWqhobROwLt4BZbw2O3Aeeg==", + "requires": { + "@ardatan/aggregate-error": "0.0.6", + "camel-case": "4.1.1", + "tslib": "~2.0.1" + } + }, + "camel-case": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.1.tgz", + "integrity": "sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==", + "requires": { + "pascal-case": "^3.1.1", + "tslib": "^1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "dataloader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.0.0.tgz", + "integrity": "sha512-YzhyDAwA4TaQIhM5go+vCLmU0UikghC/t9DTQYZR2M/UvZ1MdOhPezSDZcjj9uqQJOMqjLcpWtyW2iNINdlatQ==" + }, + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" } } }, @@ -1961,6 +2262,134 @@ "ws": "^8.3.0" }, "dependencies": { + "@graphql-tools/batch-execute": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-8.5.1.tgz", + "integrity": "sha512-hRVDduX0UDEneVyEWtc2nu5H2PxpfSfM/riUlgZvo/a/nG475uyehxR5cFGvTEPEQUKY3vGIlqvtRigzqTfCew==", + "requires": { + "@graphql-tools/utils": "8.9.0", + "dataloader": "2.1.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.9.0.tgz", + "integrity": "sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg==", + "requires": { + "tslib": "^2.4.0" + } + }, + "tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + } + } + }, + "@graphql-tools/merge": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.1.tgz", + "integrity": "sha512-BMm99mqdNZbEYeTPK3it9r9S6rsZsQKtlqJsSBknAclXq2pGEfOxjcIZi+kBSkHZKPKCRrYDd5vY0+rUmIHVLg==", + "requires": { + "@graphql-tools/utils": "8.9.0", + "tslib": "^2.4.0" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.9.0.tgz", + "integrity": "sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg==", + "requires": { + "tslib": "^2.4.0" + } + }, + "tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + } + } + }, + "@graphql-tools/schema": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.5.1.tgz", + "integrity": "sha512-0Esilsh0P/qYcB5DKQpiKeQs/jevzIadNTaT0jeWklPMwNbT7yMX4EqZany7mbeRRlSRwMzNzL5olyFdffHBZg==", + "requires": { + "@graphql-tools/merge": "8.3.1", + "@graphql-tools/utils": "8.9.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + }, + "dependencies": { + "@graphql-tools/utils": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.9.0.tgz", + "integrity": "sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg==", + "requires": { + "tslib": "^2.4.0" + } + }, + "tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + } + } + }, + "@graphql-tools/wrap": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-8.5.1.tgz", + "integrity": "sha512-KpVVfha2wLSpE08YLX0jeo5nXPfDLASlxOqMlvfa/B4X8SOVmuLyN1L5YZ132tPLDF93uflwlHFnUO5ahpRNlA==", + "requires": { + "@graphql-tools/delegate": "8.8.1", + "@graphql-tools/schema": "8.5.1", + "@graphql-tools/utils": "8.9.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + }, + "dependencies": { + "@graphql-tools/delegate": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-8.8.1.tgz", + "integrity": "sha512-NDcg3GEQmdEHlnF7QS8b4lM1PSF+DKeFcIlLEfZFBvVq84791UtJcDj8734sIHLukmyuAxXMfA1qLd2l4lZqzA==", + "requires": { + "@graphql-tools/batch-execute": "8.5.1", + "@graphql-tools/schema": "8.5.1", + "@graphql-tools/utils": "8.9.0", + "dataloader": "2.1.0", + "tslib": "~2.4.0", + "value-or-promise": "1.0.11" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "@graphql-tools/utils": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.9.0.tgz", + "integrity": "sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg==", + "requires": { + "tslib": "^2.4.0" + } + }, + "tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + } + } + }, + "dataloader": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.1.0.tgz", + "integrity": "sha512-qTcEYLen3r7ojZNgVUaRggOI+KM7jrKxXeSHhogh/TWxYMeONEMqY+hmkobiYQozsGIyg9OYVzO4ZIfoB4I0pQ==" + }, "tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", @@ -1989,21 +2418,65 @@ } }, "@graphql-tools/wrap": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-8.3.2.tgz", - "integrity": "sha512-7DcOBFB+Dd84x9dxSm7qS4iJONMyfLnCJb8A19vGPffpu4SMJ3sFcgwibKFu5l6mMUiigKgXna2RRgWI+02bKQ==", + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-6.2.4.tgz", + "integrity": "sha512-cyQgpybolF9DjL2QNOvTS1WDCT/epgYoiA8/8b3nwv5xmMBQ6/6nYnZwityCZ7njb7MMyk7HBEDNNlP9qNJDcA==", "requires": { - "@graphql-tools/delegate": "^8.4.2", - "@graphql-tools/schema": "^8.3.1", - "@graphql-tools/utils": "^8.5.3", - "tslib": "~2.3.0", - "value-or-promise": "1.0.11" + "@graphql-tools/delegate": "^6.2.4", + "@graphql-tools/schema": "^6.2.4", + "@graphql-tools/utils": "^6.2.4", + "is-promise": "4.0.0", + "tslib": "~2.0.1" }, "dependencies": { + "@graphql-tools/delegate": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-6.2.4.tgz", + "integrity": "sha512-mXe6DfoWmq49kPcDrpKHgC2DSWcD5q0YCaHHoXYPAOlnLH8VMTY8BxcE8y/Do2eyg+GLcwAcrpffVszWMwqw0w==", + "requires": { + "@ardatan/aggregate-error": "0.0.6", + "@graphql-tools/schema": "^6.2.4", + "@graphql-tools/utils": "^6.2.4", + "dataloader": "2.0.0", + "is-promise": "4.0.0", + "tslib": "~2.0.1" + } + }, + "@graphql-tools/utils": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-6.2.4.tgz", + "integrity": "sha512-ybgZ9EIJE3JMOtTrTd2VcIpTXtDrn2q6eiYkeYMKRVh3K41+LZa6YnR2zKERTXqTWqhobROwLt4BZbw2O3Aeeg==", + "requires": { + "@ardatan/aggregate-error": "0.0.6", + "camel-case": "4.1.1", + "tslib": "~2.0.1" + } + }, + "camel-case": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.1.tgz", + "integrity": "sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==", + "requires": { + "pascal-case": "^3.1.1", + "tslib": "^1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "dataloader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.0.0.tgz", + "integrity": "sha512-YzhyDAwA4TaQIhM5go+vCLmU0UikghC/t9DTQYZR2M/UvZ1MdOhPezSDZcjj9uqQJOMqjLcpWtyW2iNINdlatQ==" + }, "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" } } }, @@ -2584,14 +3057,6 @@ } } }, - "@wry/equality": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.1.9.tgz", - "integrity": "sha512-mB6ceGjpMGz1ZTza8HYnrPGos2mC6So4NhS1PtZ8s4Qt0K7fBiIGhpSxUbQmhwcSWE3no+bYxmI2OL6KuXYmoQ==", - "requires": { - "tslib": "^1.9.3" - } - }, "@wry/trie": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.3.1.tgz", @@ -2723,28 +3188,6 @@ "picomatch": "^2.0.4" } }, - "apollo-link": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.13.tgz", - "integrity": "sha512-+iBMcYeevMm1JpYgwDEIDt/y0BB7VWyvlm/7x+TIPNLHCTCMgcEgDuW5kH86iQZWo0I7mNwQiTOz+/3ShPFmBw==", - "requires": { - "apollo-utilities": "^1.3.0", - "ts-invariant": "^0.4.0", - "tslib": "^1.9.3", - "zen-observable-ts": "^0.8.20" - } - }, - "apollo-utilities": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.2.tgz", - "integrity": "sha512-JWNHj8XChz7S4OZghV6yc9FNnzEXj285QYp/nLNh943iObycI5GTDO3NGR9Dth12LRrSFMeDOConPfPln+WGfg==", - "requires": { - "@wry/equality": "^0.1.2", - "fast-json-stable-stringify": "^2.0.0", - "ts-invariant": "^0.4.0", - "tslib": "^1.9.3" - } - }, "append-transform": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", @@ -3634,11 +4077,6 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, - "deprecated-decorator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz", - "integrity": "sha1-AJZjF7ehL+kvPMgx91g68ym4bDc=" - }, "diagnostics": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz", @@ -4322,7 +4760,8 @@ "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true }, "fast-levenshtein": { "version": "2.0.6", @@ -4802,18 +5241,6 @@ } } }, - "graphql-tools": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-3.1.1.tgz", - "integrity": "sha512-yHvPkweUB0+Q/GWH5wIG60bpt8CTwBklCSzQdEHmRUgAdEQKxw+9B7zB3dG7wB3Ym7M7lfrS4Ej+jtDZfA2UXg==", - "requires": { - "apollo-link": "^1.2.2", - "apollo-utilities": "^1.0.1", - "deprecated-decorator": "^0.1.6", - "iterall": "^1.1.3", - "uuid": "^3.1.0" - } - }, "graphql-ws": { "version": "5.5.5", "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-5.5.5.tgz", @@ -5297,6 +5724,11 @@ "integrity": "sha512-056IzLiWHdgVd6Eq1F9HtJl+cIkvi5X2MJ/A1fjQtByHkzQE1wGardnPhqrarOGDF88BOW+297X7PDvZ2vcyVg==", "dev": true }, + "is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" + }, "is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -7899,14 +8331,6 @@ "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" }, - "ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", - "requires": { - "tslib": "^1.9.3" - } - }, "ts-node": { "version": "9.1.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", @@ -8075,7 +8499,8 @@ "uuid": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", - "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", + "dev": true }, "v8-compile-cache": { "version": "2.3.0", @@ -8453,20 +8878,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" - }, - "zen-observable": { - "version": "0.8.14", - "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.14.tgz", - "integrity": "sha512-kQz39uonEjEESwh+qCi83kcC3rZJGh4mrZW7xjkSQYXkq//JZHTtKo+6yuVloTgMtzsIWOJrjIrKvk/dqm0L5g==" - }, - "zen-observable-ts": { - "version": "0.8.20", - "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.20.tgz", - "integrity": "sha512-2rkjiPALhOtRaDX6pWyNqK1fnP5KkJJybYebopNSn6wDG1lxBoFs2+nwwXKoA6glHIrtwrfBBy6da0stkKtTAA==", - "requires": { - "tslib": "^1.9.3", - "zen-observable": "^0.8.0" - } } } } diff --git a/package.json b/package.json index 999b981..ede99b2 100644 --- a/package.json +++ b/package.json @@ -16,11 +16,13 @@ "@adobe/aio-lib-state": "1.1.2", "@adobe/aio-sdk": "3.0.0", "@adobe/exc-app": "0.2.47", + "@graphql-tools/schema": "^6.2.4", + "@graphql-tools/stitch": "^6.2.4", + "@graphql-tools/wrap": "^6.2.4", "core-js": "3.20.3", "dataloader": "1.4.0", "graphiql": "1.5.16", "graphql": "14.7.0", - "graphql-tools": "3.1.1", "prop-types": "15.8.1", "react": "17.0.2", "react-dom": "17.0.2",