From 1064c5bbadb46ab157279227115c6f79fd63463b Mon Sep 17 00:00:00 2001 From: Jonatan Witoszek Date: Fri, 10 Jan 2025 16:18:01 +0100 Subject: [PATCH] Fix Next.js build errors --- package.json | 2 +- pnpm-lock.yaml | 10 ++-- src/app/api-v2/manifest/route.ts | 4 +- .../api-v2/webhooks/order-created/route.ts | 58 +------------------ .../api-v2/webhooks/order-created/webhook.ts | 49 ++++++++++++++++ .../order-filter-shipping-methods/route.ts | 42 +------------- .../order-filter-shipping-methods/webhook.ts | 35 +++++++++++ 7 files changed, 94 insertions(+), 106 deletions(-) create mode 100644 src/app/api-v2/webhooks/order-created/webhook.ts create mode 100644 src/app/api-v2/webhooks/order-filter-shipping-methods/webhook.ts diff --git a/package.json b/package.json index 46fdbaa..4bb39e4 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "pnpm": ">=9.0.0 <10.0.0" }, "dependencies": { - "@saleor/app-sdk": "0.0.0-pr-20250103130801", + "@saleor/app-sdk": "0.0.0-pr-20250109150409", "@saleor/macaw-ui": "1.1.10", "@urql/exchange-auth": "^1.0.0", "@vitejs/plugin-react": "4.2.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dcd2f1d..d19ba7f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: '@saleor/app-sdk': - specifier: 0.0.0-pr-20250103130801 - version: 0.0.0-pr-20250103130801(graphql@16.8.1)(next@15.1.3(@babel/core@7.24.0)(@opentelemetry/api@1.8.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 0.0.0-pr-20250109150409 + version: 0.0.0-pr-20250109150409(graphql@16.8.1)(next@15.1.3(@babel/core@7.24.0)(@opentelemetry/api@1.8.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@saleor/macaw-ui': specifier: 1.1.10 version: 1.1.10(@types/react-dom@18.3.1)(@types/react@18.3.1)(@vanilla-extract/css@1.14.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1729,8 +1729,8 @@ packages: '@rushstack/eslint-patch@1.10.4': resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==} - '@saleor/app-sdk@0.0.0-pr-20250103130801': - resolution: {integrity: sha512-DGMzBBHVFvQhm5FED4DUNmnpp7P7axXTm3jHedLwd75LBhDw3Le6nHJSjqUyFNb034sKPeMsvzgSurMXq5YZBg==} + '@saleor/app-sdk@0.0.0-pr-20250109150409': + resolution: {integrity: sha512-ROxpK0EnLnNVRaB5UNLDFMy/pdKloSn2EiXx6TZDsJ20hSESADNS0VhvbiVlOEy3EDskZhwh6m1TPy6+mhhzpw==} peerDependencies: '@vercel/kv': ^1.0.0 graphql: '>=16.6.0' @@ -6537,7 +6537,7 @@ snapshots: '@rushstack/eslint-patch@1.10.4': {} - '@saleor/app-sdk@0.0.0-pr-20250103130801(graphql@16.8.1)(next@15.1.3(@babel/core@7.24.0)(@opentelemetry/api@1.8.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@saleor/app-sdk@0.0.0-pr-20250109150409(graphql@16.8.1)(next@15.1.3(@babel/core@7.24.0)(@opentelemetry/api@1.8.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@opentelemetry/api': 1.8.0 '@opentelemetry/semantic-conventions': 1.22.0 diff --git a/src/app/api-v2/manifest/route.ts b/src/app/api-v2/manifest/route.ts index 21213a3..47c5282 100644 --- a/src/app/api-v2/manifest/route.ts +++ b/src/app/api-v2/manifest/route.ts @@ -1,8 +1,8 @@ import { createManifestHandler } from "@saleor/app-sdk/handlers/fetch-api"; import { AppManifest } from "@saleor/app-sdk/types"; import packageJson from "../../../../package.json"; -import { orderFilterShippingMethodsWebhook } from "../webhooks/order-filter-shipping-methods/route"; -import { orderCreatedWebhook } from "../webhooks/order-created/route"; +import { orderCreatedWebhook } from "../webhooks/order-created/webhook"; +import { orderFilterShippingMethodsWebhook } from "../webhooks/order-filter-shipping-methods/webhook"; export const GET = createManifestHandler({ manifestFactory({ appBaseUrl, request }) { diff --git a/src/app/api-v2/webhooks/order-created/route.ts b/src/app/api-v2/webhooks/order-created/route.ts index 8fc1ea2..6e12fe6 100644 --- a/src/app/api-v2/webhooks/order-created/route.ts +++ b/src/app/api-v2/webhooks/order-created/route.ts @@ -1,53 +1,5 @@ -import { gql } from "urql"; -import { OrderCreatedWebhookPayloadFragment } from "../../../../../generated/graphql"; -import { saleorApp } from "../../../../saleor-app"; -import { SaleorAsyncWebhook } from "@saleor/app-sdk/handlers/fetch-api"; import { createClient } from "../../../../lib/create-graphq-client"; - -/** - * Example payload of the webhook. It will be transformed with graphql-codegen to Typescript type: OrderCreatedWebhookPayloadFragment - */ -const OrderCreatedWebhookPayload = gql` - fragment OrderCreatedWebhookPayload on OrderCreated { - order { - userEmail - id - number - user { - email - firstName - lastName - } - } - } -`; - -/** - * Top-level webhook subscription query, that will be attached to the Manifest. - * Saleor will use it to register webhook. - */ -const OrderCreatedGraphqlSubscription = gql` - # Payload fragment must be included in the root query - ${OrderCreatedWebhookPayload} - subscription OrderCreated { - event { - ...OrderCreatedWebhookPayload - } - } -`; - -/** - * Create abstract Webhook. It decorates handler and performs security checks under the hood. - * - * orderCreatedWebhook.getWebhookManifest() must be called in api/manifest too! - */ -export const orderCreatedWebhook = new SaleorAsyncWebhook({ - name: "Order Created in Saleor", - webhookPath: "api-v2/webhooks/order-created", - event: "ORDER_CREATED", - apl: saleorApp.apl, - query: OrderCreatedGraphqlSubscription, -}); +import { orderCreatedWebhook } from "./webhook"; /** * Export decorated Request handler, which adds extra context @@ -95,11 +47,3 @@ export const POST = orderCreatedWebhook.createHandler((request, ctx) => { return new Response("Accepted", { status: 200 }); }); -/** - * Disable body parser for this endpoint, so signature can be verified - */ -export const config = { - api: { - bodyParser: false, - }, -}; diff --git a/src/app/api-v2/webhooks/order-created/webhook.ts b/src/app/api-v2/webhooks/order-created/webhook.ts new file mode 100644 index 0000000..f97cdbd --- /dev/null +++ b/src/app/api-v2/webhooks/order-created/webhook.ts @@ -0,0 +1,49 @@ +import { gql } from "urql"; +import { OrderCreatedWebhookPayloadFragment } from "../../../../../generated/graphql"; +import { saleorApp } from "../../../../saleor-app"; +import { SaleorAsyncWebhook } from "@saleor/app-sdk/handlers/fetch-api"; + +/** + * Example payload of the webhook. It will be transformed with graphql-codegen to Typescript type: OrderCreatedWebhookPayloadFragment + */ +const OrderCreatedWebhookPayload = gql` + fragment OrderCreatedWebhookPayload on OrderCreated { + order { + userEmail + id + number + user { + email + firstName + lastName + } + } + } +`; + +/** + * Top-level webhook subscription query, that will be attached to the Manifest. + * Saleor will use it to register webhook. + */ +const OrderCreatedGraphqlSubscription = gql` + # Payload fragment must be included in the root query + ${OrderCreatedWebhookPayload} + subscription OrderCreated { + event { + ...OrderCreatedWebhookPayload + } + } +`; + +/** + * Create abstract Webhook. It decorates handler and performs security checks under the hood. + * + * orderCreatedWebhook.getWebhookManifest() must be called in api/manifest too! + */ +export const orderCreatedWebhook = new SaleorAsyncWebhook({ + name: "Order Created in Saleor", + webhookPath: "api-v2/webhooks/order-created", + event: "ORDER_CREATED", + apl: saleorApp.apl, + query: OrderCreatedGraphqlSubscription, +}); diff --git a/src/app/api-v2/webhooks/order-filter-shipping-methods/route.ts b/src/app/api-v2/webhooks/order-filter-shipping-methods/route.ts index 82704a1..042c77f 100644 --- a/src/app/api-v2/webhooks/order-filter-shipping-methods/route.ts +++ b/src/app/api-v2/webhooks/order-filter-shipping-methods/route.ts @@ -1,47 +1,7 @@ -import { gql } from "urql"; -import { SaleorSyncWebhook } from "@saleor/app-sdk/handlers/fetch-api"; -import { OrderFilterShippingMethodsPayloadFragment } from "../../../../../generated/graphql"; -import { saleorApp } from "../../../../saleor-app"; - -const OrderFilterShippingMethodsPayload = gql` - fragment OrderFilterShippingMethodsPayload on OrderFilterShippingMethods { - order { - deliveryMethod { - ... on ShippingMethod { - id - name - } - } - } - } -`; - -const OrderFilterShippingMethodsSubscription = gql` - ${OrderFilterShippingMethodsPayload} - subscription OrderFilterShippingMethods { - event { - ...OrderFilterShippingMethodsPayload - } - } -`; - -export const orderFilterShippingMethodsWebhook = - new SaleorSyncWebhook({ - name: "Order Filter Shipping Methods", - webhookPath: "api-v2/webhooks/order-filter-shipping-methods", - event: "ORDER_FILTER_SHIPPING_METHODS", - apl: saleorApp.apl, - query: OrderFilterShippingMethodsSubscription, - }); +import { orderFilterShippingMethodsWebhook } from "./webhook"; export const POST = orderFilterShippingMethodsWebhook.createHandler((request, ctx) => { const { payload } = ctx; console.log("Order Filter Shipping Methods Webhook received with: ", payload); return new Response("{}", { status: 200 }) }); - -export const config = { - api: { - bodyParser: false, - }, -}; diff --git a/src/app/api-v2/webhooks/order-filter-shipping-methods/webhook.ts b/src/app/api-v2/webhooks/order-filter-shipping-methods/webhook.ts new file mode 100644 index 0000000..2859f1c --- /dev/null +++ b/src/app/api-v2/webhooks/order-filter-shipping-methods/webhook.ts @@ -0,0 +1,35 @@ +import { gql } from "urql"; +import { SaleorSyncWebhook } from "@saleor/app-sdk/handlers/fetch-api"; +import { OrderFilterShippingMethodsPayloadFragment } from "../../../../../generated/graphql"; +import { saleorApp } from "../../../../saleor-app"; + +const OrderFilterShippingMethodsPayload = gql` + fragment OrderFilterShippingMethodsPayload on OrderFilterShippingMethods { + order { + deliveryMethod { + ... on ShippingMethod { + id + name + } + } + } + } +`; + +const OrderFilterShippingMethodsSubscription = gql` + ${OrderFilterShippingMethodsPayload} + subscription OrderFilterShippingMethods { + event { + ...OrderFilterShippingMethodsPayload + } + } +`; + +export const orderFilterShippingMethodsWebhook = + new SaleorSyncWebhook({ + name: "Order Filter Shipping Methods", + webhookPath: "api-v2/webhooks/order-filter-shipping-methods", + event: "ORDER_FILTER_SHIPPING_METHODS", + apl: saleorApp.apl, + query: OrderFilterShippingMethodsSubscription, + });