Add removing metadata in CRM app (#507)

* Add dev app-sdk and rewrite undefined metadata to removing it

* Implement metadata manager delete method

* Update app-sdk to 0.39.1 in all packages

* Update swift-boxes-drop.md
This commit is contained in:
Lukasz Ostrowski 2023-05-24 16:08:12 +02:00 committed by GitHub
parent 8e0b08523b
commit 6e69f4f9f0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
24 changed files with 167 additions and 114 deletions

View file

@ -0,0 +1,16 @@
---
"saleor-app-emails-and-messages": patch
"saleor-app-data-importer": patch
"saleor-app-products-feed": patch
"saleor-app-monitoring": patch
"@saleor/apps-shared": patch
"saleor-app-invoices": patch
"saleor-app-klaviyo": patch
"saleor-app-search": patch
"saleor-app-slack": patch
"saleor-app-taxes": patch
"saleor-app-cms": patch
"saleor-app-crm": patch
---
Update app-sdk to 0.39.1

View file

@ -0,0 +1,5 @@
---
"saleor-app-crm": minor
---
Implemented app-sdk@0.39.1 and used its MetadataManager's "delete" method. Now, app will remove config from metadata using "removePrivateMetadata" mutation, instead of setting it to undefined. Previous behaviour was caused by app-sdk not having "delete" method yet

View file

@ -21,7 +21,7 @@
"@material-ui/core": "^4.12.4",
"@material-ui/icons": "^4.11.3",
"@material-ui/lab": "4.0.0-alpha.61",
"@saleor/app-sdk": "0.38.0",
"@saleor/app-sdk": "0.39.1",
"@saleor/apps-shared": "workspace:*",
"@saleor/macaw-ui": "^0.7.2",
"@sentry/nextjs": "^7.43.0",

View file

@ -17,7 +17,7 @@
},
"dependencies": {
"@mailchimp/mailchimp_marketing": "^3.0.80",
"@saleor/app-sdk": "0.38.0",
"@saleor/app-sdk": "0.39.1",
"@saleor/apps-shared": "workspace:*",
"@saleor/macaw-ui": "0.8.0-pre.84",
"@sentry/nextjs": "^7.52.1",
@ -67,6 +67,6 @@
"eslint-config-saleor": "workspace:*",
"node-mocks-http": "^1.12.2",
"prettier": "^2.8.2",
"typescript": "4.9.4"
"typescript": "5.0.4"
}
}

View file

@ -7,6 +7,7 @@ import { Client, gql } from "urql";
import {
FetchAppDetailsDocument,
FetchAppDetailsQuery,
RemovePrivateMetadataDocument,
UpdateAppMetadataDocument,
} from "../../generated/graphql";
@ -35,6 +36,16 @@ gql`
}
`;
gql`
mutation RemovePrivateMetadata($id: ID!, $keys: [String!]!) {
deletePrivateMetadata(id: $id, keys: $keys) {
errors {
message
}
}
}
`;
export async function fetchAllMetadata(client: Pick<Client, "query">): Promise<MetadataEntry[]> {
const { error, data } = await client
.query<FetchAppDetailsQuery>(FetchAppDetailsDocument, {})
@ -88,7 +99,8 @@ export async function mutateMetadata(
}
export const createSettingsManager = (
client: Pick<Client, "query" | "mutation">
client: Pick<Client, "query" | "mutation">,
appId: string
): SettingsManager => {
/*
* EncryptedMetadataManager gives you interface to manipulate metadata and cache values in memory.
@ -100,5 +112,11 @@ export const createSettingsManager = (
encryptionKey: process.env.SECRET_KEY!,
fetchMetadata: () => fetchAllMetadata(client),
mutateMetadata: (metadata) => mutateMetadata(client, metadata),
async deleteMetadata(keys) {
await client.mutation(RemovePrivateMetadataDocument, {
id: appId,
keys: keys,
});
},
});
};

View file

@ -28,7 +28,7 @@ const BulkAddContactsSchema = z.object({
const mailchimpAudienceRouter = router({
getLists: protectedClientProcedure.query(async ({ ctx }) => {
const config = await new MailchimpConfigSettingsManager(ctx.apiClient).getConfig();
const config = await new MailchimpConfigSettingsManager(ctx.apiClient, ctx.appId!).getConfig();
/**
* TODO extract mailchimp API readiness shared class
@ -70,7 +70,10 @@ const mailchimpAudienceRouter = router({
saleorApiUrl: ctx.saleorApiUrl,
});
const config = await new MailchimpConfigSettingsManager(ctx.apiClient).getConfig();
const config = await new MailchimpConfigSettingsManager(
ctx.apiClient,
ctx.appId!
).getConfig();
logger.debug("Fetched config from metadata");

View file

@ -7,6 +7,7 @@ describe("MailchimpConfigSettingsManagerV1", () => {
let mockSettingsManager: SettingsManager = {
set: vi.fn(),
get: vi.fn(),
delete: vi.fn(),
};
let service: MailchimpConfigSettingsManagerV1;
@ -15,9 +16,10 @@ describe("MailchimpConfigSettingsManagerV1", () => {
mockSettingsManager = {
set: vi.fn(),
get: vi.fn(),
delete: vi.fn(),
};
service = new MailchimpConfigSettingsManagerV1(null as unknown as Client, () => {
service = new MailchimpConfigSettingsManagerV1(null as unknown as Client, "appID", () => {
return mockSettingsManager;
});
});
@ -107,14 +109,9 @@ describe("MailchimpConfigSettingsManagerV1", () => {
await expect(service.getConfig()).resolves.toBeNull();
});
it('.removeConfig method sets value to be "undefined" string', async () => {
it(".removeConfig method calls metadata manager DELETE method with a key", async () => {
await service.removeConfig();
return expect(mockSettingsManager.set).toHaveBeenCalledWith(
expect.objectContaining({
key: expect.any(String),
value: "undefined",
})
);
return expect(mockSettingsManager.delete).toHaveBeenCalledWith("mailchimp_config_v1");
});
});

View file

@ -34,7 +34,6 @@ export interface IMailchimpConfigSettingsManagerV1 {
* V1 config. In case of changing config, create another instance and perform migration
*
* todo save domain?
* todo add test
*/
export class MailchimpConfigSettingsManagerV1 implements IMailchimpConfigSettingsManagerV1 {
private settingsManager: SettingsManager;
@ -45,15 +44,12 @@ export class MailchimpConfigSettingsManagerV1 implements IMailchimpConfigSetting
constructor(
private apiClient: Pick<Client, "query" | "mutation">,
private appId: string,
metadataManagerFactory = createSettingsManager
) {
this.settingsManager = metadataManagerFactory(apiClient);
this.settingsManager = metadataManagerFactory(apiClient, appId);
}
private parseEmptyResponse = (value?: string) => {
return value === "undefined" ? undefined : value;
};
setConfig(config: z.infer<typeof ConfigV1>) {
const configSchema = MetadataSchemaV1.parse({
config,
@ -76,18 +72,13 @@ export class MailchimpConfigSettingsManagerV1 implements IMailchimpConfigSetting
async getConfig(): Promise<z.infer<typeof ConfigV1> | null> {
this.logger.debug(`Will fetch metadata key: ${this.metadataKey}`);
const rawMetadata = await this.settingsManager
.get(this.metadataKey)
.then(this.parseEmptyResponse);
const rawMetadata = await this.settingsManager.get(this.metadataKey);
this.logger.debug({ rawMetadata }, "Received raw metadata");
/**
* Check for "undefined" string because after config is deleted, its actually set to "undefined" instead removing
* TODO remove config instead setting it to "undefined"
*/
if (!rawMetadata) {
this.logger.debug("Raw metadata is nullable");
this.logger.debug("Fetched metadata does not exist, will return null");
return null;
}
@ -103,14 +94,14 @@ export class MailchimpConfigSettingsManagerV1 implements IMailchimpConfigSetting
return parsedMetadata.config;
} catch (e) {
console.error(e);
this.logger.error(e);
return null;
}
}
async removeConfig() {
// todo = implement settingsManager.delete
return this.settingsManager.set({ key: this.metadataKey, value: "undefined" });
return this.settingsManager.delete(this.metadataKey);
}
}

View file

@ -37,7 +37,7 @@ const mailchimpConfigRouter = router({
logger.info("Saving Mailchimp token");
return new MailchimpConfigSettingsManager(ctx.apiClient).setConfig(input);
return new MailchimpConfigSettingsManager(ctx.apiClient, ctx.appId!).setConfig(input);
}),
setWebhookConfig: protectedClientProcedure
.meta({ requiredClientPermissions: ["MANAGE_APPS"] })
@ -50,7 +50,7 @@ const mailchimpConfigRouter = router({
logger.info("Saving Mailchimp token");
const mm = new MailchimpConfigSettingsManager(ctx.apiClient);
const mm = new MailchimpConfigSettingsManager(ctx.apiClient, ctx.appId!);
const currentConfig = await mm.getConfig();
@ -69,7 +69,10 @@ const mailchimpConfigRouter = router({
saleorApiUrl: ctx.saleorApiUrl,
});
const config = await new MailchimpConfigSettingsManager(ctx.apiClient).getConfig();
const config = await new MailchimpConfigSettingsManager(
ctx.apiClient,
ctx.appId!
).getConfig();
logger.debug(config, "Received config from metadata");
@ -110,7 +113,7 @@ const mailchimpConfigRouter = router({
removeToken: protectedClientProcedure
.meta({ requiredClientPermissions: ["MANAGE_APPS"] })
.mutation(({ ctx }) => {
return new MailchimpConfigSettingsManager(ctx.apiClient).removeConfig();
return new MailchimpConfigSettingsManager(ctx.apiClient, ctx.appId!).removeConfig();
}),
});

View file

@ -44,7 +44,7 @@ export const customerCreatedHandler: NextWebhookApiHandler<CustomerCreatedPayloa
Promise.resolve({ token: authData.token })
);
const settingsManager = new MailchimpConfigSettingsManager(client);
const settingsManager = new MailchimpConfigSettingsManager(client, authData.appId);
const config = await settingsManager.getConfig();

View file

@ -45,7 +45,7 @@ const handler: NextWebhookApiHandler<CustomerUpdatedPayloadFragment> = async (
Promise.resolve({ token: authData.token })
);
const settingsManager = new MailchimpConfigSettingsManager(client);
const settingsManager = new MailchimpConfigSettingsManager(client, authData.appId);
const config = await settingsManager.getConfig();

View file

@ -19,7 +19,7 @@
"@material-ui/core": "^4.12.4",
"@material-ui/icons": "^4.11.3",
"@material-ui/lab": "4.0.0-alpha.61",
"@saleor/app-sdk": "0.38.0",
"@saleor/app-sdk": "0.39.1",
"@saleor/apps-shared": "workspace:*",
"@saleor/macaw-ui": "^0.7.2",
"@sentry/nextjs": "^7.39.0",

View file

@ -20,7 +20,7 @@
"@material-ui/icons": "^4.11.3",
"@material-ui/lab": "4.0.0-alpha.61",
"@monaco-editor/react": "^4.4.6",
"@saleor/app-sdk": "0.38.0",
"@saleor/app-sdk": "0.39.1",
"@saleor/apps-shared": "workspace:*",
"@saleor/macaw-ui": "^0.7.2",
"@sendgrid/client": "^7.7.0",

View file

@ -17,7 +17,7 @@
},
"dependencies": {
"@hookform/resolvers": "^3.1.0",
"@saleor/app-sdk": "0.38.0",
"@saleor/app-sdk": "0.39.1",
"@saleor/apps-shared": "workspace:*",
"@saleor/macaw-ui": "0.8.0-pre.84",
"@sentry/nextjs": "^7.36.0",

View file

@ -18,7 +18,7 @@
"@material-ui/core": "^4.12.4",
"@material-ui/icons": "^4.11.3",
"@material-ui/lab": "4.0.0-alpha.61",
"@saleor/app-sdk": "0.38.0",
"@saleor/app-sdk": "0.39.1",
"@saleor/apps-shared": "workspace:*",
"@saleor/macaw-ui": "^0.7.2",
"@sentry/nextjs": "^7.36.0",

View file

@ -18,7 +18,7 @@
"@material-ui/core": "^4.12.4",
"@material-ui/icons": "^4.11.3",
"@material-ui/lab": "4.0.0-alpha.61",
"@saleor/app-sdk": "0.38.0",
"@saleor/app-sdk": "0.39.1",
"@saleor/apps-shared": "workspace:*",
"@saleor/macaw-ui": "^0.7.2",
"@urql/exchange-auth": "^1.0.0",

View file

@ -21,7 +21,7 @@
"@material-ui/core": "^4.12.4",
"@material-ui/icons": "^4.11.3",
"@material-ui/lab": "4.0.0-alpha.61",
"@saleor/app-sdk": "0.38.0",
"@saleor/app-sdk": "0.39.1",
"@saleor/apps-shared": "workspace:*",
"@saleor/macaw-ui": "^0.7.2",
"@sentry/nextjs": "^7.52.1",

View file

@ -17,11 +17,11 @@
},
"dependencies": {
"@hookform/resolvers": "^3.1.0",
"@saleor/app-sdk": "0.38.0",
"@saleor/app-sdk": "0.39.1",
"@saleor/apps-shared": "workspace:*",
"@saleor/apps-ui": "workspace:*",
"@saleor/react-hook-form-macaw": "workspace:*",
"@saleor/macaw-ui": "^0.8.0-pre.84",
"@saleor/react-hook-form-macaw": "workspace:*",
"@sentry/nextjs": "^7.46.0",
"@types/debug": "^4.1.7",
"@urql/exchange-auth": "^1.0.0",

View file

@ -18,7 +18,7 @@
"@material-ui/core": "^4.12.4",
"@material-ui/icons": "^4.11.3",
"@material-ui/lab": "4.0.0-alpha.61",
"@saleor/app-sdk": "0.38.0",
"@saleor/app-sdk": "0.39.1",
"@saleor/apps-shared": "workspace:*",
"@saleor/macaw-ui": "^0.7.2",
"@sentry/nextjs": "^7.30.0",

View file

@ -20,7 +20,7 @@
"@material-ui/core": "^4.12.4",
"@material-ui/icons": "^4.11.3",
"@material-ui/lab": "4.0.0-alpha.61",
"@saleor/app-sdk": "0.38.0",
"@saleor/app-sdk": "0.39.1",
"@saleor/apps-shared": "workspace:*",
"@saleor/apps-ui": "workspace:*",
"@saleor/macaw-ui": "^0.7.2",

View file

@ -4,7 +4,6 @@
"main": "index.js",
"license": "MIT",
"dependencies": {
"@saleor/app-sdk": "0.37.3",
"eslint": "^8.33.0",
"eslint-config-next": "^13.3.0",
"eslint-config-prettier": "^8.6.0",

View file

@ -10,25 +10,26 @@
"@material-ui/core": "^4.12.4",
"@material-ui/icons": "^4.11.3",
"@material-ui/lab": "4.0.0-alpha.61",
"@saleor/app-sdk": "0.38.0",
"@saleor/app-sdk": "0.39.1",
"@saleor/macaw-ui": "^0.7.2",
"@types/react": "^18.0.27",
"@types/react-dom": "^18.0.10",
"@types/semver": "^7.5.0",
"clsx": "^1.2.1",
"eslint-config-saleor": "workspace:*",
"next": "^13.3.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"vite": "^4.3.1",
"vitest": "^0.30.1",
"@types/semver": "^7.5.0"
"vitest": "^0.30.1"
},
"peerDependencies": {
"next": "^13.3.0",
"pino": "^8.14.1",
"pino-pretty": "^10.0.0",
"react": "^18.2.0",
"react-dom": "^18.2.0"
"react-dom": "^18.2.0",
"@saleor/app-sdk": "0.39.1"
},
"scripts": {
"lint:fix": "eslint --fix ."

View file

@ -9,13 +9,13 @@
"next": "^13.3.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"@saleor/app-sdk": "^0.38.0"
"@saleor/app-sdk": "^0.39.1"
},
"peerDependencies": {
"@saleor/app-sdk": "^0.39.1",
"next": "^13.3.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"@saleor/app-sdk": "^0.38.0"
"react-dom": "^18.2.0"
},
"scripts": {
"lint:fix": "eslint --fix ."

View file

@ -47,8 +47,8 @@ importers:
specifier: 4.0.0-alpha.61
version: 4.0.0-alpha.61(@material-ui/core@4.12.4)(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0)
'@saleor/app-sdk':
specifier: 0.38.0
version: 0.38.0(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
specifier: 0.39.1
version: 0.39.1(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
'@saleor/apps-shared':
specifier: workspace:*
version: link:../../packages/shared
@ -177,8 +177,8 @@ importers:
specifier: ^3.0.80
version: 3.0.80
'@saleor/app-sdk':
specifier: 0.38.0
version: 0.38.0(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
specifier: 0.39.1
version: 0.39.1(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
'@saleor/apps-shared':
specifier: workspace:*
version: link:../../packages/shared
@ -308,7 +308,7 @@ importers:
version: 8.31.0
eslint-config-next:
specifier: 13.1.2
version: 13.1.2(eslint@8.31.0)(typescript@4.9.4)
version: 13.1.2(eslint@8.31.0)(typescript@5.0.4)
eslint-config-prettier:
specifier: ^8.6.0
version: 8.6.0(eslint@8.31.0)
@ -322,8 +322,8 @@ importers:
specifier: ^2.8.2
version: 2.8.4
typescript:
specifier: 4.9.4
version: 4.9.4
specifier: 5.0.4
version: 5.0.4
apps/data-importer:
dependencies:
@ -337,8 +337,8 @@ importers:
specifier: 4.0.0-alpha.61
version: 4.0.0-alpha.61(@material-ui/core@4.12.4)(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0)
'@saleor/app-sdk':
specifier: 0.38.0
version: 0.38.0(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
specifier: 0.39.1
version: 0.39.1(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
'@saleor/apps-shared':
specifier: workspace:*
version: link:../../packages/shared
@ -479,8 +479,8 @@ importers:
specifier: ^4.4.6
version: 4.4.6(monaco-editor@0.38.0)(react-dom@18.2.0)(react@18.2.0)
'@saleor/app-sdk':
specifier: 0.38.0
version: 0.38.0(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
specifier: 0.39.1
version: 0.39.1(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
'@saleor/apps-shared':
specifier: workspace:*
version: link:../../packages/shared
@ -660,8 +660,8 @@ importers:
specifier: ^3.1.0
version: 3.1.0(react-hook-form@7.43.1)
'@saleor/app-sdk':
specifier: 0.38.0
version: 0.38.0(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
specifier: 0.39.1
version: 0.39.1(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
'@saleor/apps-shared':
specifier: workspace:*
version: link:../../packages/shared
@ -817,8 +817,8 @@ importers:
specifier: 4.0.0-alpha.61
version: 4.0.0-alpha.61(@material-ui/core@4.12.4)(@types/react@18.0.14)(react-dom@18.2.0)(react@18.2.0)
'@saleor/app-sdk':
specifier: 0.38.0
version: 0.38.0(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
specifier: 0.39.1
version: 0.39.1(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
'@saleor/apps-shared':
specifier: workspace:*
version: link:../../packages/shared
@ -947,8 +947,8 @@ importers:
specifier: 4.0.0-alpha.61
version: 4.0.0-alpha.61(@material-ui/core@4.12.4)(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0)
'@saleor/app-sdk':
specifier: 0.38.0
version: 0.38.0(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
specifier: 0.39.1
version: 0.39.1(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
'@saleor/apps-shared':
specifier: workspace:*
version: link:../../packages/shared
@ -1080,8 +1080,8 @@ importers:
specifier: 4.0.0-alpha.61
version: 4.0.0-alpha.61(@material-ui/core@4.12.4)(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0)
'@saleor/app-sdk':
specifier: 0.38.0
version: 0.38.0(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
specifier: 0.39.1
version: 0.39.1(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
'@saleor/apps-shared':
specifier: workspace:*
version: link:../../packages/shared
@ -1234,8 +1234,8 @@ importers:
specifier: ^3.1.0
version: 3.1.0(react-hook-form@7.43.9)
'@saleor/app-sdk':
specifier: 0.38.0
version: 0.38.0(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
specifier: 0.39.1
version: 0.39.1(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
'@saleor/apps-shared':
specifier: workspace:*
version: link:../../packages/shared
@ -1385,8 +1385,8 @@ importers:
specifier: 4.0.0-alpha.61
version: 4.0.0-alpha.61(@material-ui/core@4.12.4)(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0)
'@saleor/app-sdk':
specifier: 0.38.0
version: 0.38.0(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
specifier: 0.39.1
version: 0.39.1(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
'@saleor/apps-shared':
specifier: workspace:*
version: link:../../packages/shared
@ -1518,8 +1518,8 @@ importers:
specifier: 4.0.0-alpha.61
version: 4.0.0-alpha.61(@material-ui/core@4.12.4)(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0)
'@saleor/app-sdk':
specifier: 0.38.0
version: 0.38.0(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
specifier: 0.39.1
version: 0.39.1(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
'@saleor/apps-shared':
specifier: workspace:*
version: link:../../packages/shared
@ -1674,9 +1674,6 @@ importers:
packages/eslint-config-saleor:
dependencies:
'@saleor/app-sdk':
specifier: 0.37.3
version: 0.37.3(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
eslint:
specifier: ^8.33.0
version: 8.33.0
@ -1788,8 +1785,8 @@ importers:
specifier: 4.0.0-alpha.61
version: 4.0.0-alpha.61(@material-ui/core@4.12.4)(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0)
'@saleor/app-sdk':
specifier: 0.38.0
version: 0.38.0(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
specifier: 0.39.1
version: 0.39.1(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
'@saleor/macaw-ui':
specifier: ^0.7.2
version: 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.0.27)(react-dom@18.2.0)(react-helmet@6.1.0)(react@18.2.0)
@ -1827,8 +1824,8 @@ importers:
packages/ui:
devDependencies:
'@saleor/app-sdk':
specifier: ^0.38.0
version: 0.38.0(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
specifier: ^0.39.1
version: 0.39.1(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
'@saleor/macaw-ui':
specifier: 0.8.0-pre.84
version: 0.8.0-pre.84(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0)
@ -7662,30 +7659,8 @@ packages:
/@rushstack/eslint-patch@1.2.0:
resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==}
/@saleor/app-sdk@0.37.3(next@13.3.0)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-DFAjiEFBFIDWDqZvaXar8860zDgSZih2n7gT3e+aOpLIfnmMZ0nL6+aNS3A7ym2IStx8oUoPI1RFZBIeuF9+hg==}
peerDependencies:
next: '>=12'
react: '>=17'
react-dom: '>=17'
dependencies:
'@changesets/cli': 2.26.0
debug: 4.3.4
fast-glob: 3.2.12
graphql: 16.6.0
jose: 4.11.4
next: 13.3.0(@babel/core@7.21.8)(react-dom@18.2.0)(react@18.2.0)
raw-body: 2.5.1
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
retes: 0.33.0
uuid: 8.3.2
transitivePeerDependencies:
- supports-color
dev: false
/@saleor/app-sdk@0.38.0(next@13.3.0)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-JS/E3YODFHc+1DI+PczbV8jB09nLwzdQcwNs681RlwvR3JUC892hdBYYRdBKG5lauAcr4IxKw1IbrsxJKngtWA==}
/@saleor/app-sdk@0.39.1(next@13.3.0)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-PBREZWwkk+DHCBhOZzsuFdp7/vLItxfAqKD+gcZ5QxzSAt82S0/FS6ii7igpW3H+bEiK4oBUjMxgUyhJMOXQHw==}
peerDependencies:
next: '>=12'
react: '>=17'
@ -9078,7 +9053,7 @@ packages:
prompts: 2.4.2
puppeteer-core: 2.1.1
read-pkg-up: 7.0.1
semver: 7.3.8
semver: 7.5.1
shelljs: 0.8.5
simple-update-notifier: 1.1.0
strip-json-comments: 3.1.1
@ -9211,7 +9186,7 @@ packages:
pretty-hrtime: 1.0.3
prompts: 2.4.2
read-pkg-up: 7.0.1
semver: 7.3.8
semver: 7.5.1
serve-favicon: 2.5.0
telejson: 7.1.0
ts-dedent: 2.2.0
@ -9307,7 +9282,7 @@ packages:
memoizerific: 1.11.3
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
semver: 7.3.8
semver: 7.5.1
store2: 2.14.2
telejson: 7.1.0
ts-dedent: 2.2.0
@ -10421,6 +10396,26 @@ packages:
- supports-color
dev: true
/@typescript-eslint/parser@5.51.0(eslint@8.31.0)(typescript@5.0.4):
resolution: {integrity: sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
'@typescript-eslint/scope-manager': 5.51.0
'@typescript-eslint/types': 5.51.0
'@typescript-eslint/typescript-estree': 5.51.0(typescript@5.0.4)
debug: 4.3.4
eslint: 8.31.0
typescript: 5.0.4
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/parser@5.51.0(eslint@8.33.0)(typescript@4.9.5):
resolution: {integrity: sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@ -13619,6 +13614,31 @@ packages:
- supports-color
dev: true
/eslint-config-next@13.1.2(eslint@8.31.0)(typescript@5.0.4):
resolution: {integrity: sha512-zdRAQOr8v69ZwJRtBrGqAqm160ONqKxU/pV1FB1KlgfyqveGsLZmlQ7l31otwtw763901J7xdiTVkj2y3YxXZA==}
peerDependencies:
eslint: ^7.23.0 || ^8.0.0
typescript: '>=3.3.1'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
'@next/eslint-plugin-next': 13.1.2
'@rushstack/eslint-patch': 1.2.0
'@typescript-eslint/parser': 5.51.0(eslint@8.31.0)(typescript@5.0.4)
eslint: 8.31.0
eslint-import-resolver-node: 0.3.7
eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.31.0)
eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.51.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.33.0)
eslint-plugin-jsx-a11y: 6.7.1(eslint@8.31.0)
eslint-plugin-react: 7.32.2(eslint@8.31.0)
eslint-plugin-react-hooks: 4.6.0(eslint@8.31.0)
typescript: 5.0.4
transitivePeerDependencies:
- eslint-import-resolver-webpack
- supports-color
dev: true
/eslint-config-next@13.3.0(eslint@8.33.0)(typescript@4.9.5):
resolution: {integrity: sha512-6YEwmFBX0VjBd3ODGW9df0Is0FLaRFdMN8eAahQG9CN6LjQ28J8AFr19ngxqMSg7Qv6Uca/3VeeBosJh1bzu0w==}
peerDependencies: