From 026ef498f3f519e2ecdb0c7b2d4227f1a31c755a Mon Sep 17 00:00:00 2001 From: Scott Dixon Date: Fri, 27 Oct 2023 12:07:04 +1000 Subject: [PATCH 01/18] Add Admin API client package --- packages/admin-api-client/.eslintrc.cjs | 17 + packages/admin-api-client/.gitignore | 18 + packages/admin-api-client/README.md | 243 +++++++++++ packages/admin-api-client/babel.config.json | 10 + packages/admin-api-client/package.json | 110 +++++ packages/admin-api-client/rollup.config.cjs | 101 +++++ .../admin-api-client/src/admin-api-client.ts | 138 ++++++ packages/admin-api-client/src/constants.ts | 11 + packages/admin-api-client/src/index.ts | 1 + .../src/tests/admin-api-client.test.ts | 408 ++++++++++++++++++ .../admin-api-client/src/tests/setupTests.ts | 1 + packages/admin-api-client/src/types.ts | 40 ++ .../src/utilities/api-versions.ts | 46 ++ .../admin-api-client/src/utilities/index.ts | 2 + .../src/utilities/validations.ts | 48 +++ packages/admin-api-client/tsconfig.build.json | 4 + .../admin-api-client/tsconfig.build.umd.json | 7 + packages/admin-api-client/tsconfig.json | 17 + tsconfig.base.json | 3 +- 19 files changed, 1224 insertions(+), 1 deletion(-) create mode 100644 packages/admin-api-client/.eslintrc.cjs create mode 100644 packages/admin-api-client/.gitignore create mode 100644 packages/admin-api-client/README.md create mode 100644 packages/admin-api-client/babel.config.json create mode 100644 packages/admin-api-client/package.json create mode 100644 packages/admin-api-client/rollup.config.cjs create mode 100644 packages/admin-api-client/src/admin-api-client.ts create mode 100644 packages/admin-api-client/src/constants.ts create mode 100644 packages/admin-api-client/src/index.ts create mode 100644 packages/admin-api-client/src/tests/admin-api-client.test.ts create mode 100644 packages/admin-api-client/src/tests/setupTests.ts create mode 100644 packages/admin-api-client/src/types.ts create mode 100644 packages/admin-api-client/src/utilities/api-versions.ts create mode 100644 packages/admin-api-client/src/utilities/index.ts create mode 100644 packages/admin-api-client/src/utilities/validations.ts create mode 100644 packages/admin-api-client/tsconfig.build.json create mode 100644 packages/admin-api-client/tsconfig.build.umd.json create mode 100644 packages/admin-api-client/tsconfig.json diff --git a/packages/admin-api-client/.eslintrc.cjs b/packages/admin-api-client/.eslintrc.cjs new file mode 100644 index 000000000..e290079e1 --- /dev/null +++ b/packages/admin-api-client/.eslintrc.cjs @@ -0,0 +1,17 @@ +module.exports = { + extends: "../../.eslintrc.cjs", + overrides: [ + { + files: ["**/*.cjs"], + env: { + node: true, + }, + }, + { + files: ["**/*.test.ts"], + rules: { + "@typescript-eslint/ban-ts-comment": 0, + }, + }, + ], +}; diff --git a/packages/admin-api-client/.gitignore b/packages/admin-api-client/.gitignore new file mode 100644 index 000000000..d5450fae9 --- /dev/null +++ b/packages/admin-api-client/.gitignore @@ -0,0 +1,18 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +node_modules/ +dist/ + +package-lock.json +.vscode/ +.DS_Store +.rollup.cache/ + +# ignore any locally packed packages +*.tgz +!*.d.ts diff --git a/packages/admin-api-client/README.md b/packages/admin-api-client/README.md new file mode 100644 index 000000000..7c9170c4b --- /dev/null +++ b/packages/admin-api-client/README.md @@ -0,0 +1,243 @@ +# @shopify/admin-api-client + + + +[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](../../LICENSE.md) + + + +The Admin API Client library is for developers who want to interact with Shopify's GraphQL `Admin API`. The features of this library are designed to be lightweight and minimally opinionated. + +## Getting Started + +To install this package, you can run this in your terminal: + +```typescript +npm install @shopify/admin-api-client -s +``` + +## Admin API Client Examples + +### Initialize the Admin API Client + +```typescript +import {createAdminAPIClient} from '@shopify/admin-api-client'; + +const client = createAdminAPIClient({ + storeDomain: 'your-shop-name.myshopify.com', + apiVersion: '2023-04', + accessToken: 'your-admin-api-access-token', +}); +``` + +### Query for a product using the client + +```typescript +const operation = ` + query ProductQuery($id: ID!) { + product(id: $id) { + id + title + handle + } + } +`; + +const {data, error, extensions} = await client.request(operation, { + variables: { + id: 'gid://shopify/Product/7608002183224', + }, +}); +``` + +### `createAdminAPIClient()` parameters + +| Property | Type | Description | +| ------------------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| storeDomain | `string` | The domain of the store. It can be the Shopify `myshopify.com` domain or a custom store domain. | +| apiVersion | `string` | The requested Admin API version. | +| accessToken? | `string` | Admin API access token. | +| clientName? | `string` | Name of the client. | +| customFetchAPI? | `CustomFetchAPI` | A custom fetch function that will be used by the client when it interacts with the API. Defaults to the [browser's Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API). | + +## Client properties + +| Property | Type | Description | +| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| config | `ClientConfig` | Configuration for the client | +| getHeaders | `(customHeaders?: Record) => Record` | Returns Admin API specific headers needed to interact with the API. If `customHeaders` is provided, the custom headers will be included in the returned headers object. | +| getApiUrl | `(apiVersion?: string) => string` | Returns the shop specific API url. If an API version is provided, the returned URL will include the provided version, else the URL will include the API version set at client initialization. | +| fetch | `(operation: string, options?:`[SFAPIClientRequestOptions](#sfapiclientrequestoptions-properties)`) => Promise` | Fetches data from Admin API using the provided GQL `operation` string and [AdminAPIClientRequestOptions](#adminapiclientrequestoptions-properties) object and returns the network response. | +| request | `(operation: string, options?:`[SFAPIClientRequestOptions](#sfapiclientrequestoptions-properties)`) => Promise<`[ClientResponse\](#clientresponsetdata)`>` | Requests data from Admin API using the provided GQL `operation` string and [AdminAPIClientRequestOptions](#adminapiclientrequestoptions-properties) object and returns a normalized response object. | + +## `AdminAPIClientRequestOptions` properties + +| Name | Type | Description | +| -------------- | ------------------------ | ---------------------------------------------------- | +| variables? | `Record` | Variable values needed in the graphQL operation | +| apiVersion? | `string` | The Admin API version to use in the API request | +| customHeaders? | `Record` | Customized headers to be included in the API request | + +## `ClientResponse` + +| Name | Type | Description | +| ----------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| data? | `TData \| any` | Data returned from the Admin API. If `TData` was provided to the function, the return type is `TData`, else it returns type `any`. | +| error? | `ClientResponse['error']` | Error object that contains any API or network errors that occured while fetching the data from the API. It does not include any `UserErrors`. | +| extensions? | `Record` | Additional information on the GraphQL response data and context. It can include the `context` object that contains the localization context information used to generate the returned API response. | + +### Client `request()` response examples + +
+ Successful response + +### API response + +```json +{ + "data": { + "product": { + "id": "gid://shopify/Product/7608002183224", + "title": "Aera", + "handle": "aera-helmet" + } + }, + "extensions": { + "cost": { + "requestedQueryCost": 1, + "actualQueryCost": 1, + "throttleStatus": { + "maximumAvailable": 1000.0, + "currentlyAvailable": 999, + "restoreRate": 50.0 + } + } + } +} +``` + +
+ +
+ Error responses + +### Network error + +```json +{ + "networkStatusCode": 401, + "message": "Unauthorized" +} +``` + +### Admin API graphQL error + +```json +{ + "networkStatusCode": 200, + "message": "An error occurred while fetching from the API. Review the `graphQLErrors` object for details.", + "graphQLErrors": [ + { + "message": "Field 'testField' doesn't exist on type 'Product'", + "locations": [ + { + "line": 17, + "column": 3 + } + ], + "path": ["fragment ProductFragment", "testField"], + "extensions": { + "code": "undefinedField", + "typeName": "Product", + "fieldName": "testField" + } + } + ] +} +``` + +
+ +## Usage examples + +### Query for a product + +```typescript +const productQuery = ` + query ProductQuery($id: ID!) { + product(id: $id) { + id + title + handle + } + } +`; + +const {data, error, extensions} = await client.request(productQuery, { + variables: { + id: 'gid://shopify/Product/7608002183224', + }, +}); +``` + +### Dynamically set the Admin API version per data fetch + +```typescript +const productQuery = ` + query ProductQuery($id: ID!) { + product(id: $id) { + id + title + handle + } + } +`; + +const {data, error, extensions} = await client.request(productQuery, { + variables: { + id: 'gid://shopify/Product/7608002183224', + }, + apiVersion: '2023-01', +}); +``` + +### Add custom headers to API request + +```typescript +const productQuery = ` + query ProductQuery($id: ID!) { + product(id: $id) { + id + title + handle + } + } +`; + +const {data, error, extensions} = await client.request(productQuery, { + variables: { + id: 'gid://shopify/Product/7608002183224', + }, + customHeaders: { + 'X-GraphQL-Cost-Include-Fields': true, + }, +}); +``` + +### Using `client.fetch()` to get API data + +```typescript +const shopQuery = ` + query shop { + shop { + name + } + } +`; + +const response = await client.fetch(shopQuery); + +if (response.ok) { + const {errors, data, extensions} = await response.json(); +} +``` diff --git a/packages/admin-api-client/babel.config.json b/packages/admin-api-client/babel.config.json new file mode 100644 index 000000000..5182c456c --- /dev/null +++ b/packages/admin-api-client/babel.config.json @@ -0,0 +1,10 @@ +{ + "presets": [ + ["@babel/preset-env"], + ["@shopify/babel-preset", {"typescript": true}] + ], + "plugins": [ + ["@babel/plugin-transform-runtime"], + ["@babel/plugin-transform-async-to-generator"] + ] +} diff --git a/packages/admin-api-client/package.json b/packages/admin-api-client/package.json new file mode 100644 index 000000000..157e8805e --- /dev/null +++ b/packages/admin-api-client/package.json @@ -0,0 +1,110 @@ +{ + "name": "@shopify/admin-api-client", + "version": "0.0.0", + "description": "Shopify Admin API Client - A lightweight JS client to interact with Shopify's Admin API", + "repository": { + "type": "git", + "url": "git+https://github.com/Shopify/shopify-api-js.git" + }, + "author": "Shopify", + "license": "MIT", + "main": "./dist/umd/admin-api-client.min.js", + "browser": "./dist/umd/admin-api-client.min.js", + "module": "./dist/index.mjs", + "types": "./dist/admin-api-client.d.ts", + "exports": { + ".": { + "module": { + "types": "./dist/ts/index.d.ts", + "default": "./dist/index.mjs" + }, + "import": { + "types": "./dist/ts/index.d.ts", + "default": "./dist/index.mjs" + }, + "require": { + "types": "./dist/ts/index.d.ts", + "default": "./dist/index.js" + }, + "default": "./dist/index.mjs" + } + }, + "scripts": { + "lint": "eslint . --ext .js,.ts", + "build": "yarn run rollup", + "test": "jest", + "test:ci": "yarn test", + "rollup": "rollup -c --bundleConfigAsCjs", + "clean": "rimraf dist/*", + "changeset": "changeset", + "version": "changeset version", + "release": "yarn build && changeset publish" + }, + "jest": { + "setupFilesAfterEnv": [ + "./src/tests/setupTests.ts" + ], + "transform": { + ".*": "babel-jest" + } + }, + "publishConfig": { + "access": "public" + }, + "keywords": [ + "shopify", + "node", + "graphql", + "admin API" + ], + "files": [ + "**/*.d.ts", + "**/*.d.ts.map", + "**/*.js", + "**/*.js.map", + "**/*.mjs", + "**/*.mjs.map", + "!node_modules" + ], + "dependencies": { + "@shopify/graphql-client": "^0.3.0" + }, + "devDependencies": { + "@babel/core": "^7.21.3", + "@babel/plugin-transform-async-to-generator": "^7.20.7", + "@babel/plugin-transform-runtime": "^7.21.0", + "@babel/preset-env": "^7.20.2", + "@babel/preset-typescript": "^7.21.0", + "@changesets/changelog-github": "^0.4.8", + "@changesets/cli": "^2.26.1", + "@rollup/plugin-babel": "^6.0.3", + "@rollup/plugin-commonjs": "^24.0.1", + "@rollup/plugin-eslint": "^9.0.3", + "@rollup/plugin-node-resolve": "^15.0.1", + "@rollup/plugin-replace": "^5.0.2", + "@rollup/plugin-terser": "^0.4.0", + "@rollup/plugin-typescript": "^11.0.0", + "@shopify/babel-preset": "^25.0.0", + "@shopify/eslint-plugin": "^42.0.3", + "@shopify/prettier-config": "^1.1.2", + "@shopify/typescript-configs": "^5.1.0", + "@types/jest": "^29.5.0", + "@types/regenerator-runtime": "^0.13.1", + "@typescript-eslint/parser": "^6.7.5", + "babel-jest": "^29.5.0", + "eslint": "^8.51.0", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.5.0", + "jest-fetch-mock": "^3.0.3", + "prettier": "^2.5.1", + "regenerator-runtime": "^0.13.11", + "rollup": "^3.19.1", + "rollup-plugin-dts": "^5.2.0", + "tslib": "^2.5.0", + "typescript": "^5.2.0" + }, + "bugs": { + "url": "https://github.com/Shopify/shopify-api-js/issues" + }, + "homepage": "https://github.com/Shopify/shopify-api-js/packages/admin-api-client#readme" +} diff --git a/packages/admin-api-client/rollup.config.cjs b/packages/admin-api-client/rollup.config.cjs new file mode 100644 index 000000000..c50eaafdd --- /dev/null +++ b/packages/admin-api-client/rollup.config.cjs @@ -0,0 +1,101 @@ +import dts from "rollup-plugin-dts"; +import typescript from "@rollup/plugin-typescript"; +import resolve from "@rollup/plugin-node-resolve"; +import commonjs from "@rollup/plugin-commonjs"; +import terser from "@rollup/plugin-terser"; +import replace from "@rollup/plugin-replace"; + +import * as pkg from "./package.json"; + +export const mainSrcInput = "src/index.ts"; + +export function getPlugins({ tsconfig, minify } = {}) { + return [ + replace({ + preventAssignment: true, + ROLLUP_REPLACE_CLIENT_VERSION: pkg.version, + }), + resolve(), + commonjs(), + typescript({ + tsconfig: tsconfig ? tsconfig : "./tsconfig.build.json", + outDir: "./dist/ts", + }), + ...(minify === true ? [terser({ keep_fnames: new RegExp("fetch") })] : []), + ]; +} + +const packageName = pkg.name.substring(1); +const repositoryName = pkg.repository.url.split(":")[1].split(".")[0]; +export const bannerConfig = { + banner: `/*! ${packageName} -- Copyright (c) 2023-present, Shopify Inc. -- license (MIT): https://github.com/${repositoryName}/blob/main/LICENSE */`, +}; + +const config = [ + { + input: mainSrcInput, + plugins: getPlugins({ + minify: true, + tsconfig: "./tsconfig.build.umd.json", + }), + output: [ + { + file: "./dist/umd/storefront-api-client.min.js", + format: "umd", + sourcemap: true, + name: "ShopifyStorefrontAPIClient", + ...bannerConfig, + }, + ], + }, + { + input: mainSrcInput, + plugins: getPlugins({ + tsconfig: "./tsconfig.build.umd.json", + }), + output: [ + { + file: "./dist/umd/storefront-api-client.js", + format: "umd", + sourcemap: true, + name: "ShopifyStorefrontAPIClient", + ...bannerConfig, + }, + ], + }, + { + input: mainSrcInput, + plugins: getPlugins(), + output: [ + { + dir: "./dist", + format: "es", + sourcemap: true, + preserveModules: true, + preserveModulesRoot: "src", + entryFileNames: "[name].mjs", + }, + ], + }, + { + input: mainSrcInput, + plugins: getPlugins(), + output: [ + { + dir: "./dist", + format: "cjs", + sourcemap: true, + exports: "named", + preserveModules: true, + preserveModulesRoot: "src", + }, + ], + }, + { + input: "./dist/ts/index.d.ts", + output: [{ file: "dist/storefront-api-client.d.ts", format: "es" }], + plugins: [dts.default()], + }, +]; + +export default config; diff --git a/packages/admin-api-client/src/admin-api-client.ts b/packages/admin-api-client/src/admin-api-client.ts new file mode 100644 index 000000000..997e334bb --- /dev/null +++ b/packages/admin-api-client/src/admin-api-client.ts @@ -0,0 +1,138 @@ +import { + createGraphQLClient, + CustomFetchAPI, + RequestParams as GQLClientRequestParams, +} from "@shopify/graphql-client"; + +import { + AdminAPIClient, + AdminAPIClientConfig, + AdminAPIClientRequestOptions, +} from "./types"; +import { + DEFAULT_SDK_VARIANT, + DEFAULT_CLIENT_VERSION, + SDK_VARIANT_HEADER, + SDK_VARIANT_SOURCE_HEADER, + SDK_VERSION_HEADER, + DEFAULT_CONTENT_TYPE, + ACCESS_TOKEN_HEADER, +} from "./constants"; +import { + getCurrentSupportedAPIVersions, + validateRequiredStoreDomain, + validateRequiredAccessToken, + validateApiVersion, + validateServerSideUsage, +} from "./utilities"; + +const httpRegEx = new RegExp("^(https?:)?//"); + +export function createAdminAPIClient({ + storeDomain, + apiVersion, + accessToken, + clientName, + customFetchAPI: clientFetchAPI, +}: { + storeDomain: string; + apiVersion: string; + accessToken: string; + clientName?: string; + customFetchAPI?: CustomFetchAPI; +}): AdminAPIClient { + const currentSupportedAPIVersions = getCurrentSupportedAPIVersions(); + + validateServerSideUsage(); + validateRequiredStoreDomain(storeDomain); + validateApiVersion(currentSupportedAPIVersions, apiVersion); + validateRequiredAccessToken(accessToken); + + const trimmedStoreDomain = storeDomain.trim(); + const cleanedStoreDomain = httpRegEx.test(trimmedStoreDomain) + ? trimmedStoreDomain.substring(trimmedStoreDomain.indexOf("//") + 2) + : trimmedStoreDomain; + + const generateApiUrl = (version?: string) => { + if (version) { + validateApiVersion(currentSupportedAPIVersions, version); + } + + const urlApiVersion = (version ?? apiVersion).trim(); + + return `https://${cleanedStoreDomain}${ + cleanedStoreDomain.endsWith("/") ? "" : "/" + }admin/api/${urlApiVersion}/graphql.json`; + }; + + const config: AdminAPIClientConfig = { + storeDomain: trimmedStoreDomain, + apiVersion, + accessToken, + headers: { + "Content-Type": DEFAULT_CONTENT_TYPE, + Accept: DEFAULT_CONTENT_TYPE, + [SDK_VARIANT_HEADER]: DEFAULT_SDK_VARIANT, + [SDK_VERSION_HEADER]: DEFAULT_CLIENT_VERSION, + ...(clientName ? { [SDK_VARIANT_SOURCE_HEADER]: clientName } : {}), + [ACCESS_TOKEN_HEADER]: accessToken, + }, + apiUrl: generateApiUrl(), + clientName, + }; + + const graphqlClient = createGraphQLClient({ + headers: config.headers, + url: config.apiUrl, + fetchAPI: clientFetchAPI, + }); + + const getHeaders: AdminAPIClient["getHeaders"] = (customHeaders) => { + return customHeaders + ? { ...customHeaders, ...config.headers } + : config.headers; + }; + + const getApiUrl: AdminAPIClient["getApiUrl"] = (propApiVersion?: string) => { + return propApiVersion ? generateApiUrl(propApiVersion) : config.apiUrl; + }; + + const getGQLClientRequestProps = ( + operation: string, + options?: AdminAPIClientRequestOptions + ): GQLClientRequestParams => { + const props: GQLClientRequestParams = [operation]; + + if (options) { + const { variables, apiVersion: propApiVersion, customHeaders } = options; + + props.push({ + variables, + headers: customHeaders ? getHeaders(customHeaders) : undefined, + url: propApiVersion ? getApiUrl(propApiVersion) : undefined, + }); + } + + return props; + }; + + const fetch: AdminAPIClient["fetch"] = (...props) => { + const requestProps = getGQLClientRequestProps(...props); + return graphqlClient.fetch(...requestProps); + }; + + const request: AdminAPIClient["request"] = (...props) => { + const requestProps = getGQLClientRequestProps(...props); + return graphqlClient.request(...requestProps); + }; + + const client: AdminAPIClient = { + config, + getHeaders, + getApiUrl, + fetch, + request, + }; + + return Object.freeze(client); +} diff --git a/packages/admin-api-client/src/constants.ts b/packages/admin-api-client/src/constants.ts new file mode 100644 index 000000000..e3f460673 --- /dev/null +++ b/packages/admin-api-client/src/constants.ts @@ -0,0 +1,11 @@ +export const DEFAULT_CONTENT_TYPE = "application/json"; +export const DEFAULT_SDK_VARIANT = "admin-api-client"; +// This is value is replaced with package.json version during rollup build process +export const DEFAULT_CLIENT_VERSION = "ROLLUP_REPLACE_CLIENT_VERSION"; + +export const ACCESS_TOKEN_HEADER = "X-Shopify-Access-Token"; +export const SDK_VARIANT_HEADER = "X-SDK-Variant"; +export const SDK_VERSION_HEADER = "X-SDK-Version"; +export const SDK_VARIANT_SOURCE_HEADER = "X-SDK-Variant-Source"; + +export const ERROR_PREFIX = "Admin API Client:"; diff --git a/packages/admin-api-client/src/index.ts b/packages/admin-api-client/src/index.ts new file mode 100644 index 000000000..821a98ef5 --- /dev/null +++ b/packages/admin-api-client/src/index.ts @@ -0,0 +1 @@ +export { createAdminAPIClient } from "./admin-api-client"; diff --git a/packages/admin-api-client/src/tests/admin-api-client.test.ts b/packages/admin-api-client/src/tests/admin-api-client.test.ts new file mode 100644 index 000000000..fb721ef9c --- /dev/null +++ b/packages/admin-api-client/src/tests/admin-api-client.test.ts @@ -0,0 +1,408 @@ +import { createGraphQLClient, GraphQLClient } from "@shopify/graphql-client"; +import { AdminAPIClient } from "types"; + +import { createAdminAPIClient } from "../admin-api-client"; +import { + SDK_VARIANT_HEADER, + DEFAULT_SDK_VARIANT, + SDK_VERSION_HEADER, + DEFAULT_CLIENT_VERSION, + SDK_VARIANT_SOURCE_HEADER, + ACCESS_TOKEN_HEADER, + DEFAULT_CONTENT_TYPE, +} from "../constants"; + +const mockApiVersions = [ + "2023-01", + "2023-04", + "2023-07", + "2023-10", + "2024-01", + "unstable", +]; + +jest.mock("../utilities/api-versions", () => { + return { + ...jest.requireActual("../utilities/api-versions"), + getCurrentSupportedAPIVersions: () => mockApiVersions, + }; +}); + +jest.mock("@shopify/graphql-client", () => { + return { + ...jest.requireActual("@shopify/graphql-client"), + createGraphQLClient: jest.fn(), + }; +}); + +describe("Admin API Client", () => { + describe("createAdminAPIClient()", () => { + const config = { + storeDomain: "https://test-store.myshopify.io", + apiVersion: "2023-10", + accessToken: "access-token", + }; + const mockApiUrl = `${config.storeDomain}/admin/api/2023-10/graphql.json`; + + const graphqlClientMock: GraphQLClient = { + config: { + url: mockApiUrl, + headers: {}, + retries: 0, + }, + fetch: jest.fn(), + request: jest.fn(), + }; + + beforeEach(() => { + (createGraphQLClient as jest.Mock).mockReturnValue(graphqlClientMock); + }); + + afterEach(() => { + jest.resetAllMocks(); + jest.restoreAllMocks(); + }); + + describe("client initialization", () => { + it("calls the graphql client with headers and API URL", () => { + const clientName = "test-client"; + + createAdminAPIClient({ ...config, clientName }); + expect( + (createGraphQLClient as jest.Mock).mock.calls[0][0] + ).toHaveProperty("headers", { + "Content-Type": "application/json", + Accept: "application/json", + "X-Shopify-Access-Token": "access-token", + [SDK_VARIANT_HEADER]: DEFAULT_SDK_VARIANT, + [SDK_VERSION_HEADER]: DEFAULT_CLIENT_VERSION, + [SDK_VARIANT_SOURCE_HEADER]: clientName, + }); + expect( + (createGraphQLClient as jest.Mock).mock.calls[0][0] + ).toHaveProperty("url", mockApiUrl); + }); + + it("calls the graphql client with the provided customFetchAPI", () => { + const customFetchAPI = jest.fn(); + + createAdminAPIClient({ ...config, customFetchAPI }); + + expect(createGraphQLClient).toHaveBeenCalled(); + expect( + (createGraphQLClient as jest.Mock).mock.calls[0][0] + ).toHaveProperty("fetchAPI", customFetchAPI); + }); + + it("returns a client object that contains a config object, getters for header and API URL and request and fetch functions", () => { + const client = createAdminAPIClient(config); + + expect(client).toHaveProperty("config"); + expect(client).toMatchObject({ + getHeaders: expect.any(Function), + getApiUrl: expect.any(Function), + request: expect.any(Function), + fetch: expect.any(Function), + }); + }); + + describe("validations", () => { + it("throws an error when a store domain is not provided", () => { + expect(() => + createAdminAPIClient({ + ...config, + // @ts-ignore + storeDomain: undefined, + }) + ).toThrow( + new Error("Admin API Client: a valid store domain must be provided") + ); + }); + + it("throws an error when an empty string is provided as the store domain", () => { + expect(() => + createAdminAPIClient({ + ...config, + // @ts-ignore + storeDomain: " ", + }) + ).toThrow( + new Error("Admin API Client: a valid store domain must be provided") + ); + }); + + it("throws an error when the provided store domain is not a string", () => { + expect(() => + createAdminAPIClient({ + ...config, + // @ts-ignore + storeDomain: 123, + }) + ).toThrow( + new Error("Admin API Client: a valid store domain must be provided") + ); + }); + + it("throws an error when the api version is not provided", () => { + expect(() => + createAdminAPIClient({ + ...config, + // @ts-ignore + apiVersion: undefined, + }) + ).toThrow( + new Error( + `Admin API Client: the provided \`apiVersion\` is invalid. Current supported API versions: ${mockApiVersions.join( + ", " + )}` + ) + ); + }); + + it("throws an error when the api version is not a string", () => { + expect(() => + createAdminAPIClient({ + ...config, + // @ts-ignore + apiVersion: { year: 2022, month: 1 }, + }) + ).toThrow( + new Error( + `Admin API Client: the provided \`apiVersion\` is invalid. Current supported API versions: ${mockApiVersions.join( + ", " + )}` + ) + ); + }); + + it("console warns when a unsupported api version is provided", () => { + const consoleWarnSpy = jest + .spyOn(global.console, "warn") + .mockImplementation(jest.fn()); + + createAdminAPIClient({ + ...config, + apiVersion: "2022-07", + }); + + expect(consoleWarnSpy).toHaveBeenCalledWith( + `Admin API Client: the provided \`apiVersion\` (\`2022-07\`) is deprecated or not supported. Current supported API versions: ${mockApiVersions.join( + ", " + )}` + ); + }); + + it("throws an error when an access token isn't provided", () => { + expect(() => + createAdminAPIClient({ + ...config, + // @ts-ignore + accessToken: undefined, + }) + ).toThrow( + new Error(`Admin API Client: an access token must be provided`) + ); + }); + + it("throws an error when run in a browser environment (window is defined)", () => { + // @ts-ignore + global.window = {}; + + expect(() => + // @ts-ignore + createAdminAPIClient({ + ...config, + accessToken: "access-token", + }) + ).toThrow( + new Error( + "Admin API Client: this client should not be used in the browser" + ) + ); + + // @ts-ignore + delete global.window; + }); + }); + }); + + describe("client config", () => { + it("returns a config object that includes the provided store domain", () => { + const client = createAdminAPIClient(config); + expect(client.config.storeDomain).toBe(config.storeDomain); + }); + + it("returns a config object that includes the provided access token", () => { + const client = createAdminAPIClient(config); + expect(client.config.accessToken).toBe(config.accessToken); + }); + + it("returns a config object that includes the provided client name", () => { + const clientName = "test-client"; + + const client = createAdminAPIClient({ ...config, clientName }); + expect(client.config.clientName).toBe(clientName); + }); + + describe("API url", () => { + const cleanedStoreDomain = "test-store.myshopify.io"; + const expectedAPIUrl = `https://${cleanedStoreDomain}/admin/api/${config.apiVersion}/graphql.json`; + + it("returns a config object that includes the secure API url constructed with the provided API version and a store domain that includes 'https'", () => { + const client = createAdminAPIClient({ + ...config, + storeDomain: `https://${cleanedStoreDomain}`, + }); + expect(client.config.apiUrl).toBe(expectedAPIUrl); + }); + + it("returns a config object that includes the secure API url constructed with the provided API version and a store domain that includes 'http'", () => { + const client = createAdminAPIClient({ + ...config, + storeDomain: `http://${cleanedStoreDomain}`, + }); + expect(client.config.apiUrl).toBe(expectedAPIUrl); + }); + + it("returns a config object that includes the secure API url constructed with the provided API version and a store domain that does not include a protocol", () => { + const client = createAdminAPIClient({ + ...config, + storeDomain: cleanedStoreDomain, + }); + expect(client.config.apiUrl).toBe(expectedAPIUrl); + }); + + it("returns a config object that includes a valid API url constructed with the provided spaced out API version and a store domain", () => { + const client = createAdminAPIClient({ + ...config, + storeDomain: ` ${cleanedStoreDomain} `, + apiVersion: ` ${config.apiVersion} `, + }); + expect(client.config.apiUrl).toBe(expectedAPIUrl); + }); + }); + + describe("config headers", () => { + it("returns a header object that includes the content-type header", () => { + const client = createAdminAPIClient(config); + expect(client.config.headers["Content-Type"]).toBe( + DEFAULT_CONTENT_TYPE + ); + }); + + it("returns a header object that includes the accept header", () => { + const client = createAdminAPIClient(config); + expect(client.config.headers.Accept).toBe(DEFAULT_CONTENT_TYPE); + }); + + it("returns a header object that includes the SDK variant header", () => { + const client = createAdminAPIClient(config); + expect(client.config.headers[SDK_VARIANT_HEADER]).toBe( + DEFAULT_SDK_VARIANT + ); + }); + + it("returns a header object that includes the SDK version header", () => { + const client = createAdminAPIClient(config); + expect(client.config.headers[SDK_VERSION_HEADER]).toBe( + DEFAULT_CLIENT_VERSION + ); + }); + + it("returns a header object that includes the access token headers when an access token is provided", () => { + const client = createAdminAPIClient(config); + expect(client.config.headers[ACCESS_TOKEN_HEADER]).toEqual( + config.accessToken + ); + }); + + it("returns a header object that includes the SDK variant source header when client name is provided", () => { + const clientName = "test-client"; + + const client = createAdminAPIClient({ ...config, clientName }); + expect(client.config.headers[SDK_VARIANT_SOURCE_HEADER]).toEqual( + clientName + ); + }); + + it("returns a header object that does not include the SDK variant source header when client name is not provided", () => { + const client = createAdminAPIClient(config); + expect( + client.config.headers[SDK_VARIANT_SOURCE_HEADER] + ).toBeUndefined(); + }); + }); + }); + + describe("getHeaders()", () => { + let client: AdminAPIClient; + + beforeEach(() => { + client = createAdminAPIClient(config); + }); + + it("returns the client's default headers if no custom headers are provided", () => { + const headers = client.getHeaders(); + expect(headers).toBe(client.config.headers); + }); + + it("returns a headers object that contains both the client default headers and the provided custom headers", () => { + const customHeaders = { + "X-GraphQL-Cost-Include-Fields": true, + }; + const headers = client.getHeaders(customHeaders); + expect(headers).toEqual({ ...customHeaders, ...client.config.headers }); + }); + }); + + describe("getApiUrl()", () => { + let client: AdminAPIClient; + + beforeEach(() => { + client = createAdminAPIClient(config); + }); + + it("returns the client's default API url if no API version was provided", () => { + const url = client.getApiUrl(); + expect(url).toBe(client.config.apiUrl); + }); + + it("returns an API url that is directed at the provided api version", () => { + const version = "unstable"; + const url = client.getApiUrl(version); + expect(url).toEqual( + `${config.storeDomain}/admin/api/${version}/graphql.json` + ); + }); + + it("throws an error when the api version is not a string", () => { + const version = 123; + expect(() => + // @ts-ignore + client.getApiUrl(version) + ).toThrow( + new Error( + `Admin API Client: the provided \`apiVersion\` is invalid. Current supported API versions: ${mockApiVersions.join( + ", " + )}` + ) + ); + }); + + it("console warns when a unsupported api version is provided", () => { + const consoleWarnSpy = jest + .spyOn(global.console, "warn") + .mockImplementation(jest.fn()); + + const version = "2021-01"; + client.getApiUrl(version); + + expect(consoleWarnSpy).toHaveBeenCalledWith( + `Admin API Client: the provided \`apiVersion\` (\`2021-01\`) is deprecated or not supported. Current supported API versions: ${mockApiVersions.join( + ", " + )}` + ); + }); + }); + }); +}); diff --git a/packages/admin-api-client/src/tests/setupTests.ts b/packages/admin-api-client/src/tests/setupTests.ts new file mode 100644 index 000000000..50dec607e --- /dev/null +++ b/packages/admin-api-client/src/tests/setupTests.ts @@ -0,0 +1 @@ +import "regenerator-runtime/runtime"; diff --git a/packages/admin-api-client/src/types.ts b/packages/admin-api-client/src/types.ts new file mode 100644 index 000000000..26d180fbb --- /dev/null +++ b/packages/admin-api-client/src/types.ts @@ -0,0 +1,40 @@ +import { + OperationVariables, + Headers, + ClientResponse, + GraphQLClient, +} from "@shopify/graphql-client"; + +export interface AdminAPIClientConfig { + readonly storeDomain: string; + readonly apiVersion: string; + readonly accessToken: string; + readonly headers: Headers; + readonly apiUrl: string; + readonly clientName?: string; + readonly retries?: number; +} + +export interface AdminAPIClientRequestOptions { + variables?: OperationVariables; + apiVersion?: string; + customHeaders?: Headers; + retries?: number; +} + +export type AdminAPIClientRequestParams = [ + operation: string, + options?: AdminAPIClientRequestOptions +]; + +export interface AdminAPIClient { + readonly config: AdminAPIClientConfig; + getHeaders: (customHeaders?: Headers) => Headers; + getApiUrl: (apiVersion?: string) => string; + fetch: ( + ...props: AdminAPIClientRequestParams + ) => ReturnType; + request: ( + ...props: AdminAPIClientRequestParams + ) => Promise>; +} diff --git a/packages/admin-api-client/src/utilities/api-versions.ts b/packages/admin-api-client/src/utilities/api-versions.ts new file mode 100644 index 000000000..35823bab3 --- /dev/null +++ b/packages/admin-api-client/src/utilities/api-versions.ts @@ -0,0 +1,46 @@ +function getQuarterMonth(quarter: number) { + const month = quarter * 3 - 2; + return month === 10 ? month : `0${month}`; +} + +function getPrevousVersion(year: number, quarter: number, nQuarter: number) { + const versionQuarter = quarter - nQuarter; + + if (versionQuarter <= 0) { + return `${year - 1}-${getQuarterMonth(versionQuarter + 4)}`; + } + + return `${year}-${getQuarterMonth(versionQuarter)}`; +} + +export function getCurrentAPIVersion() { + const date = new Date(); + const month = date.getUTCMonth(); + const year = date.getUTCFullYear(); + + const quarter = Math.floor(month / 3 + 1); + + return { + year, + quarter, + version: `${year}-${getQuarterMonth(quarter)}`, + }; +} + +export function getCurrentSupportedAPIVersions() { + const { year, quarter, version: currentVersion } = getCurrentAPIVersion(); + + const nextVersion = + quarter === 4 + ? `${year + 1}-01` + : `${year}-${getQuarterMonth(quarter + 1)}`; + + return [ + getPrevousVersion(year, quarter, 3), + getPrevousVersion(year, quarter, 2), + getPrevousVersion(year, quarter, 1), + currentVersion, + nextVersion, + "unstable", + ]; +} diff --git a/packages/admin-api-client/src/utilities/index.ts b/packages/admin-api-client/src/utilities/index.ts new file mode 100644 index 000000000..c5d32706d --- /dev/null +++ b/packages/admin-api-client/src/utilities/index.ts @@ -0,0 +1,2 @@ +export * from "./api-versions"; +export * from "./validations"; diff --git a/packages/admin-api-client/src/utilities/validations.ts b/packages/admin-api-client/src/utilities/validations.ts new file mode 100644 index 000000000..fcd46afd5 --- /dev/null +++ b/packages/admin-api-client/src/utilities/validations.ts @@ -0,0 +1,48 @@ +import { ERROR_PREFIX } from "../constants"; + +export function validateRequiredStoreDomain(storeDomain: string | undefined) { + if ( + !storeDomain || + typeof storeDomain !== "string" || + storeDomain.trim().length < 1 + ) { + throw new Error(`${ERROR_PREFIX} a valid store domain must be provided`); + } +} + +export function validateApiVersion( + currentSupportedApiVersions: string[], + apiVersion: string +) { + const supportedVerbage = `Current supported API versions: ${currentSupportedApiVersions.join( + ", " + )}`; + + if (!apiVersion || typeof apiVersion !== "string") { + throw new Error( + `${ERROR_PREFIX} the provided \`apiVersion\` is invalid. ${supportedVerbage}` + ); + } + + const trimmedApiVersion = apiVersion.trim(); + + if (!currentSupportedApiVersions.includes(trimmedApiVersion)) { + console.warn( + `${ERROR_PREFIX} the provided \`apiVersion\` (\`${apiVersion}\`) is deprecated or not supported. ${supportedVerbage}` + ); + } +} + +export function validateRequiredAccessToken(accessToken: string) { + if (!accessToken) { + throw new Error(`${ERROR_PREFIX} an access token must be provided`); + } +} + +export function validateServerSideUsage() { + if (typeof window !== "undefined") { + throw new Error( + `${ERROR_PREFIX} this client should not be used in the browser` + ); + } +} diff --git a/packages/admin-api-client/tsconfig.build.json b/packages/admin-api-client/tsconfig.build.json new file mode 100644 index 000000000..763a46828 --- /dev/null +++ b/packages/admin-api-client/tsconfig.build.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["./node_modules", "./src/**/tests/*.ts"] +} diff --git a/packages/admin-api-client/tsconfig.build.umd.json b/packages/admin-api-client/tsconfig.build.umd.json new file mode 100644 index 000000000..4a8d809ac --- /dev/null +++ b/packages/admin-api-client/tsconfig.build.umd.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.build.json", + "compilerOptions": { + "declaration": false, + "declarationMap": false + } +} diff --git a/packages/admin-api-client/tsconfig.json b/packages/admin-api-client/tsconfig.json new file mode 100644 index 000000000..5e4a73bed --- /dev/null +++ b/packages/admin-api-client/tsconfig.json @@ -0,0 +1,17 @@ +{ + "include": ["./src/**/*.ts"], + "exclude": ["./node_modules"], + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "target": "ES2022", + "lib": ["ESNext", "DOM"], + "rootDir": "src", + "baseUrl": "src", + "strict": true, + "pretty": true, + "allowSyntheticDefaultImports": true, + "strictPropertyInitialization": true + }, + "extends": "../../tsconfig.base.json", +} diff --git a/tsconfig.base.json b/tsconfig.base.json index 850b72731..3da56daa5 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -24,6 +24,7 @@ "references": [ {"path": "./packages/shopify-api"}, {"path": "./packages/graphql-client"}, - {"path": "./packages/storefront-api-client"} + {"path": "./packages/storefront-api-client"}, + {"path": "./packages/admin-api-client"} ] } From 6e9e21a7594183d6618c4f74389ed948e1ab2f30 Mon Sep 17 00:00:00 2001 From: Scott Dixon Date: Thu, 2 Nov 2023 10:14:39 +1000 Subject: [PATCH 02/18] Update README, remove browser bundle --- packages/admin-api-client/README.md | 6 +++--- packages/admin-api-client/package.json | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/admin-api-client/README.md b/packages/admin-api-client/README.md index 7c9170c4b..c8e65c5c0 100644 --- a/packages/admin-api-client/README.md +++ b/packages/admin-api-client/README.md @@ -56,7 +56,7 @@ const {data, error, extensions} = await client.request(operation, { | ------------------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | storeDomain | `string` | The domain of the store. It can be the Shopify `myshopify.com` domain or a custom store domain. | | apiVersion | `string` | The requested Admin API version. | -| accessToken? | `string` | Admin API access token. | +| accessToken | `string` | Admin API access token. | | clientName? | `string` | Name of the client. | | customFetchAPI? | `CustomFetchAPI` | A custom fetch function that will be used by the client when it interacts with the API. Defaults to the [browser's Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API). | @@ -67,8 +67,8 @@ const {data, error, extensions} = await client.request(operation, { | config | `ClientConfig` | Configuration for the client | | getHeaders | `(customHeaders?: Record) => Record` | Returns Admin API specific headers needed to interact with the API. If `customHeaders` is provided, the custom headers will be included in the returned headers object. | | getApiUrl | `(apiVersion?: string) => string` | Returns the shop specific API url. If an API version is provided, the returned URL will include the provided version, else the URL will include the API version set at client initialization. | -| fetch | `(operation: string, options?:`[SFAPIClientRequestOptions](#sfapiclientrequestoptions-properties)`) => Promise` | Fetches data from Admin API using the provided GQL `operation` string and [AdminAPIClientRequestOptions](#adminapiclientrequestoptions-properties) object and returns the network response. | -| request | `(operation: string, options?:`[SFAPIClientRequestOptions](#sfapiclientrequestoptions-properties)`) => Promise<`[ClientResponse\](#clientresponsetdata)`>` | Requests data from Admin API using the provided GQL `operation` string and [AdminAPIClientRequestOptions](#adminapiclientrequestoptions-properties) object and returns a normalized response object. | +| fetch | `(operation: string, options?:`[AdminAPIClientRequestOptions](#adminapiclientrequestoptions-properties)`) => Promise` | Fetches data from Admin API using the provided GQL `operation` string and [AdminAPIClientRequestOptions](#adminapiclientrequestoptions-properties) object and returns the network response. | +| request | `(operation: string, options?:`[AdminAPIClientRequestOptions](#adminapiclientrequestoptions-properties)`) => Promise<`[ClientResponse\](#clientresponsetdata)`>` | Requests data from Admin API using the provided GQL `operation` string and [AdminAPIClientRequestOptions](#adminapiclientrequestoptions-properties) object and returns a normalized response object. | ## `AdminAPIClientRequestOptions` properties diff --git a/packages/admin-api-client/package.json b/packages/admin-api-client/package.json index 157e8805e..b11439036 100644 --- a/packages/admin-api-client/package.json +++ b/packages/admin-api-client/package.json @@ -9,7 +9,6 @@ "author": "Shopify", "license": "MIT", "main": "./dist/umd/admin-api-client.min.js", - "browser": "./dist/umd/admin-api-client.min.js", "module": "./dist/index.mjs", "types": "./dist/admin-api-client.d.ts", "exports": { From 0a3bd24575ecac6441ef5cc20a958e3d511800cb Mon Sep 17 00:00:00 2001 From: Scott Dixon Date: Thu, 2 Nov 2023 11:01:15 +1000 Subject: [PATCH 03/18] Remove SDK headers --- .../admin-api-client/src/admin-api-client.ts | 13 +----- packages/admin-api-client/src/constants.ts | 6 --- .../src/tests/admin-api-client.test.ts | 43 +------------------ 3 files changed, 2 insertions(+), 60 deletions(-) diff --git a/packages/admin-api-client/src/admin-api-client.ts b/packages/admin-api-client/src/admin-api-client.ts index 997e334bb..ef47c8d6b 100644 --- a/packages/admin-api-client/src/admin-api-client.ts +++ b/packages/admin-api-client/src/admin-api-client.ts @@ -9,15 +9,7 @@ import { AdminAPIClientConfig, AdminAPIClientRequestOptions, } from "./types"; -import { - DEFAULT_SDK_VARIANT, - DEFAULT_CLIENT_VERSION, - SDK_VARIANT_HEADER, - SDK_VARIANT_SOURCE_HEADER, - SDK_VERSION_HEADER, - DEFAULT_CONTENT_TYPE, - ACCESS_TOKEN_HEADER, -} from "./constants"; +import { DEFAULT_CONTENT_TYPE, ACCESS_TOKEN_HEADER } from "./constants"; import { getCurrentSupportedAPIVersions, validateRequiredStoreDomain, @@ -72,9 +64,6 @@ export function createAdminAPIClient({ headers: { "Content-Type": DEFAULT_CONTENT_TYPE, Accept: DEFAULT_CONTENT_TYPE, - [SDK_VARIANT_HEADER]: DEFAULT_SDK_VARIANT, - [SDK_VERSION_HEADER]: DEFAULT_CLIENT_VERSION, - ...(clientName ? { [SDK_VARIANT_SOURCE_HEADER]: clientName } : {}), [ACCESS_TOKEN_HEADER]: accessToken, }, apiUrl: generateApiUrl(), diff --git a/packages/admin-api-client/src/constants.ts b/packages/admin-api-client/src/constants.ts index e3f460673..eee541587 100644 --- a/packages/admin-api-client/src/constants.ts +++ b/packages/admin-api-client/src/constants.ts @@ -1,11 +1,5 @@ export const DEFAULT_CONTENT_TYPE = "application/json"; -export const DEFAULT_SDK_VARIANT = "admin-api-client"; // This is value is replaced with package.json version during rollup build process export const DEFAULT_CLIENT_VERSION = "ROLLUP_REPLACE_CLIENT_VERSION"; - export const ACCESS_TOKEN_HEADER = "X-Shopify-Access-Token"; -export const SDK_VARIANT_HEADER = "X-SDK-Variant"; -export const SDK_VERSION_HEADER = "X-SDK-Version"; -export const SDK_VARIANT_SOURCE_HEADER = "X-SDK-Variant-Source"; - export const ERROR_PREFIX = "Admin API Client:"; diff --git a/packages/admin-api-client/src/tests/admin-api-client.test.ts b/packages/admin-api-client/src/tests/admin-api-client.test.ts index fb721ef9c..a6b4f050c 100644 --- a/packages/admin-api-client/src/tests/admin-api-client.test.ts +++ b/packages/admin-api-client/src/tests/admin-api-client.test.ts @@ -2,15 +2,7 @@ import { createGraphQLClient, GraphQLClient } from "@shopify/graphql-client"; import { AdminAPIClient } from "types"; import { createAdminAPIClient } from "../admin-api-client"; -import { - SDK_VARIANT_HEADER, - DEFAULT_SDK_VARIANT, - SDK_VERSION_HEADER, - DEFAULT_CLIENT_VERSION, - SDK_VARIANT_SOURCE_HEADER, - ACCESS_TOKEN_HEADER, - DEFAULT_CONTENT_TYPE, -} from "../constants"; +import { ACCESS_TOKEN_HEADER, DEFAULT_CONTENT_TYPE } from "../constants"; const mockApiVersions = [ "2023-01", @@ -74,9 +66,6 @@ describe("Admin API Client", () => { "Content-Type": "application/json", Accept: "application/json", "X-Shopify-Access-Token": "access-token", - [SDK_VARIANT_HEADER]: DEFAULT_SDK_VARIANT, - [SDK_VERSION_HEADER]: DEFAULT_CLIENT_VERSION, - [SDK_VARIANT_SOURCE_HEADER]: clientName, }); expect( (createGraphQLClient as jest.Mock).mock.calls[0][0] @@ -295,42 +284,12 @@ describe("Admin API Client", () => { expect(client.config.headers.Accept).toBe(DEFAULT_CONTENT_TYPE); }); - it("returns a header object that includes the SDK variant header", () => { - const client = createAdminAPIClient(config); - expect(client.config.headers[SDK_VARIANT_HEADER]).toBe( - DEFAULT_SDK_VARIANT - ); - }); - - it("returns a header object that includes the SDK version header", () => { - const client = createAdminAPIClient(config); - expect(client.config.headers[SDK_VERSION_HEADER]).toBe( - DEFAULT_CLIENT_VERSION - ); - }); - it("returns a header object that includes the access token headers when an access token is provided", () => { const client = createAdminAPIClient(config); expect(client.config.headers[ACCESS_TOKEN_HEADER]).toEqual( config.accessToken ); }); - - it("returns a header object that includes the SDK variant source header when client name is provided", () => { - const clientName = "test-client"; - - const client = createAdminAPIClient({ ...config, clientName }); - expect(client.config.headers[SDK_VARIANT_SOURCE_HEADER]).toEqual( - clientName - ); - }); - - it("returns a header object that does not include the SDK variant source header when client name is not provided", () => { - const client = createAdminAPIClient(config); - expect( - client.config.headers[SDK_VARIANT_SOURCE_HEADER] - ).toBeUndefined(); - }); }); }); From 682659a459eaa3f861e680194f854231917481de Mon Sep 17 00:00:00 2001 From: Scott Dixon Date: Thu, 2 Nov 2023 13:37:31 +1000 Subject: [PATCH 04/18] use graphql-client utils --- packages/admin-api-client/package.json | 2 +- .../admin-api-client/src/admin-api-client.ts | 23 ++++++--- packages/admin-api-client/src/constants.ts | 1 + .../src/tests/admin-api-client.test.ts | 43 ++++------------- .../src/utilities/api-versions.ts | 46 ------------------ .../admin-api-client/src/utilities/index.ts | 2 - .../src/utilities/validations.ts | 48 ------------------- packages/admin-api-client/src/validations.ts | 25 ++++++++++ 8 files changed, 53 insertions(+), 137 deletions(-) delete mode 100644 packages/admin-api-client/src/utilities/api-versions.ts delete mode 100644 packages/admin-api-client/src/utilities/index.ts delete mode 100644 packages/admin-api-client/src/utilities/validations.ts create mode 100644 packages/admin-api-client/src/validations.ts diff --git a/packages/admin-api-client/package.json b/packages/admin-api-client/package.json index b11439036..d94f8d5ec 100644 --- a/packages/admin-api-client/package.json +++ b/packages/admin-api-client/package.json @@ -66,7 +66,7 @@ "!node_modules" ], "dependencies": { - "@shopify/graphql-client": "^0.3.0" + "@shopify/graphql-client": "^0.5.0" }, "devDependencies": { "@babel/core": "^7.21.3", diff --git a/packages/admin-api-client/src/admin-api-client.ts b/packages/admin-api-client/src/admin-api-client.ts index ef47c8d6b..21856126a 100644 --- a/packages/admin-api-client/src/admin-api-client.ts +++ b/packages/admin-api-client/src/admin-api-client.ts @@ -2,6 +2,9 @@ import { createGraphQLClient, CustomFetchAPI, RequestParams as GQLClientRequestParams, + getCurrentSupportedAPIVersions, + validateDomainAndGetStoreUrl, + validateApiVersion, } from "@shopify/graphql-client"; import { @@ -9,14 +12,12 @@ import { AdminAPIClientConfig, AdminAPIClientRequestOptions, } from "./types"; -import { DEFAULT_CONTENT_TYPE, ACCESS_TOKEN_HEADER } from "./constants"; +import { DEFAULT_CONTENT_TYPE, ACCESS_TOKEN_HEADER, CLIENT } from "./constants"; import { - getCurrentSupportedAPIVersions, validateRequiredStoreDomain, validateRequiredAccessToken, - validateApiVersion, validateServerSideUsage, -} from "./utilities"; +} from "./validations"; const httpRegEx = new RegExp("^(https?:)?//"); @@ -33,11 +34,15 @@ export function createAdminAPIClient({ clientName?: string; customFetchAPI?: CustomFetchAPI; }): AdminAPIClient { - const currentSupportedAPIVersions = getCurrentSupportedAPIVersions(); + const currentSupportedApiVersions = getCurrentSupportedAPIVersions(); validateServerSideUsage(); validateRequiredStoreDomain(storeDomain); - validateApiVersion(currentSupportedAPIVersions, apiVersion); + validateApiVersion({ + client: CLIENT, + currentSupportedApiVersions, + apiVersion, + }); validateRequiredAccessToken(accessToken); const trimmedStoreDomain = storeDomain.trim(); @@ -47,7 +52,11 @@ export function createAdminAPIClient({ const generateApiUrl = (version?: string) => { if (version) { - validateApiVersion(currentSupportedAPIVersions, version); + validateApiVersion({ + client: CLIENT, + currentSupportedApiVersions, + apiVersion: version, + }); } const urlApiVersion = (version ?? apiVersion).trim(); diff --git a/packages/admin-api-client/src/constants.ts b/packages/admin-api-client/src/constants.ts index eee541587..b3f243502 100644 --- a/packages/admin-api-client/src/constants.ts +++ b/packages/admin-api-client/src/constants.ts @@ -3,3 +3,4 @@ export const DEFAULT_CONTENT_TYPE = "application/json"; export const DEFAULT_CLIENT_VERSION = "ROLLUP_REPLACE_CLIENT_VERSION"; export const ACCESS_TOKEN_HEADER = "X-Shopify-Access-Token"; export const ERROR_PREFIX = "Admin API Client:"; +export const CLIENT = "Admin API Client"; diff --git a/packages/admin-api-client/src/tests/admin-api-client.test.ts b/packages/admin-api-client/src/tests/admin-api-client.test.ts index a6b4f050c..ad23552d0 100644 --- a/packages/admin-api-client/src/tests/admin-api-client.test.ts +++ b/packages/admin-api-client/src/tests/admin-api-client.test.ts @@ -100,8 +100,7 @@ describe("Admin API Client", () => { expect(() => createAdminAPIClient({ ...config, - // @ts-ignore - storeDomain: undefined, + storeDomain: undefined as any, }) ).toThrow( new Error("Admin API Client: a valid store domain must be provided") @@ -112,8 +111,7 @@ describe("Admin API Client", () => { expect(() => createAdminAPIClient({ ...config, - // @ts-ignore - storeDomain: " ", + storeDomain: " " as any, }) ).toThrow( new Error("Admin API Client: a valid store domain must be provided") @@ -124,8 +122,7 @@ describe("Admin API Client", () => { expect(() => createAdminAPIClient({ ...config, - // @ts-ignore - storeDomain: 123, + storeDomain: 123 as any, }) ).toThrow( new Error("Admin API Client: a valid store domain must be provided") @@ -136,28 +133,11 @@ describe("Admin API Client", () => { expect(() => createAdminAPIClient({ ...config, - // @ts-ignore - apiVersion: undefined, + apiVersion: undefined as any, }) ).toThrow( new Error( - `Admin API Client: the provided \`apiVersion\` is invalid. Current supported API versions: ${mockApiVersions.join( - ", " - )}` - ) - ); - }); - - it("throws an error when the api version is not a string", () => { - expect(() => - createAdminAPIClient({ - ...config, - // @ts-ignore - apiVersion: { year: 2022, month: 1 }, - }) - ).toThrow( - new Error( - `Admin API Client: the provided \`apiVersion\` is invalid. Current supported API versions: ${mockApiVersions.join( + `Admin API Client: the provided apiVersion ("undefined") is invalid. Current supported API versions: ${mockApiVersions.join( ", " )}` ) @@ -175,7 +155,7 @@ describe("Admin API Client", () => { }); expect(consoleWarnSpy).toHaveBeenCalledWith( - `Admin API Client: the provided \`apiVersion\` (\`2022-07\`) is deprecated or not supported. Current supported API versions: ${mockApiVersions.join( + `Admin API Client: the provided apiVersion ("2022-07") is deprecated or not supported. Current supported API versions: ${mockApiVersions.join( ", " )}` ); @@ -185,8 +165,7 @@ describe("Admin API Client", () => { expect(() => createAdminAPIClient({ ...config, - // @ts-ignore - accessToken: undefined, + accessToken: undefined as any, }) ).toThrow( new Error(`Admin API Client: an access token must be provided`) @@ -194,11 +173,9 @@ describe("Admin API Client", () => { }); it("throws an error when run in a browser environment (window is defined)", () => { - // @ts-ignore - global.window = {}; + global.window = {} as any; expect(() => - // @ts-ignore createAdminAPIClient({ ...config, accessToken: "access-token", @@ -341,7 +318,7 @@ describe("Admin API Client", () => { client.getApiUrl(version) ).toThrow( new Error( - `Admin API Client: the provided \`apiVersion\` is invalid. Current supported API versions: ${mockApiVersions.join( + `Admin API Client: the provided apiVersion ("123") is invalid. Current supported API versions: ${mockApiVersions.join( ", " )}` ) @@ -357,7 +334,7 @@ describe("Admin API Client", () => { client.getApiUrl(version); expect(consoleWarnSpy).toHaveBeenCalledWith( - `Admin API Client: the provided \`apiVersion\` (\`2021-01\`) is deprecated or not supported. Current supported API versions: ${mockApiVersions.join( + `Admin API Client: the provided apiVersion ("2021-01") is deprecated or not supported. Current supported API versions: ${mockApiVersions.join( ", " )}` ); diff --git a/packages/admin-api-client/src/utilities/api-versions.ts b/packages/admin-api-client/src/utilities/api-versions.ts deleted file mode 100644 index 35823bab3..000000000 --- a/packages/admin-api-client/src/utilities/api-versions.ts +++ /dev/null @@ -1,46 +0,0 @@ -function getQuarterMonth(quarter: number) { - const month = quarter * 3 - 2; - return month === 10 ? month : `0${month}`; -} - -function getPrevousVersion(year: number, quarter: number, nQuarter: number) { - const versionQuarter = quarter - nQuarter; - - if (versionQuarter <= 0) { - return `${year - 1}-${getQuarterMonth(versionQuarter + 4)}`; - } - - return `${year}-${getQuarterMonth(versionQuarter)}`; -} - -export function getCurrentAPIVersion() { - const date = new Date(); - const month = date.getUTCMonth(); - const year = date.getUTCFullYear(); - - const quarter = Math.floor(month / 3 + 1); - - return { - year, - quarter, - version: `${year}-${getQuarterMonth(quarter)}`, - }; -} - -export function getCurrentSupportedAPIVersions() { - const { year, quarter, version: currentVersion } = getCurrentAPIVersion(); - - const nextVersion = - quarter === 4 - ? `${year + 1}-01` - : `${year}-${getQuarterMonth(quarter + 1)}`; - - return [ - getPrevousVersion(year, quarter, 3), - getPrevousVersion(year, quarter, 2), - getPrevousVersion(year, quarter, 1), - currentVersion, - nextVersion, - "unstable", - ]; -} diff --git a/packages/admin-api-client/src/utilities/index.ts b/packages/admin-api-client/src/utilities/index.ts deleted file mode 100644 index c5d32706d..000000000 --- a/packages/admin-api-client/src/utilities/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./api-versions"; -export * from "./validations"; diff --git a/packages/admin-api-client/src/utilities/validations.ts b/packages/admin-api-client/src/utilities/validations.ts deleted file mode 100644 index fcd46afd5..000000000 --- a/packages/admin-api-client/src/utilities/validations.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { ERROR_PREFIX } from "../constants"; - -export function validateRequiredStoreDomain(storeDomain: string | undefined) { - if ( - !storeDomain || - typeof storeDomain !== "string" || - storeDomain.trim().length < 1 - ) { - throw new Error(`${ERROR_PREFIX} a valid store domain must be provided`); - } -} - -export function validateApiVersion( - currentSupportedApiVersions: string[], - apiVersion: string -) { - const supportedVerbage = `Current supported API versions: ${currentSupportedApiVersions.join( - ", " - )}`; - - if (!apiVersion || typeof apiVersion !== "string") { - throw new Error( - `${ERROR_PREFIX} the provided \`apiVersion\` is invalid. ${supportedVerbage}` - ); - } - - const trimmedApiVersion = apiVersion.trim(); - - if (!currentSupportedApiVersions.includes(trimmedApiVersion)) { - console.warn( - `${ERROR_PREFIX} the provided \`apiVersion\` (\`${apiVersion}\`) is deprecated or not supported. ${supportedVerbage}` - ); - } -} - -export function validateRequiredAccessToken(accessToken: string) { - if (!accessToken) { - throw new Error(`${ERROR_PREFIX} an access token must be provided`); - } -} - -export function validateServerSideUsage() { - if (typeof window !== "undefined") { - throw new Error( - `${ERROR_PREFIX} this client should not be used in the browser` - ); - } -} diff --git a/packages/admin-api-client/src/validations.ts b/packages/admin-api-client/src/validations.ts new file mode 100644 index 000000000..bc85dcdfb --- /dev/null +++ b/packages/admin-api-client/src/validations.ts @@ -0,0 +1,25 @@ +import { ERROR_PREFIX } from "./constants"; + +export function validateRequiredStoreDomain(storeDomain: string | undefined) { + if ( + !storeDomain || + typeof storeDomain !== "string" || + storeDomain.trim().length < 1 + ) { + throw new Error(`${ERROR_PREFIX} a valid store domain must be provided`); + } +} + +export function validateRequiredAccessToken(accessToken: string) { + if (!accessToken) { + throw new Error(`${ERROR_PREFIX} an access token must be provided`); + } +} + +export function validateServerSideUsage() { + if (typeof window !== "undefined") { + throw new Error( + `${ERROR_PREFIX} this client should not be used in the browser` + ); + } +} From e2490ef6021ef178d04bbbf0f52d5df4bac5e4de Mon Sep 17 00:00:00 2001 From: Scott Dixon Date: Thu, 2 Nov 2023 13:48:48 +1000 Subject: [PATCH 05/18] Clean up --- packages/admin-api-client/src/admin-api-client.ts | 1 - packages/admin-api-client/src/constants.ts | 1 - .../src/tests/admin-api-client.test.ts | 7 ------- packages/admin-api-client/src/validations.ts | 10 ++++------ 4 files changed, 4 insertions(+), 15 deletions(-) diff --git a/packages/admin-api-client/src/admin-api-client.ts b/packages/admin-api-client/src/admin-api-client.ts index 21856126a..1391cc8b9 100644 --- a/packages/admin-api-client/src/admin-api-client.ts +++ b/packages/admin-api-client/src/admin-api-client.ts @@ -3,7 +3,6 @@ import { CustomFetchAPI, RequestParams as GQLClientRequestParams, getCurrentSupportedAPIVersions, - validateDomainAndGetStoreUrl, validateApiVersion, } from "@shopify/graphql-client"; diff --git a/packages/admin-api-client/src/constants.ts b/packages/admin-api-client/src/constants.ts index b3f243502..4d8d15a9a 100644 --- a/packages/admin-api-client/src/constants.ts +++ b/packages/admin-api-client/src/constants.ts @@ -2,5 +2,4 @@ export const DEFAULT_CONTENT_TYPE = "application/json"; // This is value is replaced with package.json version during rollup build process export const DEFAULT_CLIENT_VERSION = "ROLLUP_REPLACE_CLIENT_VERSION"; export const ACCESS_TOKEN_HEADER = "X-Shopify-Access-Token"; -export const ERROR_PREFIX = "Admin API Client:"; export const CLIENT = "Admin API Client"; diff --git a/packages/admin-api-client/src/tests/admin-api-client.test.ts b/packages/admin-api-client/src/tests/admin-api-client.test.ts index ad23552d0..08e5ef9dc 100644 --- a/packages/admin-api-client/src/tests/admin-api-client.test.ts +++ b/packages/admin-api-client/src/tests/admin-api-client.test.ts @@ -13,13 +13,6 @@ const mockApiVersions = [ "unstable", ]; -jest.mock("../utilities/api-versions", () => { - return { - ...jest.requireActual("../utilities/api-versions"), - getCurrentSupportedAPIVersions: () => mockApiVersions, - }; -}); - jest.mock("@shopify/graphql-client", () => { return { ...jest.requireActual("@shopify/graphql-client"), diff --git a/packages/admin-api-client/src/validations.ts b/packages/admin-api-client/src/validations.ts index bc85dcdfb..205a257ee 100644 --- a/packages/admin-api-client/src/validations.ts +++ b/packages/admin-api-client/src/validations.ts @@ -1,4 +1,4 @@ -import { ERROR_PREFIX } from "./constants"; +import { CLIENT } from "./constants"; export function validateRequiredStoreDomain(storeDomain: string | undefined) { if ( @@ -6,20 +6,18 @@ export function validateRequiredStoreDomain(storeDomain: string | undefined) { typeof storeDomain !== "string" || storeDomain.trim().length < 1 ) { - throw new Error(`${ERROR_PREFIX} a valid store domain must be provided`); + throw new Error(`${CLIENT}: a valid store domain must be provided`); } } export function validateRequiredAccessToken(accessToken: string) { if (!accessToken) { - throw new Error(`${ERROR_PREFIX} an access token must be provided`); + throw new Error(`${CLIENT}: an access token must be provided`); } } export function validateServerSideUsage() { if (typeof window !== "undefined") { - throw new Error( - `${ERROR_PREFIX} this client should not be used in the browser` - ); + throw new Error(`${CLIENT}: this client should not be used in the browser`); } } From 9aaa4d23fdc8198db222550f48e4743edd1d52fe Mon Sep 17 00:00:00 2001 From: Scott Dixon Date: Fri, 3 Nov 2023 09:11:12 +1000 Subject: [PATCH 06/18] Add userAgentPrefix param --- packages/admin-api-client/README.md | 2 +- .../admin-api-client/src/admin-api-client.ts | 16 +++++++--- .../src/tests/admin-api-client.test.ts | 29 +++++++++++++++---- packages/admin-api-client/src/types.ts | 2 +- 4 files changed, 37 insertions(+), 12 deletions(-) diff --git a/packages/admin-api-client/README.md b/packages/admin-api-client/README.md index c8e65c5c0..9945846ed 100644 --- a/packages/admin-api-client/README.md +++ b/packages/admin-api-client/README.md @@ -57,7 +57,7 @@ const {data, error, extensions} = await client.request(operation, { | storeDomain | `string` | The domain of the store. It can be the Shopify `myshopify.com` domain or a custom store domain. | | apiVersion | `string` | The requested Admin API version. | | accessToken | `string` | Admin API access token. | -| clientName? | `string` | Name of the client. | +| userAgentPrefix? | `string` | Any prefix you wish to include in the User-Agent for requests made by the library. | | customFetchAPI? | `CustomFetchAPI` | A custom fetch function that will be used by the client when it interacts with the API. Defaults to the [browser's Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API). | ## Client properties diff --git a/packages/admin-api-client/src/admin-api-client.ts b/packages/admin-api-client/src/admin-api-client.ts index 1391cc8b9..4fce37f8e 100644 --- a/packages/admin-api-client/src/admin-api-client.ts +++ b/packages/admin-api-client/src/admin-api-client.ts @@ -11,7 +11,12 @@ import { AdminAPIClientConfig, AdminAPIClientRequestOptions, } from "./types"; -import { DEFAULT_CONTENT_TYPE, ACCESS_TOKEN_HEADER, CLIENT } from "./constants"; +import { + DEFAULT_CONTENT_TYPE, + ACCESS_TOKEN_HEADER, + CLIENT, + DEFAULT_CLIENT_VERSION, +} from "./constants"; import { validateRequiredStoreDomain, validateRequiredAccessToken, @@ -24,13 +29,13 @@ export function createAdminAPIClient({ storeDomain, apiVersion, accessToken, - clientName, + userAgentPrefix, customFetchAPI: clientFetchAPI, }: { storeDomain: string; apiVersion: string; accessToken: string; - clientName?: string; + userAgentPrefix?: string; customFetchAPI?: CustomFetchAPI; }): AdminAPIClient { const currentSupportedApiVersions = getCurrentSupportedAPIVersions(); @@ -73,9 +78,12 @@ export function createAdminAPIClient({ "Content-Type": DEFAULT_CONTENT_TYPE, Accept: DEFAULT_CONTENT_TYPE, [ACCESS_TOKEN_HEADER]: accessToken, + "User-Agent": `${ + userAgentPrefix ? `${userAgentPrefix} | ` : "" + }${CLIENT} v${DEFAULT_CLIENT_VERSION}`, }, apiUrl: generateApiUrl(), - clientName, + userAgentPrefix, }; const graphqlClient = createGraphQLClient({ diff --git a/packages/admin-api-client/src/tests/admin-api-client.test.ts b/packages/admin-api-client/src/tests/admin-api-client.test.ts index 08e5ef9dc..491f2934d 100644 --- a/packages/admin-api-client/src/tests/admin-api-client.test.ts +++ b/packages/admin-api-client/src/tests/admin-api-client.test.ts @@ -50,15 +50,32 @@ describe("Admin API Client", () => { describe("client initialization", () => { it("calls the graphql client with headers and API URL", () => { - const clientName = "test-client"; + createAdminAPIClient({ ...config }); + expect( + (createGraphQLClient as jest.Mock).mock.calls[0][0] + ).toHaveProperty("headers", { + "Content-Type": "application/json", + Accept: "application/json", + "X-Shopify-Access-Token": "access-token", + "User-Agent": "Admin API Client vROLLUP_REPLACE_CLIENT_VERSION", + }); + expect( + (createGraphQLClient as jest.Mock).mock.calls[0][0] + ).toHaveProperty("url", mockApiUrl); + }); + + it("Prepends user agent prefix if supplied", () => { + const userAgentPrefix = "test-UAP"; - createAdminAPIClient({ ...config, clientName }); + createAdminAPIClient({ ...config, userAgentPrefix }); expect( (createGraphQLClient as jest.Mock).mock.calls[0][0] ).toHaveProperty("headers", { "Content-Type": "application/json", Accept: "application/json", "X-Shopify-Access-Token": "access-token", + "User-Agent": + "test-UAP | Admin API Client vROLLUP_REPLACE_CLIENT_VERSION", }); expect( (createGraphQLClient as jest.Mock).mock.calls[0][0] @@ -196,11 +213,11 @@ describe("Admin API Client", () => { expect(client.config.accessToken).toBe(config.accessToken); }); - it("returns a config object that includes the provided client name", () => { - const clientName = "test-client"; + it("returns a config object that includes the provided user agent prefix", () => { + const userAgentPrefix = "test-UAP"; - const client = createAdminAPIClient({ ...config, clientName }); - expect(client.config.clientName).toBe(clientName); + const client = createAdminAPIClient({ ...config, userAgentPrefix }); + expect(client.config.userAgentPrefix).toBe(userAgentPrefix); }); describe("API url", () => { diff --git a/packages/admin-api-client/src/types.ts b/packages/admin-api-client/src/types.ts index 26d180fbb..c7e92f175 100644 --- a/packages/admin-api-client/src/types.ts +++ b/packages/admin-api-client/src/types.ts @@ -11,7 +11,7 @@ export interface AdminAPIClientConfig { readonly accessToken: string; readonly headers: Headers; readonly apiUrl: string; - readonly clientName?: string; + readonly userAgentPrefix?: string; readonly retries?: number; } From 243a0f1eaff4f080a7f4d3fe114701dc39b3a4b0 Mon Sep 17 00:00:00 2001 From: Scott Dixon Date: Tue, 7 Nov 2023 15:04:26 +1000 Subject: [PATCH 07/18] API -> Api --- packages/admin-api-client/package.json | 2 +- .../admin-api-client/src/admin-api-client.ts | 36 +++++------ packages/admin-api-client/src/index.ts | 2 +- .../src/tests/admin-api-client.test.ts | 62 +++++++++---------- packages/admin-api-client/src/types.ts | 16 ++--- 5 files changed, 59 insertions(+), 59 deletions(-) diff --git a/packages/admin-api-client/package.json b/packages/admin-api-client/package.json index d94f8d5ec..4cd53bbc4 100644 --- a/packages/admin-api-client/package.json +++ b/packages/admin-api-client/package.json @@ -66,7 +66,7 @@ "!node_modules" ], "dependencies": { - "@shopify/graphql-client": "^0.5.0" + "@shopify/graphql-client": "^0.6.0" }, "devDependencies": { "@babel/core": "^7.21.3", diff --git a/packages/admin-api-client/src/admin-api-client.ts b/packages/admin-api-client/src/admin-api-client.ts index 4fce37f8e..32729ab0e 100644 --- a/packages/admin-api-client/src/admin-api-client.ts +++ b/packages/admin-api-client/src/admin-api-client.ts @@ -1,15 +1,15 @@ import { createGraphQLClient, - CustomFetchAPI, + CustomFetchApi, RequestParams as GQLClientRequestParams, - getCurrentSupportedAPIVersions, + getCurrentSupportedApiVersions, validateApiVersion, } from "@shopify/graphql-client"; import { - AdminAPIClient, - AdminAPIClientConfig, - AdminAPIClientRequestOptions, + AdminApiClient, + AdminApiClientConfig, + AdminApiClientRequestOptions, } from "./types"; import { DEFAULT_CONTENT_TYPE, @@ -25,20 +25,20 @@ import { const httpRegEx = new RegExp("^(https?:)?//"); -export function createAdminAPIClient({ +export function createAdminApiClient({ storeDomain, apiVersion, accessToken, userAgentPrefix, - customFetchAPI: clientFetchAPI, + customFetchApi: clientFetchApi, }: { storeDomain: string; apiVersion: string; accessToken: string; userAgentPrefix?: string; - customFetchAPI?: CustomFetchAPI; -}): AdminAPIClient { - const currentSupportedApiVersions = getCurrentSupportedAPIVersions(); + customFetchApi?: CustomFetchApi; +}): AdminApiClient { + const currentSupportedApiVersions = getCurrentSupportedApiVersions(); validateServerSideUsage(); validateRequiredStoreDomain(storeDomain); @@ -70,7 +70,7 @@ export function createAdminAPIClient({ }admin/api/${urlApiVersion}/graphql.json`; }; - const config: AdminAPIClientConfig = { + const config: AdminApiClientConfig = { storeDomain: trimmedStoreDomain, apiVersion, accessToken, @@ -89,22 +89,22 @@ export function createAdminAPIClient({ const graphqlClient = createGraphQLClient({ headers: config.headers, url: config.apiUrl, - fetchAPI: clientFetchAPI, + fetchApi: clientFetchApi, }); - const getHeaders: AdminAPIClient["getHeaders"] = (customHeaders) => { + const getHeaders: AdminApiClient["getHeaders"] = (customHeaders) => { return customHeaders ? { ...customHeaders, ...config.headers } : config.headers; }; - const getApiUrl: AdminAPIClient["getApiUrl"] = (propApiVersion?: string) => { + const getApiUrl: AdminApiClient["getApiUrl"] = (propApiVersion?: string) => { return propApiVersion ? generateApiUrl(propApiVersion) : config.apiUrl; }; const getGQLClientRequestProps = ( operation: string, - options?: AdminAPIClientRequestOptions + options?: AdminApiClientRequestOptions ): GQLClientRequestParams => { const props: GQLClientRequestParams = [operation]; @@ -121,17 +121,17 @@ export function createAdminAPIClient({ return props; }; - const fetch: AdminAPIClient["fetch"] = (...props) => { + const fetch: AdminApiClient["fetch"] = (...props) => { const requestProps = getGQLClientRequestProps(...props); return graphqlClient.fetch(...requestProps); }; - const request: AdminAPIClient["request"] = (...props) => { + const request: AdminApiClient["request"] = (...props) => { const requestProps = getGQLClientRequestProps(...props); return graphqlClient.request(...requestProps); }; - const client: AdminAPIClient = { + const client: AdminApiClient = { config, getHeaders, getApiUrl, diff --git a/packages/admin-api-client/src/index.ts b/packages/admin-api-client/src/index.ts index 821a98ef5..5994aed01 100644 --- a/packages/admin-api-client/src/index.ts +++ b/packages/admin-api-client/src/index.ts @@ -1 +1 @@ -export { createAdminAPIClient } from "./admin-api-client"; +export { createAdminApiClient } from "./admin-api-client"; diff --git a/packages/admin-api-client/src/tests/admin-api-client.test.ts b/packages/admin-api-client/src/tests/admin-api-client.test.ts index 491f2934d..6e3ee7ebe 100644 --- a/packages/admin-api-client/src/tests/admin-api-client.test.ts +++ b/packages/admin-api-client/src/tests/admin-api-client.test.ts @@ -1,7 +1,7 @@ import { createGraphQLClient, GraphQLClient } from "@shopify/graphql-client"; -import { AdminAPIClient } from "types"; +import { AdminApiClient } from "types"; -import { createAdminAPIClient } from "../admin-api-client"; +import { createAdminApiClient } from "../admin-api-client"; import { ACCESS_TOKEN_HEADER, DEFAULT_CONTENT_TYPE } from "../constants"; const mockApiVersions = [ @@ -21,7 +21,7 @@ jest.mock("@shopify/graphql-client", () => { }); describe("Admin API Client", () => { - describe("createAdminAPIClient()", () => { + describe("createAdminApiClient()", () => { const config = { storeDomain: "https://test-store.myshopify.io", apiVersion: "2023-10", @@ -50,7 +50,7 @@ describe("Admin API Client", () => { describe("client initialization", () => { it("calls the graphql client with headers and API URL", () => { - createAdminAPIClient({ ...config }); + createAdminApiClient({ ...config }); expect( (createGraphQLClient as jest.Mock).mock.calls[0][0] ).toHaveProperty("headers", { @@ -67,7 +67,7 @@ describe("Admin API Client", () => { it("Prepends user agent prefix if supplied", () => { const userAgentPrefix = "test-UAP"; - createAdminAPIClient({ ...config, userAgentPrefix }); + createAdminApiClient({ ...config, userAgentPrefix }); expect( (createGraphQLClient as jest.Mock).mock.calls[0][0] ).toHaveProperty("headers", { @@ -82,19 +82,19 @@ describe("Admin API Client", () => { ).toHaveProperty("url", mockApiUrl); }); - it("calls the graphql client with the provided customFetchAPI", () => { - const customFetchAPI = jest.fn(); + it("calls the graphql client with the provided customFetchApi", () => { + const customFetchApi = jest.fn(); - createAdminAPIClient({ ...config, customFetchAPI }); + createAdminApiClient({ ...config, customFetchApi }); expect(createGraphQLClient).toHaveBeenCalled(); expect( (createGraphQLClient as jest.Mock).mock.calls[0][0] - ).toHaveProperty("fetchAPI", customFetchAPI); + ).toHaveProperty("fetchApi", customFetchApi); }); it("returns a client object that contains a config object, getters for header and API URL and request and fetch functions", () => { - const client = createAdminAPIClient(config); + const client = createAdminApiClient(config); expect(client).toHaveProperty("config"); expect(client).toMatchObject({ @@ -108,7 +108,7 @@ describe("Admin API Client", () => { describe("validations", () => { it("throws an error when a store domain is not provided", () => { expect(() => - createAdminAPIClient({ + createAdminApiClient({ ...config, storeDomain: undefined as any, }) @@ -119,7 +119,7 @@ describe("Admin API Client", () => { it("throws an error when an empty string is provided as the store domain", () => { expect(() => - createAdminAPIClient({ + createAdminApiClient({ ...config, storeDomain: " " as any, }) @@ -130,7 +130,7 @@ describe("Admin API Client", () => { it("throws an error when the provided store domain is not a string", () => { expect(() => - createAdminAPIClient({ + createAdminApiClient({ ...config, storeDomain: 123 as any, }) @@ -141,7 +141,7 @@ describe("Admin API Client", () => { it("throws an error when the api version is not provided", () => { expect(() => - createAdminAPIClient({ + createAdminApiClient({ ...config, apiVersion: undefined as any, }) @@ -159,7 +159,7 @@ describe("Admin API Client", () => { .spyOn(global.console, "warn") .mockImplementation(jest.fn()); - createAdminAPIClient({ + createAdminApiClient({ ...config, apiVersion: "2022-07", }); @@ -173,7 +173,7 @@ describe("Admin API Client", () => { it("throws an error when an access token isn't provided", () => { expect(() => - createAdminAPIClient({ + createAdminApiClient({ ...config, accessToken: undefined as any, }) @@ -186,7 +186,7 @@ describe("Admin API Client", () => { global.window = {} as any; expect(() => - createAdminAPIClient({ + createAdminApiClient({ ...config, accessToken: "access-token", }) @@ -204,19 +204,19 @@ describe("Admin API Client", () => { describe("client config", () => { it("returns a config object that includes the provided store domain", () => { - const client = createAdminAPIClient(config); + const client = createAdminApiClient(config); expect(client.config.storeDomain).toBe(config.storeDomain); }); it("returns a config object that includes the provided access token", () => { - const client = createAdminAPIClient(config); + const client = createAdminApiClient(config); expect(client.config.accessToken).toBe(config.accessToken); }); it("returns a config object that includes the provided user agent prefix", () => { const userAgentPrefix = "test-UAP"; - const client = createAdminAPIClient({ ...config, userAgentPrefix }); + const client = createAdminApiClient({ ...config, userAgentPrefix }); expect(client.config.userAgentPrefix).toBe(userAgentPrefix); }); @@ -225,7 +225,7 @@ describe("Admin API Client", () => { const expectedAPIUrl = `https://${cleanedStoreDomain}/admin/api/${config.apiVersion}/graphql.json`; it("returns a config object that includes the secure API url constructed with the provided API version and a store domain that includes 'https'", () => { - const client = createAdminAPIClient({ + const client = createAdminApiClient({ ...config, storeDomain: `https://${cleanedStoreDomain}`, }); @@ -233,7 +233,7 @@ describe("Admin API Client", () => { }); it("returns a config object that includes the secure API url constructed with the provided API version and a store domain that includes 'http'", () => { - const client = createAdminAPIClient({ + const client = createAdminApiClient({ ...config, storeDomain: `http://${cleanedStoreDomain}`, }); @@ -241,7 +241,7 @@ describe("Admin API Client", () => { }); it("returns a config object that includes the secure API url constructed with the provided API version and a store domain that does not include a protocol", () => { - const client = createAdminAPIClient({ + const client = createAdminApiClient({ ...config, storeDomain: cleanedStoreDomain, }); @@ -249,7 +249,7 @@ describe("Admin API Client", () => { }); it("returns a config object that includes a valid API url constructed with the provided spaced out API version and a store domain", () => { - const client = createAdminAPIClient({ + const client = createAdminApiClient({ ...config, storeDomain: ` ${cleanedStoreDomain} `, apiVersion: ` ${config.apiVersion} `, @@ -260,19 +260,19 @@ describe("Admin API Client", () => { describe("config headers", () => { it("returns a header object that includes the content-type header", () => { - const client = createAdminAPIClient(config); + const client = createAdminApiClient(config); expect(client.config.headers["Content-Type"]).toBe( DEFAULT_CONTENT_TYPE ); }); it("returns a header object that includes the accept header", () => { - const client = createAdminAPIClient(config); + const client = createAdminApiClient(config); expect(client.config.headers.Accept).toBe(DEFAULT_CONTENT_TYPE); }); it("returns a header object that includes the access token headers when an access token is provided", () => { - const client = createAdminAPIClient(config); + const client = createAdminApiClient(config); expect(client.config.headers[ACCESS_TOKEN_HEADER]).toEqual( config.accessToken ); @@ -281,10 +281,10 @@ describe("Admin API Client", () => { }); describe("getHeaders()", () => { - let client: AdminAPIClient; + let client: AdminApiClient; beforeEach(() => { - client = createAdminAPIClient(config); + client = createAdminApiClient(config); }); it("returns the client's default headers if no custom headers are provided", () => { @@ -302,10 +302,10 @@ describe("Admin API Client", () => { }); describe("getApiUrl()", () => { - let client: AdminAPIClient; + let client: AdminApiClient; beforeEach(() => { - client = createAdminAPIClient(config); + client = createAdminApiClient(config); }); it("returns the client's default API url if no API version was provided", () => { diff --git a/packages/admin-api-client/src/types.ts b/packages/admin-api-client/src/types.ts index c7e92f175..6b9193ba0 100644 --- a/packages/admin-api-client/src/types.ts +++ b/packages/admin-api-client/src/types.ts @@ -5,7 +5,7 @@ import { GraphQLClient, } from "@shopify/graphql-client"; -export interface AdminAPIClientConfig { +export interface AdminApiClientConfig { readonly storeDomain: string; readonly apiVersion: string; readonly accessToken: string; @@ -15,26 +15,26 @@ export interface AdminAPIClientConfig { readonly retries?: number; } -export interface AdminAPIClientRequestOptions { +export interface AdminApiClientRequestOptions { variables?: OperationVariables; apiVersion?: string; customHeaders?: Headers; retries?: number; } -export type AdminAPIClientRequestParams = [ +export type AdminApiClientRequestParams = [ operation: string, - options?: AdminAPIClientRequestOptions + options?: AdminApiClientRequestOptions ]; -export interface AdminAPIClient { - readonly config: AdminAPIClientConfig; +export interface AdminApiClient { + readonly config: AdminApiClientConfig; getHeaders: (customHeaders?: Headers) => Headers; getApiUrl: (apiVersion?: string) => string; fetch: ( - ...props: AdminAPIClientRequestParams + ...props: AdminApiClientRequestParams ) => ReturnType; request: ( - ...props: AdminAPIClientRequestParams + ...props: AdminApiClientRequestParams ) => Promise>; } From 562dd094b1168e306fedf7cb9d6e1f2299c763f1 Mon Sep 17 00:00:00 2001 From: Scott Dixon Date: Wed, 8 Nov 2023 10:31:22 +1000 Subject: [PATCH 08/18] Empty changeset --- .changeset/swift-buckets-wait.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .changeset/swift-buckets-wait.md diff --git a/.changeset/swift-buckets-wait.md b/.changeset/swift-buckets-wait.md new file mode 100644 index 000000000..a845151cc --- /dev/null +++ b/.changeset/swift-buckets-wait.md @@ -0,0 +1,2 @@ +--- +--- From bc897b1f724371886762af91f7f2892840b149dd Mon Sep 17 00:00:00 2001 From: Scott Dixon Date: Thu, 9 Nov 2023 15:11:29 +1000 Subject: [PATCH 09/18] Logger, retries, updated graphql-client: new types and validations --- .eslintrc.cjs | 12 -- packages/admin-api-client/README.md | 20 +-- packages/admin-api-client/package.json | 10 +- packages/admin-api-client/rollup.config.cjs | 12 +- .../admin-api-client/src/admin-api-client.ts | 138 +++++++++--------- .../src/tests/admin-api-client.test.ts | 14 +- packages/admin-api-client/src/types.ts | 53 +++---- yarn.lock | 4 + 8 files changed, 121 insertions(+), 142 deletions(-) delete mode 100644 .eslintrc.cjs diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index ea174d46c..000000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = { - env: { - browser: false, - es2021: true, - }, - extends: ['plugin:@shopify/typescript', 'plugin:@shopify/prettier'], - ignorePatterns: ['dist/'], - rules: { - 'no-console': 0, - '@typescript-eslint/naming-convention': 0, - }, -}; diff --git a/packages/admin-api-client/README.md b/packages/admin-api-client/README.md index 9945846ed..56352c36a 100644 --- a/packages/admin-api-client/README.md +++ b/packages/admin-api-client/README.md @@ -21,9 +21,9 @@ npm install @shopify/admin-api-client -s ### Initialize the Admin API Client ```typescript -import {createAdminAPIClient} from '@shopify/admin-api-client'; +import {createAdminApiClient} from '@shopify/admin-api-client'; -const client = createAdminAPIClient({ +const client = createAdminApiClient({ storeDomain: 'your-shop-name.myshopify.com', apiVersion: '2023-04', accessToken: 'your-admin-api-access-token', @@ -43,14 +43,14 @@ const operation = ` } `; -const {data, error, extensions} = await client.request(operation, { +const {data, errors, extensions} = await client.request(operation, { variables: { id: 'gid://shopify/Product/7608002183224', }, }); ``` -### `createAdminAPIClient()` parameters +### `createAdminApiClient()` parameters | Property | Type | Description | | ------------------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -65,7 +65,7 @@ const {data, error, extensions} = await client.request(operation, { | Property | Type | Description | | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | config | `ClientConfig` | Configuration for the client | -| getHeaders | `(customHeaders?: Record) => Record` | Returns Admin API specific headers needed to interact with the API. If `customHeaders` is provided, the custom headers will be included in the returned headers object. | +| getHeaders | `(customHeaders?: {[key: string]: string}) => {[key: string]: string` | Returns Admin API specific headers needed to interact with the API. If `customHeaders` is provided, the custom headers will be included in the returned headers object. | | getApiUrl | `(apiVersion?: string) => string` | Returns the shop specific API url. If an API version is provided, the returned URL will include the provided version, else the URL will include the API version set at client initialization. | | fetch | `(operation: string, options?:`[AdminAPIClientRequestOptions](#adminapiclientrequestoptions-properties)`) => Promise` | Fetches data from Admin API using the provided GQL `operation` string and [AdminAPIClientRequestOptions](#adminapiclientrequestoptions-properties) object and returns the network response. | | request | `(operation: string, options?:`[AdminAPIClientRequestOptions](#adminapiclientrequestoptions-properties)`) => Promise<`[ClientResponse\](#clientresponsetdata)`>` | Requests data from Admin API using the provided GQL `operation` string and [AdminAPIClientRequestOptions](#adminapiclientrequestoptions-properties) object and returns a normalized response object. | @@ -76,14 +76,14 @@ const {data, error, extensions} = await client.request(operation, { | -------------- | ------------------------ | ---------------------------------------------------- | | variables? | `Record` | Variable values needed in the graphQL operation | | apiVersion? | `string` | The Admin API version to use in the API request | -| customHeaders? | `Record` | Customized headers to be included in the API request | +| customHeaders? | `{[key: string]: string}` | Customized headers to be included in the API request | ## `ClientResponse` | Name | Type | Description | | ----------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | data? | `TData \| any` | Data returned from the Admin API. If `TData` was provided to the function, the return type is `TData`, else it returns type `any`. | -| error? | `ClientResponse['error']` | Error object that contains any API or network errors that occured while fetching the data from the API. It does not include any `UserErrors`. | +| errors? | `ClientResponse['error']` | Error object that contains any API or network errors that occured while fetching the data from the API. It does not include any `UserErrors`. | | extensions? | `Record` | Additional information on the GraphQL response data and context. It can include the `context` object that contains the localization context information used to generate the returned API response. | ### Client `request()` response examples @@ -173,7 +173,7 @@ const productQuery = ` } `; -const {data, error, extensions} = await client.request(productQuery, { +const {data, errors, extensions} = await client.request(productQuery, { variables: { id: 'gid://shopify/Product/7608002183224', }, @@ -193,7 +193,7 @@ const productQuery = ` } `; -const {data, error, extensions} = await client.request(productQuery, { +const {data, errors, extensions} = await client.request(productQuery, { variables: { id: 'gid://shopify/Product/7608002183224', }, @@ -214,7 +214,7 @@ const productQuery = ` } `; -const {data, error, extensions} = await client.request(productQuery, { +const {data, errors, extensions} = await client.request(productQuery, { variables: { id: 'gid://shopify/Product/7608002183224', }, diff --git a/packages/admin-api-client/package.json b/packages/admin-api-client/package.json index 4cd53bbc4..02697194f 100644 --- a/packages/admin-api-client/package.json +++ b/packages/admin-api-client/package.json @@ -57,16 +57,10 @@ "admin API" ], "files": [ - "**/*.d.ts", - "**/*.d.ts.map", - "**/*.js", - "**/*.js.map", - "**/*.mjs", - "**/*.mjs.map", - "!node_modules" + "dist/**/*.*" ], "dependencies": { - "@shopify/graphql-client": "^0.6.0" + "@shopify/graphql-client": "^0.7.0" }, "devDependencies": { "@babel/core": "^7.21.3", diff --git a/packages/admin-api-client/rollup.config.cjs b/packages/admin-api-client/rollup.config.cjs index c50eaafdd..a1e92aae4 100644 --- a/packages/admin-api-client/rollup.config.cjs +++ b/packages/admin-api-client/rollup.config.cjs @@ -28,7 +28,7 @@ export function getPlugins({ tsconfig, minify } = {}) { const packageName = pkg.name.substring(1); const repositoryName = pkg.repository.url.split(":")[1].split(".")[0]; export const bannerConfig = { - banner: `/*! ${packageName} -- Copyright (c) 2023-present, Shopify Inc. -- license (MIT): https://github.com/${repositoryName}/blob/main/LICENSE */`, + banner: `/*! ${packageName}@${pkg.version} -- Copyright (c) 2023-present, Shopify Inc. -- license (MIT): https://github.com/Shopify/shopify-api-js/blob/main/LICENSE.md */`, }; const config = [ @@ -40,10 +40,10 @@ const config = [ }), output: [ { - file: "./dist/umd/storefront-api-client.min.js", + file: "./dist/umd/admin-api-client.min.js", format: "umd", sourcemap: true, - name: "ShopifyStorefrontAPIClient", + name: "ShopifyAdminApiClient", ...bannerConfig, }, ], @@ -55,10 +55,10 @@ const config = [ }), output: [ { - file: "./dist/umd/storefront-api-client.js", + file: "./dist/umd/admin-api-client.js", format: "umd", sourcemap: true, - name: "ShopifyStorefrontAPIClient", + name: "ShopifyAdminApiClient", ...bannerConfig, }, ], @@ -93,7 +93,7 @@ const config = [ }, { input: "./dist/ts/index.d.ts", - output: [{ file: "dist/storefront-api-client.d.ts", format: "es" }], + output: [{ file: "dist/admin-api-client.d.ts", format: "es" }], plugins: [dts.default()], }, ]; diff --git a/packages/admin-api-client/src/admin-api-client.ts b/packages/admin-api-client/src/admin-api-client.ts index 32729ab0e..0c8edec58 100644 --- a/packages/admin-api-client/src/admin-api-client.ts +++ b/packages/admin-api-client/src/admin-api-client.ts @@ -1,15 +1,18 @@ import { createGraphQLClient, CustomFetchApi, - RequestParams as GQLClientRequestParams, getCurrentSupportedApiVersions, validateApiVersion, + validateDomainAndGetStoreUrl, + generateGetGQLClientParams, + generateGetHeaders, + ApiClientRequestParams, } from "@shopify/graphql-client"; import { + AdminApiClientOptions, AdminApiClient, AdminApiClientConfig, - AdminApiClientRequestOptions, } from "./types"; import { DEFAULT_CONTENT_TYPE, @@ -18,60 +21,49 @@ import { DEFAULT_CLIENT_VERSION, } from "./constants"; import { - validateRequiredStoreDomain, validateRequiredAccessToken, validateServerSideUsage, } from "./validations"; -const httpRegEx = new RegExp("^(https?:)?//"); - export function createAdminApiClient({ storeDomain, apiVersion, accessToken, userAgentPrefix, + retries = 0, customFetchApi: clientFetchApi, -}: { - storeDomain: string; - apiVersion: string; - accessToken: string; - userAgentPrefix?: string; - customFetchApi?: CustomFetchApi; -}): AdminApiClient { + logger, +}: AdminApiClientOptions): AdminApiClient { const currentSupportedApiVersions = getCurrentSupportedApiVersions(); + const storeUrl = validateDomainAndGetStoreUrl({ + client: CLIENT, + storeDomain, + }); + + const baseApiVersionValidationParams = { + client: CLIENT, + currentSupportedApiVersions, + logger, + }; + validateServerSideUsage(); - validateRequiredStoreDomain(storeDomain); validateApiVersion({ client: CLIENT, currentSupportedApiVersions, apiVersion, + logger, }); validateRequiredAccessToken(accessToken); - const trimmedStoreDomain = storeDomain.trim(); - const cleanedStoreDomain = httpRegEx.test(trimmedStoreDomain) - ? trimmedStoreDomain.substring(trimmedStoreDomain.indexOf("//") + 2) - : trimmedStoreDomain; - - const generateApiUrl = (version?: string) => { - if (version) { - validateApiVersion({ - client: CLIENT, - currentSupportedApiVersions, - apiVersion: version, - }); - } - - const urlApiVersion = (version ?? apiVersion).trim(); - - return `https://${cleanedStoreDomain}${ - cleanedStoreDomain.endsWith("/") ? "" : "/" - }admin/api/${urlApiVersion}/graphql.json`; - }; + const apiUrlFormatter = generateApiUrlFormatter( + storeUrl, + apiVersion, + baseApiVersionValidationParams + ); const config: AdminApiClientConfig = { - storeDomain: trimmedStoreDomain, + storeDomain: storeUrl, apiVersion, accessToken, headers: { @@ -82,53 +74,32 @@ export function createAdminApiClient({ userAgentPrefix ? `${userAgentPrefix} | ` : "" }${CLIENT} v${DEFAULT_CLIENT_VERSION}`, }, - apiUrl: generateApiUrl(), + apiUrl: apiUrlFormatter(), userAgentPrefix, }; const graphqlClient = createGraphQLClient({ headers: config.headers, url: config.apiUrl, + retries, fetchApi: clientFetchApi, + logger, }); - const getHeaders: AdminApiClient["getHeaders"] = (customHeaders) => { - return customHeaders - ? { ...customHeaders, ...config.headers } - : config.headers; - }; - - const getApiUrl: AdminApiClient["getApiUrl"] = (propApiVersion?: string) => { - return propApiVersion ? generateApiUrl(propApiVersion) : config.apiUrl; - }; - - const getGQLClientRequestProps = ( - operation: string, - options?: AdminApiClientRequestOptions - ): GQLClientRequestParams => { - const props: GQLClientRequestParams = [operation]; + const getHeaders = generateGetHeaders(config); + const getApiUrl = generateGetApiUrl(config, apiUrlFormatter); - if (options) { - const { variables, apiVersion: propApiVersion, customHeaders } = options; - - props.push({ - variables, - headers: customHeaders ? getHeaders(customHeaders) : undefined, - url: propApiVersion ? getApiUrl(propApiVersion) : undefined, - }); - } - - return props; - }; + const getGQLClientParams = generateGetGQLClientParams({ + getHeaders, + getApiUrl, + }); - const fetch: AdminApiClient["fetch"] = (...props) => { - const requestProps = getGQLClientRequestProps(...props); - return graphqlClient.fetch(...requestProps); + const fetch = (...props: ApiClientRequestParams) => { + return graphqlClient.fetch(...getGQLClientParams(...props)); }; - const request: AdminApiClient["request"] = (...props) => { - const requestProps = getGQLClientRequestProps(...props); - return graphqlClient.request(...requestProps); + const request = (...props: ApiClientRequestParams) => { + return graphqlClient.request(...getGQLClientParams(...props)); }; const client: AdminApiClient = { @@ -141,3 +112,34 @@ export function createAdminApiClient({ return Object.freeze(client); } + +function generateApiUrlFormatter( + storeUrl: string, + defaultApiVersion: string, + baseApiVersionValidationParams: Omit< + Parameters[0], + "apiVersion" + > +) { + return (apiVersion?: string) => { + if (apiVersion) { + validateApiVersion({ + ...baseApiVersionValidationParams, + apiVersion, + }); + } + + const urlApiVersion = (apiVersion ?? defaultApiVersion).trim(); + + return `${storeUrl}/admin/api/${urlApiVersion}/graphql.json`; + }; +} + +function generateGetApiUrl( + config: AdminApiClientConfig, + apiUrlFormatter: (version?: string) => string +): AdminApiClient["getApiUrl"] { + return (propApiVersion?: string) => { + return propApiVersion ? apiUrlFormatter(propApiVersion) : config.apiUrl; + }; +} diff --git a/packages/admin-api-client/src/tests/admin-api-client.test.ts b/packages/admin-api-client/src/tests/admin-api-client.test.ts index 6e3ee7ebe..ced48a8cc 100644 --- a/packages/admin-api-client/src/tests/admin-api-client.test.ts +++ b/packages/admin-api-client/src/tests/admin-api-client.test.ts @@ -113,7 +113,9 @@ describe("Admin API Client", () => { storeDomain: undefined as any, }) ).toThrow( - new Error("Admin API Client: a valid store domain must be provided") + new Error( + 'Admin API Client: a valid store domain ("undefined") must be provided' + ) ); }); @@ -124,7 +126,9 @@ describe("Admin API Client", () => { storeDomain: " " as any, }) ).toThrow( - new Error("Admin API Client: a valid store domain must be provided") + new Error( + 'Admin API Client: a valid store domain (" ") must be provided' + ) ); }); @@ -135,7 +139,9 @@ describe("Admin API Client", () => { storeDomain: 123 as any, }) ).toThrow( - new Error("Admin API Client: a valid store domain must be provided") + new Error( + 'Admin API Client: a valid store domain ("123") must be provided' + ) ); }); @@ -289,7 +295,7 @@ describe("Admin API Client", () => { it("returns the client's default headers if no custom headers are provided", () => { const headers = client.getHeaders(); - expect(headers).toBe(client.config.headers); + expect(headers).toEqual(client.config.headers); }); it("returns a headers object that contains both the client default headers and the provided custom headers", () => { diff --git a/packages/admin-api-client/src/types.ts b/packages/admin-api-client/src/types.ts index 6b9193ba0..b4aab8d63 100644 --- a/packages/admin-api-client/src/types.ts +++ b/packages/admin-api-client/src/types.ts @@ -1,40 +1,25 @@ import { - OperationVariables, - Headers, - ClientResponse, - GraphQLClient, + ApiClient, + CustomFetchApi, + ApiClientLogger, + ApiClientLogContentTypes, + ApiClientConfig, } from "@shopify/graphql-client"; -export interface AdminApiClientConfig { - readonly storeDomain: string; - readonly apiVersion: string; - readonly accessToken: string; - readonly headers: Headers; - readonly apiUrl: string; - readonly userAgentPrefix?: string; - readonly retries?: number; -} +export type AdminApiClientLogContentTypes = ApiClientLogContentTypes; -export interface AdminApiClientRequestOptions { - variables?: OperationVariables; - apiVersion?: string; - customHeaders?: Headers; - retries?: number; -} +export type AdminApiClientConfig = ApiClientConfig & { + accessToken: string; + clientName?: string; + userAgentPrefix?: string; +}; -export type AdminApiClientRequestParams = [ - operation: string, - options?: AdminApiClientRequestOptions -]; +export type AdminApiClientOptions = Omit< + AdminApiClientConfig, + "headers" | "apiUrl" +> & { + customFetchApi?: CustomFetchApi; + logger?: ApiClientLogger; +}; -export interface AdminApiClient { - readonly config: AdminApiClientConfig; - getHeaders: (customHeaders?: Headers) => Headers; - getApiUrl: (apiVersion?: string) => string; - fetch: ( - ...props: AdminApiClientRequestParams - ) => ReturnType; - request: ( - ...props: AdminApiClientRequestParams - ) => Promise>; -} +export type AdminApiClient = ApiClient; diff --git a/yarn.lock b/yarn.lock index 1d3316917..87b1fbd73 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2086,7 +2086,11 @@ "@shopify/graphql-client@^0.7.0": version "0.7.0" +<<<<<<< HEAD resolved "https://registry.npmjs.org/@shopify/graphql-client/-/graphql-client-0.7.0.tgz#e0b187fa5186e3122e9b602eedcfb1eb7f6d830f" +======= + resolved "https://registry.yarnpkg.com/@shopify/graphql-client/-/graphql-client-0.7.0.tgz#e0b187fa5186e3122e9b602eedcfb1eb7f6d830f" +>>>>>>> 556a05e4 (Logger, retries, updated graphql-client: new types and validations) integrity sha512-hseOvgjcFHaQy0HnZma5oUqt+u5qkCfUAoAjKPm60YeBIZOQTowELUzauQTm6vR/jLIEwaWWn1tfdcZ02BG8Qw== "@shopify/network@^3.2.1": From ae132456211fdeba94ec583f63f2a9fb5c6ba60a Mon Sep 17 00:00:00 2001 From: Scott Dixon Date: Thu, 9 Nov 2023 15:26:00 +1000 Subject: [PATCH 10/18] Remove UMD build --- packages/admin-api-client/rollup.config.cjs | 34 ------------------- .../admin-api-client/src/admin-api-client.ts | 1 - .../admin-api-client/tsconfig.build.umd.json | 7 ---- 3 files changed, 42 deletions(-) delete mode 100644 packages/admin-api-client/tsconfig.build.umd.json diff --git a/packages/admin-api-client/rollup.config.cjs b/packages/admin-api-client/rollup.config.cjs index a1e92aae4..95a8d4ffe 100644 --- a/packages/admin-api-client/rollup.config.cjs +++ b/packages/admin-api-client/rollup.config.cjs @@ -27,42 +27,8 @@ export function getPlugins({ tsconfig, minify } = {}) { const packageName = pkg.name.substring(1); const repositoryName = pkg.repository.url.split(":")[1].split(".")[0]; -export const bannerConfig = { - banner: `/*! ${packageName}@${pkg.version} -- Copyright (c) 2023-present, Shopify Inc. -- license (MIT): https://github.com/Shopify/shopify-api-js/blob/main/LICENSE.md */`, -}; const config = [ - { - input: mainSrcInput, - plugins: getPlugins({ - minify: true, - tsconfig: "./tsconfig.build.umd.json", - }), - output: [ - { - file: "./dist/umd/admin-api-client.min.js", - format: "umd", - sourcemap: true, - name: "ShopifyAdminApiClient", - ...bannerConfig, - }, - ], - }, - { - input: mainSrcInput, - plugins: getPlugins({ - tsconfig: "./tsconfig.build.umd.json", - }), - output: [ - { - file: "./dist/umd/admin-api-client.js", - format: "umd", - sourcemap: true, - name: "ShopifyAdminApiClient", - ...bannerConfig, - }, - ], - }, { input: mainSrcInput, plugins: getPlugins(), diff --git a/packages/admin-api-client/src/admin-api-client.ts b/packages/admin-api-client/src/admin-api-client.ts index 0c8edec58..d7fb14fe6 100644 --- a/packages/admin-api-client/src/admin-api-client.ts +++ b/packages/admin-api-client/src/admin-api-client.ts @@ -1,6 +1,5 @@ import { createGraphQLClient, - CustomFetchApi, getCurrentSupportedApiVersions, validateApiVersion, validateDomainAndGetStoreUrl, diff --git a/packages/admin-api-client/tsconfig.build.umd.json b/packages/admin-api-client/tsconfig.build.umd.json deleted file mode 100644 index 4a8d809ac..000000000 --- a/packages/admin-api-client/tsconfig.build.umd.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "./tsconfig.build.json", - "compilerOptions": { - "declaration": false, - "declarationMap": false - } -} From 54e9fafae7e9fe348de9eb622d049b1175fdfaae Mon Sep 17 00:00:00 2001 From: Scott Dixon Date: Thu, 9 Nov 2023 16:19:38 +1000 Subject: [PATCH 11/18] v0.0.1 --- packages/admin-api-client/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/admin-api-client/package.json b/packages/admin-api-client/package.json index 02697194f..616b2b7d3 100644 --- a/packages/admin-api-client/package.json +++ b/packages/admin-api-client/package.json @@ -1,6 +1,6 @@ { "name": "@shopify/admin-api-client", - "version": "0.0.0", + "version": "0.0.1", "description": "Shopify Admin API Client - A lightweight JS client to interact with Shopify's Admin API", "repository": { "type": "git", From 5d8e3ceebf19d1525549ae6267d4e5693e806c3e Mon Sep 17 00:00:00 2001 From: Scott Dixon Date: Thu, 9 Nov 2023 16:27:57 +1000 Subject: [PATCH 12/18] Bring back global eslint config :face-palm: --- .eslintrc.cjs | 12 ++++++++++++ packages/admin-api-client/.eslintrc.cjs | 17 ----------------- 2 files changed, 12 insertions(+), 17 deletions(-) create mode 100644 .eslintrc.cjs delete mode 100644 packages/admin-api-client/.eslintrc.cjs diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 000000000..ea174d46c --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,12 @@ +module.exports = { + env: { + browser: false, + es2021: true, + }, + extends: ['plugin:@shopify/typescript', 'plugin:@shopify/prettier'], + ignorePatterns: ['dist/'], + rules: { + 'no-console': 0, + '@typescript-eslint/naming-convention': 0, + }, +}; diff --git a/packages/admin-api-client/.eslintrc.cjs b/packages/admin-api-client/.eslintrc.cjs deleted file mode 100644 index e290079e1..000000000 --- a/packages/admin-api-client/.eslintrc.cjs +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - extends: "../../.eslintrc.cjs", - overrides: [ - { - files: ["**/*.cjs"], - env: { - node: true, - }, - }, - { - files: ["**/*.test.ts"], - rules: { - "@typescript-eslint/ban-ts-comment": 0, - }, - }, - ], -}; From bbcbf5d3254f8c48a3f6d4c3b02e7e93d4b38c9d Mon Sep 17 00:00:00 2001 From: Scott Dixon Date: Thu, 9 Nov 2023 16:39:22 +1000 Subject: [PATCH 13/18] Remove TS ignore --- .../admin-api-client/src/tests/admin-api-client.test.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/admin-api-client/src/tests/admin-api-client.test.ts b/packages/admin-api-client/src/tests/admin-api-client.test.ts index ced48a8cc..43b6668a6 100644 --- a/packages/admin-api-client/src/tests/admin-api-client.test.ts +++ b/packages/admin-api-client/src/tests/admin-api-client.test.ts @@ -202,7 +202,6 @@ describe("Admin API Client", () => { ) ); - // @ts-ignore delete global.window; }); }); @@ -329,10 +328,7 @@ describe("Admin API Client", () => { it("throws an error when the api version is not a string", () => { const version = 123; - expect(() => - // @ts-ignore - client.getApiUrl(version) - ).toThrow( + expect(() => client.getApiUrl(version)).toThrow( new Error( `Admin API Client: the provided apiVersion ("123") is invalid. Current supported API versions: ${mockApiVersions.join( ", " From a4f4982ed1a8618615ba796c3c1934948e9b43e2 Mon Sep 17 00:00:00 2001 From: Scott Dixon Date: Fri, 10 Nov 2023 09:29:50 +1000 Subject: [PATCH 14/18] README update --- packages/admin-api-client/README.md | 117 ++++++++++++++++++++++------ 1 file changed, 94 insertions(+), 23 deletions(-) diff --git a/packages/admin-api-client/README.md b/packages/admin-api-client/README.md index 56352c36a..6236a550e 100644 --- a/packages/admin-api-client/README.md +++ b/packages/admin-api-client/README.md @@ -1,24 +1,16 @@ -# @shopify/admin-api-client - - - -[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](../../LICENSE.md) - - +# Admin API Client The Admin API Client library is for developers who want to interact with Shopify's GraphQL `Admin API`. The features of this library are designed to be lightweight and minimally opinionated. ## Getting Started -To install this package, you can run this in your terminal: +Install the package: -```typescript +``` npm install @shopify/admin-api-client -s ``` -## Admin API Client Examples - -### Initialize the Admin API Client +Initialize the client: ```typescript import {createAdminApiClient} from '@shopify/admin-api-client'; @@ -30,7 +22,7 @@ const client = createAdminApiClient({ }); ``` -### Query for a product using the client +Query for a product: ```typescript const operation = ` @@ -54,37 +46,59 @@ const {data, errors, extensions} = await client.request(operation, { | Property | Type | Description | | ------------------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| storeDomain | `string` | The domain of the store. It can be the Shopify `myshopify.com` domain or a custom store domain. | -| apiVersion | `string` | The requested Admin API version. | -| accessToken | `string` | Admin API access token. | -| userAgentPrefix? | `string` | Any prefix you wish to include in the User-Agent for requests made by the library. | -| customFetchAPI? | `CustomFetchAPI` | A custom fetch function that will be used by the client when it interacts with the API. Defaults to the [browser's Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API). | +| storeDomain | `string` | The `myshopify.com` domain | +| apiVersion | `string` | The requested Admin API version | +| accessToken | `string` | The Admin API access token | +| userAgentPrefix? | `string` | Any prefix you wish to include in the User-Agent for requests made by the library. | +| retries? | `number` | The number of HTTP request retries if the request was abandoned or the server responded with a `Too Many Requests (429)` or `Service Unavailable (503)` response. Default value is `0`. Maximum value is `3`. | +| customFetchAPI? | `(url: string, init?: {method?: string, headers?: HeaderInit, body?: string}) => Promise` | A replacement `fetch` function that will be used in all client network requests. By default, the client uses `window.fetch()`. | +| logger? | `(logContent:`[UnsupportedApiVersionLog](#unsupportedapiversionlog) ` \| `[HTTPResponseLog](#httpresponselog)`\|`[HTTPRetryLog](#httpretrylog)`) => void` | A logger function that accepts [log content objects](#log-content-types). This logger will be called in certain conditions with contextual information. | ## Client properties | Property | Type | Description | | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| config | `ClientConfig` | Configuration for the client | +| config | [AdminApiClientConfig](#adminapiclientconfig-properties) | Configuration for the client | | getHeaders | `(customHeaders?: {[key: string]: string}) => {[key: string]: string` | Returns Admin API specific headers needed to interact with the API. If `customHeaders` is provided, the custom headers will be included in the returned headers object. | | getApiUrl | `(apiVersion?: string) => string` | Returns the shop specific API url. If an API version is provided, the returned URL will include the provided version, else the URL will include the API version set at client initialization. | | fetch | `(operation: string, options?:`[AdminAPIClientRequestOptions](#adminapiclientrequestoptions-properties)`) => Promise` | Fetches data from Admin API using the provided GQL `operation` string and [AdminAPIClientRequestOptions](#adminapiclientrequestoptions-properties) object and returns the network response. | | request | `(operation: string, options?:`[AdminAPIClientRequestOptions](#adminapiclientrequestoptions-properties)`) => Promise<`[ClientResponse\](#clientresponsetdata)`>` | Requests data from Admin API using the provided GQL `operation` string and [AdminAPIClientRequestOptions](#adminapiclientrequestoptions-properties) object and returns a normalized response object. | -## `AdminAPIClientRequestOptions` properties +## `AdminApiClientConfig` properties + +| Name | Type | Description | +| -------------- | ------------------------ | ---------------------------------------------------- | +| storeDomain | `string` | The `myshopify.com` domain | +| apiVersion | `string` | The Admin API version to use in the API request | +| accessToken | `string` | The provided public access token. If `privateAccessToken` was provided, `publicAccessToken` will not be available. | +| headers | `{[key: string]: string}` | The headers generated by the client during initialization | +| apiUrl | `string` | The API URL generated from the provided store domain and api version | +| retries? | `number` | The number of retries the client will attempt when the API responds with a `Too Many Requests (429)` or `Service Unavailable (503)` response | + +## `ApiClientRequestOptions` properties | Name | Type | Description | | -------------- | ------------------------ | ---------------------------------------------------- | | variables? | `Record` | Variable values needed in the graphQL operation | | apiVersion? | `string` | The Admin API version to use in the API request | -| customHeaders? | `{[key: string]: string}` | Customized headers to be included in the API request | +| customHeaders? | `{[key: string]: string}`| Customized headers to be included in the API request | +| retries? | `number` | Alternative number of retries for the request. Retries only occur for requests that were abandoned or if the server responds with a `Too Many Request (429)` or `Service Unavailable (503)` response. Minimum value is `0` and maximum value is `3`. | ## `ClientResponse` | Name | Type | Description | | ----------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | data? | `TData \| any` | Data returned from the Admin API. If `TData` was provided to the function, the return type is `TData`, else it returns type `any`. | -| errors? | `ClientResponse['error']` | Error object that contains any API or network errors that occured while fetching the data from the API. It does not include any `UserErrors`. | -| extensions? | `Record` | Additional information on the GraphQL response data and context. It can include the `context` object that contains the localization context information used to generate the returned API response. | +| errors? | [ResponseErrors](#responseerrors) | Error object that contains any API or network errors that occured while fetching the data from the API. It does not include any `UserErrors`. | +| extensions? | `{[key: string]: any}` | Additional information on the GraphQL response data and context. It can include the `context` object that contains the localization context information used to generate the returned API response. | + +## `ResponseErrors` + +| Name | Type | Description | +| ----------- | --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| networkStatusCode? | `number` | HTTP response status code | +| message? | `string` | The provided error message | +| graphQLErrors? | `any[]` | The GraphQL API errors returned by the server | ### Client `request()` response examples @@ -241,3 +255,60 @@ if (response.ok) { const {errors, data, extensions} = await response.json(); } ``` + +### Dynamically set the number of retries per request + +```typescript +const productQuery = ` + query ProductQuery($handle: String) { + product(handle: $handle) { + id + title + handle + } + } +`; + +const {data, errors, extensions} = await client.request(productQuery, { + variables: { + handle: 'sample-product', + }, + retries: 2, +}); +``` + +## Log Content Types + +### `UnsupportedApiVersionLog` + +This log content is sent to the logger whenever an unsupported API version is provided to the client. + +| Property | Type | Description | +| -------- | ------------------------ | ---------------------------------- | +| type | `LogType['UNSUPPORTED_API_VERSION']` | The type of log content. Is always set to `UNSUPPORTED_API_VERSION` | +| content | `{apiVersion: string, supportedApiVersions: string[]}` | Contextual info including the provided API version and the list of currently supported API versions. | + +### `HTTPResponseLog` + +This log content is sent to the logger whenever a HTTP response is received by the client. + +| Property | Type | Description | +| -------- | ------------------------ | ---------------------------------- | +| type | `LogType['HTTP-Response']` | The type of log content. Is always set to `HTTP-Response` | +| content | `{`[requestParams](#requestparams)`: [url, init?], response: Response}` | Contextual data regarding the request and received response | + +### `HTTPRetryLog` + +This log content is sent to the logger whenever the client attempts to retry HTTP requests. + +| Property | Type | Description | +| -------- | ------------------------ | ---------------------------------- | +| type | `LogType['HTTP-Retry']` | The type of log content. Is always set to `HTTP-Retry` | +| content | `{`[requestParams](#requestparams)`: [url, init?], lastResponse?: Response, retryAttempt: number, maxRetries: number}` | Contextual data regarding the upcoming retry attempt.

`requestParams`: [parameters](#requestparams) used in the request
`lastResponse`: previous response
`retryAttempt`: the current retry attempt count
`maxRetries`: the maximum number of retries | + +### `RequestParams` + +| Property | Type | Description | +| -------- | ------------------------ | ---------------------------------- | +| url | `string` | Requested URL | +| init? | `{method?: string, headers?: HeaderInit, body?: string}` | The request information | From 3c4ca5807c83fadbd025efb2694c43698d6d0296 Mon Sep 17 00:00:00 2001 From: Scott Dixon Date: Fri, 10 Nov 2023 09:31:03 +1000 Subject: [PATCH 15/18] Logger and retry tests --- .../src/tests/admin-api-client.test.ts | 31 + yarn.lock | 1605 ++++++++--------- 2 files changed, 805 insertions(+), 831 deletions(-) diff --git a/packages/admin-api-client/src/tests/admin-api-client.test.ts b/packages/admin-api-client/src/tests/admin-api-client.test.ts index 43b6668a6..76efcd458 100644 --- a/packages/admin-api-client/src/tests/admin-api-client.test.ts +++ b/packages/admin-api-client/src/tests/admin-api-client.test.ts @@ -64,6 +64,26 @@ describe("Admin API Client", () => { ).toHaveProperty("url", mockApiUrl); }); + it("calls the graphql client with the default retries", () => { + createAdminApiClient({ ...config }); + + expect(createGraphQLClient).toHaveBeenCalled(); + expect( + (createGraphQLClient as jest.Mock).mock.calls[0][0] + ).toHaveProperty("retries", 0); + }); + + it("calls the graphql client with the provided retries", () => { + const retries = 1; + + createAdminApiClient({ ...config, retries }); + + expect(createGraphQLClient).toHaveBeenCalled(); + expect( + (createGraphQLClient as jest.Mock).mock.calls[0][0] + ).toHaveProperty("retries", retries); + }); + it("Prepends user agent prefix if supplied", () => { const userAgentPrefix = "test-UAP"; @@ -93,6 +113,17 @@ describe("Admin API Client", () => { ).toHaveProperty("fetchApi", customFetchApi); }); + it("calls the graphql client with the provided logger", () => { + const logger = jest.fn(); + + createAdminApiClient({ ...config, logger }); + + expect(createGraphQLClient).toHaveBeenCalled(); + expect( + (createGraphQLClient as jest.Mock).mock.calls[0][0] + ).toHaveProperty("logger", logger); + }); + it("returns a client object that contains a config object, getters for header and API URL and request and fetch functions", () => { const client = createAdminApiClient(config); diff --git a/yarn.lock b/yarn.lock index 87b1fbd73..60e304264 100644 --- a/yarn.lock +++ b/yarn.lock @@ -30,25 +30,25 @@ "@babel/highlight" "^7.22.13" chalk "^2.4.2" -"@babel/compat-data@^7.22.20", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.20.tgz#8df6e96661209623f1975d66c35ffca66f3306d0" - integrity sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.2.tgz#6a12ced93455827037bfb5ed8492820d60fc32cc" + integrity sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ== "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.21.3": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.0.tgz#f8259ae0e52a123eb40f552551e647b506a94d83" - integrity sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ== + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.2.tgz#ed10df0d580fff67c5f3ee70fd22e2e4c90a9f94" + integrity sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.22.13" "@babel/generator" "^7.23.0" "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-module-transforms" "^7.23.0" - "@babel/helpers" "^7.23.0" + "@babel/helpers" "^7.23.2" "@babel/parser" "^7.23.0" "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.0" + "@babel/traverse" "^7.23.2" "@babel/types" "^7.23.0" convert-source-map "^2.0.0" debug "^4.1.0" @@ -84,14 +84,14 @@ "@babel/helper-annotate-as-pure@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== dependencies: "@babel/types" "^7.22.5" "@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": version "7.22.15" - resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== dependencies: "@babel/types" "^7.22.15" @@ -109,7 +109,7 @@ "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.22.5": version "7.22.15" - resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4" integrity sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" @@ -124,17 +124,17 @@ "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5": version "7.22.15" - resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" regexpu-core "^5.3.1" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.4.2": - version "0.4.2" - resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz#82c825cadeeeee7aad237618ebbe8fa1710015d7" - integrity sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw== +"@babel/helper-define-polyfill-provider@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz#a71c10f7146d809f4a256c373f462d9bba8cf6ba" + integrity sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug== dependencies: "@babel/helper-compilation-targets" "^7.22.6" "@babel/helper-plugin-utils" "^7.22.5" @@ -164,7 +164,7 @@ "@babel/helper-member-expression-to-functions@^7.22.15": version "7.23.0" - resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== dependencies: "@babel/types" "^7.23.0" @@ -189,7 +189,7 @@ "@babel/helper-optimise-call-expression@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== dependencies: "@babel/types" "^7.22.5" @@ -199,9 +199,9 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== -"@babel/helper-remap-async-to-generator@^7.22.5", "@babel/helper-remap-async-to-generator@^7.22.9": +"@babel/helper-remap-async-to-generator@^7.22.20", "@babel/helper-remap-async-to-generator@^7.22.5": version "7.22.20" - resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" @@ -210,7 +210,7 @@ "@babel/helper-replace-supers@^7.22.20", "@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": version "7.22.20" - resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== dependencies: "@babel/helper-environment-visitor" "^7.22.20" @@ -226,7 +226,7 @@ "@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== dependencies: "@babel/types" "^7.22.5" @@ -255,20 +255,20 @@ "@babel/helper-wrap-function@^7.22.20": version "7.22.20" - resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== dependencies: "@babel/helper-function-name" "^7.22.5" "@babel/template" "^7.22.15" "@babel/types" "^7.22.19" -"@babel/helpers@^7.23.0": - version "7.23.1" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.1.tgz#44e981e8ce2b9e99f8f0b703f3326a4636c16d15" - integrity sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA== +"@babel/helpers@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.2.tgz#2832549a6e37d484286e15ba36a5330483cac767" + integrity sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ== dependencies: "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.0" + "@babel/traverse" "^7.23.2" "@babel/types" "^7.23.0" "@babel/highlight@^7.10.4", "@babel/highlight@^7.22.13": @@ -287,14 +287,14 @@ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15": version "7.22.15" - resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz#02dc8a03f613ed5fdc29fb2f728397c78146c962" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz#02dc8a03f613ed5fdc29fb2f728397c78146c962" integrity sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.15": version "7.22.15" - resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz#2aeb91d337d4e1a1e7ce85b76a37f5301781200f" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz#2aeb91d337d4e1a1e7ce85b76a37f5301781200f" integrity sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -303,16 +303,16 @@ "@babel/plugin-proposal-class-properties@^7.16.0": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== dependencies: "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-proposal-decorators@^7.16.4": - version "7.23.0" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.0.tgz#66d9014173b3267a9ced3e69935138bc64ffb5c8" - integrity sha512-kYsT+f5ARWF6AdFmqoEEp+hpqxEB8vGmRWfw2aj78M2vTwS2uHW91EF58iFm1Z9U8Y/RrLu2XKJn46P9ca1b0w== + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.2.tgz#0b345a5754f48309fa50b7cd99075ef0295b12c8" + integrity sha512-eR0gJQc830fJVGz37oKLvt9W9uUIQSAovUl0e9sJ3YeO09dlcoBVYD3CLrjCj4qHdXmfiyTyFt8yeQYSN5fxLg== dependencies: "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" @@ -322,7 +322,7 @@ "@babel/plugin-proposal-dynamic-import@^7.16.0": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -330,7 +330,7 @@ "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -338,7 +338,7 @@ "@babel/plugin-proposal-numeric-separator@^7.16.0": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -346,7 +346,7 @@ "@babel/plugin-proposal-optional-chaining@^7.16.0": version "7.21.0" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== dependencies: "@babel/helper-plugin-utils" "^7.20.2" @@ -355,7 +355,7 @@ "@babel/plugin-proposal-private-methods@^7.16.0": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== dependencies: "@babel/helper-create-class-features-plugin" "^7.18.6" @@ -363,7 +363,7 @@ "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": version "7.21.0-placeholder-for-preset-env.2" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== "@babel/plugin-syntax-async-generators@^7.8.4": @@ -389,42 +389,42 @@ "@babel/plugin-syntax-class-static-block@^7.14.5": version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-decorators@^7.22.10": version "7.22.10" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.22.10.tgz#7d83ea04d893c442b78ebf4c3cbac59a7211deff" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.22.10.tgz#7d83ea04d893c442b78ebf4c3cbac59a7211deff" integrity sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-export-namespace-from@^7.8.3": version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-import-assertions@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz#07d252e2aa0bc6125567f742cd58619cb14dce98" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz#07d252e2aa0bc6125567f742cd58619cb14dce98" integrity sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-import-attributes@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz#ab840248d834410b829f569f5262b9e517555ecb" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz#ab840248d834410b829f569f5262b9e517555ecb" integrity sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -494,7 +494,7 @@ "@babel/plugin-syntax-private-property-in-object@^7.14.5": version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" @@ -515,7 +515,7 @@ "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" @@ -523,24 +523,24 @@ "@babel/plugin-transform-arrow-functions@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz#e5ba566d0c58a5b2ba2a8b795450641950b71958" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz#e5ba566d0c58a5b2ba2a8b795450641950b71958" integrity sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-async-generator-functions@^7.22.15": - version "7.22.15" - resolved "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz#3b153af4a6b779f340d5b80d3f634f55820aefa3" - integrity sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w== +"@babel/plugin-transform-async-generator-functions@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz#054afe290d64c6f576f371ccc321772c8ea87ebb" + integrity sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ== dependencies: - "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.9" + "@babel/helper-remap-async-to-generator" "^7.22.20" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-transform-async-to-generator@^7.20.7", "@babel/plugin-transform-async-to-generator@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz#c7a85f44e46f8952f6d27fe57c2ed3cc084c3775" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz#c7a85f44e46f8952f6d27fe57c2ed3cc084c3775" integrity sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ== dependencies: "@babel/helper-module-imports" "^7.22.5" @@ -549,21 +549,21 @@ "@babel/plugin-transform-block-scoped-functions@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz#27978075bfaeb9fa586d3cb63a3d30c1de580024" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz#27978075bfaeb9fa586d3cb63a3d30c1de580024" integrity sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-block-scoping@^7.22.15": +"@babel/plugin-transform-block-scoping@^7.23.0": version "7.23.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz#8744d02c6c264d82e1a4bc5d2d501fd8aff6f022" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz#8744d02c6c264d82e1a4bc5d2d501fd8aff6f022" integrity sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-class-properties@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz#97a56e31ad8c9dc06a0b3710ce7803d5a48cca77" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz#97a56e31ad8c9dc06a0b3710ce7803d5a48cca77" integrity sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ== dependencies: "@babel/helper-create-class-features-plugin" "^7.22.5" @@ -571,7 +571,7 @@ "@babel/plugin-transform-class-static-block@^7.22.11": version "7.22.11" - resolved "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz#dc8cc6e498f55692ac6b4b89e56d87cec766c974" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz#dc8cc6e498f55692ac6b4b89e56d87cec766c974" integrity sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g== dependencies: "@babel/helper-create-class-features-plugin" "^7.22.11" @@ -580,7 +580,7 @@ "@babel/plugin-transform-classes@^7.22.15": version "7.22.15" - resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz#aaf4753aee262a232bbc95451b4bdf9599c65a0b" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz#aaf4753aee262a232bbc95451b4bdf9599c65a0b" integrity sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" @@ -595,22 +595,22 @@ "@babel/plugin-transform-computed-properties@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz#cd1e994bf9f316bd1c2dafcd02063ec261bb3869" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz#cd1e994bf9f316bd1c2dafcd02063ec261bb3869" integrity sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/template" "^7.22.5" -"@babel/plugin-transform-destructuring@^7.22.15": +"@babel/plugin-transform-destructuring@^7.23.0": version "7.23.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz#6447aa686be48b32eaf65a73e0e2c0bd010a266c" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz#6447aa686be48b32eaf65a73e0e2c0bd010a266c" integrity sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-dotall-regex@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz#dbb4f0e45766eb544e193fb00e65a1dd3b2a4165" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz#dbb4f0e45766eb544e193fb00e65a1dd3b2a4165" integrity sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.22.5" @@ -618,14 +618,14 @@ "@babel/plugin-transform-duplicate-keys@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz#b6e6428d9416f5f0bba19c70d1e6e7e0b88ab285" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz#b6e6428d9416f5f0bba19c70d1e6e7e0b88ab285" integrity sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-dynamic-import@^7.22.11": version "7.22.11" - resolved "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz#2c7722d2a5c01839eaf31518c6ff96d408e447aa" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz#2c7722d2a5c01839eaf31518c6ff96d408e447aa" integrity sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -633,7 +633,7 @@ "@babel/plugin-transform-exponentiation-operator@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz#402432ad544a1f9a480da865fda26be653e48f6a" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz#402432ad544a1f9a480da865fda26be653e48f6a" integrity sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g== dependencies: "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" @@ -641,7 +641,7 @@ "@babel/plugin-transform-export-namespace-from@^7.22.11": version "7.22.11" - resolved "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz#b3c84c8f19880b6c7440108f8929caf6056db26c" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz#b3c84c8f19880b6c7440108f8929caf6056db26c" integrity sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -649,14 +649,14 @@ "@babel/plugin-transform-for-of@^7.22.15": version "7.22.15" - resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz#f64b4ccc3a4f131a996388fae7680b472b306b29" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz#f64b4ccc3a4f131a996388fae7680b472b306b29" integrity sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-function-name@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz#935189af68b01898e0d6d99658db6b164205c143" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz#935189af68b01898e0d6d99658db6b164205c143" integrity sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg== dependencies: "@babel/helper-compilation-targets" "^7.22.5" @@ -665,7 +665,7 @@ "@babel/plugin-transform-json-strings@^7.22.11": version "7.22.11" - resolved "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz#689a34e1eed1928a40954e37f74509f48af67835" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz#689a34e1eed1928a40954e37f74509f48af67835" integrity sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -673,14 +673,14 @@ "@babel/plugin-transform-literals@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz#e9341f4b5a167952576e23db8d435849b1dd7920" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz#e9341f4b5a167952576e23db8d435849b1dd7920" integrity sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-logical-assignment-operators@^7.22.11": version "7.22.11" - resolved "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz#24c522a61688bde045b7d9bc3c2597a4d948fc9c" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz#24c522a61688bde045b7d9bc3c2597a4d948fc9c" integrity sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -688,31 +688,31 @@ "@babel/plugin-transform-member-expression-literals@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz#4fcc9050eded981a468347dd374539ed3e058def" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz#4fcc9050eded981a468347dd374539ed3e058def" integrity sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-amd@^7.22.5": +"@babel/plugin-transform-modules-amd@^7.23.0": version "7.23.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz#05b2bc43373faa6d30ca89214731f76f966f3b88" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz#05b2bc43373faa6d30ca89214731f76f966f3b88" integrity sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw== dependencies: "@babel/helper-module-transforms" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-commonjs@^7.16.0", "@babel/plugin-transform-modules-commonjs@^7.22.15", "@babel/plugin-transform-modules-commonjs@^7.23.0": +"@babel/plugin-transform-modules-commonjs@^7.16.0", "@babel/plugin-transform-modules-commonjs@^7.23.0": version "7.23.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz#b3dba4757133b2762c00f4f94590cf6d52602481" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz#b3dba4757133b2762c00f4f94590cf6d52602481" integrity sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ== dependencies: "@babel/helper-module-transforms" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-simple-access" "^7.22.5" -"@babel/plugin-transform-modules-systemjs@^7.22.11": +"@babel/plugin-transform-modules-systemjs@^7.23.0": version "7.23.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz#77591e126f3ff4132a40595a6cccd00a6b60d160" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz#77591e126f3ff4132a40595a6cccd00a6b60d160" integrity sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg== dependencies: "@babel/helper-hoist-variables" "^7.22.5" @@ -722,7 +722,7 @@ "@babel/plugin-transform-modules-umd@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz#4694ae40a87b1745e3775b6a7fe96400315d4f98" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz#4694ae40a87b1745e3775b6a7fe96400315d4f98" integrity sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ== dependencies: "@babel/helper-module-transforms" "^7.22.5" @@ -730,7 +730,7 @@ "@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.22.5" @@ -738,14 +738,14 @@ "@babel/plugin-transform-new-target@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz#1b248acea54ce44ea06dfd37247ba089fcf9758d" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz#1b248acea54ce44ea06dfd37247ba089fcf9758d" integrity sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-nullish-coalescing-operator@^7.22.11": version "7.22.11" - resolved "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz#debef6c8ba795f5ac67cd861a81b744c5d38d9fc" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz#debef6c8ba795f5ac67cd861a81b744c5d38d9fc" integrity sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -753,7 +753,7 @@ "@babel/plugin-transform-numeric-separator@^7.22.11": version "7.22.11" - resolved "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz#498d77dc45a6c6db74bb829c02a01c1d719cbfbd" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz#498d77dc45a6c6db74bb829c02a01c1d719cbfbd" integrity sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -761,7 +761,7 @@ "@babel/plugin-transform-object-rest-spread@^7.22.15": version "7.22.15" - resolved "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz#21a95db166be59b91cde48775310c0df6e1da56f" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz#21a95db166be59b91cde48775310c0df6e1da56f" integrity sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q== dependencies: "@babel/compat-data" "^7.22.9" @@ -772,7 +772,7 @@ "@babel/plugin-transform-object-super@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz#794a8d2fcb5d0835af722173c1a9d704f44e218c" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz#794a8d2fcb5d0835af722173c1a9d704f44e218c" integrity sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -780,15 +780,15 @@ "@babel/plugin-transform-optional-catch-binding@^7.22.11": version "7.22.11" - resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz#461cc4f578a127bb055527b3e77404cad38c08e0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz#461cc4f578a127bb055527b3e77404cad38c08e0" integrity sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-transform-optional-chaining@^7.22.15": +"@babel/plugin-transform-optional-chaining@^7.22.15", "@babel/plugin-transform-optional-chaining@^7.23.0": version "7.23.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz#73ff5fc1cf98f542f09f29c0631647d8ad0be158" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz#73ff5fc1cf98f542f09f29c0631647d8ad0be158" integrity sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -797,14 +797,14 @@ "@babel/plugin-transform-parameters@^7.22.15": version "7.22.15" - resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz#719ca82a01d177af358df64a514d64c2e3edb114" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz#719ca82a01d177af358df64a514d64c2e3edb114" integrity sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-private-methods@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz#21c8af791f76674420a147ae62e9935d790f8722" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz#21c8af791f76674420a147ae62e9935d790f8722" integrity sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA== dependencies: "@babel/helper-create-class-features-plugin" "^7.22.5" @@ -812,7 +812,7 @@ "@babel/plugin-transform-private-property-in-object@^7.22.11": version "7.22.11" - resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz#ad45c4fc440e9cb84c718ed0906d96cf40f9a4e1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz#ad45c4fc440e9cb84c718ed0906d96cf40f9a4e1" integrity sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" @@ -822,35 +822,35 @@ "@babel/plugin-transform-property-literals@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz#b5ddabd73a4f7f26cd0e20f5db48290b88732766" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz#b5ddabd73a4f7f26cd0e20f5db48290b88732766" integrity sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-react-constant-elements@^7.16.0": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.22.5.tgz#6dfa7c1c37f7d7279e417ceddf5a04abb8bb9c29" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.22.5.tgz#6dfa7c1c37f7d7279e417ceddf5a04abb8bb9c29" integrity sha512-BF5SXoO+nX3h5OhlN78XbbDrBOffv+AxPP2ENaJOVqjWCgBDeOY3WcaUcddutGSfoap+5NEQ/q/4I3WZIvgkXA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-react-display-name@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz#3c4326f9fce31c7968d6cb9debcaf32d9e279a2b" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz#3c4326f9fce31c7968d6cb9debcaf32d9e279a2b" integrity sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-react-jsx-development@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== dependencies: "@babel/plugin-transform-react-jsx" "^7.22.5" "@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5": version "7.22.15" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz#7e6266d88705d7c49f11c98db8b9464531289cd6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz#7e6266d88705d7c49f11c98db8b9464531289cd6" integrity sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" @@ -861,7 +861,7 @@ "@babel/plugin-transform-react-pure-annotations@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz#1f58363eef6626d6fa517b95ac66fe94685e32c0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz#1f58363eef6626d6fa517b95ac66fe94685e32c0" integrity sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" @@ -869,7 +869,7 @@ "@babel/plugin-transform-regenerator@^7.22.10": version "7.22.10" - resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz#8ceef3bd7375c4db7652878b0241b2be5d0c3cca" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz#8ceef3bd7375c4db7652878b0241b2be5d0c3cca" integrity sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -877,33 +877,33 @@ "@babel/plugin-transform-reserved-words@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz#832cd35b81c287c4bcd09ce03e22199641f964fb" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz#832cd35b81c287c4bcd09ce03e22199641f964fb" integrity sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-runtime@^7.16.4", "@babel/plugin-transform-runtime@^7.21.0": - version "7.22.15" - resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.15.tgz#3a625c4c05a39e932d7d34f5d4895cdd0172fdc9" - integrity sha512-tEVLhk8NRZSmwQ0DJtxxhTrCht1HVo8VaMzYT4w6lwyKBuHsgoioAUA7/6eT2fRfc5/23fuGdlwIxXhRVgWr4g== + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.2.tgz#c956a3f8d1aa50816ff6c30c6288d66635c12990" + integrity sha512-XOntj6icgzMS58jPVtQpiuF6ZFWxQiJavISGx5KGjRj+3gqZr8+N6Kx+N9BApWzgS+DOjIZfXXj0ZesenOWDyA== dependencies: "@babel/helper-module-imports" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" - babel-plugin-polyfill-corejs2 "^0.4.5" - babel-plugin-polyfill-corejs3 "^0.8.3" - babel-plugin-polyfill-regenerator "^0.5.2" + babel-plugin-polyfill-corejs2 "^0.4.6" + babel-plugin-polyfill-corejs3 "^0.8.5" + babel-plugin-polyfill-regenerator "^0.5.3" semver "^6.3.1" "@babel/plugin-transform-shorthand-properties@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz#6e277654be82b5559fc4b9f58088507c24f0c624" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz#6e277654be82b5559fc4b9f58088507c24f0c624" integrity sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-spread@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz#6487fd29f229c95e284ba6c98d65eafb893fea6b" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz#6487fd29f229c95e284ba6c98d65eafb893fea6b" integrity sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -911,28 +911,28 @@ "@babel/plugin-transform-sticky-regex@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz#295aba1595bfc8197abd02eae5fc288c0deb26aa" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz#295aba1595bfc8197abd02eae5fc288c0deb26aa" integrity sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-template-literals@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz#8f38cf291e5f7a8e60e9f733193f0bcc10909bff" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz#8f38cf291e5f7a8e60e9f733193f0bcc10909bff" integrity sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-typeof-symbol@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz#5e2ba478da4b603af8673ff7c54f75a97b716b34" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz#5e2ba478da4b603af8673ff7c54f75a97b716b34" integrity sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-typescript@^7.22.15": version "7.22.15" - resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz#15adef906451d86349eb4b8764865c960eb54127" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz#15adef906451d86349eb4b8764865c960eb54127" integrity sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" @@ -942,14 +942,14 @@ "@babel/plugin-transform-unicode-escapes@^7.22.10": version "7.22.10" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz#c723f380f40a2b2f57a62df24c9005834c8616d9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz#c723f380f40a2b2f57a62df24c9005834c8616d9" integrity sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-unicode-property-regex@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz#098898f74d5c1e86660dc112057b2d11227f1c81" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz#098898f74d5c1e86660dc112057b2d11227f1c81" integrity sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.22.5" @@ -957,7 +957,7 @@ "@babel/plugin-transform-unicode-regex@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz#ce7e7bb3ef208c4ff67e02a22816656256d7a183" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz#ce7e7bb3ef208c4ff67e02a22816656256d7a183" integrity sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.22.5" @@ -965,18 +965,18 @@ "@babel/plugin-transform-unicode-sets-regex@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz#77788060e511b708ffc7d42fdfbc5b37c3004e91" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz#77788060e511b708ffc7d42fdfbc5b37c3004e91" integrity sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" "@babel/preset-env@^7.16.4", "@babel/preset-env@^7.20.2": - version "7.22.20" - resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.20.tgz#de9e9b57e1127ce0a2f580831717f7fb677ceedb" - integrity sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg== + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.2.tgz#1f22be0ff0e121113260337dbc3e58fafce8d059" + integrity sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ== dependencies: - "@babel/compat-data" "^7.22.20" + "@babel/compat-data" "^7.23.2" "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-validator-option" "^7.22.15" @@ -1002,15 +1002,15 @@ "@babel/plugin-syntax-top-level-await" "^7.14.5" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" "@babel/plugin-transform-arrow-functions" "^7.22.5" - "@babel/plugin-transform-async-generator-functions" "^7.22.15" + "@babel/plugin-transform-async-generator-functions" "^7.23.2" "@babel/plugin-transform-async-to-generator" "^7.22.5" "@babel/plugin-transform-block-scoped-functions" "^7.22.5" - "@babel/plugin-transform-block-scoping" "^7.22.15" + "@babel/plugin-transform-block-scoping" "^7.23.0" "@babel/plugin-transform-class-properties" "^7.22.5" "@babel/plugin-transform-class-static-block" "^7.22.11" "@babel/plugin-transform-classes" "^7.22.15" "@babel/plugin-transform-computed-properties" "^7.22.5" - "@babel/plugin-transform-destructuring" "^7.22.15" + "@babel/plugin-transform-destructuring" "^7.23.0" "@babel/plugin-transform-dotall-regex" "^7.22.5" "@babel/plugin-transform-duplicate-keys" "^7.22.5" "@babel/plugin-transform-dynamic-import" "^7.22.11" @@ -1022,9 +1022,9 @@ "@babel/plugin-transform-literals" "^7.22.5" "@babel/plugin-transform-logical-assignment-operators" "^7.22.11" "@babel/plugin-transform-member-expression-literals" "^7.22.5" - "@babel/plugin-transform-modules-amd" "^7.22.5" - "@babel/plugin-transform-modules-commonjs" "^7.22.15" - "@babel/plugin-transform-modules-systemjs" "^7.22.11" + "@babel/plugin-transform-modules-amd" "^7.23.0" + "@babel/plugin-transform-modules-commonjs" "^7.23.0" + "@babel/plugin-transform-modules-systemjs" "^7.23.0" "@babel/plugin-transform-modules-umd" "^7.22.5" "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" "@babel/plugin-transform-new-target" "^7.22.5" @@ -1033,7 +1033,7 @@ "@babel/plugin-transform-object-rest-spread" "^7.22.15" "@babel/plugin-transform-object-super" "^7.22.5" "@babel/plugin-transform-optional-catch-binding" "^7.22.11" - "@babel/plugin-transform-optional-chaining" "^7.22.15" + "@babel/plugin-transform-optional-chaining" "^7.23.0" "@babel/plugin-transform-parameters" "^7.22.15" "@babel/plugin-transform-private-methods" "^7.22.5" "@babel/plugin-transform-private-property-in-object" "^7.22.11" @@ -1050,16 +1050,16 @@ "@babel/plugin-transform-unicode-regex" "^7.22.5" "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" "@babel/preset-modules" "0.1.6-no-external-plugins" - "@babel/types" "^7.22.19" - babel-plugin-polyfill-corejs2 "^0.4.5" - babel-plugin-polyfill-corejs3 "^0.8.3" - babel-plugin-polyfill-regenerator "^0.5.2" + "@babel/types" "^7.23.0" + babel-plugin-polyfill-corejs2 "^0.4.6" + babel-plugin-polyfill-corejs3 "^0.8.5" + babel-plugin-polyfill-regenerator "^0.5.3" core-js-compat "^3.31.0" semver "^6.3.1" "@babel/preset-modules@0.1.6-no-external-plugins": version "0.1.6-no-external-plugins" - resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -1068,7 +1068,7 @@ "@babel/preset-react@^7.16.0": version "7.22.15" - resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.15.tgz#9a776892b648e13cc8ca2edf5ed1264eea6b6afc" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.22.15.tgz#9a776892b648e13cc8ca2edf5ed1264eea6b6afc" integrity sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -1079,9 +1079,9 @@ "@babel/plugin-transform-react-pure-annotations" "^7.22.5" "@babel/preset-typescript@^7.16.0", "@babel/preset-typescript@^7.21.0": - version "7.23.0" - resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.0.tgz#cc6602d13e7e5b2087c811912b87cf937a9129d9" - integrity sha512-6P6VVa/NM/VlAYj5s2Aq/gdVg8FSENCg3wlZ6Qau9AcPaoF5LbN1nyGlR9DTRIw9PpxI94e+ReydsJHcjwAweg== + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.2.tgz#c8de488130b7081f7e1482936ad3de5b018beef4" + integrity sha512-u4UJc1XsS1GhIGteM8rnGiIvf9rJpiVgMEeCnwlLA7WJPC+jcXWJAGxYmeqs5hOZD8BbAfnV5ezBOxQbb4OUxA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-validator-option" "^7.22.15" @@ -1091,13 +1091,13 @@ "@babel/regjsgen@^0.8.0": version "0.8.0" - resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.16.3", "@babel/runtime@^7.20.1", "@babel/runtime@^7.20.7", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4": - version "7.23.1" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.1.tgz#72741dc4d413338a91dcb044a86f3c0bc402646d" - integrity sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g== +"@babel/runtime@^7.16.3", "@babel/runtime@^7.20.1", "@babel/runtime@^7.23.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" + integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== dependencies: regenerator-runtime "^0.14.0" @@ -1110,10 +1110,10 @@ "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" -"@babel/traverse@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.0.tgz#18196ddfbcf4ccea324b7f6d3ada00d8c5a99c53" - integrity sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw== +"@babel/traverse@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" + integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== dependencies: "@babel/code-frame" "^7.22.13" "@babel/generator" "^7.23.0" @@ -1180,7 +1180,7 @@ "@changesets/changelog-github@^0.4.8": version "0.4.8" - resolved "https://registry.npmjs.org/@changesets/changelog-github/-/changelog-github-0.4.8.tgz#b7f8ae85d0c0ff08028d924c5e59a1cbd3742634" + resolved "https://registry.yarnpkg.com/@changesets/changelog-github/-/changelog-github-0.4.8.tgz#b7f8ae85d0c0ff08028d924c5e59a1cbd3742634" integrity sha512-jR1DHibkMAb5v/8ym77E4AMNWZKB5NPzw5a5Wtqm1JepAuIF+hrKp2u04NKM14oBZhHglkCfrla9uq8ORnK/dw== dependencies: "@changesets/get-github-info" "^0.5.2" @@ -1259,7 +1259,7 @@ "@changesets/get-github-info@^0.5.2": version "0.5.2" - resolved "https://registry.npmjs.org/@changesets/get-github-info/-/get-github-info-0.5.2.tgz#0cde2cadba57db85c714dc303c077da919a574e5" + resolved "https://registry.yarnpkg.com/@changesets/get-github-info/-/get-github-info-0.5.2.tgz#0cde2cadba57db85c714dc303c077da919a574e5" integrity sha512-JppheLu7S114aEs157fOZDjFqUDpm7eHdq5E8SSR0gUBTEK0cNSHsrSR5a66xs0z3RWuo46QvA3vawp8BxDHvg== dependencies: dataloader "^1.4.0" @@ -1358,9 +1358,9 @@ prettier "^2.7.1" "@cloudflare/workers-types@^4.20221111.1", "@cloudflare/workers-types@^4.20230404.0": - version "4.20230922.0" - resolved "https://registry.yarnpkg.com/@cloudflare/workers-types/-/workers-types-4.20230922.0.tgz#43d536578704e471c94b0c47e4ca6e88896218ee" - integrity sha512-0N3fg4uv9pS7PXMVYmEmEGs1P1yzMIsqym0sO//o2IjtZhsf7RwOozJtdazDAL0fBIWsl1PRX7BmKe92RV+5qw== + version "4.20231025.0" + resolved "https://registry.yarnpkg.com/@cloudflare/workers-types/-/workers-types-4.20231025.0.tgz#ac4d7e6a346670774a7d36cce1444786607f8dfe" + integrity sha512-TkcZkntUTOcvJ4vgmwpNfLTclpMbmbClZCe62B25/VTukmyv91joRa4eKzSjzCZUXTbFHNmVdOpmGaaJU2U3+A== "@cspotcode/source-map-support@^0.8.0": version "0.8.1" @@ -1376,15 +1376,10 @@ dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.4.0": - version "4.8.2" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.8.2.tgz#26585b7c0ba36362893d3a3c206ee0c57c389616" - integrity sha512-0MGxAVt1m/ZK+LTJp/j0qF7Hz97D9O/FH9Ms3ltnyIdDD57cbb1ACIQTkbHvNXtWDv5TPq7w5Kq56+cNukbo7g== - -"@eslint-community/regexpp@^4.6.1": - version "4.9.1" - resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz#449dfa81a57a1d755b09aa58d826c1262e4283b4" - integrity sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA== +"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== "@eslint/eslintrc@^0.4.3": version "0.4.3" @@ -1401,10 +1396,10 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" -"@eslint/eslintrc@^2.1.2": - version "2.1.2" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396" - integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== +"@eslint/eslintrc@^2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.3.tgz#797470a75fe0fbd5a53350ee715e85e87baff22d" + integrity sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA== dependencies: ajv "^6.12.4" debug "^4.3.2" @@ -1416,22 +1411,17 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.50.0": - version "8.50.0" - resolved "https://registry.npmjs.org/@eslint/js/-/js-8.50.0.tgz#9e93b850f0f3fa35f5fa59adfd03adae8488e484" - integrity sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ== - -"@eslint/js@8.51.0": - version "8.51.0" - resolved "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz#6d419c240cfb2b66da37df230f7e7eef801c32fa" - integrity sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg== +"@eslint/js@8.53.0": + version "8.53.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.53.0.tgz#bea56f2ed2b5baea164348ff4d5a879f6f81f20d" + integrity sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w== -"@humanwhocodes/config-array@^0.11.11": - version "0.11.11" - resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz#88a04c570dbbc7dd943e4712429c3df09bc32844" - integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA== +"@humanwhocodes/config-array@^0.11.13": + version "0.11.13" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" + integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== dependencies: - "@humanwhocodes/object-schema" "^1.2.1" + "@humanwhocodes/object-schema" "^2.0.1" debug "^4.1.1" minimatch "^3.0.5" @@ -1446,14 +1436,19 @@ "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^1.2.0", "@humanwhocodes/object-schema@^1.2.1": +"@humanwhocodes/object-schema@^1.2.0": version "1.2.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@humanwhocodes/object-schema@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" + integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== + "@iarna/toml@^2.2.5": version "2.2.5" resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.5.tgz#b32366c89b43c6f8cefbdefac778b9c828e3ba8c" @@ -1688,7 +1683,7 @@ "@jridgewell/source-map@^0.3.3": version "0.3.5" - resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== dependencies: "@jridgewell/gen-mapping" "^0.3.0" @@ -1708,9 +1703,9 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.19" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" - integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -1952,7 +1947,7 @@ "@rollup/plugin-babel@^6.0.3": version "6.0.4" - resolved "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-6.0.4.tgz#bd698e351fa9aa9619fcae780aea2a603d98e4c4" + resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-6.0.4.tgz#bd698e351fa9aa9619fcae780aea2a603d98e4c4" integrity sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw== dependencies: "@babel/helper-module-imports" "^7.18.6" @@ -1972,16 +1967,16 @@ "@rollup/plugin-eslint@^9.0.3": version "9.0.5" - resolved "https://registry.npmjs.org/@rollup/plugin-eslint/-/plugin-eslint-9.0.5.tgz#6153f5b72bad1833f5b5ce88cc03c3fe767a9c66" + resolved "https://registry.yarnpkg.com/@rollup/plugin-eslint/-/plugin-eslint-9.0.5.tgz#6153f5b72bad1833f5b5ce88cc03c3fe767a9c66" integrity sha512-C4nh0sSeJuxVW5u5tDX+dCMjKcNfHm4hS+zeUVh1si7gttnhgGbrmPkUxIX7iZgYABwdEh/ewyMbZB+WXjSJdA== dependencies: "@rollup/pluginutils" "^5.0.1" eslint "^8.24.0" "@rollup/plugin-node-resolve@^15.0.1": - version "15.2.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.1.tgz#a15b14fb7969229e26a30feff2816d39eff503f0" - integrity sha512-nsbUg588+GDSu8/NS8T4UAshO6xeaOfINNuXeVHcKV02LJtoRaM1SiOacClw4kws1SFiNhdLGxlbMY9ga/zs/w== + version "15.2.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz#e5e0b059bd85ca57489492f295ce88c2d4b0daf9" + integrity sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ== dependencies: "@rollup/pluginutils" "^5.0.1" "@types/resolve" "1.20.2" @@ -1991,16 +1986,16 @@ resolve "^1.22.1" "@rollup/plugin-replace@^5.0.2": - version "5.0.3" - resolved "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.3.tgz#55a4550bd6d5e83a65df3d201e0b3d219be7b4b2" - integrity sha512-je7fu05B800IrMlWjb2wzJcdXzHYW46iTipfChnBDbIbDXhASZs27W1B58T2Yf45jZtJUONegpbce+9Ut2Ti/Q== + version "5.0.5" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-5.0.5.tgz#33d5653dce6d03cb24ef98bef7f6d25b57faefdf" + integrity sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ== dependencies: "@rollup/pluginutils" "^5.0.1" - magic-string "^0.27.0" + magic-string "^0.30.3" "@rollup/plugin-terser@^0.4.0": version "0.4.4" - resolved "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz#15dffdb3f73f121aa4fbb37e7ca6be9aeea91962" + resolved "https://registry.yarnpkg.com/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz#15dffdb3f73f121aa4fbb37e7ca6be9aeea91962" integrity sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A== dependencies: serialize-javascript "^6.0.1" @@ -2009,7 +2004,7 @@ "@rollup/plugin-typescript@^11.0.0": version "11.1.5" - resolved "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.1.5.tgz#039c763bf943a5921f3f42be255895e75764cb91" + resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-11.1.5.tgz#039c763bf943a5921f3f42be255895e75764cb91" integrity sha512-rnMHrGBB0IUEv69Q8/JGRD/n4/n6b3nfpufUu26axhUcboUzv/twfZU8fIBbTOphRAe0v8EyxzeDpKXqGHfyDA== dependencies: "@rollup/pluginutils" "^5.0.1" @@ -2024,9 +2019,9 @@ picomatch "^2.2.2" "@rollup/pluginutils@^5.0.1": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.4.tgz#74f808f9053d33bafec0cc98e7b835c9667d32ba" - integrity sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g== + version "5.0.5" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.5.tgz#bbb4c175e19ebfeeb8c132c2eea0ecb89941a66c" + integrity sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q== dependencies: "@types/estree" "^1.0.0" estree-walker "^2.0.2" @@ -2034,7 +2029,7 @@ "@shopify/babel-preset@^25.0.0": version "25.0.0" - resolved "https://registry.npmjs.org/@shopify/babel-preset/-/babel-preset-25.0.0.tgz#57eaae6e250ab1a1daba26e6f1ecb42204aad929" + resolved "https://registry.yarnpkg.com/@shopify/babel-preset/-/babel-preset-25.0.0.tgz#57eaae6e250ab1a1daba26e6f1ecb42204aad929" integrity sha512-2eVmLPGMLEdZ2u93pikVcwAf+XTpzYMtphFwuE1ZwlxBSQZg2H6OWbt/rnS79fAiJUmS7DSUel+ZlBzdSlg6Bg== dependencies: "@babel/core" "^7.16.0" @@ -2084,15 +2079,6 @@ pkg-dir "^5.0.0" pluralize "^8.0.0" -"@shopify/graphql-client@^0.7.0": - version "0.7.0" -<<<<<<< HEAD - resolved "https://registry.npmjs.org/@shopify/graphql-client/-/graphql-client-0.7.0.tgz#e0b187fa5186e3122e9b602eedcfb1eb7f6d830f" -======= - resolved "https://registry.yarnpkg.com/@shopify/graphql-client/-/graphql-client-0.7.0.tgz#e0b187fa5186e3122e9b602eedcfb1eb7f6d830f" ->>>>>>> 556a05e4 (Logger, retries, updated graphql-client: new types and validations) - integrity sha512-hseOvgjcFHaQy0HnZma5oUqt+u5qkCfUAoAjKPm60YeBIZOQTowELUzauQTm6vR/jLIEwaWWn1tfdcZ02BG8Qw== - "@shopify/network@^3.2.1": version "3.2.1" resolved "https://registry.yarnpkg.com/@shopify/network/-/network-3.2.1.tgz#c51590bb9ccd177bb7a35c2bad482233198d215b" @@ -2105,7 +2091,7 @@ "@shopify/typescript-configs@^5.1.0": version "5.1.0" - resolved "https://registry.npmjs.org/@shopify/typescript-configs/-/typescript-configs-5.1.0.tgz#f6e8fdd3291bf0a406578b2c6eb21f8c542d3c0a" + resolved "https://registry.yarnpkg.com/@shopify/typescript-configs/-/typescript-configs-5.1.0.tgz#f6e8fdd3291bf0a406578b2c6eb21f8c542d3c0a" integrity sha512-RywGBTR+nQyJLxcrUcihPkHPIG3pIQI6i0YwMrM5rs9nWJ0+9A5HKEcboyGPLH+8V08EXGfFQ6H820O9ajyk4A== "@sinclair/typebox@^0.27.8": @@ -2127,79 +2113,79 @@ dependencies: "@sinonjs/commons" "^3.0.0" -"@swc/core-darwin-arm64@1.3.89": - version "1.3.89" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.89.tgz#e0ee56e3ea3322bc934b806a6bd84420309f1233" - integrity sha512-LVCZQ2yGrX2678uMvW66IF1bzcOMqiABi+ioNDnJtAIsE/zRVMEYp1ivbOrH32FmPplBby6CGgJIOT3P4VaP1g== - -"@swc/core-darwin-x64@1.3.89": - version "1.3.89" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.89.tgz#9fa6c7944890089d86e853d6b9dd8f7e67584e83" - integrity sha512-IwKlX65YrPBF3urOxBJia0PjnZeaICnCkSwGLiYyV1RhM8XwZ/XyEDTBEsdph3WxUM5wCZQSk8UY/d0saIsX9w== - -"@swc/core-linux-arm-gnueabihf@1.3.89": - version "1.3.89" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.89.tgz#c223853a812a0b62308b595de9eb33d9e41d6786" - integrity sha512-u5qAPh7NkKoDJYwfaB5zuRvzW2+A89CQQHp5xcYjpctRsk3sUrPmC7vNeE12xipBNKLujIG59ppbrf6Pkp5XIg== - -"@swc/core-linux-arm64-gnu@1.3.89": - version "1.3.89" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.89.tgz#e872d65d359b73969c3bcd7fc31d413b945963b4" - integrity sha512-eykuO7XtPltk600HvnnRr1nU5qGk7PeqLmztHA7R2bu2SbtcbCGsewPNcAX5eP8by2VwpGcLPdxaKyqeUwCgoA== - -"@swc/core-linux-arm64-musl@1.3.89": - version "1.3.89" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.89.tgz#4e48339fa0c6223a330aaadd1416aa3400eeb54e" - integrity sha512-i/65Vt3ljfd6EyR+WWZ5aAjZLTQMIHoR+Ay97jE0kysRn8MEOINu0SWyiEwcdXzRGlt+zkrKYfOxp745sWPDAw== - -"@swc/core-linux-x64-gnu@1.3.89": - version "1.3.89" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.89.tgz#1d6127def9449247eec9d9b1b47d59708b56fa30" - integrity sha512-ERETXe68CJRdNkL3EIN62gErh3p6+/6hmz4C0epnYJ4F7QspdW/EOluL1o9bl4dux4Xz0nmBPSZsqfHq/nl1KA== - -"@swc/core-linux-x64-musl@1.3.89": - version "1.3.89" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.89.tgz#0cde8a10b37be51f289bacd95b1ac6f55464f072" - integrity sha512-EXiwgU5E/yC5zuJtOXXWv+wMwpe5DR380XhVxIOBG6nFi6MR3O2X37KxeEdQZX8RwN7/KU6kNHeifzEiSvixfA== - -"@swc/core-win32-arm64-msvc@1.3.89": - version "1.3.89" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.89.tgz#81b5e487c1c50a3b2d0649cc6ea5d0a1795d2eb6" - integrity sha512-j7GvkgeOrZlB55MpEwX+6E6KjxwOmwRXpIqMjF11JDIZ0wEwHlBxZhlnQQ58iuI6jL6AJgDH/ktDhMyELoBiHw== - -"@swc/core-win32-ia32-msvc@1.3.89": - version "1.3.89" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.89.tgz#290b647580f8a7b16648abd940b5367b147ef3c8" - integrity sha512-n57nE7d3FXBa3Y2+VoJdPulcUAS0ZGAGVGxFpeM/tZt1MBEN5OvpOSOIp35dK5HAAxAzTPlmqj9KUYnVxLMVKw== - -"@swc/core-win32-x64-msvc@1.3.89": - version "1.3.89" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.89.tgz#8b6e90226d90f217b07b8df7c86fc7239e5876c1" - integrity sha512-6yMAmqgseAwEXFIwurP7CL8yIH8n7/Rg62ooOVSLSWL5O/Pwlpy1WrpoA0eKhgMLLkIrPvNuKaE/rG7c2iNQHA== +"@swc/core-darwin-arm64@1.3.96": + version "1.3.96" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.96.tgz#7c1c4245ce3f160a5b36a48ed071e3061a839e1d" + integrity sha512-8hzgXYVd85hfPh6mJ9yrG26rhgzCmcLO0h1TIl8U31hwmTbfZLzRitFQ/kqMJNbIBCwmNH1RU2QcJnL3d7f69A== + +"@swc/core-darwin-x64@1.3.96": + version "1.3.96" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.96.tgz#4720ff897ca3f22fe77d0be688968161480c80f0" + integrity sha512-mFp9GFfuPg+43vlAdQZl0WZpZSE8sEzqL7sr/7Reul5McUHP0BaLsEzwjvD035ESfkY8GBZdLpMinblIbFNljQ== + +"@swc/core-linux-arm-gnueabihf@1.3.96": + version "1.3.96" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.96.tgz#2c238ae00b13918ac058b132a31dc57dbcf94e39" + integrity sha512-8UEKkYJP4c8YzYIY/LlbSo8z5Obj4hqcv/fUTHiEePiGsOddgGf7AWjh56u7IoN/0uEmEro59nc1ChFXqXSGyg== + +"@swc/core-linux-arm64-gnu@1.3.96": + version "1.3.96" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.96.tgz#be2e84506b9761b561fb9a341e587f8594a8e55d" + integrity sha512-c/IiJ0s1y3Ymm2BTpyC/xr6gOvoqAVETrivVXHq68xgNms95luSpbYQ28rqaZC8bQC8M5zdXpSc0T8DJu8RJGw== + +"@swc/core-linux-arm64-musl@1.3.96": + version "1.3.96" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.96.tgz#22c9ce17bd923ae358760e668ca33c90210c2ae5" + integrity sha512-i5/UTUwmJLri7zhtF6SAo/4QDQJDH2fhYJaBIUhrICmIkRO/ltURmpejqxsM/ye9Jqv5zG7VszMC0v/GYn/7BQ== + +"@swc/core-linux-x64-gnu@1.3.96": + version "1.3.96" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.96.tgz#c17c072e338341c0ac3507a31ab2a36d16d79c98" + integrity sha512-USdaZu8lTIkm4Yf9cogct/j5eqtdZqTgcTib4I+NloUW0E/hySou3eSyp3V2UAA1qyuC72ld1otXuyKBna0YKQ== + +"@swc/core-linux-x64-musl@1.3.96": + version "1.3.96" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.96.tgz#eb74594a48b4e9cabdce7f5525b3b946f8d6dd16" + integrity sha512-QYErutd+G2SNaCinUVobfL7jWWjGTI0QEoQ6hqTp7PxCJS/dmKmj3C5ZkvxRYcq7XcZt7ovrYCTwPTHzt6lZBg== + +"@swc/core-win32-arm64-msvc@1.3.96": + version "1.3.96" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.96.tgz#6f7c0d20d80534b0676dc6761904288c16e93857" + integrity sha512-hjGvvAduA3Un2cZ9iNP4xvTXOO4jL3G9iakhFsgVhpkU73SGmK7+LN8ZVBEu4oq2SUcHO6caWvnZ881cxGuSpg== + +"@swc/core-win32-ia32-msvc@1.3.96": + version "1.3.96" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.96.tgz#47bb24ef2e4c81407a6786649246983cc69e7854" + integrity sha512-Far2hVFiwr+7VPCM2GxSmbh3ikTpM3pDombE+d69hkedvYHYZxtTF+2LTKl/sXtpbUnsoq7yV/32c9R/xaaWfw== + +"@swc/core-win32-x64-msvc@1.3.96": + version "1.3.96" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.96.tgz#c796e3df7afe2875d227c74add16a7d09c77d8bd" + integrity sha512-4VbSAniIu0ikLf5mBX81FsljnfqjoVGleEkCQv4+zRlyZtO3FHoDPkeLVoy6WRlj7tyrRcfUJ4mDdPkbfTO14g== "@swc/core@^1.3.3": - version "1.3.89" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.89.tgz#740e92559fba15cfc1b47642f393c795c2d7e599" - integrity sha512-+FchWateF57g50ChX6++QQDwgVd6iWZX5HA6m9LRIdJIB56bIqbwRQDwVL3Q8Rlbry4kmw+RxiOW2FjAx9mQOQ== + version "1.3.96" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.96.tgz#f04d58b227ceed2fee6617ce2cdddf21d0803f96" + integrity sha512-zwE3TLgoZwJfQygdv2SdCK9mRLYluwDOM53I+dT6Z5ZvrgVENmY3txvWDvduzkV+/8IuvrRbVezMpxcojadRdQ== dependencies: "@swc/counter" "^0.1.1" "@swc/types" "^0.1.5" optionalDependencies: - "@swc/core-darwin-arm64" "1.3.89" - "@swc/core-darwin-x64" "1.3.89" - "@swc/core-linux-arm-gnueabihf" "1.3.89" - "@swc/core-linux-arm64-gnu" "1.3.89" - "@swc/core-linux-arm64-musl" "1.3.89" - "@swc/core-linux-x64-gnu" "1.3.89" - "@swc/core-linux-x64-musl" "1.3.89" - "@swc/core-win32-arm64-msvc" "1.3.89" - "@swc/core-win32-ia32-msvc" "1.3.89" - "@swc/core-win32-x64-msvc" "1.3.89" + "@swc/core-darwin-arm64" "1.3.96" + "@swc/core-darwin-x64" "1.3.96" + "@swc/core-linux-arm-gnueabihf" "1.3.96" + "@swc/core-linux-arm64-gnu" "1.3.96" + "@swc/core-linux-arm64-musl" "1.3.96" + "@swc/core-linux-x64-gnu" "1.3.96" + "@swc/core-linux-x64-musl" "1.3.96" + "@swc/core-win32-arm64-msvc" "1.3.96" + "@swc/core-win32-ia32-msvc" "1.3.96" + "@swc/core-win32-x64-msvc" "1.3.96" "@swc/counter@^0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.1.tgz#e8d066c653883238c291d8fdd8b36ed932e87920" - integrity sha512-xVRaR4u9hcYjFvcSg71Lz5Bo4//CyjAAfMxa7UsaDSYxAshflUkVJWiyVWrfxC59z2kP1IzI4/1BEpnhI9o3Mw== + version "0.1.2" + resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.2.tgz#bf06d0770e47c6f1102270b744e17b934586985e" + integrity sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw== "@swc/types@^0.1.5": version "0.1.5" @@ -2208,7 +2194,7 @@ "@tootallnate/once@2": version "2.0.0" - resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== "@tsconfig/node10@^1.0.7": @@ -2232,9 +2218,9 @@ integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== "@types/babel__core@^7.1.14": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.2.tgz#215db4f4a35d710256579784a548907237728756" - integrity sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA== + version "7.20.4" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.4.tgz#26a87347e6c6f753b3668398e34496d6d9ac6ac0" + integrity sha512-mLnSC22IC4vcWiuObSRjrLd9XcBTGf59vUSoq2jkQDJ/QQ8PMI9rSuzE+aEV8karUMbskw07bKYoUJCKTUaygg== dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -2243,63 +2229,63 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.5" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.5.tgz#281f4764bcbbbc51fdded0f25aa587b4ce14da95" - integrity sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w== + version "7.6.7" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.7.tgz#a7aebf15c7bc0eb9abd638bdb5c0b8700399c9d0" + integrity sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.2.tgz#843e9f1f47c957553b0c374481dc4772921d6a6b" - integrity sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ== + version "7.4.4" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" + integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.2.tgz#4ddf99d95cfdd946ff35d2b65c978d9c9bf2645d" - integrity sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw== + version "7.20.4" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.4.tgz#ec2c06fed6549df8bc0eb4615b683749a4a92e1b" + integrity sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA== dependencies: "@babel/types" "^7.20.7" "@types/better-sqlite3@^7.6.0": - version "7.6.5" - resolved "https://registry.yarnpkg.com/@types/better-sqlite3/-/better-sqlite3-7.6.5.tgz#4b64b47467b4bf0572bc7df4614a524c4bd365eb" - integrity sha512-H3ZUx89KiPhYa9nalUXVVStSUFHuzYxt4yoazufpTTYW9rVUCzhh02V8CH2C8nE4libnK0UgFq5DFIe0DOhqow== + version "7.6.7" + resolved "https://registry.yarnpkg.com/@types/better-sqlite3/-/better-sqlite3-7.6.7.tgz#9c2998fcb219e10cabaa7b7c2c1281d0deeafca8" + integrity sha512-+c2YGPWY5831v3uj2/X0HRTK94u1GXU3sCnLqu7AKlxlSfawswnAiJR//TFzSL5azWsLQkG/uS+YnnqHtuZxPw== dependencies: "@types/node" "*" "@types/body-parser@*": - version "1.19.3" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.3.tgz#fb558014374f7d9e56c8f34bab2042a3a07d25cd" - integrity sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ== + version "1.19.5" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" + integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== dependencies: "@types/connect" "*" "@types/node" "*" "@types/connect@*": - version "3.4.36" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.36.tgz#e511558c15a39cb29bd5357eebb57bd1459cd1ab" - integrity sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w== + version "3.4.38" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== dependencies: "@types/node" "*" "@types/cookiejar@*": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@types/cookiejar/-/cookiejar-2.1.2.tgz#66ad9331f63fe8a3d3d9d8c6e3906dd10f6446e8" - integrity sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog== + version "2.1.4" + resolved "https://registry.yarnpkg.com/@types/cookiejar/-/cookiejar-2.1.4.tgz#d3fe9c70f026237239ef57dd9d41c87f978b63b5" + integrity sha512-b698BLJ6kPVd6uhHsY7wlebZdrWPXYied883PDSzpJZYOP97EOn/oGdLCH3jJf157srkFReIZY5v0H1s8Dozrg== "@types/estree@*", "@types/estree@^1.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.2.tgz#ff02bc3dc8317cd668dfec247b750ba1f1d62453" - integrity sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA== + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== "@types/express-serve-static-core@^4.17.33": - version "4.17.37" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.37.tgz#7e4b7b59da9142138a2aaa7621f5abedce8c7320" - integrity sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg== + version "4.17.41" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz#5077defa630c2e8d28aa9ffc2c01c157c305bef6" + integrity sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA== dependencies: "@types/node" "*" "@types/qs" "*" @@ -2307,9 +2293,9 @@ "@types/send" "*" "@types/express@^4.17.13": - version "4.17.18" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.18.tgz#efabf5c4495c1880df1bdffee604b143b29c4a95" - integrity sha512-Sxv8BSLLgsBYmcnGdGjjEjqET2U+AKAdCRODmMiq02FgjwuV75Ut85DRpvFjyw/Mk0vgUOliGRU0UUmuuZHByQ== + version "4.17.21" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" + integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^4.17.33" @@ -2317,54 +2303,54 @@ "@types/serve-static" "*" "@types/graceful-fs@^4.1.3": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.7.tgz#30443a2e64fd51113bc3e2ba0914d47109695e2a" - integrity sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw== + version "4.1.9" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" + integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== dependencies: "@types/node" "*" "@types/http-errors@*": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.2.tgz#a86e00bbde8950364f8e7846687259ffcd96e8c2" - integrity sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg== + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" + integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== "@types/is-ci@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/is-ci/-/is-ci-3.0.1.tgz#802da8f2376d9bf5c20ac17c9f869aed2b532297" - integrity sha512-mnb1ngaGQPm6LFZaNdh3xPOoQMkrQb/KBPhPPN2p2Wk8XgeUqWj6xPnvyQ8rvcK/VFritVmQG8tvQuy7g+9/nQ== + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/is-ci/-/is-ci-3.0.4.tgz#6f883e86e32f47747acbc6929a623d4e6fd71915" + integrity sha512-AkCYCmwlXeuH89DagDCzvCAyltI2v9lh3U3DqSg/GrBYoReAaWwxfXCqMx9UV5MajLZ4ZFwZzV4cABGIxk2XRw== dependencies: ci-info "^3.1.0" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== "@types/istanbul-lib-report@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#412e0725ef41cde73bfa03e0e833eaff41e0fd63" - integrity sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz#edc8e421991a3b4df875036d381fc0a5a982f549" - integrity sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A== + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== dependencies: "@types/istanbul-lib-report" "*" "@types/jest@^29.5.0": - version "29.5.5" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.5.tgz#727204e06228fe24373df9bae76b90f3e8236a2a" - integrity sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg== + version "29.5.8" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.8.tgz#ed5c256fe2bc7c38b1915ee5ef1ff24a3427e120" + integrity sha512-fXEFTxMV2Co8ZF5aYFJv+YeA08RTYJfhtN5c9JSv/mFEMe+xxjufCb+PHL+bJcMs/ebPUsBu+UNTEz+ydXrR6g== dependencies: expect "^29.0.0" pretty-format "^29.0.0" "@types/jsdom@^20.0.0": version "20.0.1" - resolved "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz#07c14bc19bd2f918c1929541cdaacae894744808" + resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-20.0.1.tgz#07c14bc19bd2f918c1929541cdaacae894744808" integrity sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ== dependencies: "@types/node" "*" @@ -2372,9 +2358,9 @@ parse5 "^7.0.0" "@types/json-schema@^7.0.9": - version "7.0.13" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85" - integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ== + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== "@types/json5@^0.0.29": version "0.0.29" @@ -2382,32 +2368,41 @@ integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/mime@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" - integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.4.tgz#2198ac274de6017b44d941e00261d5bc6a0e0a45" + integrity sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw== "@types/mime@^1": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" - integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" + integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== "@types/minimist@^1.2.0": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" - integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== + version "1.2.5" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e" + integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== "@types/node-fetch@^2.5.7": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.6.tgz#b72f3f4bc0c0afee1c0bc9cff68e041d01e3e779" - integrity sha512-95X8guJYhfqiuVVhRFxVQcf4hW/2bCuoPwDasMf/531STFoNoWTT7YDnWdXHEZKqAGUigmpG31r2FE70LwnzJw== + version "2.6.9" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.9.tgz#15f529d247f1ede1824f7e7acdaa192d5f28071e" + integrity sha512-bQVlnMLFJ2d35DkPNjEPmd9ueO/rh5EiaZt2bhqiSarPjZIuIV6bPQVqcrEyvNo+AfTrRGVazle1tl597w3gfA== dependencies: "@types/node" "*" form-data "^4.0.0" +"@types/node-forge@^1.3.0": + version "1.3.9" + resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.9.tgz#0fe4a7ba69c0b173f56e6de65d0eae2c1dd4bbfe" + integrity sha512-meK88cx/sTalPSLSoCzkiUB4VPIFHmxtXm5FaaqRDqBX2i/Sy8bJ4odsan0b20RBjPh06dAQ+OTTdnyQyhJZyQ== + dependencies: + "@types/node" "*" + "@types/node@*": - version "20.7.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" - integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== + version "20.9.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.9.0.tgz#bfcdc230583aeb891cf51e73cfdaacdd8deae298" + integrity sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw== + dependencies: + undici-types "~5.26.4" "@types/node@^12.7.1": version "12.20.55" @@ -2415,34 +2410,34 @@ integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== "@types/node@^16.0.0": - version "16.18.58" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.58.tgz#bf66f63983104ed57c754f4e84ccaf16f8235adb" - integrity sha512-YGncyA25/MaVtQkjWW9r0EFBukZ+JulsLcVZBlGUfIb96OBMjkoRWwQo5IEWJ8Fj06Go3GHw+bjYDitv6BaGsA== + version "16.18.61" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.61.tgz#5ea47e3018348bf3bbbe646b396ba5e720310be1" + integrity sha512-k0N7BqGhJoJzdh6MuQg1V1ragJiXTh8VUBAZTWjJ9cUq23SG0F0xavOwZbhiP4J3y20xd6jxKx+xNUhkMAi76Q== "@types/normalize-package-data@^2.4.0": - version "2.4.2" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.2.tgz#9b0e3e8533fe5024ad32d6637eb9589988b6fdca" - integrity sha512-lqa4UEhhv/2sjjIQgjX8B+RBjj47eo0mzGasklVJ78UKGQY1r0VpB9XHDaZZO9qzEFDdy4MrXLuEaSmPrPSe/A== + version "2.4.4" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" + integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== "@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" + integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== "@types/qs@*": - version "6.9.8" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.8.tgz#f2a7de3c107b89b441e071d5472e6b726b4adf45" - integrity sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg== + version "6.9.10" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.10.tgz#0af26845b5067e1c9a622658a51f60a3934d51e8" + integrity sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw== "@types/range-parser@*": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" - integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + version "1.2.7" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" + integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== "@types/regenerator-runtime@^0.13.1": - version "0.13.2" - resolved "https://registry.npmjs.org/@types/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#301edfbbc50f454500cb7934341fbd030df4e368" - integrity sha512-SIYCe4xgq4FSs00vENNHC+L1jxRdN4IKV2abqTu2kb2WkXlPBOml7NK2eCcYdUbQtD8cOWTcBUiYstoiaSNawA== + version "0.13.4" + resolved "https://registry.yarnpkg.com/@types/regenerator-runtime/-/regenerator-runtime-0.13.4.tgz#9bb50e1cb7bba5db4d8afa8e4b345443a2a6ace2" + integrity sha512-ab22YEmSufLfnTHChV5t6egMbE47iQHE1JdXBLzgFlDxzoQjsfZqQsxB9Jaxn1/weZg6J0QFh8hEB7eM+hG6nA== "@types/resolve@1.20.2": version "1.20.2" @@ -2450,22 +2445,22 @@ integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== "@types/semver@^7.3.12", "@types/semver@^7.5.0": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04" - integrity sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw== + version "7.5.5" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.5.tgz#deed5ab7019756c9c90ea86139106b0346223f35" + integrity sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg== "@types/send@*": - version "0.17.2" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.2.tgz#af78a4495e3c2b79bfbdac3955fdd50e03cc98f2" - integrity sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw== + version "0.17.4" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" + integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== dependencies: "@types/mime" "^1" "@types/node" "*" "@types/serve-static@*": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.3.tgz#2cfacfd1fd4520bbc3e292cca432d5e8e2e3ee61" - integrity sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg== + version "1.15.5" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.5.tgz#15e67500ec40789a1e8c9defc2d32a896f05b033" + integrity sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ== dependencies: "@types/http-errors" "*" "@types/mime" "*" @@ -2477,44 +2472,44 @@ integrity sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g== "@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== "@types/superagent@*": - version "4.1.19" - resolved "https://registry.yarnpkg.com/@types/superagent/-/superagent-4.1.19.tgz#33f4fa460fb9e79e5e47a96731725141c667acd0" - integrity sha512-McM1mlc7PBZpCaw0fw/36uFqo0YeA6m8JqoyE4OfqXsZCIg0hPP2xdE6FM7r6fdprDZHlJwDpydUj1R++93hCA== + version "4.1.21" + resolved "https://registry.yarnpkg.com/@types/superagent/-/superagent-4.1.21.tgz#78e2c2d6894c5f8ece228f0df4912906133d97c3" + integrity sha512-yrbAccEEY9+BSa1wji3ry8R3/BdW9kyWnjkRKctrtw5ebn/k2a2CsMeaQ7dD4iLfomgHkomBVIVgOFRMV4XYHA== dependencies: "@types/cookiejar" "*" "@types/node" "*" "@types/supertest@^2.0.10": - version "2.0.13" - resolved "https://registry.yarnpkg.com/@types/supertest/-/supertest-2.0.13.tgz#797b3df9abb9a09c4c740c9c615d618c7921ad41" - integrity sha512-Vc/5/pRwSC055fU7Wu8erTj4gLpID9SdG2zRMuqaHLni3GTsrJ8gyB6MbFZZGLW6vQaGPhiUWRB6uWglv87MEg== + version "2.0.16" + resolved "https://registry.yarnpkg.com/@types/supertest/-/supertest-2.0.16.tgz#7a1294edebecb960d957bbe9b26002a2b7f21cd7" + integrity sha512-6c2ogktZ06tr2ENoZivgm7YnprnhYE4ZoXGMY+oA7IuAf17M8FWvujXZGmxLv8y0PTyts4x5A+erSwVUFA8XSg== dependencies: "@types/superagent" "*" "@types/tough-cookie@*": - version "4.0.3" - resolved "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.3.tgz#3d06b6769518450871fbc40770b7586334bdfd90" - integrity sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg== + version "4.0.5" + resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#cb6e2a691b70cb177c6e3ae9c1d2e8b2ea8cd304" + integrity sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA== "@types/uuid@^9.0.0": - version "9.0.4" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.4.tgz#e884a59338da907bda8d2ed03e01c5c49d036f1c" - integrity sha512-zAuJWQflfx6dYJM62vna+Sn5aeSWhh3OB+wfUEACNcqUSc0AGc5JKl+ycL1vrH7frGTXhJchYjE1Hak8L819dA== + version "9.0.7" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.7.tgz#b14cebc75455eeeb160d5fe23c2fcc0c64f724d8" + integrity sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g== "@types/yargs-parser@*": - version "21.0.1" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.1.tgz#07773d7160494d56aa882d7531aac7319ea67c3b" - integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ== + version "21.0.3" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== "@types/yargs@^17.0.8": - version "17.0.25" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.25.tgz#3edd102803c97356fb4c805b2bbaf7dfc9ab6abc" - integrity sha512-gy7iPgwnzNvxgAEi2bXOHWCVOG6f7xsprVJH4MjlAWeBmJ7vh/Y1kwMtUrs64ztf24zVIRCpr3n/z6gm9QIkgg== + version "17.0.31" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.31.tgz#8fd0089803fd55d8a285895a18b88cb71a99683c" + integrity sha512-bocYSx4DI8TmdlvxqGpVNXOgCNR1Jj0gNPhhAY+iz1rgKDAaYrAYdFYnhDV1IFuiuVc9HkOwyDcFxaTElF3/wg== dependencies: "@types/yargs-parser" "*" @@ -2552,14 +2547,14 @@ debug "^4.3.4" "@typescript-eslint/parser@^6.7.5": - version "6.7.5" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.5.tgz#8d7ca3d1fbd9d5a58cc4d30b2aa797a760137886" - integrity sha512-bIZVSGx2UME/lmhLcjdVc7ePBwn7CLqKarUBL4me1C5feOd663liTGjMBGVcGr+BhnSLeP4SgwdvNnnkbIdkCw== - dependencies: - "@typescript-eslint/scope-manager" "6.7.5" - "@typescript-eslint/types" "6.7.5" - "@typescript-eslint/typescript-estree" "6.7.5" - "@typescript-eslint/visitor-keys" "6.7.5" + version "6.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.10.0.tgz#578af79ae7273193b0b6b61a742a2bc8e02f875a" + integrity sha512-+sZwIj+s+io9ozSxIWbNB5873OSdfeBEH/FR0re14WLI6BaKuSOnnwCJ2foUiu8uXf4dRp1UqHP0vrZ1zXGrog== + dependencies: + "@typescript-eslint/scope-manager" "6.10.0" + "@typescript-eslint/types" "6.10.0" + "@typescript-eslint/typescript-estree" "6.10.0" + "@typescript-eslint/visitor-keys" "6.10.0" debug "^4.3.4" "@typescript-eslint/scope-manager@5.62.0": @@ -2570,13 +2565,13 @@ "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/scope-manager@6.7.5": - version "6.7.5" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.5.tgz#1cf33b991043886cd67f4f3600b8e122fc14e711" - integrity sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A== +"@typescript-eslint/scope-manager@6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.10.0.tgz#b0276118b13d16f72809e3cecc86a72c93708540" + integrity sha512-TN/plV7dzqqC2iPNf1KrxozDgZs53Gfgg5ZHyw8erd6jd5Ta/JIEcdCheXFt9b1NYb93a1wmIIVW/2gLkombDg== dependencies: - "@typescript-eslint/types" "6.7.5" - "@typescript-eslint/visitor-keys" "6.7.5" + "@typescript-eslint/types" "6.10.0" + "@typescript-eslint/visitor-keys" "6.10.0" "@typescript-eslint/type-utils@5.62.0": version "5.62.0" @@ -2593,10 +2588,10 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/types@6.7.5": - version "6.7.5" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.5.tgz#4571320fb9cf669de9a95d9849f922c3af809790" - integrity sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ== +"@typescript-eslint/types@6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.10.0.tgz#f4f0a84aeb2ac546f21a66c6e0da92420e921367" + integrity sha512-36Fq1PWh9dusgo3vH7qmQAj5/AZqARky1Wi6WpINxB6SkQdY5vQoT2/7rW7uBIsPDcvvGCLi4r10p0OJ7ITAeg== "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" @@ -2611,13 +2606,13 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@6.7.5": - version "6.7.5" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.5.tgz#4578de1a26e9f24950f029a4f00d1bfe41f15a39" - integrity sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg== +"@typescript-eslint/typescript-estree@6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.10.0.tgz#667381eed6f723a1a8ad7590a31f312e31e07697" + integrity sha512-ek0Eyuy6P15LJVeghbWhSrBCj/vJpPXXR+EpaRZqou7achUWL8IdYnMSC5WHAeTWswYQuP2hAZgij/bC9fanBg== dependencies: - "@typescript-eslint/types" "6.7.5" - "@typescript-eslint/visitor-keys" "6.7.5" + "@typescript-eslint/types" "6.10.0" + "@typescript-eslint/visitor-keys" "6.10.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" @@ -2646,17 +2641,22 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" -"@typescript-eslint/visitor-keys@6.7.5": - version "6.7.5" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.5.tgz#84c68d6ceb5b12d5246b918b84f2b79affd6c2f1" - integrity sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg== +"@typescript-eslint/visitor-keys@6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.10.0.tgz#b9eaf855a1ac7e95633ae1073af43d451e8f84e3" + integrity sha512-xMGluxQIEtOM7bqFCo+rCMh5fqI+ZxV5RUUOa29iVPz1OgCZrtc7rFnz5cLUazlkPKYqX+75iuDq7m0HQ48nCg== dependencies: - "@typescript-eslint/types" "6.7.5" + "@typescript-eslint/types" "6.10.0" eslint-visitor-keys "^3.4.1" +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + abab@^2.0.6: version "2.0.6" - resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== accepts@~1.3.8: @@ -2669,7 +2669,7 @@ accepts@~1.3.8: acorn-globals@^7.0.0: version "7.0.1" - resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz#0dbf05c44fa7c94332914c02066d5beff62c40c3" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-7.0.1.tgz#0dbf05c44fa7c94332914c02066d5beff62c40c3" integrity sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q== dependencies: acorn "^8.1.0" @@ -2681,9 +2681,9 @@ acorn-jsx@^5.3.1, acorn-jsx@^5.3.2: integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^8.0.2, acorn-walk@^8.1.1: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + version "8.3.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.0.tgz#2097665af50fd0cf7a2dfccd2b9368964e66540f" + integrity sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA== acorn@^7.4.0: version "7.4.1" @@ -2691,13 +2691,13 @@ acorn@^7.4.0: integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== acorn@^8.1.0, acorn@^8.4.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" - integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + version "8.11.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" + integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== agent-base@6: version "6.0.2" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" @@ -2780,10 +2780,10 @@ argparse@^1.0.7: argparse@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@^5.1.3: +aria-query@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== @@ -2803,7 +2803,7 @@ array-flatten@1.1.1: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== -array-includes@^3.1.6: +array-includes@^3.1.6, array-includes@^3.1.7: version "3.1.7" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== @@ -2819,7 +2819,7 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array.prototype.findlastindex@^1.2.2: +array.prototype.findlastindex@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== @@ -2830,7 +2830,7 @@ array.prototype.findlastindex@^1.2.2: es-shim-unscopables "^1.0.0" get-intrinsic "^1.2.1" -array.prototype.flat@^1.2.3, array.prototype.flat@^1.3.1: +array.prototype.flat@^1.2.3, array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== @@ -2840,7 +2840,7 @@ array.prototype.flat@^1.2.3, array.prototype.flat@^1.3.1: es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" -array.prototype.flatmap@^1.3.1: +array.prototype.flatmap@^1.3.1, array.prototype.flatmap@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== @@ -2884,10 +2884,10 @@ asap@^2.0.0: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== -ast-types-flow@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" - integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== +ast-types-flow@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" + integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== astral-regex@^2.0.0: version "2.0.0" @@ -2911,12 +2911,12 @@ available-typed-arrays@^1.0.5: resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== -axe-core@^4.6.2: - version "4.8.2" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.8.2.tgz#2f6f3cde40935825cf4465e3c1c9e77b240ff6ae" - integrity sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g== +axe-core@=4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" + integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== -axobject-query@^3.1.1: +axobject-query@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== @@ -2957,38 +2957,38 @@ babel-plugin-jest-hoist@^29.6.3: "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" -babel-plugin-polyfill-corejs2@^0.4.5: - version "0.4.5" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz#8097b4cb4af5b64a1d11332b6fb72ef5e64a054c" - integrity sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg== +babel-plugin-polyfill-corejs2@^0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz#b2df0251d8e99f229a8e60fc4efa9a68b41c8313" + integrity sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q== dependencies: "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.4.2" + "@babel/helper-define-polyfill-provider" "^0.4.3" semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.8.3: - version "0.8.4" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.4.tgz#1fac2b1dcef6274e72b3c72977ed8325cb330591" - integrity sha512-9l//BZZsPR+5XjyJMPtZSK4jv0BsTO1zDac2GC6ygx9WLGlcsnRd1Co0B2zT5fF5Ic6BZy+9m3HNZ3QcOeDKfg== +babel-plugin-polyfill-corejs3@^0.8.5: + version "0.8.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz#25c2d20002da91fe328ff89095c85a391d6856cf" + integrity sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ== dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.2" - core-js-compat "^3.32.2" + "@babel/helper-define-polyfill-provider" "^0.4.3" + core-js-compat "^3.33.1" -babel-plugin-polyfill-regenerator@^0.5.2: - version "0.5.2" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz#80d0f3e1098c080c8b5a65f41e9427af692dc326" - integrity sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA== +babel-plugin-polyfill-regenerator@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz#d4c49e4b44614607c13fb769bcd85c72bb26a4a5" + integrity sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw== dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.2" + "@babel/helper-define-polyfill-provider" "^0.4.3" babel-plugin-react-test-id@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/babel-plugin-react-test-id/-/babel-plugin-react-test-id-1.0.2.tgz#90fb7ab91e9623bea47ad1f7eddd9a38e2dfc51b" + resolved "https://registry.yarnpkg.com/babel-plugin-react-test-id/-/babel-plugin-react-test-id-1.0.2.tgz#90fb7ab91e9623bea47ad1f7eddd9a38e2dfc51b" integrity sha512-d1bBxX3UNOIaX6NUEsR6Ekfy1fvmCegY9lQodgg6DevjhaNBDnaUeDUHl6JbIh5tuw0EF7FGgt+61yiFLMWwMg== babel-plugin-transform-inline-environment-variables@^0.4.3: version "0.4.4" - resolved "https://registry.npmjs.org/babel-plugin-transform-inline-environment-variables/-/babel-plugin-transform-inline-environment-variables-0.4.4.tgz#974245008b3cbbd646bd81707af147aea3acca43" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-inline-environment-variables/-/babel-plugin-transform-inline-environment-variables-0.4.4.tgz#974245008b3cbbd646bd81707af147aea3acca43" integrity sha512-bJILBtn5a11SmtR2j/3mBOjX4K3weC6cq+NNZ7hG22wCAqpc3qtj/iN7dSe9HDiS46lgp1nHsQgeYrea/RUe+g== babel-preset-current-node-syntax@^1.0.0: @@ -3076,19 +3076,9 @@ breakword@^1.0.5: dependencies: wcwidth "^1.0.1" -browserslist@^4.21.9: - version "4.21.11" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.11.tgz#35f74a3e51adc4d193dcd76ea13858de7b8fecb8" - integrity sha512-xn1UXOKUz7DjdGlg9RrUr0GGiWzI97UQJnugHtH0OLDfJB7jMgoIkYvRIEO1l9EeEERVqeqLYOcFBW9ldjypbQ== - dependencies: - caniuse-lite "^1.0.30001538" - electron-to-chromium "^1.4.526" - node-releases "^2.0.13" - update-browserslist-db "^1.0.13" - -browserslist@^4.22.1: +browserslist@^4.21.9, browserslist@^4.22.1: version "4.22.1" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== dependencies: caniuse-lite "^1.0.30001541" @@ -3139,13 +3129,14 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" callsites@^3.0.0: version "3.1.0" @@ -3179,15 +3170,10 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001538: - version "1.0.30001539" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001539.tgz#325a387ab1ed236df2c12dc6cd43a4fff9903a44" - integrity sha512-hfS5tE8bnNiNvEOEkm8HElUHroYwlqMMENEzELymy77+tJ6m+gA2krtHl5hxJaj71OlpC2cHZbdSMX1/YEqEkA== - caniuse-lite@^1.0.30001541: - version "1.0.30001546" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001546.tgz#10fdad03436cfe3cc632d3af7a99a0fb497407f0" - integrity sha512-zvtSJwuQFpewSyRrI3AsftF6rM0X80mZkChIt1spBGEvRglCrjTniXvinc8JKRoqTwXAgvqTImaN9igfSMtUBw== + version "1.0.30001561" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001561.tgz#752f21f56f96f1b1a52e97aae98c57c562d5d9da" + integrity sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw== capital-case@^1.0.4: version "1.0.4" @@ -3244,9 +3230,9 @@ chardet@^0.7.0: integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== ci-info@^3.1.0, ci-info@^3.2.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" - integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== cjs-module-lexer@^1.0.0: version "1.2.3" @@ -3319,7 +3305,7 @@ combined-stream@^1.0.8: commander@^2.20.0: version "2.20.3" - resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== common-tags@^1.8.2: @@ -3368,11 +3354,6 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== -convert-source-map@^1.6.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" - integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== - convert-source-map@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" @@ -3398,10 +3379,10 @@ cookiejar@^2.1.4: resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.4.tgz#ee669c1fea2cf42dc31585469d193fef0d65771b" integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== -core-js-compat@^3.31.0, core-js-compat@^3.32.2: - version "3.33.0" - resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.0.tgz#24aa230b228406450b2277b7c8bfebae932df966" - integrity sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw== +core-js-compat@^3.31.0, core-js-compat@^3.33.1: + version "3.33.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.2.tgz#3ea4563bfd015ad4e4b52442865b02c62aba5085" + integrity sha512-axfo+wxFVxnqf8RvxTzoAlzW4gRoacrHeoFlc9n0x50+7BEyZL/Rt3hicaED1/CEd7I6tPCPVUYcJwCMO5XUYw== dependencies: browserslist "^4.22.1" @@ -3450,7 +3431,7 @@ cron-schedule@^3.0.4: cross-fetch@^3.0.4: version "3.1.8" - resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== dependencies: node-fetch "^2.6.12" @@ -3475,17 +3456,17 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: cssom@^0.5.0: version "0.5.0" - resolved "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== cssom@~0.3.6: version "0.3.8" - resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== cssstyle@^2.3.0: version "2.3.0" - resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== dependencies: cssom "~0.3.6" @@ -3522,7 +3503,7 @@ damerau-levenshtein@^1.0.8: data-urls@^3.0.2: version "3.0.2" - resolved "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== dependencies: abab "^2.0.6" @@ -3531,7 +3512,7 @@ data-urls@^3.0.2: dataloader@^1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/dataloader/-/dataloader-1.4.0.tgz#bca11d867f5d3f1b9ed9f737bd15970c65dff5c8" + resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-1.4.0.tgz#bca11d867f5d3f1b9ed9f737bd15970c65dff5c8" integrity sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw== debug@2.6.9: @@ -3570,7 +3551,7 @@ decamelize@^1.1.0, decamelize@^1.2.0: decimal.js@^10.4.2: version "10.4.3" - resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== dedent@^1.0.0: @@ -3595,10 +3576,10 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -define-data-property@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.0.tgz#0db13540704e1d8d479a0656cf781267531b9451" - integrity sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g== +define-data-property@^1.0.1, define-data-property@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== dependencies: get-intrinsic "^1.2.1" gopd "^1.0.1" @@ -3684,7 +3665,7 @@ doctrine@^3.0.0: domexception@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== dependencies: webidl-conversions "^7.0.0" @@ -3711,7 +3692,7 @@ dotenv@^10.0.0: dotenv@^8.1.0: version "8.6.0" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== ee-first@1.1.1: @@ -3719,15 +3700,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.4.526: - version "1.4.530" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.530.tgz#c31a44346739bb34acb1a4026a07c3b9eeeb326c" - integrity sha512-rsJ9O8SCI4etS8TBsXuRfHa2eZReJhnGf5MHZd3Vo05PukWHKXhk3VQGbHHnDLa8nZz9woPCpLCMQpLGgkGNRA== - electron-to-chromium@^1.4.535: - version "1.4.543" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.543.tgz#51116ffc9fba1ee93514d6a40d34676aa6d7d1c4" - integrity sha512-t2ZP4AcGE0iKCCQCBx/K2426crYdxD3YU6l0uK2EO3FZH0pbC4pFz/sZm2ruZsND6hQBTcDWWlo/MLpiOdif5g== + version "1.4.579" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.579.tgz#40ddec29bb5549908e82ccd652cf5da2e5900c23" + integrity sha512-bJKvA+awBIzYR0xRced7PrQuRIwGQPpo6ZLP62GAShahU9fWpsNN2IP6BSP1BLDDSbxvBVRGAMWlvVVq3npmLA== emittery@^0.13.1: version "0.13.1" @@ -3759,7 +3735,7 @@ enquirer@^2.3.0, enquirer@^2.3.5: entities@^4.4.0: version "4.5.0" - resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== error-ex@^1.3.1: @@ -3770,25 +3746,25 @@ error-ex@^1.3.1: is-arrayish "^0.2.1" es-abstract@^1.22.1: - version "1.22.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.2.tgz#90f7282d91d0ad577f505e423e52d4c1d93c1b8a" - integrity sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA== + version "1.22.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" + integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== dependencies: array-buffer-byte-length "^1.0.0" arraybuffer.prototype.slice "^1.0.2" available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.5" es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" function.prototype.name "^1.1.6" - get-intrinsic "^1.2.1" + get-intrinsic "^1.2.2" 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" + hasown "^2.0.0" internal-slot "^1.0.5" is-array-buffer "^3.0.2" is-callable "^1.2.7" @@ -3798,7 +3774,7 @@ es-abstract@^1.22.1: is-string "^1.0.7" is-typed-array "^1.1.12" is-weakref "^1.0.2" - object-inspect "^1.12.3" + object-inspect "^1.13.1" object-keys "^1.1.1" object.assign "^4.1.4" regexp.prototype.flags "^1.5.1" @@ -3812,9 +3788,9 @@ es-abstract@^1.22.1: typed-array-byte-offset "^1.0.0" typed-array-length "^1.0.4" unbox-primitive "^1.0.2" - which-typed-array "^1.1.11" + which-typed-array "^1.1.13" -es-iterator-helpers@^1.0.12: +es-iterator-helpers@^1.0.12, es-iterator-helpers@^1.0.15: version "1.0.15" resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40" integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g== @@ -3835,20 +3811,20 @@ es-iterator-helpers@^1.0.12: safe-array-concat "^1.0.1" es-set-tostringtag@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" - integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + version "2.0.2" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" + integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== dependencies: - get-intrinsic "^1.1.3" - has "^1.0.3" + get-intrinsic "^1.2.2" has-tostringtag "^1.0.0" + hasown "^2.0.0" es-shim-unscopables@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" - integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== dependencies: - has "^1.0.3" + hasown "^2.0.0" es-to-primitive@^1.2.1: version "1.2.1" @@ -3886,7 +3862,7 @@ escape-string-regexp@^4.0.0: escodegen@^2.0.0: version "2.1.0" - resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== dependencies: esprima "^4.0.1" @@ -3900,7 +3876,7 @@ eslint-config-prettier@^8.3.0: resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz#3a06a662130807e2502fc3ff8b4143d8a0658e11" integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg== -eslint-import-resolver-node@^0.3.7: +eslint-import-resolver-node@^0.3.9: version "0.3.9" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== @@ -3933,25 +3909,25 @@ eslint-plugin-eslint-comments@^3.2.0: ignore "^5.0.5" eslint-plugin-import@^2.26.0: - version "2.28.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz#63b8b5b3c409bfc75ebaf8fb206b07ab435482c4" - integrity sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A== - dependencies: - array-includes "^3.1.6" - array.prototype.findlastindex "^1.2.2" - array.prototype.flat "^1.3.1" - array.prototype.flatmap "^1.3.1" + version "2.29.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz#8133232e4329ee344f2f612885ac3073b0b7e155" + integrity sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg== + dependencies: + array-includes "^3.1.7" + array.prototype.findlastindex "^1.2.3" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" debug "^3.2.7" doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.7" + eslint-import-resolver-node "^0.3.9" eslint-module-utils "^2.8.0" - has "^1.0.3" - is-core-module "^2.13.0" + hasown "^2.0.0" + is-core-module "^2.13.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" + object.fromentries "^2.0.7" + object.groupby "^1.0.1" + object.values "^1.1.7" semver "^6.3.1" tsconfig-paths "^3.14.2" @@ -3968,26 +3944,26 @@ eslint-plugin-jest@^25.3.0: "@typescript-eslint/experimental-utils" "^5.0.0" eslint-plugin-jsx-a11y@^6.5.0: - version "6.7.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz#fca5e02d115f48c9a597a6894d5bcec2f7a76976" - integrity sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA== - dependencies: - "@babel/runtime" "^7.20.7" - 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.2" - axobject-query "^3.1.1" + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz#2fa9c701d44fcd722b7c771ec322432857fcbad2" + integrity sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA== + dependencies: + "@babel/runtime" "^7.23.2" + aria-query "^5.3.0" + array-includes "^3.1.7" + array.prototype.flatmap "^1.3.2" + ast-types-flow "^0.0.8" + axe-core "=4.7.0" + axobject-query "^3.2.1" damerau-levenshtein "^1.0.8" emoji-regex "^9.2.2" - has "^1.0.3" - jsx-ast-utils "^3.3.3" - language-tags "=1.0.5" + es-iterator-helpers "^1.0.15" + hasown "^2.0.0" + jsx-ast-utils "^3.3.5" + language-tags "^1.0.9" minimatch "^3.1.2" - object.entries "^1.1.6" - object.fromentries "^2.0.6" - semver "^6.3.0" + object.entries "^1.1.7" + object.fromentries "^2.0.7" eslint-plugin-node@^11.1.0: version "11.1.0" @@ -4041,9 +4017,9 @@ eslint-plugin-react@^7.30.0: string.prototype.matchall "^4.0.8" eslint-plugin-sort-class-members@^1.14.0: - version "1.18.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-sort-class-members/-/eslint-plugin-sort-class-members-1.18.0.tgz#561746eb30abc4e8bb8d582d359c652299e450d8" - integrity sha512-y4r5OC3LJNHJZCWfVwFnnRiNrQ/LRf7Pb1wD6/CP8Y4qmUvjtmkwrLvyY755p8SFTOOXVd33HgFuF3XxVW1xbg== + version "1.19.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-sort-class-members/-/eslint-plugin-sort-class-members-1.19.0.tgz#9ad7a674c4cb477fceaddb8162515372d381c733" + integrity sha512-YayvASA1bavdPeRU9FMPnale2+Oi3aMcHGVC5EUm9b671oxm7ahvR+q8BfsU2aV+KAFezNfu47VPgdZK6gwYPw== eslint-rule-composer@^0.3.0: version "0.3.0" @@ -4060,7 +4036,7 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: eslint-scope@^7.2.2: version "7.2.2" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: esrecurse "^4.3.0" @@ -4134,61 +4110,19 @@ eslint@^7.32.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" -eslint@^8.24.0: - version "8.50.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-8.50.0.tgz#2ae6015fee0240fcd3f83e1e25df0287f487d6b2" - integrity sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.2" - "@eslint/js" "8.50.0" - "@humanwhocodes/config-array" "^0.11.11" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - 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.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -eslint@^8.51.0: - version "8.51.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz#4a82dae60d209ac89a5cff1604fea978ba4950f3" - integrity sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA== +eslint@^8.24.0, eslint@^8.51.0: + version "8.53.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.53.0.tgz#14f2c8244298fcae1f46945459577413ba2697ce" + integrity sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.2" - "@eslint/js" "8.51.0" - "@humanwhocodes/config-array" "^0.11.11" + "@eslint/eslintrc" "^2.1.3" + "@eslint/js" "8.53.0" + "@humanwhocodes/config-array" "^0.11.13" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" @@ -4231,7 +4165,7 @@ espree@^7.3.0, espree@^7.3.1: espree@^9.6.0, espree@^9.6.1: version "9.6.1" - resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: acorn "^8.9.0" @@ -4390,9 +4324,9 @@ fast-diff@^1.1.2: integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== fast-glob@^3.2.9: - version "3.3.1" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" - integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -4481,15 +4415,15 @@ find-yarn-workspace-root2@1.2.16: pkg-dir "^4.2.0" flat-cache@^3.0.4: - version "3.1.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.0.tgz#0e54ab4a1a60fe87e2946b6b00657f1c99e1af3f" - integrity sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew== + version "3.1.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.1.tgz#a02a15fdec25a8f844ff7cc658f03dd99eb4609b" + integrity sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q== dependencies: - flatted "^3.2.7" + flatted "^3.2.9" keyv "^4.5.3" rimraf "^3.0.2" -flatted@^3.2.7: +flatted@^3.2.9: version "3.2.9" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== @@ -4558,10 +4492,10 @@ fsevents@^2.3.2, fsevents@~2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.1, function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: version "1.1.6" @@ -4593,15 +4527,15 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" - integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== dependencies: - function-bind "^1.1.1" - has "^1.0.3" + function-bind "^1.1.2" has-proto "^1.0.1" has-symbols "^1.0.3" + hasown "^2.0.0" get-package-type@^0.1.0: version "0.1.0" @@ -4630,7 +4564,7 @@ glob-parent@^5.1.2: glob-parent@^6.0.2: version "6.0.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== dependencies: is-glob "^4.0.3" @@ -4663,20 +4597,13 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.19.0: +globals@^13.19.0, globals@^13.6.0, globals@^13.9.0: version "13.23.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02" integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== dependencies: type-fest "^0.20.2" -globals@^13.6.0, globals@^13.9.0: - version "13.22.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.22.0.tgz#0c9fcb9c48a2494fbb5edbfee644285543eba9d8" - integrity sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw== - dependencies: - type-fest "^0.20.2" - globalthis@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" @@ -4739,11 +4666,11 @@ has-flag@^4.0.0: integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" + integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== dependencies: - get-intrinsic "^1.1.1" + get-intrinsic "^1.2.2" has-proto@^1.0.1: version "1.0.1" @@ -4762,12 +4689,12 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== dependencies: - function-bind "^1.1.1" + function-bind "^1.1.2" header-case@^2.0.4: version "2.0.4" @@ -4789,7 +4716,7 @@ hosted-git-info@^2.1.4: html-encoding-sniffer@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== dependencies: whatwg-encoding "^2.0.0" @@ -4822,7 +4749,7 @@ http-errors@2.0.0: http-proxy-agent@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== dependencies: "@tootallnate/once" "2" @@ -4831,7 +4758,7 @@ http-proxy-agent@^5.0.0: https-proxy-agent@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: agent-base "6" @@ -4861,7 +4788,7 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24: iconv-lite@0.6.3: version "0.6.3" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" @@ -4916,12 +4843,12 @@ inherits@2, inherits@2.0.4: integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== internal-slot@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" - integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + version "1.0.6" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" + integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== dependencies: - get-intrinsic "^1.2.0" - has "^1.0.3" + get-intrinsic "^1.2.2" + hasown "^2.0.0" side-channel "^1.0.4" ipaddr.js@1.9.1: @@ -4984,12 +4911,12 @@ is-ci@^3.0.1: dependencies: ci-info "^3.2.0" -is-core-module@^2.13.0, is-core-module@^2.9.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" - integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== +is-core-module@^2.13.0, is-core-module@^2.13.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: - has "^1.0.3" + hasown "^2.0.0" is-date-object@^1.0.1, is-date-object@^1.0.5: version "1.0.5" @@ -5068,7 +4995,7 @@ is-obj@^2.0.0: is-path-inside@^3.0.3: version "3.0.3" - resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-plain-obj@^1.1.0: @@ -5078,7 +5005,7 @@ is-plain-obj@^1.1.0: is-potential-custom-element-name@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== is-reference@1.2.1: @@ -5187,9 +5114,9 @@ isexe@^2.0.0: integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" - integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + version "3.2.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" + integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== istanbul-lib-instrument@^5.0.4: version "5.2.1" @@ -5203,9 +5130,9 @@ istanbul-lib-instrument@^5.0.4: semver "^6.3.0" istanbul-lib-instrument@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz#7a8af094cbfff1d5bb280f62ce043695ae8dd5b8" - integrity sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw== + version "6.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz#71e87707e8041428732518c6fb5211761753fbdf" + integrity sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA== dependencies: "@babel/core" "^7.12.3" "@babel/parser" "^7.14.7" @@ -5360,7 +5287,7 @@ jest-each@^29.7.0: jest-environment-jsdom@^29.5.0: version "29.7.0" - resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz#d206fa3551933c3fd519e5dfdb58a0f5139a837f" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz#d206fa3551933c3fd519e5dfdb58a0f5139a837f" integrity sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA== dependencies: "@jest/environment" "^29.7.0" @@ -5401,7 +5328,7 @@ jest-environment-node@^29.7.0: jest-fetch-mock@^3.0.3: version "3.0.3" - resolved "https://registry.npmjs.org/jest-fetch-mock/-/jest-fetch-mock-3.0.3.tgz#31749c456ae27b8919d69824f1c2bd85fe0a1f3b" + resolved "https://registry.yarnpkg.com/jest-fetch-mock/-/jest-fetch-mock-3.0.3.tgz#31749c456ae27b8919d69824f1c2bd85fe0a1f3b" integrity sha512-Ux1nWprtLrdrH4XwE7O7InRY6psIi3GOsqNESJgMJ+M5cv4A8Lh7SN9d2V2kKRZ8ebAfcd1LNyZguAOb6JiDqw== dependencies: cross-fetch "^3.0.4" @@ -5665,9 +5592,9 @@ jest@^29.7.0: jest-cli "^29.7.0" jose@^4.9.1: - version "4.14.6" - resolved "https://registry.yarnpkg.com/jose/-/jose-4.14.6.tgz#94dca1d04a0ad8c6bff0998cdb51220d473cc3af" - integrity sha512-EqJPEUlZD0/CSUMubKtMaYUOtWe91tZXTWMJZoKSbLk+KtdhNdcvppH8lA9XwVu2V4Ailvsj0GBZJ2ZwDjfesQ== + version "4.15.4" + resolved "https://registry.yarnpkg.com/jose/-/jose-4.15.4.tgz#02a9a763803e3872cf55f29ecef0dfdcc218cc03" + integrity sha512-W+oqK4H+r5sITxfxpSU+MMdr/YSWGvgZMQDIsNoBDGGy4i7GBPTtvFKibQzW06n3U3TqHjhvBJsirShsEJ6eeQ== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -5684,14 +5611,14 @@ js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.6.1: js-yaml@^4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" jsdom@^20.0.0: version "20.0.3" - resolved "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz#886a41ba1d4726f67a8858028c99489fed6ad4db" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.3.tgz#886a41ba1d4726f67a8858028c99489fed6ad4db" integrity sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ== dependencies: abab "^2.0.6" @@ -5728,7 +5655,7 @@ jsesc@^2.5.1: jsesc@~0.5.0: version "0.5.0" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== json-buffer@3.0.1: @@ -5775,7 +5702,7 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1, jsx-ast-utils@^3.3.3: +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1, jsx-ast-utils@^3.3.5: version "3.3.5" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== @@ -5786,9 +5713,9 @@ jsonfile@^4.0.0: object.values "^1.1.6" keyv@^4.5.3: - version "4.5.3" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.3.tgz#00873d2b046df737963157bd04f294ca818c9c25" - integrity sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug== + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: json-buffer "3.0.1" @@ -5807,17 +5734,17 @@ kleur@^4.1.4, kleur@^4.1.5: resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== -language-subtag-registry@~0.3.2: +language-subtag-registry@^0.3.20: version "0.3.22" resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== -language-tags@=1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" - integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== +language-tags@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.9.tgz#1ffdcd0ec0fafb4b1be7f8b11f306ad0f9c08777" + integrity sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA== dependencies: - language-subtag-registry "~0.3.2" + language-subtag-registry "^0.3.20" leven@^3.1.0: version "3.1.0" @@ -5863,7 +5790,7 @@ locate-path@^6.0.0: lodash.debounce@^4.0.8: version "4.0.8" - resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== lodash.memoize@4.x: @@ -5929,10 +5856,10 @@ magic-string@^0.27.0: dependencies: "@jridgewell/sourcemap-codec" "^1.4.13" -magic-string@^0.30.2: - version "0.30.4" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.4.tgz#c2c683265fc18dda49b56fc7318d33ca0332c98c" - integrity sha512-Q/TKtsC5BPm0kGqgBIF9oXAs/xEf2vRKiIB4wCRQTJOQIByZ1d+NnUOotvJOvNpi5RNIgVOMC3pOuaP1ZTDlVg== +magic-string@^0.30.2, magic-string@^0.30.3: + version "0.30.5" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9" + integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA== dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" @@ -6218,7 +6145,7 @@ npx-import@^1.1.4: nwsapi@^2.2.2: version "2.2.7" - resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30" integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== object-assign@^4.1.1: @@ -6226,10 +6153,10 @@ object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -object-inspect@^1.12.3, object-inspect@^1.9.0: - version "1.12.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" - integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== +object-inspect@^1.13.1, object-inspect@^1.9.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-keys@^1.1.1: version "1.1.1" @@ -6246,7 +6173,7 @@ object.assign@^4.1.4: has-symbols "^1.0.3" object-keys "^1.1.1" -object.entries@^1.1.6: +object.entries@^1.1.6, object.entries@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== @@ -6255,7 +6182,7 @@ object.entries@^1.1.6: define-properties "^1.2.0" es-abstract "^1.22.1" -object.fromentries@^2.0.6: +object.fromentries@^2.0.6, object.fromentries@^2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== @@ -6264,7 +6191,7 @@ object.fromentries@^2.0.6: define-properties "^1.2.0" es-abstract "^1.22.1" -object.groupby@^1.0.0: +object.groupby@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== @@ -6282,7 +6209,7 @@ object.hasown@^1.1.2: define-properties "^1.2.0" es-abstract "^1.22.1" -object.values@^1.1.6: +object.values@^1.1.6, object.values@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== @@ -6418,7 +6345,7 @@ parse-package-name@^1.0.0: parse5@^7.0.0, parse5@^7.1.1: version "7.1.2" - resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== dependencies: entities "^4.4.0" @@ -6561,7 +6488,7 @@ progress@^2.0.0: promise-polyfill@^8.1.3: version "8.3.0" - resolved "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.3.0.tgz#9284810268138d103807b11f4e23d5e945a4db63" + resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.3.0.tgz#9284810268138d103807b11f4e23d5e945a4db63" integrity sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg== prompts@^2.0.1: @@ -6596,18 +6523,18 @@ pseudomap@^1.0.2: psl@^1.1.33: version "1.9.0" - resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== punycode@^2.1.0, punycode@^2.1.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" - integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== pure-rand@^6.0.0: - version "6.0.3" - resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.3.tgz#3c9e6b53c09e52ac3cedffc85ab7c1c7094b38cb" - integrity sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w== + version "6.0.4" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.4.tgz#50b737f6a925468679bff00ad20eade53f37d5c7" + integrity sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA== qs@6.11.0: version "6.11.0" @@ -6625,7 +6552,7 @@ qs@^6.11.0: querystringify@^2.1.1: version "2.2.0" - resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== queue-microtask@^1.2.2: @@ -6640,7 +6567,7 @@ quick-lru@^4.0.1: randombytes@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" @@ -6721,19 +6648,19 @@ reflect.getprototypeof@^1.0.4: regenerate-unicode-properties@^10.1.0: version "10.1.1" - resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== dependencies: regenerate "^1.4.2" regenerate@^1.4.2: version "1.4.2" - resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== regenerator-runtime@^0.13.11: version "0.13.11" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== regenerator-runtime@^0.14.0: @@ -6743,7 +6670,7 @@ regenerator-runtime@^0.14.0: regenerator-transform@^0.15.2: version "0.15.2" - resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== dependencies: "@babel/runtime" "^7.8.4" @@ -6764,7 +6691,7 @@ regexpp@^3.0.0, regexpp@^3.1.0: regexpu-core@^5.3.1: version "5.3.2" - resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== dependencies: "@babel/regjsgen" "^0.8.0" @@ -6776,7 +6703,7 @@ regexpu-core@^5.3.1: regjsparser@^0.9.1: version "0.9.1" - resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== dependencies: jsesc "~0.5.0" @@ -6798,7 +6725,7 @@ require-main-filename@^2.0.0: requires-port@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== resolve-cwd@^3.0.0: @@ -6824,20 +6751,20 @@ resolve.exports@^2.0.0: integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== resolve@^1.10.0, resolve@^1.10.1, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.4: - version "1.22.6" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.6.tgz#dd209739eca3aef739c626fea1b4f3c506195362" - integrity sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw== + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== dependencies: is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" resolve@^2.0.0-next.4: - version "2.0.0-next.4" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" - integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== + version "2.0.0-next.5" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" + integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== dependencies: - is-core-module "^2.9.0" + is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -6855,7 +6782,7 @@ rimraf@^3.0.2: rollup-plugin-dts@^5.2.0: version "5.3.1" - resolved "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-5.3.1.tgz#c2841269a3a5cb986b7791b0328e6a178eba108f" + resolved "https://registry.yarnpkg.com/rollup-plugin-dts/-/rollup-plugin-dts-5.3.1.tgz#c2841269a3a5cb986b7791b0328e6a178eba108f" integrity sha512-gusMi+Z4gY/JaEQeXnB0RUdU82h1kF0WYzCWgVmV4p3hWXqelaKuCvcJawfeg+EKn2T1Ie+YWF2OiN1/L8bTVg== dependencies: magic-string "^0.30.2" @@ -6878,7 +6805,7 @@ rollup@^2.79.1: rollup@^3.19.1: version "3.29.4" - resolved "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981" integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== optionalDependencies: fsevents "~2.3.2" @@ -6921,16 +6848,17 @@ safe-regex-test@^1.0.0: saxes@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== dependencies: xmlchars "^2.2.0" selfsigned@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61" - integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== + version "2.4.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" + integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== dependencies: + "@types/node-forge" "^1.3.0" node-forge "^1" semiver@^1.1.0: @@ -6985,7 +6913,7 @@ sentence-case@^3.0.4: serialize-javascript@^6.0.1: version "6.0.1" - resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== dependencies: randombytes "^2.1.0" @@ -7010,6 +6938,16 @@ set-cookie-parser@^2.4.8: resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz#131921e50f62ff1a66a461d7d62d7b21d5d15a51" integrity sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ== +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + set-function-name@^2.0.0, set-function-name@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" @@ -7095,7 +7033,7 @@ smartwrap@^2.0.2: smob@^1.0.0: version "1.4.1" - resolved "https://registry.npmjs.org/smob/-/smob-1.4.1.tgz#66270e7df6a7527664816c5b577a23f17ba6f5b5" + resolved "https://registry.yarnpkg.com/smob/-/smob-1.4.1.tgz#66270e7df6a7527664816c5b577a23f17ba6f5b5" integrity sha512-9LK+E7Hv5R9u4g4C3p+jjLstaLe11MDsL21UpYaCNmapvMkYhqCV4A/f/3gyH8QjMyh6l68q9xC85vihY9ahMQ== snake-case@^3.0.4: @@ -7157,9 +7095,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.15" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.15.tgz#142460aabaca062bc7cd4cc87b7d50725ed6a4ba" - integrity sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ== + version "3.0.16" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz#a14f64e0954f6e25cc6587bd4f392522db0d998f" + integrity sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw== sprintf-js@~1.0.2: version "1.0.3" @@ -7345,7 +7283,7 @@ supports-preserve-symlinks-flag@^1.0.0: symbol-tree@^3.2.4: version "3.2.4" - resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== table@^6.0.9: @@ -7365,9 +7303,9 @@ term-size@^2.1.0: integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== terser@^5.17.4: - version "5.21.0" - resolved "https://registry.npmjs.org/terser/-/terser-5.21.0.tgz#d2b27e92b5e56650bc83b6defa00a110f0b124b2" - integrity sha512-WtnFKrxu9kaoXuiZFSGrcAvvBqAdmKx0SFNmVNYdJamMu9yyN3I/QF0FbH4QcqJQ+y1CJnzxGIKH0cSj+FGYRw== + version "5.24.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.24.0.tgz#4ae50302977bca4831ccc7b4fef63a3c04228364" + integrity sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -7424,7 +7362,7 @@ toidentifier@1.0.1: tough-cookie@^4.1.2: version "4.1.3" - resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== dependencies: psl "^1.1.33" @@ -7434,7 +7372,7 @@ tough-cookie@^4.1.2: tr46@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== dependencies: punycode "^2.1.1" @@ -7451,7 +7389,7 @@ trim-newlines@^3.0.0: ts-api-utils@^1.0.1: version "1.0.3" - resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== ts-jest@^29.1.1: @@ -7515,9 +7453,9 @@ tsutils@^3.21.0: tslib "^1.8.1" tty-table@^4.1.5: - version "4.2.1" - resolved "https://registry.yarnpkg.com/tty-table/-/tty-table-4.2.1.tgz#c06cd76c54542acf4e2b4a0e9a5802984b65cba6" - integrity sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g== + version "4.2.3" + resolved "https://registry.yarnpkg.com/tty-table/-/tty-table-4.2.3.tgz#e33eb4007a0a9c976c97c37fa13ba66329a5c515" + integrity sha512-Fs15mu0vGzCrj8fmJNP7Ynxt5J7praPXqFN0leZeZBXJwkMxv9cb2D454k1ltrtUSJbZ4yH4e0CynsHLxmUfFA== dependencies: chalk "^4.1.2" csv "^5.5.3" @@ -7527,47 +7465,47 @@ tty-table@^4.1.5: wcwidth "^1.0.1" yargs "^17.7.1" -turbo-darwin-64@1.10.14: - version "1.10.14" - resolved "https://registry.yarnpkg.com/turbo-darwin-64/-/turbo-darwin-64-1.10.14.tgz#9e8061bc0d706a69bc61d88fbfa7690fa2a897fc" - integrity sha512-I8RtFk1b9UILAExPdG/XRgGQz95nmXPE7OiGb6ytjtNIR5/UZBS/xVX/7HYpCdmfriKdVwBKhalCoV4oDvAGEg== +turbo-darwin-64@1.10.16: + version "1.10.16" + resolved "https://registry.yarnpkg.com/turbo-darwin-64/-/turbo-darwin-64-1.10.16.tgz#5a8717c1372f2a75e8cfe0b4b6455119ce410b19" + integrity sha512-+Jk91FNcp9e9NCLYlvDDlp2HwEDp14F9N42IoW3dmHI5ZkGSXzalbhVcrx3DOox3QfiNUHxzWg4d7CnVNCuuMg== -turbo-darwin-arm64@1.10.14: - version "1.10.14" - resolved "https://registry.yarnpkg.com/turbo-darwin-arm64/-/turbo-darwin-arm64-1.10.14.tgz#2589aeb814257601c979dd40ff8a6cace6c9e4e5" - integrity sha512-KAdUWryJi/XX7OD0alOuOa0aJ5TLyd4DNIYkHPHYcM6/d7YAovYvxRNwmx9iv6Vx6IkzTnLeTiUB8zy69QkG9Q== +turbo-darwin-arm64@1.10.16: + version "1.10.16" + resolved "https://registry.yarnpkg.com/turbo-darwin-arm64/-/turbo-darwin-arm64-1.10.16.tgz#19b5b63acf7ee0fce7e1fe5850e093c2ac9c73f5" + integrity sha512-jqGpFZipIivkRp/i+jnL8npX0VssE6IAVNKtu573LXtssZdV/S+fRGYA16tI46xJGxSAivrZ/IcgZrV6Jk80bw== -turbo-linux-64@1.10.14: - version "1.10.14" - resolved "https://registry.yarnpkg.com/turbo-linux-64/-/turbo-linux-64-1.10.14.tgz#c01d26f62f6c47701026dea083054918fe8caf47" - integrity sha512-BOBzoREC2u4Vgpap/WDxM6wETVqVMRcM8OZw4hWzqCj2bqbQ6L0wxs1LCLWVrghQf93JBQtIGAdFFLyCSBXjWQ== +turbo-linux-64@1.10.16: + version "1.10.16" + resolved "https://registry.yarnpkg.com/turbo-linux-64/-/turbo-linux-64-1.10.16.tgz#ee97c0011553a96bd7995e7bcc6e65aab8996798" + integrity sha512-PpqEZHwLoizQ6sTUvmImcRmACyRk9EWLXGlqceogPZsJ1jTRK3sfcF9fC2W56zkSIzuLEP07k5kl+ZxJd8JMcg== -turbo-linux-arm64@1.10.14: - version "1.10.14" - resolved "https://registry.yarnpkg.com/turbo-linux-arm64/-/turbo-linux-arm64-1.10.14.tgz#7cbcb091995a09134342a57e0672501115b46df2" - integrity sha512-D8T6XxoTdN5D4V5qE2VZG+/lbZX/89BkAEHzXcsSUTRjrwfMepT3d2z8aT6hxv4yu8EDdooZq/2Bn/vjMI32xw== +turbo-linux-arm64@1.10.16: + version "1.10.16" + resolved "https://registry.yarnpkg.com/turbo-linux-arm64/-/turbo-linux-arm64-1.10.16.tgz#2723cc2a846d89df7484002161b25673f4f04009" + integrity sha512-TMjFYz8to1QE0fKVXCIvG/4giyfnmqcQIwjdNfJvKjBxn22PpbjeuFuQ5kNXshUTRaTJihFbuuCcb5OYFNx4uw== -turbo-windows-64@1.10.14: - version "1.10.14" - resolved "https://registry.yarnpkg.com/turbo-windows-64/-/turbo-windows-64-1.10.14.tgz#935d2d1da7fb1f9a941fb3aa122fd9a70b61c416" - integrity sha512-zKNS3c1w4i6432N0cexZ20r/aIhV62g69opUn82FLVs/zk3Ie0GVkSB6h0rqIvMalCp7enIR87LkPSDGz9K4UA== +turbo-windows-64@1.10.16: + version "1.10.16" + resolved "https://registry.yarnpkg.com/turbo-windows-64/-/turbo-windows-64-1.10.16.tgz#87c46a78502a86dec73634b255a6b3471285969b" + integrity sha512-+jsf68krs0N66FfC4/zZvioUap/Tq3sPFumnMV+EBo8jFdqs4yehd6+MxIwYTjSQLIcpH8KoNMB0gQYhJRLZzw== -turbo-windows-arm64@1.10.14: - version "1.10.14" - resolved "https://registry.yarnpkg.com/turbo-windows-arm64/-/turbo-windows-arm64-1.10.14.tgz#cb3a55d30a75aa76258991e929e92f207cac872f" - integrity sha512-rkBwrTPTxNSOUF7of8eVvvM+BkfkhA2OvpHM94if8tVsU+khrjglilp8MTVPHlyS9byfemPAmFN90oRIPB05BA== +turbo-windows-arm64@1.10.16: + version "1.10.16" + resolved "https://registry.yarnpkg.com/turbo-windows-arm64/-/turbo-windows-arm64-1.10.16.tgz#a6208c2bc27e5e6ef0aa4a3e64389c4285c3f274" + integrity sha512-sKm3hcMM1bl0B3PLG4ifidicOGfoJmOEacM5JtgBkYM48ncMHjkHfFY7HrJHZHUnXM4l05RQTpLFoOl/uIo2HQ== turbo@^1.9.3: - version "1.10.14" - resolved "https://registry.yarnpkg.com/turbo/-/turbo-1.10.14.tgz#31f3bb3017218191e0de64728da199678a50aa7d" - integrity sha512-hr9wDNYcsee+vLkCDIm8qTtwhJ6+UAMJc3nIY6+PNgUTtXcQgHxCq8BGoL7gbABvNWv76CNbK5qL4Lp9G3ZYRA== + version "1.10.16" + resolved "https://registry.yarnpkg.com/turbo/-/turbo-1.10.16.tgz#51601a65a3aa56d1b9d9cb9a2ab3a5a2eab41e19" + integrity sha512-2CEaK4FIuSZiP83iFa9GqMTQhroW2QryckVqUydmg4tx78baftTOS0O+oDAhvo9r9Nit4xUEtC1RAHoqs6ZEtg== optionalDependencies: - turbo-darwin-64 "1.10.14" - turbo-darwin-arm64 "1.10.14" - turbo-linux-64 "1.10.14" - turbo-linux-arm64 "1.10.14" - turbo-windows-64 "1.10.14" - turbo-windows-arm64 "1.10.14" + turbo-darwin-64 "1.10.16" + turbo-darwin-arm64 "1.10.16" + turbo-linux-64 "1.10.16" + turbo-linux-arm64 "1.10.16" + turbo-windows-64 "1.10.16" + turbo-windows-arm64 "1.10.16" type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" @@ -7660,7 +7598,7 @@ typescript@^4.6.3: typescript@^5.2.0: version "5.2.2" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== unbox-primitive@^1.0.2: @@ -7673,6 +7611,11 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + undici@5.20.0: version "5.20.0" resolved "https://registry.yarnpkg.com/undici/-/undici-5.20.0.tgz#6327462f5ce1d3646bcdac99da7317f455bcc263" @@ -7682,12 +7625,12 @@ undici@5.20.0: unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== unicode-match-property-ecmascript@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== dependencies: unicode-canonical-property-names-ecmascript "^2.0.0" @@ -7695,12 +7638,12 @@ unicode-match-property-ecmascript@^2.0.0: unicode-match-property-value-ecmascript@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== unicode-property-aliases-ecmascript@^2.0.0: version "2.1.0" - resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== universalify@^0.1.0: @@ -7710,7 +7653,7 @@ universalify@^0.1.0: universalify@^0.2.0: version "0.2.0" - resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== unpipe@1.0.0, unpipe@~1.0.0: @@ -7749,7 +7692,7 @@ uri-js@^4.2.2: url-parse@^1.5.3: version "1.5.10" - resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== dependencies: querystringify "^2.1.1" @@ -7781,13 +7724,13 @@ v8-compile-cache@^2.0.3: integrity sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw== v8-to-istanbul@^9.0.1: - version "9.1.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" - integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA== + version "9.1.3" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz#ea456604101cd18005ac2cae3cdd1aa058a6306b" + integrity sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg== dependencies: "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" + convert-source-map "^2.0.0" validate-npm-package-license@^3.0.1: version "3.0.4" @@ -7811,7 +7754,7 @@ vary@~1.1.2: w3c-xmlserializer@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073" integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw== dependencies: xml-name-validator "^4.0.0" @@ -7832,7 +7775,7 @@ wcwidth@^1.0.1: web-streams-polyfill@^3.2.1: version "3.2.1" - resolved "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== webidl-conversions@^3.0.0: @@ -7842,24 +7785,24 @@ webidl-conversions@^3.0.0: webidl-conversions@^7.0.0: version "7.0.0" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== whatwg-encoding@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== dependencies: iconv-lite "0.6.3" whatwg-mimetype@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== whatwg-url@^11.0.0: version "11.0.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== dependencies: tr46 "^3.0.0" @@ -7925,13 +7868,13 @@ which-pm@2.0.0: load-yaml-file "^0.2.0" path-exists "^4.0.0" -which-typed-array@^1.1.11, which-typed-array@^1.1.9: - version "1.1.11" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" - integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== +which-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.9: + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== dependencies: available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.4" for-each "^0.3.3" gopd "^1.0.1" has-tostringtag "^1.0.0" @@ -7988,12 +7931,12 @@ ws@^8.11.0, ws@^8.2.2: xml-name-validator@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== xmlchars@^2.2.0: version "2.2.0" - resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== y18n@^4.0.0: From 45e2162f7290609fb204d31f6ab29a6d068cdca8 Mon Sep 17 00:00:00 2001 From: Scott Dixon Date: Fri, 10 Nov 2023 09:39:44 +1000 Subject: [PATCH 16/18] UMD/CJS clean up --- packages/admin-api-client/package.json | 2 +- packages/admin-api-client/rollup.config.cjs | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/admin-api-client/package.json b/packages/admin-api-client/package.json index 616b2b7d3..3ab567be0 100644 --- a/packages/admin-api-client/package.json +++ b/packages/admin-api-client/package.json @@ -8,7 +8,7 @@ }, "author": "Shopify", "license": "MIT", - "main": "./dist/umd/admin-api-client.min.js", + "main": "./dist/admin-api-client.min.js", "module": "./dist/index.mjs", "types": "./dist/admin-api-client.d.ts", "exports": { diff --git a/packages/admin-api-client/rollup.config.cjs b/packages/admin-api-client/rollup.config.cjs index 95a8d4ffe..e9cf0405f 100644 --- a/packages/admin-api-client/rollup.config.cjs +++ b/packages/admin-api-client/rollup.config.cjs @@ -25,9 +25,6 @@ export function getPlugins({ tsconfig, minify } = {}) { ]; } -const packageName = pkg.name.substring(1); -const repositoryName = pkg.repository.url.split(":")[1].split(".")[0]; - const config = [ { input: mainSrcInput, From bb00656031e60f137b27e8fe3bb7cae5d39beb01 Mon Sep 17 00:00:00 2001 From: Scott Dixon Date: Fri, 10 Nov 2023 10:19:41 +1000 Subject: [PATCH 17/18] customHeaders -> headers --- packages/admin-api-client/README.md | 6 +++--- .../admin-api-client/src/tests/admin-api-client.test.ts | 9 ++++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/admin-api-client/README.md b/packages/admin-api-client/README.md index 6236a550e..167ce5567 100644 --- a/packages/admin-api-client/README.md +++ b/packages/admin-api-client/README.md @@ -59,7 +59,7 @@ const {data, errors, extensions} = await client.request(operation, { | Property | Type | Description | | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | config | [AdminApiClientConfig](#adminapiclientconfig-properties) | Configuration for the client | -| getHeaders | `(customHeaders?: {[key: string]: string}) => {[key: string]: string` | Returns Admin API specific headers needed to interact with the API. If `customHeaders` is provided, the custom headers will be included in the returned headers object. | +| getHeaders | `(headers?: {[key: string]: string}) => {[key: string]: string` | Returns Admin API specific headers needed to interact with the API. If `headers` is provided, the custom headers will be included in the returned headers object. | | getApiUrl | `(apiVersion?: string) => string` | Returns the shop specific API url. If an API version is provided, the returned URL will include the provided version, else the URL will include the API version set at client initialization. | | fetch | `(operation: string, options?:`[AdminAPIClientRequestOptions](#adminapiclientrequestoptions-properties)`) => Promise` | Fetches data from Admin API using the provided GQL `operation` string and [AdminAPIClientRequestOptions](#adminapiclientrequestoptions-properties) object and returns the network response. | | request | `(operation: string, options?:`[AdminAPIClientRequestOptions](#adminapiclientrequestoptions-properties)`) => Promise<`[ClientResponse\](#clientresponsetdata)`>` | Requests data from Admin API using the provided GQL `operation` string and [AdminAPIClientRequestOptions](#adminapiclientrequestoptions-properties) object and returns a normalized response object. | @@ -81,7 +81,7 @@ const {data, errors, extensions} = await client.request(operation, { | -------------- | ------------------------ | ---------------------------------------------------- | | variables? | `Record` | Variable values needed in the graphQL operation | | apiVersion? | `string` | The Admin API version to use in the API request | -| customHeaders? | `{[key: string]: string}`| Customized headers to be included in the API request | +| headers? | `{[key: string]: string}`| Customized headers to be included in the API request | | retries? | `number` | Alternative number of retries for the request. Retries only occur for requests that were abandoned or if the server responds with a `Too Many Request (429)` or `Service Unavailable (503)` response. Minimum value is `0` and maximum value is `3`. | ## `ClientResponse` @@ -232,7 +232,7 @@ const {data, errors, extensions} = await client.request(productQuery, { variables: { id: 'gid://shopify/Product/7608002183224', }, - customHeaders: { + headers: { 'X-GraphQL-Cost-Include-Fields': true, }, }); diff --git a/packages/admin-api-client/src/tests/admin-api-client.test.ts b/packages/admin-api-client/src/tests/admin-api-client.test.ts index 76efcd458..ec329cc88 100644 --- a/packages/admin-api-client/src/tests/admin-api-client.test.ts +++ b/packages/admin-api-client/src/tests/admin-api-client.test.ts @@ -329,11 +329,14 @@ describe("Admin API Client", () => { }); it("returns a headers object that contains both the client default headers and the provided custom headers", () => { - const customHeaders = { + const headers = { "X-GraphQL-Cost-Include-Fields": true, }; - const headers = client.getHeaders(customHeaders); - expect(headers).toEqual({ ...customHeaders, ...client.config.headers }); + const updatedHeaders = client.getHeaders(headers); + expect(updatedHeaders).toEqual({ + ...headers, + ...client.config.headers, + }); }); }); From 3e97fa24d1f52a8f94319f08d831fca15298112c Mon Sep 17 00:00:00 2001 From: Scott Dixon Date: Fri, 10 Nov 2023 10:51:01 +1000 Subject: [PATCH 18/18] README tweak --- packages/admin-api-client/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/admin-api-client/README.md b/packages/admin-api-client/README.md index 167ce5567..074c7cfce 100644 --- a/packages/admin-api-client/README.md +++ b/packages/admin-api-client/README.md @@ -59,7 +59,7 @@ const {data, errors, extensions} = await client.request(operation, { | Property | Type | Description | | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | config | [AdminApiClientConfig](#adminapiclientconfig-properties) | Configuration for the client | -| getHeaders | `(headers?: {[key: string]: string}) => {[key: string]: string` | Returns Admin API specific headers needed to interact with the API. If `headers` is provided, the custom headers will be included in the returned headers object. | +| getHeaders | `(headers?: {[key: string]: string}) => {[key: string]: string` | Returns Admin API specific headers needed to interact with the API. If additional `headers` are provided, the custom headers will be included in the returned headers object. | | getApiUrl | `(apiVersion?: string) => string` | Returns the shop specific API url. If an API version is provided, the returned URL will include the provided version, else the URL will include the API version set at client initialization. | | fetch | `(operation: string, options?:`[AdminAPIClientRequestOptions](#adminapiclientrequestoptions-properties)`) => Promise` | Fetches data from Admin API using the provided GQL `operation` string and [AdminAPIClientRequestOptions](#adminapiclientrequestoptions-properties) object and returns the network response. | | request | `(operation: string, options?:`[AdminAPIClientRequestOptions](#adminapiclientrequestoptions-properties)`) => Promise<`[ClientResponse\](#clientresponsetdata)`>` | Requests data from Admin API using the provided GQL `operation` string and [AdminAPIClientRequestOptions](#adminapiclientrequestoptions-properties) object and returns a normalized response object. |