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

View file

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

View file

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

View file

@ -107,7 +107,8 @@ const contentfulOperations: CreateOperations<ContentfulConfig> = (config) => {
const response = await contentfulFetch(endpoint, config, { method: "GET" }); const response = await contentfulFetch(endpoint, config, { method: "GET" });
const respBody = await response.json(); const respBody = await response.json();
logger.debug({ response, body: respBody }, "pingCMS response"); logger.trace("pingCMS success");
return { return {
ok: response.ok, 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(); const json = await response.json();
return { return {
@ -150,10 +152,11 @@ const contentfulOperations: CreateOperations<ContentfulConfig> = (config) => {
const getEntryResponse = await contentfulFetch(endpoint, config, { method: "GET" }); const getEntryResponse = await contentfulFetch(endpoint, config, { method: "GET" });
logger.debug({ getEntryResponse }, "updateProduct getEntryResponse"); logger.trace("updateProduct success");
const entry = await getEntryResponse.json(); const entry = await getEntryResponse.json();
logger.debug({ entry }, "updateProduct entry"); logger.trace("updateProduct entry success");
const response = await contentfulFetch(endpoint, config, { const response = await contentfulFetch(endpoint, config, {
method: "PUT", 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(); const json = await response.json();
return { return {
@ -226,42 +230,42 @@ const contentfulOperations: CreateOperations<ContentfulConfig> = (config) => {
ping: async () => { ping: async () => {
const response = await pingCMS(); const response = await pingCMS();
logger.debug({ response }, "ping response"); logger.trace("ping success");
return response; return response;
}, },
createProduct: async ({ input }) => { createProduct: async ({ input }) => {
const result = await createProductInCMS(input); const result = await createProductInCMS(input);
logger.debug({ result }, "createProduct result"); logger.trace("createProduct success");
return transformCreateProductResponse(result); return transformCreateProductResponse(result);
}, },
updateProduct: async ({ id, input }) => { updateProduct: async ({ id, input }) => {
const result = await updateProductInCMS(id, input); const result = await updateProductInCMS(id, input);
logger.debug({ result }, "updateProduct result"); logger.trace("updateProduct result");
return result; return result;
}, },
deleteProduct: async ({ id }) => { deleteProduct: async ({ id }) => {
const response = await deleteProductInCMS(id); const response = await deleteProductInCMS(id);
logger.debug({ response }, "deleteProduct response"); logger.trace("deleteProduct success");
return response; return response;
}, },
createBatchProducts: async ({ input }) => { createBatchProducts: async ({ input }) => {
const results = await createBatchProductsInCMS(input); const results = await createBatchProductsInCMS(input);
logger.debug({ results }, "createBatchProducts results"); logger.trace("createBatchProducts success");
return results.map((result) => transformCreateProductResponse(result)); return results.map((result) => transformCreateProductResponse(result));
}, },
deleteBatchProducts: async ({ ids }) => { deleteBatchProducts: async ({ ids }) => {
const results = await deleteBatchProductsInCMS(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 { try {
const item = await createProductInCMS(input); const item = await createProductInCMS(input);
logger.debug({ item }, "createProduct response"); logger.trace("createProduct success");
return transformResponseItem(item, input); return transformResponseItem(item, input);
} catch (error) { } catch (error) {
@ -122,24 +122,24 @@ const datocmsOperations: CreateOperations<DatocmsConfig> = (config) => {
updateProduct: async ({ id, input }) => { updateProduct: async ({ id, input }) => {
const item = await updateProductInCMS(id, input); const item = await updateProductInCMS(id, input);
logger.debug({ item }, "updateProduct response"); logger.trace("updateProduct success");
}, },
deleteProduct: async ({ id }) => { deleteProduct: async ({ id }) => {
const item = await deleteProductInCMS(id); const item = await deleteProductInCMS(id);
logger.debug({ item }, "deleteProduct response"); logger.trace("deleteProduct success");
}, },
createBatchProducts: async ({ input }) => { createBatchProducts: async ({ input }) => {
const items = await createBatchProductsInCMS(input); const items = await createBatchProductsInCMS(input);
logger.debug({ items }, "createBatchProducts response"); logger.trace("createBatchProducts success");
return items.map((item) => transformResponseItem(item.id, item.input)); return items.map((item) => transformResponseItem(item.id, item.input));
}, },
deleteBatchProducts: async ({ ids }) => { deleteBatchProducts: async ({ ids }) => {
const items = await deleteBatchProductsInCMS(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", method: "GET",
}); });
logger.debug({ response }, "pingCMS response"); logger.debug("pingCMS success");
return { ok: response.ok }; return { ok: response.ok };
}; };
@ -99,7 +100,7 @@ export const strapiOperations: CreateStrapiOperations = (config) => {
body: JSON.stringify(body), body: JSON.stringify(body),
}); });
logger.debug({ response }, "createProduct response"); logger.debug("createProduct success");
return await response.json(); return await response.json();
}; };
@ -135,42 +136,42 @@ export const strapiOperations: CreateStrapiOperations = (config) => {
ping: async () => { ping: async () => {
const response = await pingCMS(); const response = await pingCMS();
logger.debug({ response }, "ping response"); logger.debug("ping response");
return response; return response;
}, },
createProduct: async ({ input }) => { createProduct: async ({ input }) => {
const result = await createProductInCMS(input); const result = await createProductInCMS(input);
logger.debug({ result }, "createProduct result"); logger.debug("createProduct success");
return transformCreateProductResponse(result, input); return transformCreateProductResponse(result, input);
}, },
updateProduct: async ({ id, input }) => { updateProduct: async ({ id, input }) => {
const response = await updateProductInCMS(id, input); const response = await updateProductInCMS(id, input);
logger.debug({ response }, "updateProduct response"); logger.debug("updateProduct success");
return response; return response;
}, },
deleteProduct: async ({ id }) => { deleteProduct: async ({ id }) => {
const response = await deleteProductInCMS(id); const response = await deleteProductInCMS(id);
logger.debug({ response }, "deleteProduct response"); logger.debug("deleteProduct success");
return response; return response;
}, },
createBatchProducts: async ({ input }) => { createBatchProducts: async ({ input }) => {
const results = await createBatchProductsInCMS(input); const results = await createBatchProductsInCMS(input);
logger.debug({ results }, "createBatchProducts results"); logger.debug("createBatchProducts success");
return results.map((result) => transformCreateProductResponse(result.response, result.input)); return results.map((result) => transformCreateProductResponse(result.response, result.input));
}, },
deleteBatchProducts: async ({ ids }) => { deleteBatchProducts: async ({ ids }) => {
const responses = await deleteBatchProductsInCMS(ids); const responses = await deleteBatchProductsInCMS(ids);
logger.debug({ responses }, "deleteBatchProducts responses"); logger.debug("deleteBatchProducts success");
return responses; return responses;
}, },

View file

@ -12,7 +12,12 @@
"VERCEL_URL", "VERCEL_URL",
"REST_APL_ENDPOINT", "REST_APL_ENDPOINT",
"REST_APL_TOKEN", "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(); 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", { const metadataResponse = await fetch("https://login.mailchimp.com/oauth2/metadata", {
headers: { 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( logger.debug(
{ {
input, ...input,
}, },
"Updated category mapping" "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) { if (!providerConnection) {
logger.debug( 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." "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`); throw new Error(`Channel config providerConnectionId does not match any providers`);

View file

@ -85,7 +85,7 @@ export const taxjarConnectionRouter = router({
location: "taxjarConnectionRouter.patch", location: "taxjarConnectionRouter.patch",
}); });
logger.debug({ input }, "Route patch called"); logger.debug("Route patch called");
const result = await ctx.connectionService.update(input.id, input.value); 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 channelSlug = payload.taxBase.channel.slug;
const taxProvider = getActiveConnection(channelSlug, appMetadata); 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); const calculatedTaxes = await taxProvider.calculateTaxes(payload.taxBase);
logger.info({ calculatedTaxes }, "Taxes calculated"); logger.info("Taxes calculated");
return webhookResponse.success(ctx.buildResponse(calculatedTaxes)); return webhookResponse.success(ctx.buildResponse(calculatedTaxes));
} catch (error) { } catch (error) {
return webhookResponse.error(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 channelSlug = payload.taxBase.channel.slug;
const taxProvider = getActiveConnection(channelSlug, appMetadata); 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); const calculatedTaxes = await taxProvider.calculateTaxes(payload.taxBase);
logger.info({ calculatedTaxes }, "Taxes calculated"); logger.info("Taxes calculated");
return webhookResponse.success(ctx.buildResponse(calculatedTaxes)); return webhookResponse.success(ctx.buildResponse(calculatedTaxes));
} catch (error) { } catch (error) {
return webhookResponse.error(error); return webhookResponse.error(error);

View file

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

View file

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

View file

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