Compare commits

...

3 commits

Author SHA1 Message Date
Lukasz Ostrowski
71fc8d5084 add redactError and implement in apps 2023-06-16 09:22:49 +02:00
Lukasz Ostrowski
689732e2ff Added eslint rule for dangerous logger calls and updates apps 2023-06-16 09:18:22 +02:00
Lukasz Ostrowski
c2d05ebf55 Improve eslint config and install saleor plugin 2023-06-16 09:18:22 +02:00
50 changed files with 372 additions and 300 deletions

View file

@ -0,0 +1,5 @@
---
"@saleor/apps-shared": minor
---
Added "redactError" helper. It should be used when logger.error is called to make safer error logs.

View file

@ -0,0 +1,5 @@
---
"eslint-config-saleor": minor
---
Added eslint-plugin-saleor configuration, that errors dangerous logger statements. This should reduce risk of printing too much in logs

View file

@ -1,4 +0,0 @@
{
"root": true,
"extends": ["saleor"]
}

7
apps/cms/.eslintrc.js Normal file
View file

@ -0,0 +1,7 @@
module.exports = {
root: true,
extends: ["saleor"],
parserOptions: {
tsconfigRootDir: __dirname,
},
};

View file

@ -1,7 +1,9 @@
// This file sets a custom webpack configuration to use your Next.js app
// with Sentry.
// https://nextjs.org/docs/api-reference/next.config.js/introduction
// https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/
/*
* This file sets a custom webpack configuration to use your Next.js app
* with Sentry.
* https://nextjs.org/docs/api-reference/next.config.js/introduction
* https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/
*/
const { withSentryConfig } = require("@sentry/nextjs");
const isSentryPropertiesInEnvironment =

View file

@ -9,7 +9,7 @@ import {
ProductResponseSuccess,
} from "../types";
import { getCmsIdFromSaleorItem } from "./metadata";
import { createLogger } from "@saleor/apps-shared";
import { createLogger, redactError } from "@saleor/apps-shared";
import { CMSProvider, cmsProviders } from "../providers";
import { ProviderInstanceSchema, providersSchemaSet } from "../config";
@ -75,7 +75,12 @@ const executeCmsClientOperation = async ({
deletedCmsId: cmsId,
};
} catch (error) {
logger.error("Error deleting item", { error });
logger.error(
{
error: redactError(error),
},
"Error deleting item"
);
return {
error: "Error deleting item.",
@ -104,7 +109,9 @@ const executeCmsClientOperation = async ({
},
});
} catch (error) {
logger.error("Error updating item", { error });
logger.error("Error updating item", {
error: redactError(error),
});
return {
error: "Error updating item.",
@ -137,7 +144,9 @@ const executeCmsClientOperation = async ({
};
}
} catch (error) {
logger.error("Error creating item", { error });
logger.error("Error creating item", {
error: redactError(error),
});
return {
error: "Error creating item.",
@ -209,7 +218,12 @@ export const executeCmsClientBatchOperation = async ({
.map((item) => (item as ProductResponseSuccess).data) || [],
};
} catch (error) {
logger.error({ error }, "Error creating batch items");
logger.error(
{
error: redactError(error),
},
"Error creating batch items"
);
return {
error: "Error creating batch items.",
@ -252,7 +266,12 @@ export const executeCmsClientBatchOperation = async ({
deletedCmsIds: CMSIdsToRemove,
};
} catch (error) {
logger.error({ error }, "Error removing batch items");
logger.error(
{
error: redactError(error),
},
"Error removing batch items"
);
return {
error: "Error removing batch items.",

View file

@ -39,7 +39,7 @@ export const createCmsOperations = async ({
getProviderInstancesSettings(settingsManager),
]);
logger.debug({ channelsSettingsParsed, providerInstancesSettingsParsed }, "Fetched settings");
logger.debug("Fetched settings");
const productVariantCmsProviderInstances = productVariantCmsKeys.map((cmsKey) =>
getCmsIdFromSaleorItemKey(cmsKey)

View file

@ -107,7 +107,8 @@ const contentfulOperations: CreateOperations<ContentfulConfig> = (config) => {
const response = await contentfulFetch(endpoint, config, { method: "GET" });
const respBody = await response.json();
logger.debug({ response, body: respBody }, "pingCMS response");
logger.trace("pingCMS success");
return {
ok: response.ok,
};
@ -130,7 +131,8 @@ const contentfulOperations: CreateOperations<ContentfulConfig> = (config) => {
},
});
logger.debug({ response }, "createProduct response");
logger.trace("createProduct success");
const json = await response.json();
return {
@ -150,10 +152,11 @@ const contentfulOperations: CreateOperations<ContentfulConfig> = (config) => {
const getEntryResponse = await contentfulFetch(endpoint, config, { method: "GET" });
logger.debug({ getEntryResponse }, "updateProduct getEntryResponse");
logger.trace("updateProduct success");
const entry = await getEntryResponse.json();
logger.debug({ entry }, "updateProduct entry");
logger.trace("updateProduct entry success");
const response = await contentfulFetch(endpoint, config, {
method: "PUT",
@ -163,7 +166,8 @@ const contentfulOperations: CreateOperations<ContentfulConfig> = (config) => {
},
});
logger.debug({ response }, "updateProduct response");
logger.trace("updateProduct success");
const json = await response.json();
return {
@ -226,42 +230,42 @@ const contentfulOperations: CreateOperations<ContentfulConfig> = (config) => {
ping: async () => {
const response = await pingCMS();
logger.debug({ response }, "ping response");
logger.trace("ping success");
return response;
},
createProduct: async ({ input }) => {
const result = await createProductInCMS(input);
logger.debug({ result }, "createProduct result");
logger.trace("createProduct success");
return transformCreateProductResponse(result);
},
updateProduct: async ({ id, input }) => {
const result = await updateProductInCMS(id, input);
logger.debug({ result }, "updateProduct result");
logger.trace("updateProduct result");
return result;
},
deleteProduct: async ({ id }) => {
const response = await deleteProductInCMS(id);
logger.debug({ response }, "deleteProduct response");
logger.trace("deleteProduct success");
return response;
},
createBatchProducts: async ({ input }) => {
const results = await createBatchProductsInCMS(input);
logger.debug({ results }, "createBatchProducts results");
logger.trace("createBatchProducts success");
return results.map((result) => transformCreateProductResponse(result));
},
deleteBatchProducts: async ({ ids }) => {
const results = await deleteBatchProductsInCMS(ids);
logger.debug({ results }, "deleteBatchProducts results");
logger.trace("deleteBatchProducts success");
},
};
};

View file

@ -112,7 +112,7 @@ const datocmsOperations: CreateOperations<DatocmsConfig> = (config) => {
try {
const item = await createProductInCMS(input);
logger.debug({ item }, "createProduct response");
logger.trace("createProduct success");
return transformResponseItem(item, input);
} catch (error) {
@ -122,24 +122,24 @@ const datocmsOperations: CreateOperations<DatocmsConfig> = (config) => {
updateProduct: async ({ id, input }) => {
const item = await updateProductInCMS(id, input);
logger.debug({ item }, "updateProduct response");
logger.trace("updateProduct success");
},
deleteProduct: async ({ id }) => {
const item = await deleteProductInCMS(id);
logger.debug({ item }, "deleteProduct response");
logger.trace("deleteProduct success");
},
createBatchProducts: async ({ input }) => {
const items = await createBatchProductsInCMS(input);
logger.debug({ items }, "createBatchProducts response");
logger.trace("createBatchProducts success");
return items.map((item) => transformResponseItem(item.id, item.input));
},
deleteBatchProducts: async ({ ids }) => {
const items = await deleteBatchProductsInCMS(ids);
logger.debug({ items }, "deleteBatchProducts response");
logger.trace("deleteBatchProducts success");
},
};
};

View file

@ -88,7 +88,8 @@ export const strapiOperations: CreateStrapiOperations = (config) => {
method: "GET",
});
logger.debug({ response }, "pingCMS response");
logger.debug("pingCMS success");
return { ok: response.ok };
};
@ -99,7 +100,7 @@ export const strapiOperations: CreateStrapiOperations = (config) => {
body: JSON.stringify(body),
});
logger.debug({ response }, "createProduct response");
logger.debug("createProduct success");
return await response.json();
};
@ -135,42 +136,42 @@ export const strapiOperations: CreateStrapiOperations = (config) => {
ping: async () => {
const response = await pingCMS();
logger.debug({ response }, "ping response");
logger.debug("ping response");
return response;
},
createProduct: async ({ input }) => {
const result = await createProductInCMS(input);
logger.debug({ result }, "createProduct result");
logger.debug("createProduct success");
return transformCreateProductResponse(result, input);
},
updateProduct: async ({ id, input }) => {
const response = await updateProductInCMS(id, input);
logger.debug({ response }, "updateProduct response");
logger.debug("updateProduct success");
return response;
},
deleteProduct: async ({ id }) => {
const response = await deleteProductInCMS(id);
logger.debug({ response }, "deleteProduct response");
logger.debug("deleteProduct success");
return response;
},
createBatchProducts: async ({ input }) => {
const results = await createBatchProductsInCMS(input);
logger.debug({ results }, "createBatchProducts results");
logger.debug("createBatchProducts success");
return results.map((result) => transformCreateProductResponse(result.response, result.input));
},
deleteBatchProducts: async ({ ids }) => {
const responses = await deleteBatchProductsInCMS(ids);
logger.debug({ responses }, "deleteBatchProducts responses");
logger.debug("deleteBatchProducts success");
return responses;
},

View file

@ -12,7 +12,12 @@
"VERCEL_URL",
"REST_APL_ENDPOINT",
"REST_APL_TOKEN",
"ALLOWED_DOMAIN_PATTERN"
"ALLOWED_DOMAIN_PATTERN",
"SENTRY_AUTH_TOKEN",
"SENTRY_PROJECT",
"SENTRY_ORG",
"SENTRY_DSN",
"NEXT_PUBLIC_SENTRY_DSN"
]
}
}

View file

@ -1,4 +0,0 @@
{
"root": true,
"extends": ["saleor"]
}

7
apps/crm/.eslintrc.js Normal file
View file

@ -0,0 +1,7 @@
module.exports = {
root: true,
extends: ["saleor"],
parserOptions: {
tsconfigRootDir: __dirname,
},
};

View file

@ -30,7 +30,7 @@ const handler: NextApiHandler = async (req, res) => {
const { access_token } = await tokenResponse.json();
logger.debug({ access_token }, "Received mailchimp access_token");
logger.debug("Received mailchimp access_token");
const metadataResponse = await fetch("https://login.mailchimp.com/oauth2/metadata", {
headers: {

View file

@ -1,4 +0,0 @@
{
"root": true,
"extends": ["saleor"]
}

View file

@ -0,0 +1,7 @@
module.exports = {
root: true,
extends: ["saleor"],
parserOptions: {
tsconfigRootDir: __dirname,
},
};

View file

@ -1,4 +0,0 @@
{
"root": true,
"extends": ["saleor"]
}

View file

@ -0,0 +1,7 @@
module.exports = {
root: true,
extends: ["saleor"],
parserOptions: {
tsconfigRootDir: __dirname,
},
};

View file

@ -1,4 +0,0 @@
{
"root": true,
"extends": ["saleor"]
}

View file

@ -0,0 +1,7 @@
module.exports = {
root: true,
extends: ["saleor"],
parserOptions: {
tsconfigRootDir: __dirname,
},
};

View file

@ -1,4 +0,0 @@
{
"root": true,
"extends": ["saleor"]
}

View file

@ -0,0 +1,7 @@
module.exports = {
root: true,
extends: ["saleor"],
parserOptions: {
tsconfigRootDir: __dirname,
},
};

View file

@ -1,4 +0,0 @@
{
"root": true,
"extends": ["saleor"]
}

View file

@ -0,0 +1,7 @@
module.exports = {
root: true,
extends: ["saleor"],
parserOptions: {
tsconfigRootDir: __dirname,
},
};

View file

@ -1,4 +0,0 @@
{
"root": true,
"extends": ["saleor"]
}

View file

@ -0,0 +1,7 @@
module.exports = {
root: true,
extends: ["saleor"],
parserOptions: {
tsconfigRootDir: __dirname,
},
};

View file

@ -41,7 +41,7 @@ export const categoryMappingRouter = router({
logger.debug(
{
input,
...input,
},
"Updated category mapping"
);

View file

@ -1,4 +0,0 @@
{
"root": true,
"extends": ["saleor"]
}

7
apps/search/.eslintrc.js Normal file
View file

@ -0,0 +1,7 @@
module.exports = {
root: true,
extends: ["saleor"],
parserOptions: {
tsconfigRootDir: __dirname,
},
};

View file

@ -1,4 +0,0 @@
{
"root": true,
"extends": ["saleor"]
}

7
apps/slack/.eslintrc.js Normal file
View file

@ -0,0 +1,7 @@
module.exports = {
root: true,
extends: ["saleor"],
parserOptions: {
tsconfigRootDir: __dirname,
},
};

View file

@ -1,4 +0,0 @@
{
"root": true,
"extends": ["saleor"]
}

7
apps/taxes/.eslintrc.js Normal file
View file

@ -0,0 +1,7 @@
module.exports = {
root: true,
extends: ["saleor"],
parserOptions: {
tsconfigRootDir: __dirname,
},
};

View file

@ -88,7 +88,11 @@ export function getActiveConnection(
if (!providerConnection) {
logger.debug(
{ providerConnections, channelConfig },
{
providerConnectionsId: providerConnections.map((c) => c.id),
channelConfigId: channelConfig.config.providerConnectionId,
channelConfigSlug: channelConfig.config.slug,
},
"In the providers array, there is no item with an id that matches the channel config providerConnectionId."
);
throw new Error(`Channel config providerConnectionId does not match any providers`);

View file

@ -85,7 +85,7 @@ export const taxjarConnectionRouter = router({
location: "taxjarConnectionRouter.patch",
});
logger.debug({ input }, "Route patch called");
logger.debug("Route patch called");
const result = await ctx.connectionService.update(input.id, input.value);

View file

@ -56,10 +56,10 @@ export default checkoutCalculateTaxesSyncWebhook.createHandler(async (req, res,
const channelSlug = payload.taxBase.channel.slug;
const taxProvider = getActiveConnection(channelSlug, appMetadata);
logger.info({ taxProvider }, "Will calculate taxes using the tax provider:");
logger.info("Will calculate taxes using the tax provider:");
const calculatedTaxes = await taxProvider.calculateTaxes(payload.taxBase);
logger.info({ calculatedTaxes }, "Taxes calculated");
logger.info("Taxes calculated");
return webhookResponse.success(ctx.buildResponse(calculatedTaxes));
} catch (error) {
return webhookResponse.error(error);

View file

@ -56,10 +56,10 @@ export default orderCalculateTaxesSyncWebhook.createHandler(async (req, res, ctx
const channelSlug = payload.taxBase.channel.slug;
const taxProvider = getActiveConnection(channelSlug, appMetadata);
logger.info({ taxProvider }, "Will calculate taxes using the tax provider:");
logger.info("Will calculate taxes");
const calculatedTaxes = await taxProvider.calculateTaxes(payload.taxBase);
logger.info({ calculatedTaxes }, "Taxes calculated");
logger.info("Taxes calculated");
return webhookResponse.success(ctx.buildResponse(calculatedTaxes));
} catch (error) {
return webhookResponse.error(error);

View file

@ -14,6 +14,7 @@ import { createClient } from "../../../lib/graphql";
import { Client } from "urql";
import { WebhookResponse } from "../../../modules/app/webhook-response";
import { PROVIDER_ORDER_ID_KEY } from "../../../modules/avatax/order-fulfilled/avatax-order-fulfilled-payload-transformer";
import { redactError } from "@saleor/apps-shared";
export const config = {
api: {
@ -69,14 +70,14 @@ export default orderCreatedAsyncWebhook.createHandler(async (req, res, ctx) => {
const { saleorApiUrl, token } = authData;
const webhookResponse = new WebhookResponse(res);
logger.info({ payload }, "Handler called with payload");
logger.info({ orderId: payload?.order?.id }, "Handler called with order ID");
try {
const appMetadata = payload.recipient?.privateMetadata ?? [];
const channelSlug = payload.order?.channel.slug;
const taxProvider = getActiveConnection(channelSlug, appMetadata);
logger.info({ taxProvider }, "Fetched taxProvider");
logger.info("Fetched taxProvider");
// todo: figure out what fields are needed and add validation
if (!payload.order) {
@ -89,7 +90,7 @@ export default orderCreatedAsyncWebhook.createHandler(async (req, res, ctx) => {
const createdOrder = await taxProvider.createOrder(payload.order);
logger.info({ createdOrder }, "Order created");
logger.info({ createdOrderID: createdOrder.id }, "Order created");
const client = createClient(saleorApiUrl, async () => Promise.resolve({ token }));
await updateOrderMetadataWithExternalId(client, payload.order.id, createdOrder.id);
@ -97,7 +98,9 @@ export default orderCreatedAsyncWebhook.createHandler(async (req, res, ctx) => {
return webhookResponse.success();
} catch (error) {
logger.error({ error });
logger.error({
error: redactError(error),
});
return webhookResponse.error(new Error("Error while creating order in tax provider"));
}
});

View file

@ -27,18 +27,18 @@ export const orderFulfilledAsyncWebhook = new SaleorAsyncWebhook<OrderFulfilledP
});
export default orderFulfilledAsyncWebhook.createHandler(async (req, res, ctx) => {
const logger = createLogger({ event: ctx.event });
const logger = createLogger({ event: ctx.event, orderId: ctx.payload.order?.id });
const { payload } = ctx;
const webhookResponse = new WebhookResponse(res);
logger.info({ payload }, "Handler called with payload");
logger.info("Handler called");
try {
const appMetadata = payload.recipient?.privateMetadata ?? [];
const channelSlug = payload.order?.channel.slug;
const taxProvider = getActiveConnection(channelSlug, appMetadata);
logger.info({ taxProvider }, "Fetched taxProvider");
logger.info("Fetched taxProvider");
// todo: figure out what fields are needed and add validation
if (!payload.order) {
@ -46,7 +46,7 @@ export default orderFulfilledAsyncWebhook.createHandler(async (req, res, ctx) =>
}
const fulfilledOrder = await taxProvider.fulfillOrder(payload.order);
logger.info({ fulfilledOrder }, "Order fulfilled");
logger.info("Order fulfilled");
return webhookResponse.success();
} catch (error) {

View file

@ -1,5 +1,5 @@
module.exports = {
extends: ["next", "turbo", "prettier"],
extends: ["next", "turbo", "prettier", "plugin:@saleor/saleor-app/recommended"],
rules: {
"@next/next/no-html-link-for-pages": "off",
"react/jsx-key": "off",
@ -11,6 +11,7 @@ module.exports = {
babelOptions: {
presets: [require.resolve("next/babel")],
},
project: "tsconfig.json",
},
overrides: [
{

View file

@ -2,6 +2,7 @@
"name": "eslint-config-saleor",
"version": "0.4.1",
"devDependencies": {
"@saleor/eslint-plugin-saleor-app": "0.1.2",
"eslint": "8.42.0",
"eslint-config-next": "13.3.4",
"eslint-config-prettier": "8.8.0",

View file

@ -1,15 +0,0 @@
{
"root": true,
"extends": ["saleor"],
"overrides": [
{
"files": ["*stories.tsx"],
"rules": {
// Stories require default export for storybook
"import/no-default-export": "off",
// Story wrapper is an exception to the rule
"react-hooks/rules-of-hooks": "off"
}
}
]
}

View file

@ -0,0 +1,18 @@
module.exports = {
root: true,
extends: ["saleor"],
parserOptions: {
tsconfigRootDir: __dirname,
},
overrides: [
{
files: ["*stories.tsx"],
rules: {
// Stories require default export for storybook
"import/no-default-export": "off",
// Story wrapper is an exception to the rule
"react-hooks/rules-of-hooks": "off",
},
},
],
};

View file

@ -1,4 +0,0 @@
{
"root": true,
"extends": ["saleor"]
}

View file

@ -0,0 +1,7 @@
module.exports = {
root: true,
extends: ["saleor"],
parserOptions: {
tsconfigRootDir: __dirname,
},
};

View file

@ -4,3 +4,4 @@ export * from "./src/no-ssr-wrapper";
export * from "./src/use-dashboard-notification";
export * from "./src/logger";
export * from "./src/saleor-version-compatibility-validator";
export * from "./src/redact-error";

View file

@ -0,0 +1,14 @@
export const redactError = (err: unknown) => {
if (err instanceof Error) {
const { message, stack } = err;
return {
message,
stack,
};
} else {
return {
message: "Unknown error - redacted",
};
}
};

View file

@ -1,4 +0,0 @@
{
"root": true,
"extends": ["saleor"]
}

7
packages/ui/.eslintrc.js Normal file
View file

@ -0,0 +1,7 @@
module.exports = {
root: true,
extends: ["saleor"],
parserOptions: {
tsconfigRootDir: __dirname,
},
};

View file

@ -1584,6 +1584,9 @@ importers:
packages/eslint-config-saleor:
devDependencies:
'@saleor/eslint-plugin-saleor-app':
specifier: 0.1.2
version: 0.1.2(eslint@8.42.0)
eslint:
specifier: 8.42.0
version: 8.42.0
@ -2894,7 +2897,8 @@ packages:
resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/highlight': 7.18.6
'@babel/highlight': 7.22.5
dev: true
/@babel/code-frame@7.22.5:
resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==}
@ -3202,7 +3206,7 @@ packages:
'@babel/helper-module-imports': 7.21.4
'@babel/helper-simple-access': 7.21.5
'@babel/helper-split-export-declaration': 7.18.6
'@babel/helper-validator-identifier': 7.19.1
'@babel/helper-validator-identifier': 7.22.5
'@babel/template': 7.21.9
'@babel/traverse': 7.22.4
'@babel/types': 7.22.4
@ -3218,7 +3222,7 @@ packages:
'@babel/helper-module-imports': 7.21.4
'@babel/helper-simple-access': 7.21.5
'@babel/helper-split-export-declaration': 7.18.6
'@babel/helper-validator-identifier': 7.19.1
'@babel/helper-validator-identifier': 7.22.5
'@babel/template': 7.21.9
'@babel/traverse': 7.22.4
'@babel/types': 7.22.4
@ -3319,10 +3323,6 @@ packages:
resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==}
engines: {node: '>=6.9.0'}
/@babel/helper-validator-identifier@7.19.1:
resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==}
engines: {node: '>=6.9.0'}
/@babel/helper-validator-identifier@7.22.5:
resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==}
engines: {node: '>=6.9.0'}
@ -3378,14 +3378,6 @@ packages:
transitivePeerDependencies:
- supports-color
/@babel/highlight@7.18.6:
resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/helper-validator-identifier': 7.19.1
chalk: 2.4.2
js-tokens: 4.0.0
/@babel/highlight@7.22.5:
resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==}
engines: {node: '>=6.9.0'}
@ -4688,7 +4680,7 @@ packages:
resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/code-frame': 7.21.4
'@babel/code-frame': 7.22.5
'@babel/parser': 7.22.4
'@babel/types': 7.22.4
dev: true
@ -4697,7 +4689,7 @@ packages:
resolution: {integrity: sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/code-frame': 7.21.4
'@babel/code-frame': 7.22.5
'@babel/parser': 7.22.4
'@babel/types': 7.22.4
@ -4713,7 +4705,7 @@ packages:
resolution: {integrity: sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/code-frame': 7.21.4
'@babel/code-frame': 7.22.5
'@babel/generator': 7.22.3
'@babel/helper-environment-visitor': 7.22.1
'@babel/helper-function-name': 7.21.0
@ -4731,7 +4723,7 @@ packages:
resolution: {integrity: sha512-Tn1pDsjIcI+JcLKq1AVlZEr4226gpuAQTsLMorsYg9tuS/kG7nuwwJ4AB8jfQuEgb/COBwR/DqJxmoiYFu5/rQ==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/code-frame': 7.21.4
'@babel/code-frame': 7.22.5
'@babel/generator': 7.22.3
'@babel/helper-environment-visitor': 7.22.1
'@babel/helper-function-name': 7.21.0
@ -4766,7 +4758,7 @@ packages:
engines: {node: '>=6.9.0'}
dependencies:
'@babel/helper-string-parser': 7.21.5
'@babel/helper-validator-identifier': 7.19.1
'@babel/helper-validator-identifier': 7.22.5
to-fast-properties: 2.0.0
dev: true
@ -4775,7 +4767,7 @@ packages:
engines: {node: '>=6.9.0'}
dependencies:
'@babel/helper-string-parser': 7.21.5
'@babel/helper-validator-identifier': 7.19.1
'@babel/helper-validator-identifier': 7.22.5
to-fast-properties: 2.0.0
/@babel/types@7.22.5:
@ -6373,7 +6365,7 @@ packages:
'@jest/schemas': 29.4.3
'@types/istanbul-lib-coverage': 2.0.4
'@types/istanbul-reports': 3.0.1
'@types/node': 20.3.1
'@types/node': 18.15.3
'@types/yargs': 17.0.24
chalk: 4.1.2
dev: true
@ -7395,6 +7387,19 @@ packages:
transitivePeerDependencies:
- supports-color
/@saleor/eslint-plugin-saleor-app@0.1.2(eslint@8.42.0):
resolution: {integrity: sha512-xbnUztIM1cwHh3Z0bLolg62IsPDJ13ciYoR1Ha3Goqi/0KnyPY054y/4FCLNvApreKdwu674y0Eh92sIbDD7Zg==}
engines: {node: '>=16 <19', pnpm: '>=8'}
dependencies:
'@changesets/cli': 2.26.1
'@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@5.1.3)
tsutils: 3.21.0(typescript@5.1.3)
typescript: 5.1.3
transitivePeerDependencies:
- eslint
- supports-color
dev: true
/@saleor/macaw-ui@0.7.2(@material-ui/core@4.12.4)(@material-ui/icons@4.11.3)(@material-ui/lab@4.0.0-alpha.61)(@types/react@18.2.5)(react-dom@18.2.0)(react-helmet@6.1.0)(react@18.2.0):
resolution: {integrity: sha512-Fli7fhTWuHu7q2CzxwTUpB4x9HYaxHSAzCLZLA23VY1ieIWbCxbsXadMiMGWp/nuYitswMr6JXMm+1SDe9K8LQ==}
engines: {node: '>=16 <19'}
@ -8800,7 +8805,7 @@ packages:
dependencies:
'@storybook/node-logger': 7.0.12
'@storybook/types': 7.0.12
'@types/node': 16.18.32
'@types/node': 16.18.36
'@types/pretty-hrtime': 1.0.1
chalk: 4.1.2
esbuild: 0.17.17
@ -9258,7 +9263,7 @@ packages:
engines: {node: '>=12'}
dependencies:
'@babel/code-frame': 7.21.4
'@babel/runtime': 7.20.13
'@babel/runtime': 7.22.5
'@types/aria-query': 5.0.1
aria-query: 5.1.3
chalk: 4.1.2
@ -9502,7 +9507,7 @@ packages:
resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==}
dependencies:
'@types/connect': 3.4.35
'@types/node': 20.3.1
'@types/node': 18.15.3
dev: true
/@types/cacheable-request@6.0.3:
@ -9510,7 +9515,7 @@ packages:
dependencies:
'@types/http-cache-semantics': 4.0.1
'@types/keyv': 3.1.4
'@types/node': 20.3.1
'@types/node': 18.15.3
'@types/responselike': 1.0.0
dev: false
@ -9525,7 +9530,7 @@ packages:
/@types/connect@3.4.35:
resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==}
dependencies:
'@types/node': 20.3.1
'@types/node': 18.15.3
dev: true
/@types/debug@4.1.7:
@ -9578,7 +9583,7 @@ packages:
/@types/express-serve-static-core@4.17.35:
resolution: {integrity: sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==}
dependencies:
'@types/node': 20.3.1
'@types/node': 18.15.3
'@types/qs': 6.9.7
'@types/range-parser': 1.2.4
'@types/send': 0.17.1
@ -9601,7 +9606,7 @@ packages:
resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==}
dependencies:
'@types/minimatch': 5.1.2
'@types/node': 20.3.1
'@types/node': 18.15.3
dev: true
/@types/glob@8.0.1:
@ -9614,7 +9619,7 @@ packages:
/@types/graceful-fs@4.1.6:
resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==}
dependencies:
'@types/node': 20.3.1
'@types/node': 18.15.3
dev: true
/@types/hast@2.3.4:
@ -9675,13 +9680,13 @@ packages:
/@types/jsonwebtoken@9.0.1:
resolution: {integrity: sha512-c5ltxazpWabia/4UzhIoaDcIza4KViOQhdbjRlfcIGVnsE3c3brkz9Z+F/EeJIECOQP7W7US2hNE930cWWkPiw==}
dependencies:
'@types/node': 20.3.1
'@types/node': 18.15.3
dev: true
/@types/keyv@3.1.4:
resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
dependencies:
'@types/node': 20.3.1
'@types/node': 18.15.3
dev: false
/@types/lodash@4.14.191:
@ -9741,7 +9746,7 @@ packages:
/@types/node-fetch@2.6.3:
resolution: {integrity: sha512-ETTL1mOEdq/sxUtgtOhKjyB2Irra4cjxksvcMUR5Zr4n+PxVhsCD9WS46oPbHL3et9Zde7CNRr+WUNlcHvsX+w==}
dependencies:
'@types/node': 20.3.1
'@types/node': 18.15.3
form-data: 3.0.1
/@types/node@12.20.55:
@ -9762,9 +9767,6 @@ packages:
/@types/node@18.15.3:
resolution: {integrity: sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==}
/@types/node@20.3.1:
resolution: {integrity: sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==}
/@types/nodemailer@6.4.7:
resolution: {integrity: sha512-f5qCBGAn/f0qtRcd4SEn88c8Fp3Swct1731X4ryPKqS61/A3LmmzN8zaEz7hneJvpjFbUUgY7lru/B/7ODTazg==}
dependencies:
@ -9823,7 +9825,7 @@ packages:
/@types/responselike@1.0.0:
resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==}
dependencies:
'@types/node': 20.3.1
'@types/node': 18.15.3
dev: false
/@types/rimraf@3.0.2:
@ -9847,14 +9849,14 @@ packages:
resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==}
dependencies:
'@types/mime': 1.3.2
'@types/node': 20.3.1
'@types/node': 18.15.3
dev: true
/@types/serve-static@1.15.1:
resolution: {integrity: sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==}
dependencies:
'@types/mime': 3.0.1
'@types/node': 20.3.1
'@types/node': 18.15.3
dev: true
/@types/unist@2.0.6:
@ -9867,7 +9869,7 @@ packages:
/@types/ws@8.5.4:
resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==}
dependencies:
'@types/node': 20.3.1
'@types/node': 18.15.3
dev: true
/@types/yargs-parser@21.0.0:
@ -9942,6 +9944,14 @@ packages:
'@typescript-eslint/visitor-keys': 5.51.0
dev: true
/@typescript-eslint/scope-manager@5.59.11:
resolution: {integrity: sha512-dHFOsxoLFtrIcSj5h0QoBT/89hxQONwmn3FOQ0GOQcLOOXm+MIrS8zEAhs4tWl5MraxCY3ZJpaXQQdFMc2Tu+Q==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
'@typescript-eslint/types': 5.59.11
'@typescript-eslint/visitor-keys': 5.59.11
dev: true
/@typescript-eslint/type-utils@5.51.0(eslint@8.42.0)(typescript@5.1.3):
resolution: {integrity: sha512-QHC5KKyfV8sNSyHqfNa0UbTbJ6caB8uhcx2hYcWVvJAZYJRBo5HyyZfzMdRx8nvS+GyMg56fugMzzWnojREuQQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@ -9967,6 +9977,11 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/@typescript-eslint/types@5.59.11:
resolution: {integrity: sha512-epoN6R6tkvBYSc+cllrz+c2sOFWkbisJZWkOE+y3xHtvYaOE6Wk6B8e114McRJwFRjGvYdJwLXQH5c9osME/AA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/@typescript-eslint/typescript-estree@5.51.0(typescript@5.1.3):
resolution: {integrity: sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@ -9988,6 +10003,27 @@ packages:
- supports-color
dev: true
/@typescript-eslint/typescript-estree@5.59.11(typescript@5.1.3):
resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
'@typescript-eslint/types': 5.59.11
'@typescript-eslint/visitor-keys': 5.59.11
debug: 4.3.4
globby: 11.1.0
is-glob: 4.0.3
semver: 7.5.1
tsutils: 3.21.0(typescript@5.1.3)
typescript: 5.1.3
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/utils@5.51.0(eslint@8.42.0)(typescript@5.1.3):
resolution: {integrity: sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@ -10008,6 +10044,26 @@ packages:
- typescript
dev: true
/@typescript-eslint/utils@5.59.11(eslint@8.42.0)(typescript@5.1.3):
resolution: {integrity: sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.42.0)
'@types/json-schema': 7.0.11
'@types/semver': 7.5.0
'@typescript-eslint/scope-manager': 5.59.11
'@typescript-eslint/types': 5.59.11
'@typescript-eslint/typescript-estree': 5.59.11(typescript@5.1.3)
eslint: 8.42.0
eslint-scope: 5.1.1
semver: 7.5.1
transitivePeerDependencies:
- supports-color
- typescript
dev: true
/@typescript-eslint/visitor-keys@5.51.0:
resolution: {integrity: sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@ -10016,6 +10072,14 @@ packages:
eslint-visitor-keys: 3.4.1
dev: true
/@typescript-eslint/visitor-keys@5.59.11:
resolution: {integrity: sha512-KGYniTGG3AMTuKF9QBD7EIrvufkB6O6uX3knP73xbKLMpH+QRPcgnCxjWXSHjMRuOxFLovljqQgQpR0c7GvjoA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
'@typescript-eslint/types': 5.59.11
eslint-visitor-keys: 3.4.1
dev: true
/@urql/core@3.1.1(graphql@16.6.0):
resolution: {integrity: sha512-Mnxtq4I4QeFJsgs7Iytw+HyhiGxISR6qtyk66c9tipozLZ6QVxrCiUPF2HY4BxNIabaxcp+rivadvm8NAnXj4Q==}
peerDependencies:
@ -10768,9 +10832,9 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.2
define-properties: 1.1.4
es-abstract: 1.21.1
get-intrinsic: 1.2.0
define-properties: 1.2.0
es-abstract: 1.21.2
get-intrinsic: 1.2.1
is-string: 1.0.7
dev: true
@ -10792,8 +10856,8 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.2
define-properties: 1.1.4
es-abstract: 1.21.1
define-properties: 1.2.0
es-abstract: 1.21.2
es-shim-unscopables: 1.0.0
dev: true
@ -10801,10 +10865,10 @@ packages:
resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==}
dependencies:
call-bind: 1.0.2
define-properties: 1.1.4
es-abstract: 1.21.1
define-properties: 1.2.0
es-abstract: 1.21.2
es-shim-unscopables: 1.0.0
get-intrinsic: 1.2.0
get-intrinsic: 1.2.1
dev: true
/arrify@1.0.1:
@ -11381,7 +11445,7 @@ packages:
resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
dependencies:
function-bind: 1.1.1
get-intrinsic: 1.2.0
get-intrinsic: 1.2.1
/callsites@3.1.0:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
@ -12322,13 +12386,6 @@ packages:
engines: {node: '>=8'}
dev: true
/define-properties@1.1.4:
resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==}
engines: {node: '>= 0.4'}
dependencies:
has-property-descriptors: 1.0.0
object-keys: 1.1.1
/define-properties@1.2.0:
resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==}
engines: {node: '>= 0.4'}
@ -12659,7 +12716,7 @@ packages:
resolution: {integrity: sha512-+DCows0XNwLDcUhbFJPdlQEVnT2zXlCv7hPxemTz86/O+B/hCQ+mb7ydkPKiflpVraqLPCAfu7lDy+hBXueojw==}
engines: {node: '>=10.13.0'}
dependencies:
graceful-fs: 4.2.10
graceful-fs: 4.2.11
tapable: 2.2.1
dev: true
@ -12694,45 +12751,6 @@ packages:
stackframe: 1.3.4
dev: false
/es-abstract@1.21.1:
resolution: {integrity: sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==}
engines: {node: '>= 0.4'}
dependencies:
available-typed-arrays: 1.0.5
call-bind: 1.0.2
es-set-tostringtag: 2.0.1
es-to-primitive: 1.2.1
function-bind: 1.1.1
function.prototype.name: 1.1.5
get-intrinsic: 1.2.0
get-symbol-description: 1.0.0
globalthis: 1.0.3
gopd: 1.0.1
has: 1.0.3
has-property-descriptors: 1.0.0
has-proto: 1.0.1
has-symbols: 1.0.3
internal-slot: 1.0.4
is-array-buffer: 3.0.1
is-callable: 1.2.7
is-negative-zero: 2.0.2
is-regex: 1.1.4
is-shared-array-buffer: 1.0.2
is-string: 1.0.7
is-typed-array: 1.1.10
is-weakref: 1.0.2
object-inspect: 1.12.3
object-keys: 1.1.1
object.assign: 4.1.4
regexp.prototype.flags: 1.4.3
safe-regex-test: 1.0.0
string.prototype.trimend: 1.0.6
string.prototype.trimstart: 1.0.6
typed-array-length: 1.0.4
unbox-primitive: 1.0.2
which-typed-array: 1.1.9
dev: true
/es-abstract@1.21.2:
resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==}
engines: {node: '>= 0.4'}
@ -12972,8 +12990,8 @@ packages:
resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==}
dependencies:
debug: 3.2.7
is-core-module: 2.11.0
resolve: 1.22.1
is-core-module: 2.12.1
resolve: 1.22.2
transitivePeerDependencies:
- supports-color
dev: true
@ -12991,7 +13009,7 @@ packages:
eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.51.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.42.0)
get-tsconfig: 4.4.0
globby: 13.1.3
is-core-module: 2.11.0
is-core-module: 2.12.1
is-glob: 4.0.3
synckit: 0.8.5
transitivePeerDependencies:
@ -13048,11 +13066,11 @@ packages:
eslint-import-resolver-node: 0.3.7
eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.51.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.42.0)
has: 1.0.3
is-core-module: 2.11.0
is-core-module: 2.12.1
is-glob: 4.0.3
minimatch: 3.1.2
object.values: 1.1.6
resolve: 1.22.1
resolve: 1.22.2
semver: 6.3.0
tsconfig-paths: 3.14.1
transitivePeerDependencies:
@ -13800,7 +13818,7 @@ packages:
resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==}
engines: {node: '>=14.14'}
dependencies:
graceful-fs: 4.2.10
graceful-fs: 4.2.11
jsonfile: 6.1.0
universalify: 2.0.0
dev: true
@ -13902,13 +13920,6 @@ packages:
/get-func-name@2.0.0:
resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==}
/get-intrinsic@1.2.0:
resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==}
dependencies:
function-bind: 1.1.1
has: 1.0.3
has-symbols: 1.0.3
/get-intrinsic@1.2.1:
resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==}
dependencies:
@ -14606,15 +14617,6 @@ packages:
wrap-ansi: 7.0.0
dev: true
/internal-slot@1.0.4:
resolution: {integrity: sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==}
engines: {node: '>= 0.4'}
dependencies:
get-intrinsic: 1.2.0
has: 1.0.3
side-channel: 1.0.4
dev: true
/internal-slot@1.0.5:
resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==}
engines: {node: '>= 0.4'}
@ -14662,14 +14664,6 @@ packages:
call-bind: 1.0.2
has-tostringtag: 1.0.0
/is-array-buffer@3.0.1:
resolution: {integrity: sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==}
dependencies:
call-bind: 1.0.2
get-intrinsic: 1.2.0
is-typed-array: 1.1.10
dev: true
/is-array-buffer@3.0.2:
resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
dependencies:
@ -14713,11 +14707,6 @@ packages:
dependencies:
ci-info: 3.7.1
/is-core-module@2.11.0:
resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==}
dependencies:
has: 1.0.3
/is-core-module@2.12.1:
resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==}
dependencies:
@ -15078,7 +15067,7 @@ packages:
dependencies:
'@jest/types': 29.5.0
'@types/graceful-fs': 4.1.6
'@types/node': 20.3.1
'@types/node': 18.15.3
anymatch: 3.1.3
fb-watchman: 2.0.2
graceful-fs: 4.2.11
@ -15109,7 +15098,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@jest/types': 29.5.0
'@types/node': 20.3.1
'@types/node': 18.15.3
chalk: 4.1.2
ci-info: 3.8.0
graceful-fs: 4.2.11
@ -15120,7 +15109,7 @@ packages:
resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
engines: {node: '>= 10.13.0'}
dependencies:
'@types/node': 20.3.1
'@types/node': 18.15.3
merge-stream: 2.0.0
supports-color: 8.1.1
dev: true
@ -15129,7 +15118,7 @@ packages:
resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@types/node': 20.3.1
'@types/node': 18.15.3
jest-util: 29.5.0
merge-stream: 2.0.0
supports-color: 8.1.1
@ -17018,7 +17007,7 @@ packages:
resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
dependencies:
hosted-git-info: 2.8.9
resolve: 1.22.1
resolve: 1.22.2
semver: 5.7.1
validate-npm-package-license: 3.0.4
@ -17188,7 +17177,7 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.2
define-properties: 1.1.4
define-properties: 1.2.0
has-symbols: 1.0.3
object-keys: 1.1.1
@ -17197,8 +17186,8 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.2
define-properties: 1.1.4
es-abstract: 1.21.1
define-properties: 1.2.0
es-abstract: 1.21.2
dev: true
/object.fromentries@2.0.6:
@ -17206,15 +17195,15 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.2
define-properties: 1.1.4
es-abstract: 1.21.1
define-properties: 1.2.0
es-abstract: 1.21.2
dev: true
/object.hasown@1.1.2:
resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==}
dependencies:
define-properties: 1.1.4
es-abstract: 1.21.1
define-properties: 1.2.0
es-abstract: 1.21.2
dev: true
/object.values@1.1.6:
@ -17222,8 +17211,8 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.2
define-properties: 1.1.4
es-abstract: 1.21.1
define-properties: 1.2.0
es-abstract: 1.21.2
dev: true
/oblivious-set@1.0.0:
@ -17432,7 +17421,7 @@ packages:
resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
engines: {node: '>=8'}
dependencies:
'@babel/code-frame': 7.21.4
'@babel/code-frame': 7.22.5
error-ex: 1.3.2
json-parse-even-better-errors: 2.3.1
lines-and-columns: 1.2.4
@ -18026,7 +18015,7 @@ packages:
estree-to-babel: 3.2.1
neo-async: 2.6.2
node-dir: 0.1.17
resolve: 1.22.1
resolve: 1.22.2
strip-indent: 3.0.0
transitivePeerDependencies:
- supports-color
@ -18603,15 +18592,6 @@ packages:
dev: false
optional: true
/regexp.prototype.flags@1.4.3:
resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==}
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.2
define-properties: 1.1.4
functions-have-names: 1.2.3
dev: true
/regexp.prototype.flags@1.5.0:
resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==}
engines: {node: '>= 0.4'}
@ -18792,14 +18772,6 @@ packages:
resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
engines: {node: '>=8'}
/resolve@1.22.1:
resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==}
hasBin: true
dependencies:
is-core-module: 2.11.0
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
/resolve@1.22.2:
resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==}
hasBin: true
@ -18812,7 +18784,7 @@ packages:
resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==}
hasBin: true
dependencies:
is-core-module: 2.11.0
is-core-module: 2.12.1
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
dev: true
@ -19131,7 +19103,7 @@ packages:
resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
dependencies:
call-bind: 1.0.2
get-intrinsic: 1.2.0
get-intrinsic: 1.2.1
object-inspect: 1.12.3
/siginfo@2.0.0:
@ -19468,19 +19440,19 @@ packages:
dependencies:
eastasianwidth: 0.2.0
emoji-regex: 9.2.2
strip-ansi: 7.0.1
strip-ansi: 7.1.0
dev: true
/string.prototype.matchall@4.0.8:
resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==}
dependencies:
call-bind: 1.0.2
define-properties: 1.1.4
es-abstract: 1.21.1
get-intrinsic: 1.2.0
define-properties: 1.2.0
es-abstract: 1.21.2
get-intrinsic: 1.2.1
has-symbols: 1.0.3
internal-slot: 1.0.4
regexp.prototype.flags: 1.4.3
internal-slot: 1.0.5
regexp.prototype.flags: 1.5.0
side-channel: 1.0.4
dev: true
@ -19529,13 +19501,6 @@ packages:
dependencies:
ansi-regex: 5.0.1
/strip-ansi@7.0.1:
resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==}
engines: {node: '>=12'}
dependencies:
ansi-regex: 6.0.1
dev: true
/strip-ansi@7.1.0:
resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
engines: {node: '>=12'}
@ -20934,7 +20899,7 @@ packages:
engines: {node: '>=10.13.0'}
dependencies:
glob-to-regexp: 0.4.1
graceful-fs: 4.2.10
graceful-fs: 4.2.11
dev: true
/wcwidth@1.0.1: