@szymonpiatek/nextwordpress 0.0.15 → 0.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/index.cjs +181 -118
- package/dist/client/index.cjs.map +1 -1
- package/dist/client/index.d.cts +3 -3
- package/dist/client/index.d.ts +3 -3
- package/dist/client/index.js +179 -118
- package/dist/client/index.js.map +1 -1
- package/dist/hooks/index.cjs +181 -118
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.d.cts +15 -3
- package/dist/hooks/index.d.ts +15 -3
- package/dist/hooks/index.js +179 -118
- package/dist/hooks/index.js.map +1 -1
- package/dist/index.cjs +43 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +12 -10
- package/dist/index.d.ts +12 -10
- package/dist/index.js +43 -1
- package/dist/index.js.map +1 -1
- package/dist/server/index.cjs +43 -1
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.d.cts +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.js +43 -1
- package/dist/server/index.js.map +1 -1
- package/dist/{types-D6rih4G8.d.cts → types-CvO7Ijbs.d.cts} +52 -28
- package/dist/{types-D6rih4G8.d.ts → types-CvO7Ijbs.d.ts} +52 -28
- package/package.json +1 -1
package/dist/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shared/url.ts","../../src/shared/errors/codes.ts","../../src/integrations/restApi/core/mutations/posts/mutations.ts","../../src/integrations/restApi/core/mutations/comments/mutations.ts","../../src/integrations/restApi/core/mutations/pages/mutations.ts","../../src/integrations/restApi/core/mutations/categories/mutations.ts","../../src/integrations/restApi/core/mutations/tags/mutations.ts","../../src/integrations/restApi/core/mutations/authors/mutations.ts","../../src/integrations/restApi/core/mutations/menus/mutations.ts","../../src/integrations/restApi/core/mutations/media/mutations.ts","../../src/integrations/restApi/core/client/types.ts","../../src/integrations/restApi/core/client/url.ts","../../src/integrations/restApi/core/client/fetcher.ts","../../src/integrations/restApi/core/mutations/index.ts","../../src/integrations/restApi/core/posts/queries.ts","../../src/integrations/restApi/core/categories/queries.ts","../../src/integrations/restApi/core/tags/queries.ts","../../src/integrations/restApi/core/authors/queries.ts","../../src/integrations/restApi/core/media/queries.ts","../../src/integrations/restApi/core/pages/queries.ts","../../src/integrations/restApi/core/menus/queries.ts","../../src/integrations/restApi/core/comments/queries.ts","../../src/integrations/restApi/core/index.ts","../../src/integrations/restApi/woocommerce/omnibus/queries.ts","../../src/integrations/restApi/woocommerce/client/types.ts","../../src/integrations/restApi/woocommerce/client/errorMap.ts","../../src/integrations/restApi/woocommerce/client/fetcher.ts","../../src/integrations/restApi/woocommerce/products/queries.ts","../../src/integrations/restApi/woocommerce/products/mutations.ts","../../src/integrations/restApi/woocommerce/categories/queries.ts","../../src/integrations/restApi/woocommerce/categories/mutations.ts","../../src/integrations/restApi/woocommerce/tags/queries.ts","../../src/integrations/restApi/woocommerce/tags/mutations.ts","../../src/integrations/restApi/woocommerce/orders/queries.ts","../../src/integrations/restApi/woocommerce/coupons/queries.ts","../../src/integrations/restApi/woocommerce/coupons/mutations.ts","../../src/integrations/restApi/woocommerce/customers/queries.ts","../../src/integrations/restApi/woocommerce/payment_gateways/queries.ts","../../src/integrations/restApi/woocommerce/order_notes/queries.ts","../../src/integrations/restApi/woocommerce/order_refunds/queries.ts","../../src/integrations/restApi/woocommerce/product_attributes/queries.ts","../../src/integrations/restApi/woocommerce/product_reviews/queries.ts","../../src/integrations/restApi/woocommerce/shipping_classes/queries.ts","../../src/integrations/restApi/woocommerce/taxes/queries.ts","../../src/integrations/restApi/woocommerce/shipping/queries.ts","../../src/integrations/restApi/woocommerce/webhooks/queries.ts","../../src/integrations/restApi/woocommerce/settings/queries.ts","../../src/integrations/restApi/woocommerce/reports/queries.ts","../../src/integrations/restApi/woocommerce/data/queries.ts","../../src/integrations/restApi/woocommerce/index.ts","../../src/integrations/restApi/wpulike/queries.ts","../../src/integrations/restApi/contactForm7/types.ts","../../src/integrations/restApi/contactForm7/queries.ts","../../src/integrations/wpGraphQL/client/types.ts","../../src/integrations/wpGraphQL/client/fetcher.ts","../../src/integrations/wpGraphQL/core/posts/queries.ts","../../src/integrations/wpGraphQL/core/pages/queries.ts","../../src/integrations/wpGraphQL/core/categories/queries.ts","../../src/integrations/wpGraphQL/core/tags/queries.ts","../../src/integrations/wpGraphQL/core/authors/queries.ts","../../src/integrations/wpGraphQL/core/menus/queries.ts","../../src/integrations/wpGraphQL/core/comments/queries.ts","../../src/integrations/wpGraphQL/core/media/queries.ts","../../src/integrations/wpGraphQL/core/mutations/posts/mutations.ts","../../src/integrations/wpGraphQL/core/mutations/comments/mutations.ts","../../src/integrations/wpGraphQL/core/mutations/pages/mutations.ts","../../src/integrations/wpGraphQL/core/mutations/categories/mutations.ts","../../src/integrations/wpGraphQL/core/mutations/tags/mutations.ts","../../src/integrations/wpGraphQL/core/mutations/authors/mutations.ts","../../src/integrations/wpGraphQL/core/mutations/media/mutations.ts","../../src/integrations/wpGraphQL/core/mutations/index.ts","../../src/integrations/wpGraphQL/core/index.ts","../../src/integrations/wpGraphQL/yoast/queries.ts","../../src/integrations/wpGraphQL/acf/helpers.ts","../../src/integrations/wpGraphQL/woocommerce/products/queries.ts","../../src/integrations/wpGraphQL/woocommerce/orders/queries.ts","../../src/integrations/wpGraphQL/woocommerce/customers/queries.ts","../../src/integrations/wpGraphQL/woocommerce/categories/queries.ts","../../src/integrations/wpGraphQL/woocommerce/tags/queries.ts","../../src/integrations/wpGraphQL/woocommerce/coupons/queries.ts","../../src/integrations/wpGraphQL/woocommerce/index.ts","../../src/integrations/wpGraphQL/cpt/queries.ts","../../src/nextjs/revalidation.ts","../../src/nextjs/faust.ts","../../src/nextjs/cookieConsent.ts","../../src/auth/applicationPassword.ts","../../src/auth/types.ts","../../src/auth/jwt.ts"],"names":["USER_AGENT","buildUrl","createCategoriesQueries","createCategoriesMutations","createTagsQueries","createTagsMutations","createPostsQueries","DEFAULT_FIRST","BATCH_FIRST","createPagesQueries","createAuthorsQueries","createMenusQueries","createCommentsQueries","createMediaQueries","createPostsMutations","createCommentsMutations","createPagesMutations","createAuthorsMutations","createMediaMutations","createProductsQueries","createOrdersQueries","ADDRESS_FIELDS","createCustomersQueries","CATEGORY_FIELDS","TAG_FIELDS","createCouponsQueries"],"mappings":"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","file":"index.js","sourcesContent":["import type { NextWordpressConfig } from './types';\n\nexport function resolveBaseUrl(config: NextWordpressConfig): string {\n return typeof window === 'undefined' ? config.serverURL : config.clientURL;\n}\n","export const ErrorCode = {\n // WordPress REST API\n WP_REQUEST_FAILED: 'WP_REQUEST_FAILED',\n WP_NOT_FOUND: 'WP_NOT_FOUND',\n WP_UNAUTHORIZED: 'WP_UNAUTHORIZED',\n WP_FORBIDDEN: 'WP_FORBIDDEN',\n // WPGraphQL\n GQL_REQUEST_FAILED: 'GQL_REQUEST_FAILED',\n GQL_NO_DATA: 'GQL_NO_DATA',\n GQL_ERRORS_IN_RESPONSE: 'GQL_ERRORS_IN_RESPONSE',\n // WooCommerce — generic\n WOO_REQUEST_FAILED: 'WOO_REQUEST_FAILED',\n WOO_NOT_FOUND: 'WOO_NOT_FOUND',\n WOO_UNAUTHORIZED: 'WOO_UNAUTHORIZED',\n WOO_FORBIDDEN: 'WOO_FORBIDDEN',\n // WooCommerce — resource-specific\n WOO_COUPON_NOT_FOUND: 'WOO_COUPON_NOT_FOUND',\n WOO_PRODUCT_NOT_FOUND: 'WOO_PRODUCT_NOT_FOUND',\n WOO_ORDER_NOT_FOUND: 'WOO_ORDER_NOT_FOUND',\n WOO_CUSTOMER_NOT_FOUND: 'WOO_CUSTOMER_NOT_FOUND',\n WOO_CATEGORY_NOT_FOUND: 'WOO_CATEGORY_NOT_FOUND',\n WOO_TAG_NOT_FOUND: 'WOO_TAG_NOT_FOUND',\n WOO_REVIEW_NOT_FOUND: 'WOO_REVIEW_NOT_FOUND',\n WOO_WEBHOOK_NOT_FOUND: 'WOO_WEBHOOK_NOT_FOUND',\n WOO_SHIPPING_ZONE_NOT_FOUND: 'WOO_SHIPPING_ZONE_NOT_FOUND',\n // Auth\n AUTH_JWT_FAILED: 'AUTH_JWT_FAILED',\n AUTH_CREDENTIALS_INVALID: 'AUTH_CREDENTIALS_INVALID',\n AUTH_TOKEN_INVALID: 'AUTH_TOKEN_INVALID',\n // Contact Form 7\n CF7_MAIL_SENT: 'CF7_MAIL_SENT',\n CF7_MAIL_FAILED: 'CF7_MAIL_FAILED',\n CF7_VALIDATION_FAILED: 'CF7_VALIDATION_FAILED',\n CF7_SPAM: 'CF7_SPAM',\n CF7_ABORTED: 'CF7_ABORTED',\n} as const;\n\nexport type ErrorCode = (typeof ErrorCode)[keyof typeof ErrorCode];\n\nexport const defaultMessages: Record<ErrorCode, string> = {\n WP_REQUEST_FAILED: 'WordPress API request failed',\n WP_NOT_FOUND: 'WordPress resource not found',\n WP_UNAUTHORIZED: 'WordPress authentication required',\n WP_FORBIDDEN: 'WordPress access denied',\n GQL_REQUEST_FAILED: 'WPGraphQL request failed',\n GQL_NO_DATA: 'No data returned from WPGraphQL',\n GQL_ERRORS_IN_RESPONSE: 'WPGraphQL returned errors',\n WOO_REQUEST_FAILED: 'WooCommerce API request failed',\n WOO_NOT_FOUND: 'WooCommerce resource not found',\n WOO_UNAUTHORIZED: 'WooCommerce authentication required',\n WOO_FORBIDDEN: 'WooCommerce access denied',\n WOO_COUPON_NOT_FOUND: 'Coupon not found',\n WOO_PRODUCT_NOT_FOUND: 'Product not found',\n WOO_ORDER_NOT_FOUND: 'Order not found',\n WOO_CUSTOMER_NOT_FOUND: 'Customer not found',\n WOO_CATEGORY_NOT_FOUND: 'Category not found',\n WOO_TAG_NOT_FOUND: 'Tag not found',\n WOO_REVIEW_NOT_FOUND: 'Product review not found',\n WOO_WEBHOOK_NOT_FOUND: 'Webhook not found',\n WOO_SHIPPING_ZONE_NOT_FOUND: 'Shipping zone not found',\n AUTH_JWT_FAILED: 'JWT authentication failed',\n AUTH_CREDENTIALS_INVALID: 'Invalid credentials',\n AUTH_TOKEN_INVALID: 'JWT token is invalid or expired',\n CF7_MAIL_SENT: 'Thank you for your message.',\n CF7_MAIL_FAILED: 'There was an error trying to send your message.',\n CF7_VALIDATION_FAILED: 'One or more fields have an error. Please check and try again.',\n CF7_SPAM: 'There was an error trying to send your message. Please try later.',\n CF7_ABORTED: 'Message submission has been aborted.',\n};\n\nexport const defaultMessagesPl: Record<ErrorCode, string> = {\n WP_REQUEST_FAILED: 'Błąd żądania do WordPress API',\n WP_NOT_FOUND: 'Zasób WordPress nie istnieje',\n WP_UNAUTHORIZED: 'Wymagane uwierzytelnienie WordPress',\n WP_FORBIDDEN: 'Brak dostępu do zasobu WordPress',\n GQL_REQUEST_FAILED: 'Błąd żądania WPGraphQL',\n GQL_NO_DATA: 'WPGraphQL nie zwróciło danych',\n GQL_ERRORS_IN_RESPONSE: 'WPGraphQL zwróciło błędy',\n WOO_REQUEST_FAILED: 'Błąd żądania do WooCommerce API',\n WOO_NOT_FOUND: 'Zasób WooCommerce nie istnieje',\n WOO_UNAUTHORIZED: 'Wymagane uwierzytelnienie WooCommerce',\n WOO_FORBIDDEN: 'Brak dostępu do zasobu WooCommerce',\n WOO_COUPON_NOT_FOUND: 'Kupon nie istnieje',\n WOO_PRODUCT_NOT_FOUND: 'Produkt nie istnieje',\n WOO_ORDER_NOT_FOUND: 'Zamówienie nie istnieje',\n WOO_CUSTOMER_NOT_FOUND: 'Klient nie istnieje',\n WOO_CATEGORY_NOT_FOUND: 'Kategoria produktów nie istnieje',\n WOO_TAG_NOT_FOUND: 'Tag produktów nie istnieje',\n WOO_REVIEW_NOT_FOUND: 'Opinia o produkcie nie istnieje',\n WOO_WEBHOOK_NOT_FOUND: 'Webhook nie istnieje',\n WOO_SHIPPING_ZONE_NOT_FOUND: 'Strefa wysyłki nie istnieje',\n AUTH_JWT_FAILED: 'Błąd uwierzytelnienia JWT',\n AUTH_CREDENTIALS_INVALID: 'Nieprawidłowe dane logowania',\n AUTH_TOKEN_INVALID: 'Token JWT jest nieprawidłowy lub wygasł',\n CF7_MAIL_SENT: 'Dziękujemy za wiadomość.',\n CF7_MAIL_FAILED: 'Wystąpił błąd podczas wysyłania wiadomości.',\n CF7_VALIDATION_FAILED: 'Jedno lub więcej pól zawiera błąd. Sprawdź i spróbuj ponownie.',\n CF7_SPAM: 'Wystąpił błąd podczas wysyłania wiadomości. Spróbuj później.',\n CF7_ABORTED: 'Wysyłanie formularza zostało przerwane.',\n};\n\nexport function resolveMessage(\n code: ErrorCode,\n overrides?: Partial<Record<ErrorCode, string>>,\n): string {\n return overrides?.[code] ?? defaultMessages[code];\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { Post } from '@restApi/core/posts';\nimport type { CreatePostInput, UpdatePostInput } from './types';\n\nexport function createPostsMutations(fetcher: WordPressFetcher) {\n const { wpMutate } = fetcher;\n\n async function createPost(input: CreatePostInput, authToken: string): Promise<Post> {\n return wpMutate<Post>('/wp-json/wp/v2/posts', input, 'POST', authToken);\n }\n\n async function updatePost(id: number, input: UpdatePostInput, authToken: string): Promise<Post> {\n return wpMutate<Post>(`/wp-json/wp/v2/posts/${id}`, input, 'PATCH', authToken);\n }\n\n async function deletePost(\n id: number,\n authToken: string,\n force = false,\n ): Promise<{ deleted: boolean; previous: Post }> {\n return wpMutate<{ deleted: boolean; previous: Post }>(\n `/wp-json/wp/v2/posts/${id}`,\n { force },\n 'DELETE',\n authToken,\n );\n }\n\n return { createPost, updatePost, deletePost };\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { Comment, CreateCommentInput } from '@restApi/core/comments';\nimport type { UpdateCommentInput } from './types';\n\nexport function createCommentsMutations(fetcher: WordPressFetcher) {\n const { wpMutate } = fetcher;\n\n async function createComment(\n input: CreateCommentInput,\n authToken?: string,\n ): Promise<Comment> {\n return wpMutate<Comment>('/wp-json/wp/v2/comments', input, 'POST', authToken);\n }\n\n async function updateComment(\n id: number,\n input: UpdateCommentInput,\n authToken: string,\n ): Promise<Comment> {\n return wpMutate<Comment>(`/wp-json/wp/v2/comments/${id}`, input, 'PATCH', authToken);\n }\n\n async function deleteComment(\n id: number,\n authToken: string,\n force = false,\n ): Promise<{ deleted: boolean; previous: Comment }> {\n return wpMutate<{ deleted: boolean; previous: Comment }>(\n `/wp-json/wp/v2/comments/${id}`,\n { force },\n 'DELETE',\n authToken,\n );\n }\n\n return { createComment, updateComment, deleteComment };\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { Page } from '@restApi/core/pages';\nimport type { CreatePageInput, UpdatePageInput } from './types';\n\nexport function createPagesMutations(fetcher: WordPressFetcher) {\n const { wpMutate } = fetcher;\n\n async function createPage(input: CreatePageInput, authToken: string): Promise<Page> {\n return wpMutate<Page>('/wp-json/wp/v2/pages', input, 'POST', authToken);\n }\n\n async function updatePage(id: number, input: UpdatePageInput, authToken: string): Promise<Page> {\n return wpMutate<Page>(`/wp-json/wp/v2/pages/${id}`, input, 'PATCH', authToken);\n }\n\n async function deletePage(\n id: number,\n authToken: string,\n force = false,\n ): Promise<{ deleted: boolean; previous: Page }> {\n return wpMutate<{ deleted: boolean; previous: Page }>(\n `/wp-json/wp/v2/pages/${id}`,\n { force },\n 'DELETE',\n authToken,\n );\n }\n\n return { createPage, updatePage, deletePage };\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { Category } from '@restApi/core/categories';\nimport type { CreateCategoryInput, UpdateCategoryInput } from './types';\n\nexport function createCategoriesMutations(fetcher: WordPressFetcher) {\n const { wpMutate } = fetcher;\n\n async function createCategory(\n input: CreateCategoryInput,\n authToken: string,\n ): Promise<Category> {\n return wpMutate<Category>('/wp-json/wp/v2/categories', input, 'POST', authToken);\n }\n\n async function updateCategory(\n id: number,\n input: UpdateCategoryInput,\n authToken: string,\n ): Promise<Category> {\n return wpMutate<Category>(`/wp-json/wp/v2/categories/${id}`, input, 'PATCH', authToken);\n }\n\n async function deleteCategory(\n id: number,\n authToken: string,\n force = false,\n ): Promise<{ deleted: boolean; previous: Category }> {\n return wpMutate<{ deleted: boolean; previous: Category }>(\n `/wp-json/wp/v2/categories/${id}`,\n { force },\n 'DELETE',\n authToken,\n );\n }\n\n return { createCategory, updateCategory, deleteCategory };\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { Tag } from '@restApi/core/tags';\nimport type { CreateTagInput, UpdateTagInput } from './types';\n\nexport function createTagsMutations(fetcher: WordPressFetcher) {\n const { wpMutate } = fetcher;\n\n async function createTag(input: CreateTagInput, authToken: string): Promise<Tag> {\n return wpMutate<Tag>('/wp-json/wp/v2/tags', input, 'POST', authToken);\n }\n\n async function updateTag(id: number, input: UpdateTagInput, authToken: string): Promise<Tag> {\n return wpMutate<Tag>(`/wp-json/wp/v2/tags/${id}`, input, 'PATCH', authToken);\n }\n\n async function deleteTag(\n id: number,\n authToken: string,\n force = false,\n ): Promise<{ deleted: boolean; previous: Tag }> {\n return wpMutate<{ deleted: boolean; previous: Tag }>(\n `/wp-json/wp/v2/tags/${id}`,\n { force },\n 'DELETE',\n authToken,\n );\n }\n\n return { createTag, updateTag, deleteTag };\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { Author } from '@restApi/core/authors';\nimport type { CreateAuthorInput, UpdateAuthorInput } from './types';\n\nexport function createAuthorsMutations(fetcher: WordPressFetcher) {\n const { wpMutate } = fetcher;\n\n async function createAuthor(input: CreateAuthorInput, authToken: string): Promise<Author> {\n return wpMutate<Author>('/wp-json/wp/v2/users', input, 'POST', authToken);\n }\n\n async function updateAuthor(\n id: number,\n input: UpdateAuthorInput,\n authToken: string,\n ): Promise<Author> {\n return wpMutate<Author>(`/wp-json/wp/v2/users/${id}`, input, 'PATCH', authToken);\n }\n\n async function deleteAuthor(\n id: number,\n authToken: string,\n reassign: number,\n ): Promise<{ deleted: boolean; previous: Author }> {\n return wpMutate<{ deleted: boolean; previous: Author }>(\n `/wp-json/wp/v2/users/${id}`,\n { force: true, reassign },\n 'DELETE',\n authToken,\n );\n }\n\n return { createAuthor, updateAuthor, deleteAuthor };\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { Menu, MenuItem } from '@restApi/core/menus';\nimport type {\n CreateMenuInput,\n UpdateMenuInput,\n CreateMenuItemInput,\n UpdateMenuItemInput,\n} from './types';\n\nexport function createMenusMutations(fetcher: WordPressFetcher) {\n const { wpMutate } = fetcher;\n\n async function createMenu(input: CreateMenuInput, authToken: string): Promise<Menu> {\n return wpMutate<Menu>('/wp-json/wp/v2/menus', input, 'POST', authToken);\n }\n\n async function updateMenu(id: number, input: UpdateMenuInput, authToken: string): Promise<Menu> {\n return wpMutate<Menu>(`/wp-json/wp/v2/menus/${id}`, input, 'PATCH', authToken);\n }\n\n async function deleteMenu(\n id: number,\n authToken: string,\n ): Promise<{ deleted: boolean; previous: Menu }> {\n return wpMutate<{ deleted: boolean; previous: Menu }>(\n `/wp-json/wp/v2/menus/${id}`,\n {},\n 'DELETE',\n authToken,\n );\n }\n\n async function createMenuItem(\n input: CreateMenuItemInput,\n authToken: string,\n ): Promise<MenuItem> {\n return wpMutate<MenuItem>('/wp-json/wp/v2/menu-items', input, 'POST', authToken);\n }\n\n async function updateMenuItem(\n id: number,\n input: UpdateMenuItemInput,\n authToken: string,\n ): Promise<MenuItem> {\n return wpMutate<MenuItem>(`/wp-json/wp/v2/menu-items/${id}`, input, 'PATCH', authToken);\n }\n\n async function deleteMenuItem(\n id: number,\n authToken: string,\n force = false,\n ): Promise<{ deleted: boolean; previous: MenuItem }> {\n return wpMutate<{ deleted: boolean; previous: MenuItem }>(\n `/wp-json/wp/v2/menu-items/${id}`,\n { force },\n 'DELETE',\n authToken,\n );\n }\n\n return { createMenu, updateMenu, deleteMenu, createMenuItem, updateMenuItem, deleteMenuItem };\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { FeaturedMedia } from '@restApi/core/media';\nimport type { UploadMediaInput, UpdateMediaInput } from './types';\n\nexport function createMediaMutations(fetcher: WordPressFetcher) {\n const { wpMutate, wpUpload } = fetcher;\n\n async function uploadMedia(\n input: UploadMediaInput,\n authToken: string,\n ): Promise<FeaturedMedia> {\n const media = await wpUpload<FeaturedMedia>(\n '/wp-json/wp/v2/media',\n input.file,\n input.filename,\n input.mimeType,\n authToken,\n );\n\n if (input.title || input.caption || input.alt_text) {\n return wpMutate<FeaturedMedia>(\n `/wp-json/wp/v2/media/${media.id}`,\n {\n ...(input.title && { title: input.title }),\n ...(input.caption && { caption: input.caption }),\n ...(input.alt_text && { alt_text: input.alt_text }),\n },\n 'PATCH',\n authToken,\n );\n }\n\n return media;\n }\n\n async function updateMedia(\n id: number,\n input: UpdateMediaInput,\n authToken: string,\n ): Promise<FeaturedMedia> {\n return wpMutate<FeaturedMedia>(`/wp-json/wp/v2/media/${id}`, input, 'PATCH', authToken);\n }\n\n async function deleteMedia(\n id: number,\n authToken: string,\n force = true,\n ): Promise<{ deleted: boolean; previous: FeaturedMedia }> {\n return wpMutate<{ deleted: boolean; previous: FeaturedMedia }>(\n `/wp-json/wp/v2/media/${id}`,\n { force },\n 'DELETE',\n authToken,\n );\n }\n\n return { uploadMedia, updateMedia, deleteMedia };\n}\n","import type { ErrorCode } from '@shared';\n\nexport interface WordPressPaginationHeaders {\n total: number;\n totalPages: number;\n}\n\nexport interface WordPressResponse<T> {\n data: T;\n headers: WordPressPaginationHeaders;\n}\n\nexport class WordPressAPIError extends Error {\n constructor(\n public readonly code: ErrorCode,\n public readonly status: number,\n public readonly endpoint: string,\n message: string,\n detail?: string,\n ) {\n super(detail ? `${message}: ${detail}` : message);\n this.name = 'WordPressAPIError';\n }\n}\n","import type { NextWordpressConfig } from '@shared';\nimport { resolveBaseUrl } from '@shared';\n\nexport function buildUrl(\n config: NextWordpressConfig,\n path: string,\n query?: Record<string, unknown>,\n): string {\n const base = resolveBaseUrl(config);\n if (!query) return `${base}${path}`;\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined && value !== null) {\n params.set(key, String(value));\n }\n }\n const qs = params.toString();\n return qs ? `${base}${path}?${qs}` : `${base}${path}`;\n}\n","import type { NextWordpressConfig } from '@shared';\nimport { ErrorCode, resolveMessage } from '@shared';\nimport type { WordPressResponse } from './types';\nimport { WordPressAPIError } from './types';\nimport { buildUrl } from './url';\n\nconst USER_AGENT = 'NextWordpress Client';\n\ninterface NextRequestInit extends RequestInit {\n next?: {\n revalidate?: number | false;\n tags?: string[];\n };\n}\n\nfunction resolveWpErrorCode(status: number): ErrorCode {\n if (status === 401) return ErrorCode.WP_UNAUTHORIZED;\n if (status === 403) return ErrorCode.WP_FORBIDDEN;\n if (status === 404) return ErrorCode.WP_NOT_FOUND;\n return ErrorCode.WP_REQUEST_FAILED;\n}\n\nexport function createFetcher(config: NextWordpressConfig) {\n const cacheTtl = config.cacheTTL ?? 300;\n\n async function doFetch(url: string, init: NextRequestInit = {}): Promise<Response> {\n const response = await fetch(url, init);\n if (!response.ok) {\n const code = resolveWpErrorCode(response.status);\n throw new WordPressAPIError(\n code,\n response.status,\n url,\n resolveMessage(code, config.errorMessages),\n response.statusText,\n );\n }\n return response;\n }\n\n async function wpFetch<T>(\n path: string,\n query?: Record<string, unknown>,\n tags: string[] = ['wordpress'],\n ): Promise<T> {\n const url = buildUrl(config, path, query);\n const res = await doFetch(url, {\n headers: { 'User-Agent': USER_AGENT },\n next: { tags, revalidate: cacheTtl },\n } as NextRequestInit);\n return (await res.json()) as T;\n }\n\n async function wpFetchGraceful<T>(\n path: string,\n fallback: T,\n query?: Record<string, unknown>,\n tags: string[] = ['wordpress'],\n ): Promise<T> {\n try {\n return await wpFetch<T>(path, query, tags);\n } catch {\n console.warn(`WordPress fetch failed for ${path}`);\n return fallback;\n }\n }\n\n async function wpFetchPaginated<T>(\n path: string,\n query?: Record<string, unknown>,\n tags: string[] = ['wordpress'],\n ): Promise<WordPressResponse<T[]>> {\n const url = buildUrl(config, path, query);\n const res = await doFetch(url, {\n headers: { 'User-Agent': USER_AGENT },\n next: { tags, revalidate: cacheTtl },\n } as NextRequestInit);\n return {\n data: (await res.json()) as T[],\n headers: {\n total: parseInt(res.headers.get('X-WP-Total') ?? '0', 10),\n totalPages: parseInt(res.headers.get('X-WP-TotalPages') ?? '0', 10),\n },\n };\n }\n\n async function wpFetchPaginatedGraceful<T>(\n path: string,\n query?: Record<string, unknown>,\n tags: string[] = ['wordpress'],\n ): Promise<WordPressResponse<T[]>> {\n const empty: WordPressResponse<T[]> = { data: [], headers: { total: 0, totalPages: 0 } };\n try {\n return await wpFetchPaginated<T>(path, query, tags);\n } catch {\n console.warn(`WordPress paginated fetch failed for ${path}`);\n return empty;\n }\n }\n\n async function wpMutate<T>(\n path: string,\n body: unknown,\n method: 'POST' | 'PUT' | 'PATCH' | 'DELETE' = 'POST',\n authToken?: string,\n ): Promise<T> {\n const url = buildUrl(config, path);\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'User-Agent': USER_AGENT,\n };\n if (authToken) {\n headers['Authorization'] = authToken.startsWith('Basic ') || authToken.startsWith('Bearer ')\n ? authToken\n : `Bearer ${authToken}`;\n }\n const res = await doFetch(url, {\n method,\n headers,\n body: JSON.stringify(body),\n cache: 'no-store',\n });\n return (await res.json()) as T;\n }\n\n async function wpUpload<T>(\n path: string,\n file: Blob | Buffer,\n filename: string,\n mimeType: string,\n authToken: string,\n ): Promise<T> {\n const url = buildUrl(config, path);\n const res = await doFetch(url, {\n method: 'POST',\n headers: {\n 'Content-Disposition': `attachment; filename=\"${filename}\"`,\n 'Content-Type': mimeType,\n 'User-Agent': USER_AGENT,\n 'Authorization': authToken.startsWith('Basic ') || authToken.startsWith('Bearer ')\n ? authToken\n : `Bearer ${authToken}`,\n },\n body: file as BodyInit,\n cache: 'no-store',\n });\n return (await res.json()) as T;\n }\n\n return { wpFetch, wpFetchGraceful, wpFetchPaginated, wpFetchPaginatedGraceful, wpMutate, wpUpload };\n}\n\nexport type WordPressFetcher = ReturnType<typeof createFetcher>;\n","export type { RestPostStatus, CreatePostInput, UpdatePostInput } from './posts';\nexport { createPostsMutations } from './posts';\n\nexport type { UpdateCommentInput } from './comments';\nexport { createCommentsMutations } from './comments';\n\nexport type { RestPageStatus, CreatePageInput, UpdatePageInput } from './pages';\nexport { createPagesMutations } from './pages';\n\nexport type { CreateCategoryInput, UpdateCategoryInput } from './categories';\nexport { createCategoriesMutations } from './categories';\n\nexport type { CreateTagInput, UpdateTagInput } from './tags';\nexport { createTagsMutations } from './tags';\n\nexport type { CreateAuthorInput, UpdateAuthorInput } from './authors';\nexport { createAuthorsMutations } from './authors';\n\nexport type { CreateMenuInput, UpdateMenuInput, CreateMenuItemInput, UpdateMenuItemInput } from './menus';\nexport { createMenusMutations } from './menus';\n\nexport type { UploadMediaInput, UpdateMediaInput } from './media';\nexport { createMediaMutations } from './media';\n\nimport type { NextWordpressConfig } from '@shared';\nimport { createFetcher } from '@restApi/core/client';\nimport { createPostsMutations } from './posts';\nimport { createCommentsMutations } from './comments';\nimport { createPagesMutations } from './pages';\nimport { createCategoriesMutations } from './categories';\nimport { createTagsMutations } from './tags';\nimport { createAuthorsMutations } from './authors';\nimport { createMenusMutations } from './menus';\nimport { createMediaMutations } from './media';\n\nexport function createWordPressMutationsClient(config: NextWordpressConfig) {\n const fetcher = createFetcher(config);\n return {\n ...createPostsMutations(fetcher),\n ...createCommentsMutations(fetcher),\n ...createPagesMutations(fetcher),\n ...createCategoriesMutations(fetcher),\n ...createTagsMutations(fetcher),\n ...createAuthorsMutations(fetcher),\n ...createMenusMutations(fetcher),\n ...createMediaMutations(fetcher),\n };\n}\n","import type { WordPressFetcher, WordPressResponse } from '@restApi/core/client';\nimport type { Post } from './types';\n\nexport function createPostsQueries(fetcher: WordPressFetcher) {\n const { wpFetch, wpFetchGraceful, wpFetchPaginated, wpFetchPaginatedGraceful } = fetcher;\n\n async function getPostsPaginated(\n page: number = 1,\n perPage: number = 9,\n filterParams?: {\n author?: string;\n tag?: string;\n category?: string;\n search?: string;\n },\n ): Promise<WordPressResponse<Post[]>> {\n const query: Record<string, unknown> = { _embed: true, per_page: perPage, page };\n const cacheTags = ['wordpress', 'posts', `posts-page-${page}`];\n\n if (filterParams?.search) { query.search = filterParams.search; cacheTags.push('posts-search'); }\n if (filterParams?.author) { query.author = filterParams.author; cacheTags.push(`posts-author-${filterParams.author}`); }\n if (filterParams?.tag) { query.tags = filterParams.tag; cacheTags.push(`posts-tag-${filterParams.tag}`); }\n if (filterParams?.category) { query.categories = filterParams.category; cacheTags.push(`posts-category-${filterParams.category}`); }\n\n return wpFetchPaginatedGraceful<Post>('/wp-json/wp/v2/posts', query, cacheTags);\n }\n\n async function getRecentPosts(filterParams?: {\n author?: string;\n tag?: string;\n category?: string;\n search?: string;\n }): Promise<Post[]> {\n const query: Record<string, unknown> = { _embed: true, per_page: 100 };\n if (filterParams?.search) query.search = filterParams.search;\n if (filterParams?.author) query.author = filterParams.author;\n if (filterParams?.tag) query.tags = filterParams.tag;\n if (filterParams?.category) query.categories = filterParams.category;\n return wpFetchGraceful<Post[]>('/wp-json/wp/v2/posts', [], query, ['wordpress', 'posts']);\n }\n\n async function getPostById(id: number): Promise<Post> {\n return wpFetch<Post>(`/wp-json/wp/v2/posts/${id}`);\n }\n\n async function getPostBySlug(slug: string): Promise<Post | undefined> {\n const posts = await wpFetchGraceful<Post[]>('/wp-json/wp/v2/posts', [], { slug, _embed: true });\n return posts[0];\n }\n\n async function getPostsByCategory(categoryId: number): Promise<Post[]> {\n return wpFetch<Post[]>('/wp-json/wp/v2/posts', { categories: categoryId });\n }\n\n async function getPostsByTag(tagId: number): Promise<Post[]> {\n return wpFetch<Post[]>('/wp-json/wp/v2/posts', { tags: tagId });\n }\n\n async function getPostsByAuthor(authorId: number): Promise<Post[]> {\n return wpFetch<Post[]>('/wp-json/wp/v2/posts', { author: authorId });\n }\n\n async function getPostsByCategoryPaginated(\n categoryId: number,\n page: number = 1,\n perPage: number = 9,\n ): Promise<WordPressResponse<Post[]>> {\n return wpFetchPaginatedGraceful<Post>('/wp-json/wp/v2/posts', {\n _embed: true, per_page: perPage, page, categories: categoryId,\n });\n }\n\n async function getPostsByTagPaginated(\n tagId: number,\n page: number = 1,\n perPage: number = 9,\n ): Promise<WordPressResponse<Post[]>> {\n return wpFetchPaginatedGraceful<Post>('/wp-json/wp/v2/posts', {\n _embed: true, per_page: perPage, page, tags: tagId,\n });\n }\n\n async function getPostsByAuthorPaginated(\n authorId: number,\n page: number = 1,\n perPage: number = 9,\n ): Promise<WordPressResponse<Post[]>> {\n return wpFetchPaginatedGraceful<Post>('/wp-json/wp/v2/posts', {\n _embed: true, per_page: perPage, page, author: authorId,\n });\n }\n\n async function getAllPostSlugs(): Promise<{ slug: string }[]> {\n try {\n const allSlugs: { slug: string }[] = [];\n let page = 1;\n let hasMore = true;\n while (hasMore) {\n const response = await wpFetchPaginated<Post>(\n '/wp-json/wp/v2/posts',\n { per_page: 100, page, _fields: 'slug' },\n );\n allSlugs.push(...response.data.map((post) => ({ slug: post.slug })));\n hasMore = page < response.headers.totalPages;\n page++;\n }\n return allSlugs;\n } catch {\n console.warn('WordPress unavailable, skipping static generation for posts');\n return [];\n }\n }\n\n async function getAllPostsForSitemap(): Promise<{ slug: string; modified: string }[]> {\n try {\n const allPosts: { slug: string; modified: string }[] = [];\n let page = 1;\n let hasMore = true;\n while (hasMore) {\n const response = await wpFetchPaginated<Post>(\n '/wp-json/wp/v2/posts',\n { per_page: 100, page, _fields: 'slug,modified' },\n );\n allPosts.push(...response.data.map((post) => ({ slug: post.slug, modified: post.modified })));\n hasMore = page < response.headers.totalPages;\n page++;\n }\n return allPosts;\n } catch {\n console.warn('WordPress unavailable, skipping sitemap generation');\n return [];\n }\n }\n\n return {\n getPostsPaginated,\n getRecentPosts,\n getPostById,\n getPostBySlug,\n getPostsByCategory,\n getPostsByTag,\n getPostsByAuthor,\n getPostsByCategoryPaginated,\n getPostsByTagPaginated,\n getPostsByAuthorPaginated,\n getAllPostSlugs,\n getAllPostsForSitemap,\n };\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { Category } from './types';\n\nexport function createCategoriesQueries(fetcher: WordPressFetcher) {\n const { wpFetch, wpFetchGraceful } = fetcher;\n\n async function getAllCategories(): Promise<Category[]> {\n return wpFetchGraceful<Category[]>('/wp-json/wp/v2/categories', [], { per_page: 100 }, [\n 'wordpress',\n 'categories',\n ]);\n }\n\n async function getCategoryById(id: number): Promise<Category> {\n return wpFetch<Category>(`/wp-json/wp/v2/categories/${id}`);\n }\n\n async function getCategoryBySlug(slug: string): Promise<Category> {\n const categories = await wpFetch<Category[]>('/wp-json/wp/v2/categories', { slug });\n return categories[0];\n }\n\n async function searchCategories(query: string): Promise<Category[]> {\n return wpFetchGraceful<Category[]>('/wp-json/wp/v2/categories', [], {\n search: query,\n per_page: 100,\n });\n }\n\n return { getAllCategories, getCategoryById, getCategoryBySlug, searchCategories };\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { Tag } from './types';\n\nexport function createTagsQueries(fetcher: WordPressFetcher) {\n const { wpFetch, wpFetchGraceful } = fetcher;\n\n async function getAllTags(): Promise<Tag[]> {\n return wpFetchGraceful<Tag[]>('/wp-json/wp/v2/tags', [], { per_page: 100 }, [\n 'wordpress',\n 'tags',\n ]);\n }\n\n async function getTagById(id: number): Promise<Tag> {\n return wpFetch<Tag>(`/wp-json/wp/v2/tags/${id}`);\n }\n\n async function getTagBySlug(slug: string): Promise<Tag> {\n const tags = await wpFetch<Tag[]>('/wp-json/wp/v2/tags', { slug });\n return tags[0];\n }\n\n async function getTagsByPost(postId: number): Promise<Tag[]> {\n return wpFetch<Tag[]>('/wp-json/wp/v2/tags', { post: postId });\n }\n\n async function searchTags(query: string): Promise<Tag[]> {\n return wpFetchGraceful<Tag[]>('/wp-json/wp/v2/tags', [], { search: query, per_page: 100 });\n }\n\n return { getAllTags, getTagById, getTagBySlug, getTagsByPost, searchTags };\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { Author } from './types';\n\nexport function createAuthorsQueries(fetcher: WordPressFetcher) {\n const { wpFetch, wpFetchGraceful } = fetcher;\n\n async function getAllAuthors(): Promise<Author[]> {\n return wpFetchGraceful<Author[]>('/wp-json/wp/v2/users', [], { per_page: 100 }, [\n 'wordpress',\n 'authors',\n ]);\n }\n\n async function getAuthorById(id: number): Promise<Author> {\n return wpFetch<Author>(`/wp-json/wp/v2/users/${id}`);\n }\n\n async function getAuthorBySlug(slug: string): Promise<Author> {\n const users = await wpFetch<Author[]>('/wp-json/wp/v2/users', { slug });\n return users[0];\n }\n\n async function searchAuthors(query: string): Promise<Author[]> {\n return wpFetchGraceful<Author[]>('/wp-json/wp/v2/users', [], { search: query, per_page: 100 });\n }\n\n return { getAllAuthors, getAuthorById, getAuthorBySlug, searchAuthors };\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { FeaturedMedia } from './types';\n\nexport function createMediaQueries(fetcher: WordPressFetcher) {\n const { wpFetch } = fetcher;\n\n async function getFeaturedMediaById(id: number): Promise<FeaturedMedia> {\n return wpFetch<FeaturedMedia>(`/wp-json/wp/v2/media/${id}`);\n }\n\n return { getFeaturedMediaById };\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { Page } from './types';\n\nexport function createPagesQueries(fetcher: WordPressFetcher) {\n const { wpFetch, wpFetchGraceful } = fetcher;\n\n async function getAllPages(): Promise<Page[]> {\n return wpFetchGraceful<Page[]>('/wp-json/wp/v2/pages', [], { per_page: 100 }, [\n 'wordpress',\n 'pages',\n ]);\n }\n\n async function getPageById(id: number): Promise<Page> {\n return wpFetch<Page>(`/wp-json/wp/v2/pages/${id}`);\n }\n\n async function getPageBySlug(slug: string): Promise<Page | undefined> {\n const pages = await wpFetchGraceful<Page[]>('/wp-json/wp/v2/pages', [], { slug });\n return pages[0];\n }\n\n return { getAllPages, getPageById, getPageBySlug };\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { Menu, MenuItem, MenuLocation, MenuWithItems } from './types';\n\nexport function createMenusQueries(fetcher: WordPressFetcher) {\n const { wpFetch, wpFetchGraceful } = fetcher;\n\n async function getMenus(): Promise<Menu[]> {\n return wpFetchGraceful<Menu[]>('/wp-json/wp/v2/menus', [], undefined, ['wordpress', 'menus']);\n }\n\n async function getMenuById(id: number): Promise<Menu> {\n return wpFetch<Menu>(`/wp-json/wp/v2/menus/${id}`, undefined, ['wordpress', 'menus', `menu-${id}`]);\n }\n\n async function getMenuBySlug(slug: string): Promise<Menu | undefined> {\n const menus = await wpFetchGraceful<Menu[]>('/wp-json/wp/v2/menus', [], { slug }, ['wordpress', 'menus']);\n return menus[0];\n }\n\n async function getMenuItemsByMenuId(menuId: number): Promise<MenuItem[]> {\n return wpFetchGraceful<MenuItem[]>(\n '/wp-json/wp/v2/menu-items',\n [],\n { menus: menuId, per_page: 100, orderby: 'menu_order', order: 'asc' },\n ['wordpress', 'menus', `menu-items-${menuId}`],\n );\n }\n\n async function getMenuLocations(): Promise<Record<string, MenuLocation>> {\n return wpFetchGraceful<Record<string, MenuLocation>>(\n '/wp-json/wp/v2/menu-locations',\n {},\n undefined,\n ['wordpress', 'menus', 'menu-locations'],\n );\n }\n\n async function getMenuByLocation(location: string): Promise<MenuWithItems | undefined> {\n const locations = await getMenuLocations();\n const loc = locations[location];\n if (!loc || !loc.menu) return undefined;\n\n const [menu, items] = await Promise.all([\n getMenuById(loc.menu),\n getMenuItemsByMenuId(loc.menu),\n ]);\n\n return { menu, items };\n }\n\n return {\n getMenus,\n getMenuById,\n getMenuBySlug,\n getMenuItemsByMenuId,\n getMenuLocations,\n getMenuByLocation,\n };\n}\n","import type { WordPressFetcher, WordPressResponse } from '@restApi/core/client';\nimport type { Comment, CreateCommentInput } from './types';\n\nexport function createCommentsQueries(fetcher: WordPressFetcher) {\n const { wpFetch, wpFetchGraceful, wpFetchPaginatedGraceful, wpMutate } = fetcher;\n\n async function getCommentsByPostId(\n postId: number,\n page: number = 1,\n perPage: number = 10,\n ): Promise<WordPressResponse<Comment[]>> {\n return wpFetchPaginatedGraceful<Comment>(\n '/wp-json/wp/v2/comments',\n { post: postId, per_page: perPage, page, status: 'approve' },\n ['wordpress', 'comments', `comments-post-${postId}`],\n );\n }\n\n async function getAllCommentsByPostId(postId: number): Promise<Comment[]> {\n return wpFetchGraceful<Comment[]>(\n '/wp-json/wp/v2/comments',\n [],\n { post: postId, per_page: 100, status: 'approve' },\n ['wordpress', 'comments', `comments-post-${postId}`],\n );\n }\n\n async function getCommentById(id: number): Promise<Comment> {\n return wpFetch<Comment>(`/wp-json/wp/v2/comments/${id}`, undefined, [\n 'wordpress',\n 'comments',\n `comment-${id}`,\n ]);\n }\n\n async function getCommentReplies(parentId: number): Promise<Comment[]> {\n return wpFetchGraceful<Comment[]>(\n '/wp-json/wp/v2/comments',\n [],\n { parent: parentId, per_page: 100, status: 'approve' },\n ['wordpress', 'comments', `comments-parent-${parentId}`],\n );\n }\n\n async function createComment(input: CreateCommentInput): Promise<Comment> {\n return wpMutate<Comment>('/wp-json/wp/v2/comments', input, 'POST');\n }\n\n return {\n getCommentsByPostId,\n getAllCommentsByPostId,\n getCommentById,\n getCommentReplies,\n createComment,\n };\n}\n","export type { Post, PostEmbedded } from '@restApi/core/posts';\nexport type { Category } from '@restApi/core/categories';\nexport type { Tag } from '@restApi/core/tags';\nexport type { Author, EmbeddedAuthor, EmbeddedTerm } from '@restApi/core/authors';\nexport type { FeaturedMedia, MediaDetails, MediaSize } from '@restApi/core/media';\nexport type { Page } from '@restApi/core/pages';\nexport type { Menu, MenuItem, MenuLocation, MenuWithItems } from '@restApi/core/menus';\nexport type { Comment, CommentAuthorAvatar, CreateCommentInput } from '@restApi/core/comments';\nexport * from '@restApi/core/blocks';\nexport type { RestPostStatus, CreatePostInput, UpdatePostInput } from '@restApi/core/mutations';\nexport type { UpdateCommentInput } from '@restApi/core/mutations';\nexport type { RestPageStatus, CreatePageInput, UpdatePageInput } from '@restApi/core/mutations';\nexport type { CreateCategoryInput, UpdateCategoryInput } from '@restApi/core/mutations';\nexport type { CreateTagInput, UpdateTagInput } from '@restApi/core/mutations';\nexport type { CreateAuthorInput, UpdateAuthorInput } from '@restApi/core/mutations';\nexport type { CreateMenuInput, UpdateMenuInput, CreateMenuItemInput, UpdateMenuItemInput } from '@restApi/core/mutations';\nexport type { UploadMediaInput, UpdateMediaInput } from '@restApi/core/mutations';\nexport {\n createPostsMutations,\n createCommentsMutations,\n createPagesMutations,\n createCategoriesMutations,\n createTagsMutations,\n createAuthorsMutations,\n createMenusMutations,\n createMediaMutations,\n createWordPressMutationsClient,\n} from '@restApi/core/mutations';\n\nexport { WordPressAPIError } from '@restApi/core/client';\n\nimport type { NextWordpressConfig } from '@shared';\nimport { createFetcher } from '@restApi/core/client';\nimport { createPostsQueries } from '@restApi/core/posts';\nimport { createCategoriesQueries } from '@restApi/core/categories';\nimport { createTagsQueries } from '@restApi/core/tags';\nimport { createAuthorsQueries } from '@restApi/core/authors';\nimport { createMediaQueries } from '@restApi/core/media';\nimport { createPagesQueries } from '@restApi/core/pages';\nimport { createMenusQueries } from '@restApi/core/menus';\nimport { createCommentsQueries } from '@restApi/core/comments';\n\nexport function createWordPressClient(config: NextWordpressConfig) {\n const fetcher = createFetcher(config);\n\n return {\n ...createPostsQueries(fetcher),\n ...createCategoriesQueries(fetcher),\n ...createTagsQueries(fetcher),\n ...createAuthorsQueries(fetcher),\n ...createMediaQueries(fetcher),\n ...createPagesQueries(fetcher),\n ...createMenusQueries(fetcher),\n ...createCommentsQueries(fetcher),\n };\n}\n","import type { WCProduct, WCProductVariation } from '@restApi/woocommerce/products';\nimport type {\n OmnibusProductData,\n OmnibusPriceEntry,\n WCProductWithOmnibus,\n WCProductVariationWithOmnibus,\n} from './types';\n\nconst META_KEY_LOWEST_PRICE = 'wpo_lowest_price';\nconst META_KEY_PRICE_HISTORY = '_alg_wc_price_history';\n\nfunction extractMetaValue<T>(\n meta_data: Array<{ id: number; key: string; value: unknown }>,\n key: string,\n): T | undefined {\n return meta_data.find((m) => m.key === key)?.value as T | undefined;\n}\n\nfunction parseHistory(raw: unknown): OmnibusPriceEntry[] {\n if (!raw || typeof raw !== 'object') return [];\n\n if (Array.isArray(raw)) {\n return raw\n .filter((e) => e && typeof e.price === 'string' && typeof e.date === 'string')\n .map((e) => ({ price: e.price as string, date: e.date as string }));\n }\n\n // Object keyed by date: { \"2024-01-01\": \"99.00\", ... }\n return Object.entries(raw as Record<string, string>)\n .map(([date, price]) => ({ date, price }))\n .sort((a, b) => a.date.localeCompare(b.date));\n}\n\nexport function extractOmnibusData(\n meta_data: Array<{ id: number; key: string; value: unknown }>,\n): OmnibusProductData {\n const lowestPrice = extractMetaValue<string>(meta_data, META_KEY_LOWEST_PRICE) ?? null;\n const rawHistory = extractMetaValue<unknown>(meta_data, META_KEY_PRICE_HISTORY);\n const priceHistory = parseHistory(rawHistory);\n\n return { lowestPrice, priceHistory };\n}\n\nexport function withOmnibus(product: WCProduct): WCProductWithOmnibus {\n return { ...product, omnibus: extractOmnibusData(product.meta_data) };\n}\n\nexport function withOmnibusVariation(variation: WCProductVariation & { meta_data?: Array<{ id: number; key: string; value: unknown }> }): WCProductVariationWithOmnibus {\n return {\n ...variation,\n omnibus: extractOmnibusData(variation.meta_data ?? []),\n };\n}\n","import type { ErrorCode } from '@shared';\n\nexport interface WooCommerceConfig {\n serverURL: string;\n clientURL?: string;\n consumerKey: string;\n consumerSecret: string;\n cacheTTL?: number;\n /** Override default error messages by error code. */\n errorMessages?: Partial<Record<ErrorCode, string>>;\n}\n\nexport interface WooCommercePaginationHeaders {\n total: number;\n totalPages: number;\n}\n\nexport interface WooCommerceResponse<T> {\n data: T;\n headers: WooCommercePaginationHeaders;\n}\n\nexport class WooCommerceError extends Error {\n constructor(\n public readonly code: ErrorCode,\n public readonly status: number,\n public readonly endpoint: string,\n message: string,\n public readonly upstreamCode?: string,\n detail?: string,\n ) {\n super(detail ? `${message}: ${detail}` : message);\n this.name = 'WooCommerceError';\n }\n}\n","import { ErrorCode } from '@shared';\n\nconst upstreamToErrorCode: Partial<Record<string, ErrorCode>> = {\n woocommerce_rest_coupon_invalid_id: ErrorCode.WOO_COUPON_NOT_FOUND,\n woocommerce_rest_product_invalid_id: ErrorCode.WOO_PRODUCT_NOT_FOUND,\n woocommerce_rest_order_invalid_id: ErrorCode.WOO_ORDER_NOT_FOUND,\n woocommerce_rest_customer_invalid_id: ErrorCode.WOO_CUSTOMER_NOT_FOUND,\n woocommerce_rest_term_invalid: ErrorCode.WOO_CATEGORY_NOT_FOUND,\n woocommerce_rest_review_invalid_id: ErrorCode.WOO_REVIEW_NOT_FOUND,\n woocommerce_rest_webhook_invalid_id: ErrorCode.WOO_WEBHOOK_NOT_FOUND,\n woocommerce_rest_shipping_zone_invalid_id: ErrorCode.WOO_SHIPPING_ZONE_NOT_FOUND,\n};\n\nexport function resolveWooErrorCode(status: number, upstreamCode?: string): ErrorCode {\n if (status === 401) return ErrorCode.WOO_UNAUTHORIZED;\n if (status === 403) return ErrorCode.WOO_FORBIDDEN;\n if (status === 404) {\n if (upstreamCode) {\n const mapped = upstreamToErrorCode[upstreamCode];\n if (mapped) return mapped;\n }\n return ErrorCode.WOO_NOT_FOUND;\n }\n return ErrorCode.WOO_REQUEST_FAILED;\n}\n","import { resolveMessage } from '@shared';\nimport type { WooCommerceConfig, WooCommerceResponse } from './types';\nimport { WooCommerceError } from './types';\nimport { resolveWooErrorCode } from './errorMap';\n\nconst USER_AGENT = 'NextWordpress WooCommerce Client';\nconst DEFAULT_CACHE_TTL = 3600;\n\ninterface NextRequestInit extends RequestInit {\n next?: {\n revalidate?: number | false;\n tags?: string[];\n };\n}\n\nfunction toQueryString(params: Record<string, unknown>): string {\n const pairs: string[] = [];\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined || value === null) continue;\n pairs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);\n }\n return pairs.join('&');\n}\n\nexport function createWooCommerceFetcher(config: WooCommerceConfig) {\n const cacheTTL = config.cacheTTL ?? DEFAULT_CACHE_TTL;\n\n function withAuth(query?: Record<string, unknown>): Record<string, unknown> {\n return { ...query, consumer_key: config.consumerKey, consumer_secret: config.consumerSecret };\n }\n\n function buildUrl(path: string, query?: Record<string, unknown>): string {\n const base =\n typeof window !== 'undefined' && config.clientURL ? config.clientURL : config.serverURL;\n return `${base}${path}?${toQueryString(withAuth(query))}`;\n }\n\n async function throwWooError(response: Response, url: string): Promise<never> {\n const body = (await response.json().catch(() => ({}))) as {\n message?: string;\n code?: string;\n };\n const errorCode = resolveWooErrorCode(response.status, body.code);\n throw new WooCommerceError(\n errorCode,\n response.status,\n url,\n resolveMessage(errorCode, config.errorMessages),\n body.code,\n body.message,\n );\n }\n\n async function wcFetch<T>(\n path: string,\n query?: Record<string, unknown>,\n tags: string[] = ['woocommerce'],\n options?: RequestInit,\n ): Promise<T> {\n const url = buildUrl(path, query);\n const isMutation = options?.method && options.method !== 'GET';\n const noStore = options?.cache === 'no-store';\n\n const response = await fetch(url, {\n ...options,\n headers: {\n 'User-Agent': USER_AGENT,\n 'Content-Type': 'application/json',\n ...(options?.headers as Record<string, string>),\n },\n next: isMutation || noStore ? undefined : { tags, revalidate: cacheTTL },\n } as NextRequestInit);\n\n if (!response.ok) {\n await throwWooError(response, url);\n }\n\n return response.json() as Promise<T>;\n }\n\n async function wcFetchGraceful<T>(\n path: string,\n fallback: T,\n query?: Record<string, unknown>,\n tags: string[] = ['woocommerce'],\n ): Promise<T> {\n try {\n return await wcFetch<T>(path, query, tags);\n } catch (err) {\n console.warn(`WooCommerce fetch failed for ${path}`, err);\n return fallback;\n }\n }\n\n async function wcFetchPaginated<T>(\n path: string,\n query?: Record<string, unknown>,\n tags: string[] = ['woocommerce'],\n ): Promise<WooCommerceResponse<T[]>> {\n const url = buildUrl(path, query);\n\n const response = await fetch(url, {\n headers: { 'User-Agent': USER_AGENT },\n next: { tags, revalidate: cacheTTL },\n } as NextRequestInit);\n\n if (!response.ok) {\n await throwWooError(response, url);\n }\n\n return {\n data: (await response.json()) as T[],\n headers: {\n total: parseInt(response.headers.get('X-WP-Total') ?? '0', 10),\n totalPages: parseInt(response.headers.get('X-WP-TotalPages') ?? '0', 10),\n },\n };\n }\n\n async function wcFetchPaginatedGraceful<T>(\n path: string,\n query?: Record<string, unknown>,\n tags: string[] = ['woocommerce'],\n ): Promise<WooCommerceResponse<T[]>> {\n const empty: WooCommerceResponse<T[]> = { data: [], headers: { total: 0, totalPages: 0 } };\n try {\n return await wcFetchPaginated<T>(path, query, tags);\n } catch (err) {\n console.warn(`WooCommerce paginated fetch failed for ${path}`, err);\n return empty;\n }\n }\n\n async function wcMutate<T>(\n path: string,\n body: unknown,\n method: 'POST' | 'PUT' | 'PATCH' | 'DELETE' = 'POST',\n ): Promise<T> {\n return wcFetch<T>(path, undefined, ['woocommerce'], {\n method,\n body: JSON.stringify(body),\n });\n }\n\n return { wcFetch, wcFetchGraceful, wcFetchPaginated, wcFetchPaginatedGraceful, wcMutate };\n}\n\nexport type WooCommerceFetcher = ReturnType<typeof createWooCommerceFetcher>;\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WooCommerceResponse } from '@restApi/woocommerce/client/types';\nimport type { WCProduct, WCProductFilterParams, WCProductVariation } from './types';\n\nfunction buildProductQuery(\n base: Record<string, unknown>,\n filterParams?: WCProductFilterParams,\n): Record<string, unknown> {\n const query = { ...base };\n if (!filterParams) return query;\n\n if (filterParams.category !== undefined) query.category = filterParams.category;\n if (filterParams.tag !== undefined) query.tag = filterParams.tag;\n if (filterParams.featured !== undefined) query.featured = filterParams.featured;\n if (filterParams.on_sale !== undefined) query.on_sale = filterParams.on_sale;\n if (filterParams.min_price !== undefined) query.min_price = filterParams.min_price;\n if (filterParams.max_price !== undefined) query.max_price = filterParams.max_price;\n if (filterParams.search !== undefined) query.search = filterParams.search;\n if (filterParams.orderby !== undefined) query.orderby = filterParams.orderby;\n if (filterParams.order !== undefined) query.order = filterParams.order;\n if (filterParams.stock_status !== undefined) query.stock_status = filterParams.stock_status;\n if (filterParams.type !== undefined) query.type = filterParams.type;\n\n return query;\n}\n\nexport function createProductsQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful, wcFetchPaginated, wcFetchPaginatedGraceful } = fetcher;\n\n async function getProducts(filterParams?: WCProductFilterParams): Promise<WCProduct[]> {\n const query = buildProductQuery({ per_page: 100, status: 'publish' }, filterParams);\n return wcFetchGraceful<WCProduct[]>('/wp-json/wc/v3/products', [], query, [\n 'woocommerce',\n 'products',\n ]);\n }\n\n async function getProductsPaginated(\n page: number = 1,\n perPage: number = 12,\n filterParams?: WCProductFilterParams,\n ): Promise<WooCommerceResponse<WCProduct[]>> {\n const query = buildProductQuery({ per_page: perPage, page, status: 'publish' }, filterParams);\n const cacheTags = ['woocommerce', 'products', `products-page-${page}`];\n\n if (filterParams?.category) cacheTags.push(`products-category-${filterParams.category}`);\n if (filterParams?.tag) cacheTags.push(`products-tag-${filterParams.tag}`);\n if (filterParams?.search) cacheTags.push('products-search');\n\n return wcFetchPaginatedGraceful<WCProduct>('/wp-json/wc/v3/products', query, cacheTags);\n }\n\n async function getProductById(id: number): Promise<WCProduct> {\n return wcFetch<WCProduct>(`/wp-json/wc/v3/products/${id}`, undefined, [\n 'woocommerce',\n 'products',\n `product-${id}`,\n ]);\n }\n\n async function getProductBySlug(slug: string): Promise<WCProduct | undefined> {\n const products = await wcFetchGraceful<WCProduct[]>(\n '/wp-json/wc/v3/products',\n [],\n { slug },\n ['woocommerce', 'products', `product-slug-${slug}`],\n );\n return products[0];\n }\n\n async function getFeaturedProducts(limit: number = 10): Promise<WCProduct[]> {\n return wcFetchGraceful<WCProduct[]>(\n '/wp-json/wc/v3/products',\n [],\n { featured: true, per_page: limit, status: 'publish' },\n ['woocommerce', 'products', 'featured'],\n );\n }\n\n async function getOnSaleProducts(limit: number = 10): Promise<WCProduct[]> {\n return wcFetchGraceful<WCProduct[]>(\n '/wp-json/wc/v3/products',\n [],\n { on_sale: true, per_page: limit, status: 'publish' },\n ['woocommerce', 'products', 'on-sale'],\n );\n }\n\n async function getRelatedProducts(productId: number): Promise<WCProduct[]> {\n const product = await getProductById(productId);\n if (!product.related_ids.length) return [];\n\n return wcFetchGraceful<WCProduct[]>(\n '/wp-json/wc/v3/products',\n [],\n { include: product.related_ids.join(','), per_page: 10, status: 'publish' },\n ['woocommerce', 'products', `related-${productId}`],\n );\n }\n\n async function getAllProductSlugs(): Promise<{ slug: string }[]> {\n try {\n const allSlugs: { slug: string }[] = [];\n let page = 1;\n let hasMore = true;\n\n while (hasMore) {\n const response = await wcFetchPaginated<WCProduct>('/wp-json/wc/v3/products', {\n per_page: 100,\n page,\n status: 'publish',\n _fields: 'slug',\n });\n\n allSlugs.push(...response.data.map((p) => ({ slug: p.slug })));\n hasMore = page < response.headers.totalPages;\n page++;\n }\n\n return allSlugs;\n } catch {\n console.warn('WooCommerce unavailable, skipping static generation for products');\n return [];\n }\n }\n\n async function getProductVariations(productId: number): Promise<WCProductVariation[]> {\n return wcFetchGraceful<WCProductVariation[]>(\n `/wp-json/wc/v3/products/${productId}/variations`,\n [],\n { per_page: 100 },\n ['woocommerce', 'products', `product-${productId}`, 'variations'],\n );\n }\n\n async function getProductVariationById(\n productId: number,\n variationId: number,\n ): Promise<WCProductVariation> {\n return wcFetch<WCProductVariation>(\n `/wp-json/wc/v3/products/${productId}/variations/${variationId}`,\n undefined,\n ['woocommerce', 'products', `product-${productId}`, `variation-${variationId}`],\n );\n }\n\n return {\n getProducts,\n getProductsPaginated,\n getProductById,\n getProductBySlug,\n getFeaturedProducts,\n getOnSaleProducts,\n getRelatedProducts,\n getAllProductSlugs,\n getProductVariations,\n getProductVariationById,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCProduct } from './types';\n\nexport type WCProductStatus = 'draft' | 'pending' | 'private' | 'publish';\n\nexport interface CreateProductInput {\n name: string;\n type?: 'simple' | 'variable' | 'grouped' | 'external';\n status?: WCProductStatus;\n description?: string;\n short_description?: string;\n sku?: string;\n regular_price?: string;\n sale_price?: string;\n manage_stock?: boolean;\n stock_quantity?: number;\n stock_status?: 'instock' | 'outofstock' | 'onbackorder';\n categories?: { id: number }[];\n tags?: { id: number }[];\n images?: { src: string; alt?: string }[];\n featured?: boolean;\n virtual?: boolean;\n downloadable?: boolean;\n weight?: string;\n attributes?: { id?: number; name: string; options: string[]; visible?: boolean; variation?: boolean }[];\n}\n\nexport interface UpdateProductInput extends Partial<Omit<CreateProductInput, 'name'>> {\n name?: string;\n}\n\nexport function createProductsMutations(fetcher: WooCommerceFetcher) {\n const { wcMutate } = fetcher;\n\n async function createProduct(input: CreateProductInput): Promise<WCProduct> {\n return wcMutate<WCProduct>('/wp-json/wc/v3/products', input, 'POST');\n }\n\n async function updateProduct(id: number, input: UpdateProductInput): Promise<WCProduct> {\n return wcMutate<WCProduct>(`/wp-json/wc/v3/products/${id}`, input, 'PUT');\n }\n\n async function deleteProduct(\n id: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCProduct }> {\n return wcMutate<{ deleted: boolean; previous: WCProduct }>(\n `/wp-json/wc/v3/products/${id}`,\n { force },\n 'DELETE',\n );\n }\n\n return { createProduct, updateProduct, deleteProduct };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCProduct } from '@restApi/woocommerce/products/types';\nimport type { WCProductCategory } from './types';\n\nexport function createCategoriesQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful } = fetcher;\n\n async function getAllProductCategories(): Promise<WCProductCategory[]> {\n return wcFetchGraceful<WCProductCategory[]>(\n '/wp-json/wc/v3/products/categories',\n [],\n { per_page: 100, hide_empty: false },\n ['woocommerce', 'product-categories'],\n );\n }\n\n async function getProductCategoryById(id: number): Promise<WCProductCategory> {\n return wcFetch<WCProductCategory>(\n `/wp-json/wc/v3/products/categories/${id}`,\n undefined,\n ['woocommerce', 'product-categories', `product-category-${id}`],\n );\n }\n\n async function getProductCategoryBySlug(slug: string): Promise<WCProductCategory | undefined> {\n const categories = await wcFetchGraceful<WCProductCategory[]>(\n '/wp-json/wc/v3/products/categories',\n [],\n { slug },\n ['woocommerce', 'product-categories', `product-category-slug-${slug}`],\n );\n return categories[0];\n }\n\n async function getProductsByCategory(\n categoryId: number,\n limit: number = 100,\n ): Promise<WCProduct[]> {\n return wcFetchGraceful<WCProduct[]>(\n '/wp-json/wc/v3/products',\n [],\n { category: categoryId, per_page: limit, status: 'publish' },\n ['woocommerce', 'products', `products-category-${categoryId}`],\n );\n }\n\n async function getProductsByCategorySlug(categorySlug: string): Promise<WCProduct[]> {\n const category = await getProductCategoryBySlug(categorySlug);\n if (!category) return [];\n return getProductsByCategory(category.id);\n }\n\n return {\n getAllProductCategories,\n getProductCategoryById,\n getProductCategoryBySlug,\n getProductsByCategory,\n getProductsByCategorySlug,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCProductCategory } from './types';\n\nexport interface CreateProductCategoryInput {\n name: string;\n slug?: string;\n parent?: number;\n description?: string;\n display?: 'default' | 'products' | 'subcategories' | 'both';\n image?: { src: string; alt?: string };\n menu_order?: number;\n}\n\nexport type UpdateProductCategoryInput = Partial<CreateProductCategoryInput>;\n\nexport function createCategoriesMutations(fetcher: WooCommerceFetcher) {\n const { wcMutate } = fetcher;\n\n async function createProductCategory(\n input: CreateProductCategoryInput,\n ): Promise<WCProductCategory> {\n return wcMutate<WCProductCategory>('/wp-json/wc/v3/products/categories', input, 'POST');\n }\n\n async function updateProductCategory(\n id: number,\n input: UpdateProductCategoryInput,\n ): Promise<WCProductCategory> {\n return wcMutate<WCProductCategory>(\n `/wp-json/wc/v3/products/categories/${id}`,\n input,\n 'PUT',\n );\n }\n\n async function deleteProductCategory(\n id: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCProductCategory }> {\n return wcMutate<{ deleted: boolean; previous: WCProductCategory }>(\n `/wp-json/wc/v3/products/categories/${id}`,\n { force },\n 'DELETE',\n );\n }\n\n return { createProductCategory, updateProductCategory, deleteProductCategory };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCProduct } from '@restApi/woocommerce/products/types';\nimport type { WCProductTag } from './types';\n\nexport function createTagsQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful } = fetcher;\n\n async function getAllProductTags(): Promise<WCProductTag[]> {\n return wcFetchGraceful<WCProductTag[]>(\n '/wp-json/wc/v3/products/tags',\n [],\n { per_page: 100 },\n ['woocommerce', 'product-tags'],\n );\n }\n\n async function getProductTagById(id: number): Promise<WCProductTag> {\n return wcFetch<WCProductTag>(`/wp-json/wc/v3/products/tags/${id}`, undefined, [\n 'woocommerce',\n 'product-tags',\n `product-tag-${id}`,\n ]);\n }\n\n async function getProductsByTag(tagId: number, limit: number = 100): Promise<WCProduct[]> {\n return wcFetchGraceful<WCProduct[]>(\n '/wp-json/wc/v3/products',\n [],\n { tag: tagId, per_page: limit },\n ['woocommerce', 'products', `products-tag-${tagId}`],\n );\n }\n\n return {\n getAllProductTags,\n getProductTagById,\n getProductsByTag,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCProductTag } from './types';\n\nexport interface CreateProductTagInput {\n name: string;\n slug?: string;\n description?: string;\n}\n\nexport type UpdateProductTagInput = Partial<CreateProductTagInput>;\n\nexport function createTagsMutations(fetcher: WooCommerceFetcher) {\n const { wcMutate } = fetcher;\n\n async function createProductTag(input: CreateProductTagInput): Promise<WCProductTag> {\n return wcMutate<WCProductTag>('/wp-json/wc/v3/products/tags', input, 'POST');\n }\n\n async function updateProductTag(\n id: number,\n input: UpdateProductTagInput,\n ): Promise<WCProductTag> {\n return wcMutate<WCProductTag>(`/wp-json/wc/v3/products/tags/${id}`, input, 'PUT');\n }\n\n async function deleteProductTag(\n id: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCProductTag }> {\n return wcMutate<{ deleted: boolean; previous: WCProductTag }>(\n `/wp-json/wc/v3/products/tags/${id}`,\n { force },\n 'DELETE',\n );\n }\n\n return { createProductTag, updateProductTag, deleteProductTag };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCCreateOrderInput, WCOrder } from './types';\n\nexport function createOrdersQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful, wcMutate } = fetcher;\n\n async function createOrder(input: WCCreateOrderInput): Promise<WCOrder> {\n return wcMutate<WCOrder>('/wp-json/wc/v3/orders', input, 'POST');\n }\n\n async function getOrderById(id: number): Promise<WCOrder> {\n return wcFetch<WCOrder>(`/wp-json/wc/v3/orders/${id}`, undefined, [\n 'woocommerce',\n 'orders',\n `order-${id}`,\n ]);\n }\n\n async function updateOrder(id: number, data: Partial<WCCreateOrderInput>): Promise<WCOrder> {\n return wcMutate<WCOrder>(`/wp-json/wc/v3/orders/${id}`, data, 'PUT');\n }\n\n async function getOrdersByCustomer(customerId: number): Promise<WCOrder[]> {\n return wcFetchGraceful<WCOrder[]>(\n '/wp-json/wc/v3/orders',\n [],\n { customer: customerId, per_page: 100 },\n ['woocommerce', 'orders', `orders-customer-${customerId}`],\n );\n }\n\n async function deleteOrder(\n id: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCOrder }> {\n return wcMutate<{ deleted: boolean; previous: WCOrder }>(\n `/wp-json/wc/v3/orders/${id}`,\n { force },\n 'DELETE',\n );\n }\n\n return {\n createOrder,\n getOrderById,\n updateOrder,\n getOrdersByCustomer,\n deleteOrder,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCCoupon } from './types';\n\nexport function createCouponsQueries(fetcher: WooCommerceFetcher) {\n const { wcFetchGraceful } = fetcher;\n\n async function getCouponByCode(code: string): Promise<WCCoupon | undefined> {\n const coupons = await wcFetchGraceful<WCCoupon[]>(\n '/wp-json/wc/v3/coupons',\n [],\n { code },\n ['woocommerce', 'coupons'],\n );\n return coupons[0];\n }\n\n async function validateCoupon(\n code: string,\n ): Promise<{ valid: boolean; coupon?: WCCoupon; reason?: string }> {\n const coupon = await getCouponByCode(code);\n\n if (!coupon) return { valid: false, reason: 'Coupon not found' };\n\n if (coupon.date_expires) {\n const expiry = new Date(coupon.date_expires);\n if (expiry < new Date()) return { valid: false, reason: 'Coupon has expired', coupon };\n }\n\n if (coupon.usage_limit !== null && coupon.usage_count >= coupon.usage_limit) {\n return { valid: false, reason: 'Coupon usage limit reached', coupon };\n }\n\n return { valid: true, coupon };\n }\n\n return {\n getCouponByCode,\n validateCoupon,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCCoupon } from './types';\n\nexport interface CreateCouponInput {\n code: string;\n discount_type?: 'percent' | 'fixed_cart' | 'fixed_product';\n amount?: string;\n description?: string;\n date_expires?: string | null;\n individual_use?: boolean;\n product_ids?: number[];\n excluded_product_ids?: number[];\n usage_limit?: number | null;\n usage_limit_per_user?: number | null;\n free_shipping?: boolean;\n minimum_amount?: string;\n maximum_amount?: string;\n}\n\nexport type UpdateCouponInput = Partial<CreateCouponInput>;\n\nexport function createCouponsMutations(fetcher: WooCommerceFetcher) {\n const { wcMutate } = fetcher;\n\n async function createCoupon(input: CreateCouponInput): Promise<WCCoupon> {\n return wcMutate<WCCoupon>('/wp-json/wc/v3/coupons', input, 'POST');\n }\n\n async function updateCoupon(id: number, input: UpdateCouponInput): Promise<WCCoupon> {\n return wcMutate<WCCoupon>(`/wp-json/wc/v3/coupons/${id}`, input, 'PUT');\n }\n\n async function deleteCoupon(\n id: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCCoupon }> {\n return wcMutate<{ deleted: boolean; previous: WCCoupon }>(\n `/wp-json/wc/v3/coupons/${id}`,\n { force },\n 'DELETE',\n );\n }\n\n return { createCoupon, updateCoupon, deleteCoupon };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCAddress } from '@restApi/woocommerce/shared/types';\nimport type { WCCustomer } from './types';\n\nexport interface UpdateCustomerInput {\n email?: string;\n first_name?: string;\n last_name?: string;\n username?: string;\n password?: string;\n billing?: Partial<WCAddress>;\n shipping?: Partial<Omit<WCAddress, 'email' | 'phone'>>;\n meta_data?: { key: string; value: unknown }[];\n}\n\nexport function createCustomersQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful, wcMutate } = fetcher;\n\n async function getCustomerById(id: number): Promise<WCCustomer> {\n return wcFetch<WCCustomer>(`/wp-json/wc/v3/customers/${id}`, undefined, [\n 'woocommerce',\n 'customers',\n `customer-${id}`,\n ]);\n }\n\n async function getCustomerByEmail(email: string): Promise<WCCustomer | undefined> {\n const customers = await wcFetchGraceful<WCCustomer[]>(\n '/wp-json/wc/v3/customers',\n [],\n { email },\n ['woocommerce', 'customers'],\n );\n return customers[0];\n }\n\n async function getCustomerByEmailNoCache(email: string): Promise<WCCustomer | undefined> {\n try {\n const customers = await wcFetch<WCCustomer[]>(\n '/wp-json/wc/v3/customers',\n { email },\n ['woocommerce', 'customers'],\n { cache: 'no-store' },\n );\n return customers[0];\n } catch {\n return undefined;\n }\n }\n\n async function createCustomer(\n data: Pick<WCCustomer, 'email' | 'first_name' | 'last_name'> & {\n username?: string;\n password?: string;\n billing?: Partial<WCAddress>;\n shipping?: Partial<Omit<WCAddress, 'email' | 'phone'>>;\n },\n ): Promise<WCCustomer> {\n return wcFetch<WCCustomer>(\n '/wp-json/wc/v3/customers',\n undefined,\n ['woocommerce', 'customers'],\n { method: 'POST', body: JSON.stringify(data) },\n );\n }\n\n async function updateCustomer(id: number, data: UpdateCustomerInput): Promise<WCCustomer> {\n return wcMutate<WCCustomer>(`/wp-json/wc/v3/customers/${id}`, data, 'PUT');\n }\n\n async function deleteCustomer(\n id: number,\n reassign?: number,\n ): Promise<{ deleted: boolean; previous: WCCustomer }> {\n return wcMutate<{ deleted: boolean; previous: WCCustomer }>(\n `/wp-json/wc/v3/customers/${id}`,\n { force: true, ...(reassign !== undefined && { reassign }) },\n 'DELETE',\n );\n }\n\n return {\n getCustomerById,\n getCustomerByEmail,\n getCustomerByEmailNoCache,\n createCustomer,\n updateCustomer,\n deleteCustomer,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCPaymentGateway } from './types';\n\nexport function createPaymentGatewaysQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful } = fetcher;\n\n async function getPaymentGateways(): Promise<WCPaymentGateway[]> {\n return wcFetchGraceful<WCPaymentGateway[]>(\n '/wp-json/wc/v3/payment_gateways',\n [],\n undefined,\n ['woocommerce', 'payment_gateways'],\n );\n }\n\n async function getEnabledPaymentGateways(): Promise<WCPaymentGateway[]> {\n const gateways = await wcFetchGraceful<WCPaymentGateway[]>(\n '/wp-json/wc/v3/payment_gateways',\n [],\n undefined,\n ['woocommerce', 'payment_gateways'],\n );\n return gateways.filter((g) => g.enabled);\n }\n\n async function getPaymentGatewayById(id: string): Promise<WCPaymentGateway> {\n return wcFetch<WCPaymentGateway>(\n `/wp-json/wc/v3/payment_gateways/${id}`,\n undefined,\n ['woocommerce', 'payment_gateways', `payment_gateway-${id}`],\n );\n }\n\n return {\n getPaymentGateways,\n getEnabledPaymentGateways,\n getPaymentGatewayById,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCCreateOrderNoteInput, WCOrderNote } from './types';\n\nexport function createOrderNotesQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful, wcMutate } = fetcher;\n\n async function getNotesByOrderId(orderId: number): Promise<WCOrderNote[]> {\n return wcFetchGraceful<WCOrderNote[]>(\n `/wp-json/wc/v3/orders/${orderId}/notes`,\n [],\n undefined,\n ['woocommerce', 'order_notes', `order-${orderId}-notes`],\n );\n }\n\n async function getOrderNoteById(orderId: number, noteId: number): Promise<WCOrderNote> {\n return wcFetch<WCOrderNote>(\n `/wp-json/wc/v3/orders/${orderId}/notes/${noteId}`,\n undefined,\n ['woocommerce', 'order_notes', `order-${orderId}-note-${noteId}`],\n );\n }\n\n async function createOrderNote(\n orderId: number,\n input: WCCreateOrderNoteInput,\n ): Promise<WCOrderNote> {\n return wcMutate<WCOrderNote>(\n `/wp-json/wc/v3/orders/${orderId}/notes`,\n input,\n 'POST',\n );\n }\n\n async function deleteOrderNote(\n orderId: number,\n noteId: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCOrderNote }> {\n return wcMutate<{ deleted: boolean; previous: WCOrderNote }>(\n `/wp-json/wc/v3/orders/${orderId}/notes/${noteId}`,\n { force },\n 'DELETE',\n );\n }\n\n return {\n getNotesByOrderId,\n getOrderNoteById,\n createOrderNote,\n deleteOrderNote,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCCreateOrderRefundInput, WCOrderRefund } from './types';\n\nexport function createOrderRefundsQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful, wcMutate } = fetcher;\n\n async function getRefundsByOrderId(orderId: number): Promise<WCOrderRefund[]> {\n return wcFetchGraceful<WCOrderRefund[]>(\n `/wp-json/wc/v3/orders/${orderId}/refunds`,\n [],\n undefined,\n ['woocommerce', 'order_refunds', `order-${orderId}-refunds`],\n );\n }\n\n async function getOrderRefundById(orderId: number, refundId: number): Promise<WCOrderRefund> {\n return wcFetch<WCOrderRefund>(\n `/wp-json/wc/v3/orders/${orderId}/refunds/${refundId}`,\n undefined,\n ['woocommerce', 'order_refunds', `order-${orderId}-refund-${refundId}`],\n );\n }\n\n async function createOrderRefund(\n orderId: number,\n input: WCCreateOrderRefundInput,\n ): Promise<WCOrderRefund> {\n return wcMutate<WCOrderRefund>(\n `/wp-json/wc/v3/orders/${orderId}/refunds`,\n input,\n 'POST',\n );\n }\n\n async function deleteOrderRefund(\n orderId: number,\n refundId: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCOrderRefund }> {\n return wcMutate<{ deleted: boolean; previous: WCOrderRefund }>(\n `/wp-json/wc/v3/orders/${orderId}/refunds/${refundId}`,\n { force },\n 'DELETE',\n );\n }\n\n return {\n getRefundsByOrderId,\n getOrderRefundById,\n createOrderRefund,\n deleteOrderRefund,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type {\n WCProductAttribute,\n WCAttributeTerm,\n CreateProductAttributeInput,\n UpdateProductAttributeInput,\n CreateAttributeTermInput,\n UpdateAttributeTermInput,\n} from './types';\n\nexport function createProductAttributesQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful, wcMutate } = fetcher;\n\n async function getProductAttributes(): Promise<WCProductAttribute[]> {\n return wcFetchGraceful<WCProductAttribute[]>(\n '/wp-json/wc/v3/products/attributes',\n [],\n undefined,\n ['woocommerce', 'product_attributes'],\n );\n }\n\n async function getProductAttributeById(id: number): Promise<WCProductAttribute> {\n return wcFetch<WCProductAttribute>(\n `/wp-json/wc/v3/products/attributes/${id}`,\n undefined,\n ['woocommerce', 'product_attributes', `attribute-${id}`],\n );\n }\n\n async function createProductAttribute(\n input: CreateProductAttributeInput,\n ): Promise<WCProductAttribute> {\n return wcMutate<WCProductAttribute>('/wp-json/wc/v3/products/attributes', input, 'POST');\n }\n\n async function updateProductAttribute(\n id: number,\n input: UpdateProductAttributeInput,\n ): Promise<WCProductAttribute> {\n return wcMutate<WCProductAttribute>(\n `/wp-json/wc/v3/products/attributes/${id}`,\n input,\n 'PUT',\n );\n }\n\n async function deleteProductAttribute(\n id: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCProductAttribute }> {\n return wcMutate<{ deleted: boolean; previous: WCProductAttribute }>(\n `/wp-json/wc/v3/products/attributes/${id}`,\n { force },\n 'DELETE',\n );\n }\n\n async function getAttributeTerms(attributeId: number): Promise<WCAttributeTerm[]> {\n return wcFetchGraceful<WCAttributeTerm[]>(\n `/wp-json/wc/v3/products/attributes/${attributeId}/terms`,\n [],\n undefined,\n ['woocommerce', 'attribute_terms', `attribute-${attributeId}-terms`],\n );\n }\n\n async function getAttributeTermById(\n attributeId: number,\n termId: number,\n ): Promise<WCAttributeTerm> {\n return wcFetch<WCAttributeTerm>(\n `/wp-json/wc/v3/products/attributes/${attributeId}/terms/${termId}`,\n undefined,\n ['woocommerce', 'attribute_terms', `attribute-${attributeId}-term-${termId}`],\n );\n }\n\n async function createAttributeTerm(\n attributeId: number,\n input: CreateAttributeTermInput,\n ): Promise<WCAttributeTerm> {\n return wcMutate<WCAttributeTerm>(\n `/wp-json/wc/v3/products/attributes/${attributeId}/terms`,\n input,\n 'POST',\n );\n }\n\n async function updateAttributeTerm(\n attributeId: number,\n termId: number,\n input: UpdateAttributeTermInput,\n ): Promise<WCAttributeTerm> {\n return wcMutate<WCAttributeTerm>(\n `/wp-json/wc/v3/products/attributes/${attributeId}/terms/${termId}`,\n input,\n 'PUT',\n );\n }\n\n async function deleteAttributeTerm(\n attributeId: number,\n termId: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCAttributeTerm }> {\n return wcMutate<{ deleted: boolean; previous: WCAttributeTerm }>(\n `/wp-json/wc/v3/products/attributes/${attributeId}/terms/${termId}`,\n { force },\n 'DELETE',\n );\n }\n\n return {\n getProductAttributes,\n getProductAttributeById,\n createProductAttribute,\n updateProductAttribute,\n deleteProductAttribute,\n getAttributeTerms,\n getAttributeTermById,\n createAttributeTerm,\n updateAttributeTerm,\n deleteAttributeTerm,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type {\n WCProductReview,\n WCProductReviewFilterParams,\n CreateProductReviewInput,\n UpdateProductReviewInput,\n} from './types';\n\nexport function createProductReviewsQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful, wcMutate } = fetcher;\n\n async function getProductReviews(\n params?: WCProductReviewFilterParams,\n ): Promise<WCProductReview[]> {\n return wcFetchGraceful<WCProductReview[]>(\n '/wp-json/wc/v3/products/reviews',\n [],\n params as Record<string, unknown>,\n ['woocommerce', 'product_reviews'],\n );\n }\n\n async function getProductReviewsByProductId(productId: number): Promise<WCProductReview[]> {\n return wcFetchGraceful<WCProductReview[]>(\n '/wp-json/wc/v3/products/reviews',\n [],\n { product: [productId] },\n ['woocommerce', 'product_reviews', `reviews-product-${productId}`],\n );\n }\n\n async function getProductReviewById(id: number): Promise<WCProductReview> {\n return wcFetch<WCProductReview>(\n `/wp-json/wc/v3/products/reviews/${id}`,\n undefined,\n ['woocommerce', 'product_reviews', `review-${id}`],\n );\n }\n\n async function createProductReview(input: CreateProductReviewInput): Promise<WCProductReview> {\n return wcMutate<WCProductReview>('/wp-json/wc/v3/products/reviews', input, 'POST');\n }\n\n async function updateProductReview(\n id: number,\n input: UpdateProductReviewInput,\n ): Promise<WCProductReview> {\n return wcMutate<WCProductReview>(`/wp-json/wc/v3/products/reviews/${id}`, input, 'PUT');\n }\n\n async function deleteProductReview(\n id: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCProductReview }> {\n return wcMutate<{ deleted: boolean; previous: WCProductReview }>(\n `/wp-json/wc/v3/products/reviews/${id}`,\n { force },\n 'DELETE',\n );\n }\n\n return {\n getProductReviews,\n getProductReviewsByProductId,\n getProductReviewById,\n createProductReview,\n updateProductReview,\n deleteProductReview,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type {\n WCShippingClass,\n CreateShippingClassInput,\n UpdateShippingClassInput,\n} from './types';\n\nexport function createShippingClassesQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful, wcMutate } = fetcher;\n\n async function getShippingClasses(): Promise<WCShippingClass[]> {\n return wcFetchGraceful<WCShippingClass[]>(\n '/wp-json/wc/v3/products/shipping_classes',\n [],\n undefined,\n ['woocommerce', 'shipping_classes'],\n );\n }\n\n async function getShippingClassById(id: number): Promise<WCShippingClass> {\n return wcFetch<WCShippingClass>(\n `/wp-json/wc/v3/products/shipping_classes/${id}`,\n undefined,\n ['woocommerce', 'shipping_classes', `shipping-class-${id}`],\n );\n }\n\n async function createShippingClass(input: CreateShippingClassInput): Promise<WCShippingClass> {\n return wcMutate<WCShippingClass>('/wp-json/wc/v3/products/shipping_classes', input, 'POST');\n }\n\n async function updateShippingClass(\n id: number,\n input: UpdateShippingClassInput,\n ): Promise<WCShippingClass> {\n return wcMutate<WCShippingClass>(\n `/wp-json/wc/v3/products/shipping_classes/${id}`,\n input,\n 'PUT',\n );\n }\n\n async function deleteShippingClass(\n id: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCShippingClass }> {\n return wcMutate<{ deleted: boolean; previous: WCShippingClass }>(\n `/wp-json/wc/v3/products/shipping_classes/${id}`,\n { force },\n 'DELETE',\n );\n }\n\n return {\n getShippingClasses,\n getShippingClassById,\n createShippingClass,\n updateShippingClass,\n deleteShippingClass,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type {\n WCTaxRate,\n WCTaxClass,\n CreateTaxRateInput,\n UpdateTaxRateInput,\n CreateTaxClassInput,\n} from './types';\n\nexport function createTaxesQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful, wcMutate } = fetcher;\n\n async function getTaxRates(params?: { class?: string; per_page?: number }): Promise<WCTaxRate[]> {\n return wcFetchGraceful<WCTaxRate[]>(\n '/wp-json/wc/v3/taxes',\n [],\n params,\n ['woocommerce', 'tax_rates'],\n );\n }\n\n async function getTaxRateById(id: number): Promise<WCTaxRate> {\n return wcFetch<WCTaxRate>(\n `/wp-json/wc/v3/taxes/${id}`,\n undefined,\n ['woocommerce', 'tax_rates', `tax-rate-${id}`],\n );\n }\n\n async function createTaxRate(input: CreateTaxRateInput): Promise<WCTaxRate> {\n return wcMutate<WCTaxRate>('/wp-json/wc/v3/taxes', input, 'POST');\n }\n\n async function updateTaxRate(id: number, input: UpdateTaxRateInput): Promise<WCTaxRate> {\n return wcMutate<WCTaxRate>(`/wp-json/wc/v3/taxes/${id}`, input, 'PUT');\n }\n\n async function deleteTaxRate(\n id: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCTaxRate }> {\n return wcMutate<{ deleted: boolean; previous: WCTaxRate }>(\n `/wp-json/wc/v3/taxes/${id}`,\n { force },\n 'DELETE',\n );\n }\n\n async function getTaxClasses(): Promise<WCTaxClass[]> {\n return wcFetchGraceful<WCTaxClass[]>(\n '/wp-json/wc/v3/taxes/classes',\n [],\n undefined,\n ['woocommerce', 'tax_classes'],\n );\n }\n\n async function createTaxClass(input: CreateTaxClassInput): Promise<WCTaxClass> {\n return wcMutate<WCTaxClass>('/wp-json/wc/v3/taxes/classes', input, 'POST');\n }\n\n async function deleteTaxClass(\n slug: string,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCTaxClass }> {\n return wcMutate<{ deleted: boolean; previous: WCTaxClass }>(\n `/wp-json/wc/v3/taxes/classes/${slug}`,\n { force },\n 'DELETE',\n );\n }\n\n return {\n getTaxRates,\n getTaxRateById,\n createTaxRate,\n updateTaxRate,\n deleteTaxRate,\n getTaxClasses,\n createTaxClass,\n deleteTaxClass,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type {\n WCShippingZone,\n WCShippingZoneLocation,\n WCShippingZoneMethod,\n WCShippingMethod,\n CreateShippingZoneInput,\n UpdateShippingZoneInput,\n CreateShippingZoneMethodInput,\n UpdateShippingZoneMethodInput,\n} from './types';\n\nexport function createShippingQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful, wcMutate } = fetcher;\n\n // Shipping Zones\n\n async function getShippingZones(): Promise<WCShippingZone[]> {\n return wcFetchGraceful<WCShippingZone[]>(\n '/wp-json/wc/v3/shipping/zones',\n [],\n undefined,\n ['woocommerce', 'shipping_zones'],\n );\n }\n\n async function getShippingZoneById(id: number): Promise<WCShippingZone> {\n return wcFetch<WCShippingZone>(\n `/wp-json/wc/v3/shipping/zones/${id}`,\n undefined,\n ['woocommerce', 'shipping_zones', `zone-${id}`],\n );\n }\n\n async function createShippingZone(input: CreateShippingZoneInput): Promise<WCShippingZone> {\n return wcMutate<WCShippingZone>('/wp-json/wc/v3/shipping/zones', input, 'POST');\n }\n\n async function updateShippingZone(\n id: number,\n input: UpdateShippingZoneInput,\n ): Promise<WCShippingZone> {\n return wcMutate<WCShippingZone>(`/wp-json/wc/v3/shipping/zones/${id}`, input, 'PUT');\n }\n\n async function deleteShippingZone(\n id: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCShippingZone }> {\n return wcMutate<{ deleted: boolean; previous: WCShippingZone }>(\n `/wp-json/wc/v3/shipping/zones/${id}`,\n { force },\n 'DELETE',\n );\n }\n\n // Zone Locations\n\n async function getShippingZoneLocations(zoneId: number): Promise<WCShippingZoneLocation[]> {\n return wcFetchGraceful<WCShippingZoneLocation[]>(\n `/wp-json/wc/v3/shipping/zones/${zoneId}/locations`,\n [],\n undefined,\n ['woocommerce', 'shipping_zone_locations', `zone-${zoneId}-locations`],\n );\n }\n\n async function updateShippingZoneLocations(\n zoneId: number,\n locations: WCShippingZoneLocation[],\n ): Promise<WCShippingZoneLocation[]> {\n return wcMutate<WCShippingZoneLocation[]>(\n `/wp-json/wc/v3/shipping/zones/${zoneId}/locations`,\n locations,\n 'PUT',\n );\n }\n\n // Zone Methods\n\n async function getShippingZoneMethods(zoneId: number): Promise<WCShippingZoneMethod[]> {\n return wcFetchGraceful<WCShippingZoneMethod[]>(\n `/wp-json/wc/v3/shipping/zones/${zoneId}/methods`,\n [],\n undefined,\n ['woocommerce', 'shipping_zone_methods', `zone-${zoneId}-methods`],\n );\n }\n\n async function getShippingZoneMethodById(\n zoneId: number,\n instanceId: number,\n ): Promise<WCShippingZoneMethod> {\n return wcFetch<WCShippingZoneMethod>(\n `/wp-json/wc/v3/shipping/zones/${zoneId}/methods/${instanceId}`,\n undefined,\n ['woocommerce', 'shipping_zone_methods', `zone-${zoneId}-method-${instanceId}`],\n );\n }\n\n async function createShippingZoneMethod(\n zoneId: number,\n input: CreateShippingZoneMethodInput,\n ): Promise<WCShippingZoneMethod> {\n return wcMutate<WCShippingZoneMethod>(\n `/wp-json/wc/v3/shipping/zones/${zoneId}/methods`,\n input,\n 'POST',\n );\n }\n\n async function updateShippingZoneMethod(\n zoneId: number,\n instanceId: number,\n input: UpdateShippingZoneMethodInput,\n ): Promise<WCShippingZoneMethod> {\n return wcMutate<WCShippingZoneMethod>(\n `/wp-json/wc/v3/shipping/zones/${zoneId}/methods/${instanceId}`,\n input,\n 'PUT',\n );\n }\n\n async function deleteShippingZoneMethod(\n zoneId: number,\n instanceId: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCShippingZoneMethod }> {\n return wcMutate<{ deleted: boolean; previous: WCShippingZoneMethod }>(\n `/wp-json/wc/v3/shipping/zones/${zoneId}/methods/${instanceId}`,\n { force },\n 'DELETE',\n );\n }\n\n // Shipping Methods (global, read-only)\n\n async function getShippingMethods(): Promise<WCShippingMethod[]> {\n return wcFetchGraceful<WCShippingMethod[]>(\n '/wp-json/wc/v3/shipping_methods',\n [],\n undefined,\n ['woocommerce', 'shipping_methods'],\n );\n }\n\n async function getShippingMethodById(id: string): Promise<WCShippingMethod> {\n return wcFetch<WCShippingMethod>(\n `/wp-json/wc/v3/shipping_methods/${id}`,\n undefined,\n ['woocommerce', 'shipping_methods', `shipping-method-${id}`],\n );\n }\n\n return {\n getShippingZones,\n getShippingZoneById,\n createShippingZone,\n updateShippingZone,\n deleteShippingZone,\n getShippingZoneLocations,\n updateShippingZoneLocations,\n getShippingZoneMethods,\n getShippingZoneMethodById,\n createShippingZoneMethod,\n updateShippingZoneMethod,\n deleteShippingZoneMethod,\n getShippingMethods,\n getShippingMethodById,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCWebhook, CreateWebhookInput, UpdateWebhookInput, WCWebhookStatus } from './types';\n\nexport function createWebhooksQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful, wcMutate } = fetcher;\n\n async function getWebhooks(params?: { status?: WCWebhookStatus }): Promise<WCWebhook[]> {\n return wcFetchGraceful<WCWebhook[]>(\n '/wp-json/wc/v3/webhooks',\n [],\n params,\n ['woocommerce', 'webhooks'],\n );\n }\n\n async function getWebhookById(id: number): Promise<WCWebhook> {\n return wcFetch<WCWebhook>(\n `/wp-json/wc/v3/webhooks/${id}`,\n undefined,\n ['woocommerce', 'webhooks', `webhook-${id}`],\n );\n }\n\n async function createWebhook(input: CreateWebhookInput): Promise<WCWebhook> {\n return wcMutate<WCWebhook>('/wp-json/wc/v3/webhooks', input, 'POST');\n }\n\n async function updateWebhook(id: number, input: UpdateWebhookInput): Promise<WCWebhook> {\n return wcMutate<WCWebhook>(`/wp-json/wc/v3/webhooks/${id}`, input, 'PUT');\n }\n\n async function deleteWebhook(\n id: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCWebhook }> {\n return wcMutate<{ deleted: boolean; previous: WCWebhook }>(\n `/wp-json/wc/v3/webhooks/${id}`,\n { force },\n 'DELETE',\n );\n }\n\n return {\n getWebhooks,\n getWebhookById,\n createWebhook,\n updateWebhook,\n deleteWebhook,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCSettingGroup, WCSettingOption } from './types';\n\nexport function createSettingsQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful, wcMutate } = fetcher;\n\n async function getSettingGroups(): Promise<WCSettingGroup[]> {\n return wcFetchGraceful<WCSettingGroup[]>(\n '/wp-json/wc/v3/settings',\n [],\n undefined,\n ['woocommerce', 'settings'],\n );\n }\n\n async function getSettingOptions(groupId: string): Promise<WCSettingOption[]> {\n return wcFetchGraceful<WCSettingOption[]>(\n `/wp-json/wc/v3/settings/${groupId}`,\n [],\n undefined,\n ['woocommerce', 'settings', `settings-${groupId}`],\n );\n }\n\n async function getSettingOption(groupId: string, optionId: string): Promise<WCSettingOption> {\n return wcFetch<WCSettingOption>(\n `/wp-json/wc/v3/settings/${groupId}/${optionId}`,\n undefined,\n ['woocommerce', 'settings', `settings-${groupId}-${optionId}`],\n );\n }\n\n async function updateSettingOption(\n groupId: string,\n optionId: string,\n value: string | string[],\n ): Promise<WCSettingOption> {\n return wcMutate<WCSettingOption>(\n `/wp-json/wc/v3/settings/${groupId}/${optionId}`,\n { value },\n 'PUT',\n );\n }\n\n return {\n getSettingGroups,\n getSettingOptions,\n getSettingOption,\n updateSettingOption,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type {\n WCSalesReport,\n WCSalesReportParams,\n WCTopSeller,\n WCTopSellersParams,\n WCStatusCount,\n} from './types';\n\nexport function createReportsQueries(fetcher: WooCommerceFetcher) {\n const { wcFetchGraceful } = fetcher;\n\n async function getSalesReport(params?: WCSalesReportParams): Promise<WCSalesReport[]> {\n return wcFetchGraceful<WCSalesReport[]>(\n '/wp-json/wc/v3/reports/sales',\n [],\n params as Record<string, unknown>,\n ['woocommerce', 'reports', 'sales'],\n );\n }\n\n async function getTopSellers(params?: WCTopSellersParams): Promise<WCTopSeller[]> {\n return wcFetchGraceful<WCTopSeller[]>(\n '/wp-json/wc/v3/reports/top_sellers',\n [],\n params as Record<string, unknown>,\n ['woocommerce', 'reports', 'top_sellers'],\n );\n }\n\n async function getOrdersTotals(): Promise<WCStatusCount[]> {\n return wcFetchGraceful<WCStatusCount[]>(\n '/wp-json/wc/v3/reports/orders/totals',\n [],\n undefined,\n ['woocommerce', 'reports', 'orders_totals'],\n );\n }\n\n async function getProductsTotals(): Promise<WCStatusCount[]> {\n return wcFetchGraceful<WCStatusCount[]>(\n '/wp-json/wc/v3/reports/products/totals',\n [],\n undefined,\n ['woocommerce', 'reports', 'products_totals'],\n );\n }\n\n async function getCustomersTotals(): Promise<WCStatusCount[]> {\n return wcFetchGraceful<WCStatusCount[]>(\n '/wp-json/wc/v3/reports/customers/totals',\n [],\n undefined,\n ['woocommerce', 'reports', 'customers_totals'],\n );\n }\n\n async function getCouponsTotals(): Promise<WCStatusCount[]> {\n return wcFetchGraceful<WCStatusCount[]>(\n '/wp-json/wc/v3/reports/coupons/totals',\n [],\n undefined,\n ['woocommerce', 'reports', 'coupons_totals'],\n );\n }\n\n async function getReviewsTotals(): Promise<WCStatusCount[]> {\n return wcFetchGraceful<WCStatusCount[]>(\n '/wp-json/wc/v3/reports/reviews/totals',\n [],\n undefined,\n ['woocommerce', 'reports', 'reviews_totals'],\n );\n }\n\n return {\n getSalesReport,\n getTopSellers,\n getOrdersTotals,\n getProductsTotals,\n getCustomersTotals,\n getCouponsTotals,\n getReviewsTotals,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type {\n WCCurrency,\n WCContinent,\n WCCountry,\n WCSystemStatus,\n WCSystemStatusTool,\n} from './types';\n\nexport function createDataQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful, wcMutate } = fetcher;\n\n async function getCurrencies(): Promise<WCCurrency[]> {\n return wcFetchGraceful<WCCurrency[]>(\n '/wp-json/wc/v3/data/currencies',\n [],\n undefined,\n ['woocommerce', 'data', 'currencies'],\n );\n }\n\n async function getCurrentCurrency(): Promise<WCCurrency> {\n return wcFetch<WCCurrency>(\n '/wp-json/wc/v3/data/currencies/current',\n undefined,\n ['woocommerce', 'data', 'currency_current'],\n );\n }\n\n async function getCurrencyByCode(code: string): Promise<WCCurrency> {\n return wcFetch<WCCurrency>(\n `/wp-json/wc/v3/data/currencies/${code.toUpperCase()}`,\n undefined,\n ['woocommerce', 'data', `currency-${code}`],\n );\n }\n\n async function getContinents(): Promise<WCContinent[]> {\n return wcFetchGraceful<WCContinent[]>(\n '/wp-json/wc/v3/data/continents',\n [],\n undefined,\n ['woocommerce', 'data', 'continents'],\n );\n }\n\n async function getContinentByCode(code: string): Promise<WCContinent> {\n return wcFetch<WCContinent>(\n `/wp-json/wc/v3/data/continents/${code.toUpperCase()}`,\n undefined,\n ['woocommerce', 'data', `continent-${code}`],\n );\n }\n\n async function getCountries(): Promise<WCCountry[]> {\n return wcFetchGraceful<WCCountry[]>(\n '/wp-json/wc/v3/data/countries',\n [],\n undefined,\n ['woocommerce', 'data', 'countries'],\n );\n }\n\n async function getCountryByCode(code: string): Promise<WCCountry> {\n return wcFetch<WCCountry>(\n `/wp-json/wc/v3/data/countries/${code.toUpperCase()}`,\n undefined,\n ['woocommerce', 'data', `country-${code}`],\n );\n }\n\n async function getTimeZones(): Promise<Record<string, string>> {\n return wcFetchGraceful<Record<string, string>>(\n '/wp-json/wc/v3/data/time_zones',\n {},\n undefined,\n ['woocommerce', 'data', 'time_zones'],\n );\n }\n\n async function getSystemStatus(): Promise<WCSystemStatus> {\n return wcFetch<WCSystemStatus>(\n '/wp-json/wc/v3/system_status',\n undefined,\n ['woocommerce', 'system_status'],\n );\n }\n\n async function getSystemStatusTools(): Promise<WCSystemStatusTool[]> {\n return wcFetchGraceful<WCSystemStatusTool[]>(\n '/wp-json/wc/v3/system_status/tools',\n [],\n undefined,\n ['woocommerce', 'system_status_tools'],\n );\n }\n\n async function runSystemStatusTool(toolId: string): Promise<WCSystemStatusTool> {\n return wcMutate<WCSystemStatusTool>(\n `/wp-json/wc/v3/system_status/tools/${toolId}`,\n {},\n 'PUT',\n );\n }\n\n return {\n getCurrencies,\n getCurrentCurrency,\n getCurrencyByCode,\n getContinents,\n getContinentByCode,\n getCountries,\n getCountryByCode,\n getTimeZones,\n getSystemStatus,\n getSystemStatusTools,\n runSystemStatusTool,\n };\n}\n","export type { WCImage, WCDimensions, WCAddress } from '@restApi/woocommerce/shared/types';\n\nexport type {\n WCProduct,\n WCProductFilterParams,\n WCProductVariation,\n WCProductAttribute,\n WCProductDefaultAttribute,\n WCProductStatus,\n CreateProductInput,\n UpdateProductInput,\n} from '@restApi/woocommerce/products';\n\nexport type {\n WCProductCategory,\n CreateProductCategoryInput,\n UpdateProductCategoryInput,\n} from '@restApi/woocommerce/categories';\n\nexport type {\n WCProductTag,\n CreateProductTagInput,\n UpdateProductTagInput,\n} from '@restApi/woocommerce/tags';\n\nexport type {\n WCOrder,\n WCCreateOrderInput,\n WCOrderLineItem,\n WCShippingLine,\n} from '@restApi/woocommerce/orders';\n\nexport type {\n WCCoupon,\n CreateCouponInput,\n UpdateCouponInput,\n} from '@restApi/woocommerce/coupons';\n\nexport type { WCCustomer, UpdateCustomerInput } from '@restApi/woocommerce/customers';\n\nexport type { WCPaymentGateway, WCPaymentGatewaySetting } from '@restApi/woocommerce/payment_gateways';\n\nexport type { WCOrderNote, WCCreateOrderNoteInput } from '@restApi/woocommerce/order_notes';\n\nexport type {\n WCOrderRefund,\n WCCreateOrderRefundInput,\n WCRefundLineItem,\n} from '@restApi/woocommerce/order_refunds';\n\nexport type {\n WCProductAttribute as WCGlobalProductAttribute,\n WCAttributeTerm,\n CreateProductAttributeInput,\n UpdateProductAttributeInput,\n CreateAttributeTermInput,\n UpdateAttributeTermInput,\n} from '@restApi/woocommerce/product_attributes';\n\nexport type {\n WCProductReview,\n WCReviewStatus,\n WCProductReviewFilterParams,\n CreateProductReviewInput,\n UpdateProductReviewInput,\n} from '@restApi/woocommerce/product_reviews';\n\nexport type {\n WCShippingClass,\n CreateShippingClassInput,\n UpdateShippingClassInput,\n} from '@restApi/woocommerce/shipping_classes';\n\nexport type {\n WCTaxRate,\n WCTaxClass,\n CreateTaxRateInput,\n UpdateTaxRateInput,\n CreateTaxClassInput,\n} from '@restApi/woocommerce/taxes';\n\nexport type {\n WCShippingZone,\n WCShippingZoneLocation,\n WCShippingZoneMethod,\n WCShippingMethod,\n CreateShippingZoneInput,\n UpdateShippingZoneInput,\n CreateShippingZoneMethodInput,\n UpdateShippingZoneMethodInput,\n} from '@restApi/woocommerce/shipping';\n\nexport type {\n WCWebhook,\n WCWebhookStatus,\n WCWebhookTopic,\n CreateWebhookInput,\n UpdateWebhookInput,\n} from '@restApi/woocommerce/webhooks';\n\nexport type { WCSettingGroup, WCSettingOption } from '@restApi/woocommerce/settings';\n\nexport type {\n WCSalesReport,\n WCSalesReportParams,\n WCTopSeller,\n WCTopSellersParams,\n WCStatusCount,\n} from '@restApi/woocommerce/reports';\n\nexport type {\n WCCurrency,\n WCCountry,\n WCContinent,\n WCSystemStatus,\n WCSystemStatusTool,\n} from '@restApi/woocommerce/data';\n\nexport type {\n OmnibusPriceEntry,\n OmnibusProductData,\n WCProductWithOmnibus,\n WCProductVariationWithOmnibus,\n} from '@restApi/woocommerce/omnibus';\nexport { extractOmnibusData, withOmnibus, withOmnibusVariation } from '@restApi/woocommerce/omnibus';\n\nexport type {\n WooCommerceConfig,\n WooCommerceResponse,\n WooCommercePaginationHeaders,\n} from '@restApi/woocommerce/client';\n\nexport { createWooCommerceFetcher, type WooCommerceFetcher } from '@restApi/woocommerce/client';\nexport { WooCommerceError } from '@restApi/woocommerce/client';\n\nimport { createWooCommerceFetcher } from '@restApi/woocommerce/client';\nimport type { WooCommerceConfig } from '@restApi/woocommerce/client';\nimport { createProductsQueries, createProductsMutations } from '@restApi/woocommerce/products';\nimport { createCategoriesQueries, createCategoriesMutations } from '@restApi/woocommerce/categories';\nimport { createTagsQueries, createTagsMutations } from '@restApi/woocommerce/tags';\nimport { createOrdersQueries } from '@restApi/woocommerce/orders';\nimport { createCouponsQueries, createCouponsMutations } from '@restApi/woocommerce/coupons';\nimport { createCustomersQueries } from '@restApi/woocommerce/customers';\nimport { createPaymentGatewaysQueries } from '@restApi/woocommerce/payment_gateways';\nimport { createOrderNotesQueries } from '@restApi/woocommerce/order_notes';\nimport { createOrderRefundsQueries } from '@restApi/woocommerce/order_refunds';\nimport { createProductAttributesQueries } from '@restApi/woocommerce/product_attributes';\nimport { createProductReviewsQueries } from '@restApi/woocommerce/product_reviews';\nimport { createShippingClassesQueries } from '@restApi/woocommerce/shipping_classes';\nimport { createTaxesQueries } from '@restApi/woocommerce/taxes';\nimport { createShippingQueries } from '@restApi/woocommerce/shipping';\nimport { createWebhooksQueries } from '@restApi/woocommerce/webhooks';\nimport { createSettingsQueries } from '@restApi/woocommerce/settings';\nimport { createReportsQueries } from '@restApi/woocommerce/reports';\nimport { createDataQueries } from '@restApi/woocommerce/data';\n\nexport function createWooCommerceClient(config: WooCommerceConfig) {\n const fetcher = createWooCommerceFetcher(config);\n\n return {\n ...createProductsQueries(fetcher),\n ...createProductsMutations(fetcher),\n ...createCategoriesQueries(fetcher),\n ...createCategoriesMutations(fetcher),\n ...createTagsQueries(fetcher),\n ...createTagsMutations(fetcher),\n ...createOrdersQueries(fetcher),\n ...createOrderNotesQueries(fetcher),\n ...createOrderRefundsQueries(fetcher),\n ...createProductAttributesQueries(fetcher),\n ...createProductReviewsQueries(fetcher),\n ...createShippingClassesQueries(fetcher),\n ...createTaxesQueries(fetcher),\n ...createShippingQueries(fetcher),\n ...createWebhooksQueries(fetcher),\n ...createSettingsQueries(fetcher),\n ...createReportsQueries(fetcher),\n ...createDataQueries(fetcher),\n ...createCouponsQueries(fetcher),\n ...createCouponsMutations(fetcher),\n ...createCustomersQueries(fetcher),\n ...createPaymentGatewaysQueries(fetcher),\n };\n}\n","import type { NextWordpressConfig } from '@shared';\nimport { createFetcher } from '@restApi/core/client';\nimport type { WordPressFetcher } from '@restApi/core/client';\nimport type {\n WPULikeStatsParams,\n WPULikeStats,\n WPULikeVoteParams,\n WPULikeVoteResponse,\n WPULikeCheckParams,\n WPULikeCheckResponse,\n} from './types';\n\nexport function createWPULikeQueries(fetcher: WordPressFetcher) {\n const { wpFetch, wpMutate } = fetcher;\n\n async function getLikeStats(\n params: WPULikeStatsParams,\n tags?: string[],\n ): Promise<WPULikeStats> {\n return wpFetch<WPULikeStats>(\n '/wp-json/wp-ulike/v1/stats',\n params as unknown as Record<string, unknown>,\n tags ?? ['wpulike', `wpulike-${params.id}`],\n );\n }\n\n async function checkLikeStatus(\n params: WPULikeCheckParams,\n tags?: string[],\n ): Promise<WPULikeCheckResponse> {\n return wpFetch<WPULikeCheckResponse>(\n '/wp-json/wp-ulike/v1/check',\n params as unknown as Record<string, unknown>,\n tags ?? ['wpulike', `wpulike-${params.id}`],\n );\n }\n\n async function vote(\n params: WPULikeVoteParams,\n authToken?: string,\n ): Promise<WPULikeVoteResponse> {\n return wpMutate<WPULikeVoteResponse>(\n '/wp-json/wp-ulike/v1/vote',\n params,\n 'POST',\n authToken,\n );\n }\n\n return { getLikeStats, checkLikeStatus, vote };\n}\n\nexport function createWPULikeClient(config: NextWordpressConfig) {\n const fetcher = createFetcher(config);\n return createWPULikeQueries(fetcher);\n}\n","import type { ErrorCode } from '@shared';\n\nexport type CF7SubmissionStatus =\n | 'mail_sent'\n | 'mail_failed'\n | 'validation_failed'\n | 'spam'\n | 'aborted';\n\nexport interface CF7ValidationError {\n field: string;\n message: string;\n idref: string | null;\n}\n\nexport interface CF7SubmissionResponse {\n status: CF7SubmissionStatus;\n message: string;\n invalid_fields?: CF7ValidationError[];\n}\n\nexport class CF7Error extends Error {\n constructor(\n public readonly code: ErrorCode,\n public readonly status: number,\n public readonly endpoint: string,\n message: string,\n ) {\n super(message);\n this.name = 'CF7Error';\n }\n}\n","import type { NextWordpressConfig } from '@shared';\nimport { resolveMessage } from '@shared';\nimport { buildUrl } from '@restApi/core/client';\nimport { ErrorCode } from '@shared/errors/codes';\nimport type { CF7SubmissionResponse, CF7SubmissionStatus } from './types';\nimport { CF7Error } from './types';\n\nconst statusToCode: Record<CF7SubmissionStatus, ErrorCode> = {\n mail_sent: ErrorCode.CF7_MAIL_SENT,\n mail_failed: ErrorCode.CF7_MAIL_FAILED,\n validation_failed: ErrorCode.CF7_VALIDATION_FAILED,\n spam: ErrorCode.CF7_SPAM,\n aborted: ErrorCode.CF7_ABORTED,\n};\n\nexport function createCF7Queries(config: NextWordpressConfig) {\n async function submitForm(\n formId: number,\n data: Record<string, string>,\n ): Promise<CF7SubmissionResponse> {\n const url = buildUrl(config, `/wp-json/contact-form-7/v1/contact-forms/${formId}/feedback`);\n const body = new FormData();\n for (const [key, value] of Object.entries(data)) {\n body.append(key, value);\n }\n const res = await fetch(url, { method: 'POST', body, cache: 'no-store' });\n if (!res.ok) {\n throw new CF7Error(\n ErrorCode.CF7_MAIL_FAILED,\n res.status,\n url,\n resolveMessage(ErrorCode.CF7_MAIL_FAILED, config.errorMessages),\n );\n }\n const result = (await res.json()) as CF7SubmissionResponse;\n const code = statusToCode[result.status];\n return { ...result, message: resolveMessage(code, config.errorMessages) };\n }\n\n return { submitForm };\n}\n","import type { NextWordpressConfig, ErrorCode } from '@shared';\n\nexport type WPGraphQLConfig = NextWordpressConfig;\n\nexport interface GQLPageInfo {\n hasNextPage: boolean;\n hasPreviousPage: boolean;\n startCursor?: string;\n endCursor?: string;\n}\n\nexport interface GQLConnection<T> {\n nodes: T[];\n pageInfo: GQLPageInfo;\n}\n\nexport interface GQLError {\n message: string;\n locations?: Array<{ line: number; column: number }>;\n path?: string[];\n}\n\nexport interface GQLResponse<T> {\n data?: T;\n errors?: GQLError[];\n}\n\nexport class WPGraphQLError extends Error {\n constructor(\n public readonly code: ErrorCode,\n public readonly status: number,\n public readonly endpoint: string,\n message: string,\n public readonly gqlErrors?: GQLError[],\n ) {\n super(message);\n this.name = 'WPGraphQLError';\n }\n}\n","import { resolveBaseUrl, ErrorCode, resolveMessage } from '@shared';\nimport type { WPGraphQLConfig, GQLResponse, GQLError } from './types';\nimport { WPGraphQLError } from './types';\n\nconst USER_AGENT = 'NextWordpress WPGraphQL Client';\n\ninterface NextRequestInit extends RequestInit {\n next?: {\n revalidate?: number | false;\n tags?: string[];\n };\n}\n\nexport function createWPGraphQLFetcher(config: WPGraphQLConfig) {\n const url = `${resolveBaseUrl(config)}/graphql`;\n const cacheTTL = config.cacheTTL ?? 300;\n\n async function gqlFetch<TData>(\n document: string,\n variables?: Record<string, unknown>,\n tags: string[] = ['wpgraphql'],\n ): Promise<TData> {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'User-Agent': USER_AGENT,\n },\n body: JSON.stringify({ query: document, variables }),\n next: { tags, revalidate: cacheTTL },\n } as NextRequestInit);\n\n if (!response.ok) {\n throw new WPGraphQLError(\n ErrorCode.GQL_REQUEST_FAILED,\n response.status,\n url,\n resolveMessage(ErrorCode.GQL_REQUEST_FAILED, config.errorMessages),\n );\n }\n\n const parsed = (await response.json()) as GQLResponse<TData>;\n\n if (parsed.errors && parsed.errors.length > 0) {\n throw new WPGraphQLError(\n ErrorCode.GQL_ERRORS_IN_RESPONSE,\n 200,\n url,\n resolveMessage(ErrorCode.GQL_ERRORS_IN_RESPONSE, config.errorMessages),\n parsed.errors as GQLError[],\n );\n }\n\n if (parsed.data === undefined) {\n throw new WPGraphQLError(\n ErrorCode.GQL_NO_DATA,\n 200,\n url,\n resolveMessage(ErrorCode.GQL_NO_DATA, config.errorMessages),\n );\n }\n\n return parsed.data;\n }\n\n async function gqlFetchGraceful<TData>(\n document: string,\n fallback: TData,\n variables?: Record<string, unknown>,\n tags: string[] = ['wpgraphql'],\n ): Promise<TData> {\n try {\n return await gqlFetch<TData>(document, variables, tags);\n } catch {\n console.warn(`WPGraphQL fetch failed for query`);\n return fallback;\n }\n }\n\n async function gqlMutate<TData>(\n document: string,\n variables?: Record<string, unknown>,\n authToken?: string,\n ): Promise<TData> {\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'User-Agent': USER_AGENT,\n };\n if (authToken) {\n headers['Authorization'] = authToken;\n }\n\n const response = await fetch(url, {\n method: 'POST',\n headers,\n body: JSON.stringify({ query: document, variables }),\n cache: 'no-store',\n });\n\n if (!response.ok) {\n throw new WPGraphQLError(\n ErrorCode.GQL_REQUEST_FAILED,\n response.status,\n url,\n resolveMessage(ErrorCode.GQL_REQUEST_FAILED, config.errorMessages),\n );\n }\n\n const parsed = (await response.json()) as GQLResponse<TData>;\n\n if (parsed.errors && parsed.errors.length > 0) {\n throw new WPGraphQLError(\n ErrorCode.GQL_ERRORS_IN_RESPONSE,\n 200,\n url,\n resolveMessage(ErrorCode.GQL_ERRORS_IN_RESPONSE, config.errorMessages),\n parsed.errors as GQLError[],\n );\n }\n\n if (parsed.data === undefined) {\n throw new WPGraphQLError(\n ErrorCode.GQL_NO_DATA,\n 200,\n url,\n resolveMessage(ErrorCode.GQL_NO_DATA, config.errorMessages),\n );\n }\n\n return parsed.data;\n }\n\n return { gqlFetch, gqlFetchGraceful, gqlMutate };\n}\n\nexport type WPGraphQLFetcher = ReturnType<typeof createWPGraphQLFetcher>;\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLConnection } from '@wpgraphql/client';\nimport type { GQLPost, GQLPostFilter } from './types';\n\nconst DEFAULT_FIRST = 10;\nconst BATCH_FIRST = 100;\n\nconst POST_FIELDS = `\n id\n databaseId\n slug\n title\n excerpt\n date\n modified\n status\n uri\n author {\n node {\n databaseId\n name\n slug\n avatar { url }\n }\n }\n featuredImage {\n node {\n sourceUrl\n altText\n mediaDetails { width height }\n }\n }\n categories {\n nodes { databaseId name slug }\n }\n tags {\n nodes { databaseId name slug }\n }\n`;\n\nconst POST_FIELDS_WITH_CONTENT = `\n ${POST_FIELDS}\n content\n`;\n\nconst GQL_GET_POSTS = `\n query GetPosts($first: Int, $after: String, $where: RootQueryToPostConnectionWhereArgs) {\n posts(first: $first, after: $after, where: $where) {\n nodes { ${POST_FIELDS} }\n pageInfo { hasNextPage hasPreviousPage startCursor endCursor }\n }\n }\n`;\n\nconst GQL_GET_POST_BY_SLUG = `\n query GetPostBySlug($slug: ID!) {\n post(id: $slug, idType: SLUG) { ${POST_FIELDS_WITH_CONTENT} }\n }\n`;\n\nconst GQL_GET_POST_BY_DATABASE_ID = `\n query GetPostByDatabaseId($id: ID!) {\n post(id: $id, idType: DATABASE_ID) { ${POST_FIELDS_WITH_CONTENT} }\n }\n`;\n\nconst GQL_GET_ALL_POST_SLUGS = `\n query GetAllPostSlugs($first: Int, $after: String) {\n posts(first: $first, after: $after) {\n nodes { slug }\n pageInfo { hasNextPage endCursor }\n }\n }\n`;\n\nconst GQL_GET_ALL_POSTS_FOR_SITEMAP = `\n query GetAllPostsForSitemap($first: Int, $after: String) {\n posts(first: $first, after: $after) {\n nodes { slug modified }\n pageInfo { hasNextPage endCursor }\n }\n }\n`;\n\nexport function createPostsQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetch, gqlFetchGraceful } = fetcher;\n\n async function getPosts(\n first: number = DEFAULT_FIRST,\n after?: string,\n filter?: GQLPostFilter,\n ): Promise<GQLConnection<GQLPost>> {\n const where: Record<string, unknown> = {};\n if (filter?.authorName) where['authorName'] = filter.authorName;\n if (filter?.categoryName) where['categoryName'] = filter.categoryName;\n if (filter?.tag) where['tag'] = filter.tag;\n if (filter?.search) where['search'] = filter.search;\n if (filter?.status) where['status'] = filter.status;\n\n const data = await gqlFetchGraceful<{ posts: GQLConnection<GQLPost> }>(\n GQL_GET_POSTS,\n { posts: { nodes: [], pageInfo: { hasNextPage: false, hasPreviousPage: false } } },\n { first, after, where: Object.keys(where).length > 0 ? where : undefined },\n ['wpgraphql', 'gql-posts'],\n );\n return data.posts;\n }\n\n async function getPostBySlug(slug: string): Promise<GQLPost | null> {\n const data = await gqlFetchGraceful<{ post: GQLPost | null }>(\n GQL_GET_POST_BY_SLUG,\n { post: null },\n { slug },\n ['wpgraphql', 'gql-posts', `gql-post-${slug}`],\n );\n return data.post;\n }\n\n async function getPostByDatabaseId(id: number): Promise<GQLPost | null> {\n const data = await gqlFetchGraceful<{ post: GQLPost | null }>(\n GQL_GET_POST_BY_DATABASE_ID,\n { post: null },\n { id: String(id) },\n ['wpgraphql', 'gql-posts', `gql-post-id-${id}`],\n );\n return data.post;\n }\n\n async function getRecentPosts(first: number = DEFAULT_FIRST): Promise<GQLPost[]> {\n const connection = await getPosts(first);\n return connection.nodes;\n }\n\n async function getAllPostSlugs(): Promise<{ slug: string }[]> {\n try {\n const all: { slug: string }[] = [];\n let after: string | undefined = undefined;\n let hasNextPage = true;\n\n while (hasNextPage) {\n const data: { posts: GQLConnection<{ slug: string }> } = await gqlFetch<{\n posts: GQLConnection<{ slug: string }>;\n }>(GQL_GET_ALL_POST_SLUGS, { first: BATCH_FIRST, after }, ['wpgraphql']);\n all.push(...data.posts.nodes);\n hasNextPage = data.posts.pageInfo.hasNextPage;\n after = data.posts.pageInfo.endCursor;\n }\n\n return all;\n } catch {\n console.warn('WPGraphQL unavailable, skipping static generation for posts');\n return [];\n }\n }\n\n async function getAllPostsForSitemap(): Promise<{ slug: string; modified: string }[]> {\n try {\n const all: { slug: string; modified: string }[] = [];\n let after: string | undefined = undefined;\n let hasNextPage = true;\n\n while (hasNextPage) {\n const data: { posts: GQLConnection<{ slug: string; modified: string }> } =\n await gqlFetch<{ posts: GQLConnection<{ slug: string; modified: string }> }>(\n GQL_GET_ALL_POSTS_FOR_SITEMAP,\n { first: BATCH_FIRST, after },\n ['wpgraphql'],\n );\n all.push(...data.posts.nodes);\n hasNextPage = data.posts.pageInfo.hasNextPage;\n after = data.posts.pageInfo.endCursor;\n }\n\n return all;\n } catch {\n console.warn('WPGraphQL unavailable, skipping sitemap generation');\n return [];\n }\n }\n\n return {\n getPosts,\n getPostBySlug,\n getPostByDatabaseId,\n getRecentPosts,\n getAllPostSlugs,\n getAllPostsForSitemap,\n };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLConnection } from '@wpgraphql/client';\nimport type { GQLPage } from './types';\n\nconst DEFAULT_FIRST = 10;\nconst BATCH_FIRST = 100;\n\nconst PAGE_FIELDS = `\n id\n databaseId\n slug\n title\n content\n date\n modified\n status\n uri\n featuredImage {\n node {\n sourceUrl\n altText\n mediaDetails { width height }\n }\n }\n`;\n\nconst GQL_GET_PAGES = `\n query GetPages($first: Int, $after: String) {\n pages(first: $first, after: $after) {\n nodes { ${PAGE_FIELDS} }\n pageInfo { hasNextPage hasPreviousPage startCursor endCursor }\n }\n }\n`;\n\n// PageIdType does not include SLUG — use URI (e.g. \"/about/\") for slug-based lookups\nconst GQL_GET_PAGE_BY_SLUG = `\n query GetPageBySlug($uri: ID!) {\n page(id: $uri, idType: URI) { ${PAGE_FIELDS} }\n }\n`;\n\nconst GQL_GET_PAGE_BY_URI = `\n query GetPageByUri($uri: ID!) {\n page(id: $uri, idType: URI) { ${PAGE_FIELDS} }\n }\n`;\n\nconst GQL_GET_ALL_PAGE_URIS = `\n query GetAllPageUris($first: Int, $after: String) {\n pages(first: $first, after: $after) {\n nodes { uri }\n pageInfo { hasNextPage endCursor }\n }\n }\n`;\n\nexport function createPagesQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetch, gqlFetchGraceful } = fetcher;\n\n async function getPages(\n first: number = DEFAULT_FIRST,\n after?: string,\n ): Promise<GQLConnection<GQLPage>> {\n const data = await gqlFetchGraceful<{ pages: GQLConnection<GQLPage> }>(\n GQL_GET_PAGES,\n { pages: { nodes: [], pageInfo: { hasNextPage: false, hasPreviousPage: false } } },\n { first, after },\n ['wpgraphql', 'gql-pages'],\n );\n return data.pages;\n }\n\n async function getPageBySlug(slug: string): Promise<GQLPage | null> {\n const data = await gqlFetchGraceful<{ page: GQLPage | null }>(\n GQL_GET_PAGE_BY_SLUG,\n { page: null },\n { uri: `/${slug}/` },\n ['wpgraphql', 'gql-pages', `gql-page-${slug}`],\n );\n return data.page;\n }\n\n async function getPageByUri(uri: string): Promise<GQLPage | null> {\n const data = await gqlFetchGraceful<{ page: GQLPage | null }>(\n GQL_GET_PAGE_BY_URI,\n { page: null },\n { uri },\n ['wpgraphql', 'gql-pages', `gql-page-uri-${uri.replace(/\\//g, '-')}`],\n );\n return data.page;\n }\n\n async function getAllPageUris(): Promise<{ uri: string }[]> {\n try {\n const all: { uri: string }[] = [];\n let after: string | undefined = undefined;\n let hasNextPage = true;\n\n while (hasNextPage) {\n const data: { pages: GQLConnection<{ uri: string }> } = await gqlFetch<{\n pages: GQLConnection<{ uri: string }>;\n }>(GQL_GET_ALL_PAGE_URIS, { first: BATCH_FIRST, after }, ['wpgraphql']);\n all.push(...data.pages.nodes);\n hasNextPage = data.pages.pageInfo.hasNextPage;\n after = data.pages.pageInfo.endCursor;\n }\n\n return all;\n } catch {\n console.warn('WPGraphQL unavailable, skipping static generation for pages');\n return [];\n }\n }\n\n return { getPages, getPageBySlug, getPageByUri, getAllPageUris };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLConnection } from '@wpgraphql/client';\nimport type { GQLCategory } from './types';\n\nconst DEFAULT_FIRST = 100;\n\nconst CATEGORY_FIELDS = `\n id\n databaseId\n name\n slug\n description\n count\n uri\n parent {\n node { databaseId name slug }\n }\n`;\n\nconst GQL_GET_CATEGORIES = `\n query GetCategories($first: Int, $after: String) {\n categories(first: $first, after: $after) {\n nodes { ${CATEGORY_FIELDS} }\n pageInfo { hasNextPage hasPreviousPage startCursor endCursor }\n }\n }\n`;\n\nconst GQL_GET_CATEGORY_BY_SLUG = `\n query GetCategoryBySlug($slug: ID!) {\n category(id: $slug, idType: SLUG) { ${CATEGORY_FIELDS} }\n }\n`;\n\nconst GQL_GET_CATEGORY_BY_DATABASE_ID = `\n query GetCategoryByDatabaseId($id: ID!) {\n category(id: $id, idType: DATABASE_ID) { ${CATEGORY_FIELDS} }\n }\n`;\n\nexport function createCategoriesQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetchGraceful } = fetcher;\n\n async function getCategories(\n first: number = DEFAULT_FIRST,\n after?: string,\n ): Promise<GQLConnection<GQLCategory>> {\n const data = await gqlFetchGraceful<{ categories: GQLConnection<GQLCategory> }>(\n GQL_GET_CATEGORIES,\n { categories: { nodes: [], pageInfo: { hasNextPage: false, hasPreviousPage: false } } },\n { first, after },\n ['wpgraphql', 'gql-categories'],\n );\n return data.categories;\n }\n\n async function getCategoryBySlug(slug: string): Promise<GQLCategory | null> {\n const data = await gqlFetchGraceful<{ category: GQLCategory | null }>(\n GQL_GET_CATEGORY_BY_SLUG,\n { category: null },\n { slug },\n ['wpgraphql', 'gql-categories', `gql-category-${slug}`],\n );\n return data.category;\n }\n\n async function getCategoryByDatabaseId(id: number): Promise<GQLCategory | null> {\n const data = await gqlFetchGraceful<{ category: GQLCategory | null }>(\n GQL_GET_CATEGORY_BY_DATABASE_ID,\n { category: null },\n { id: String(id) },\n ['wpgraphql', 'gql-categories', `gql-category-id-${id}`],\n );\n return data.category;\n }\n\n return { getCategories, getCategoryBySlug, getCategoryByDatabaseId };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLConnection } from '@wpgraphql/client';\nimport type { GQLTag } from './types';\n\nconst DEFAULT_FIRST = 100;\n\nconst TAG_FIELDS = `\n id\n databaseId\n name\n slug\n description\n count\n uri\n`;\n\nconst GQL_GET_TAGS = `\n query GetTags($first: Int, $after: String) {\n tags(first: $first, after: $after) {\n nodes { ${TAG_FIELDS} }\n pageInfo { hasNextPage hasPreviousPage startCursor endCursor }\n }\n }\n`;\n\nconst GQL_GET_TAG_BY_SLUG = `\n query GetTagBySlug($slug: ID!) {\n tag(id: $slug, idType: SLUG) { ${TAG_FIELDS} }\n }\n`;\n\nexport function createTagsQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetchGraceful } = fetcher;\n\n async function getTags(\n first: number = DEFAULT_FIRST,\n after?: string,\n ): Promise<GQLConnection<GQLTag>> {\n const data = await gqlFetchGraceful<{ tags: GQLConnection<GQLTag> }>(\n GQL_GET_TAGS,\n { tags: { nodes: [], pageInfo: { hasNextPage: false, hasPreviousPage: false } } },\n { first, after },\n ['wpgraphql', 'gql-tags'],\n );\n return data.tags;\n }\n\n async function getTagBySlug(slug: string): Promise<GQLTag | null> {\n const data = await gqlFetchGraceful<{ tag: GQLTag | null }>(\n GQL_GET_TAG_BY_SLUG,\n { tag: null },\n { slug },\n ['wpgraphql', 'gql-tags', `gql-tag-${slug}`],\n );\n return data.tag;\n }\n\n return { getTags, getTagBySlug };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLConnection } from '@wpgraphql/client';\nimport type { GQLAuthor } from './types';\n\nconst DEFAULT_FIRST = 100;\n\nconst AUTHOR_FIELDS = `\n id\n databaseId\n name\n slug\n description\n email\n uri\n avatar { url width height }\n`;\n\nconst GQL_GET_AUTHORS = `\n query GetAuthors($first: Int, $after: String) {\n users(first: $first, after: $after) {\n nodes { ${AUTHOR_FIELDS} }\n pageInfo { hasNextPage hasPreviousPage startCursor endCursor }\n }\n }\n`;\n\n// WPGraphQL exposes authors via the users query; login matches the user slug\nconst GQL_GET_AUTHOR_BY_SLUG = `\n query GetAuthorBySlug($slug: String!) {\n users(where: { login: $slug }) {\n nodes { ${AUTHOR_FIELDS} }\n }\n }\n`;\n\nexport function createAuthorsQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetchGraceful } = fetcher;\n\n async function getAuthors(\n first: number = DEFAULT_FIRST,\n after?: string,\n ): Promise<GQLConnection<GQLAuthor>> {\n const data = await gqlFetchGraceful<{ users: GQLConnection<GQLAuthor> }>(\n GQL_GET_AUTHORS,\n { users: { nodes: [], pageInfo: { hasNextPage: false, hasPreviousPage: false } } },\n { first, after },\n ['wpgraphql', 'gql-authors'],\n );\n return data.users;\n }\n\n async function getAuthorBySlug(slug: string): Promise<GQLAuthor | null> {\n const data = await gqlFetchGraceful<{ users: { nodes: GQLAuthor[] } }>(\n GQL_GET_AUTHOR_BY_SLUG,\n { users: { nodes: [] } },\n { slug },\n ['wpgraphql', 'gql-authors', `gql-author-${slug}`],\n );\n return data.users.nodes[0] ?? null;\n }\n\n return { getAuthors, getAuthorBySlug };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLMenu, GQLMenuItem } from './types';\n\nconst MENU_ITEM_FIELDS = `\n id\n databaseId\n label\n url\n parentId\n order\n target\n cssClasses\n description\n connectedNode {\n node {\n __typename\n ... on Page { id databaseId slug }\n ... on Post { id databaseId slug }\n ... on Category { id databaseId slug }\n ... on Tag { id databaseId slug }\n }\n }\n`;\n\nconst MENU_FIELDS = `\n id\n databaseId\n name\n slug\n locations\n menuItems(first: 100) {\n nodes { ${MENU_ITEM_FIELDS} }\n }\n`;\n\nconst GQL_GET_MENUS = `\n query GetMenus {\n menus(first: 100) {\n nodes { ${MENU_FIELDS} }\n }\n }\n`;\n\nconst GQL_GET_MENU_BY_ID = `\n query GetMenuById($id: ID!) {\n menu(id: $id, idType: DATABASE_ID) { ${MENU_FIELDS} }\n }\n`;\n\nconst GQL_GET_MENU_BY_SLUG = `\n query GetMenuBySlug($id: ID!) {\n menu(id: $id, idType: SLUG) { ${MENU_FIELDS} }\n }\n`;\n\nconst GQL_GET_MENUS_BY_LOCATION = `\n query GetMenusByLocation($location: MenuLocationEnum!) {\n menus(where: { location: $location }, first: 1) {\n nodes { ${MENU_FIELDS} }\n }\n }\n`;\n\nexport function createMenusQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetch, gqlFetchGraceful } = fetcher;\n\n async function getMenus(): Promise<GQLMenu[]> {\n const data = await gqlFetchGraceful<{ menus: { nodes: GQLMenu[] } }>(\n GQL_GET_MENUS,\n { menus: { nodes: [] } },\n undefined,\n ['wpgraphql', 'gql-menus'],\n );\n return data.menus.nodes;\n }\n\n async function getMenuById(id: number): Promise<GQLMenu | null> {\n const data = await gqlFetchGraceful<{ menu: GQLMenu | null }>(\n GQL_GET_MENU_BY_ID,\n { menu: null },\n { id: String(id) },\n ['wpgraphql', 'gql-menus', `gql-menu-${id}`],\n );\n return data.menu;\n }\n\n async function getMenuBySlug(slug: string): Promise<GQLMenu | null> {\n const data = await gqlFetchGraceful<{ menu: GQLMenu | null }>(\n GQL_GET_MENU_BY_SLUG,\n { menu: null },\n { id: slug },\n ['wpgraphql', 'gql-menus', `gql-menu-${slug}`],\n );\n return data.menu;\n }\n\n async function getMenuByLocation(location: string): Promise<GQLMenu | null> {\n const data = await gqlFetch<{ menus: { nodes: GQLMenu[] } }>(\n GQL_GET_MENUS_BY_LOCATION,\n { location: location.toUpperCase() },\n ['wpgraphql', 'gql-menus', `gql-menu-location-${location}`],\n );\n return data.menus.nodes[0] ?? null;\n }\n\n async function getMenuItems(menuSlug: string): Promise<GQLMenuItem[]> {\n const menu = await getMenuBySlug(menuSlug);\n return menu?.menuItems?.nodes ?? [];\n }\n\n return {\n getMenus,\n getMenuById,\n getMenuBySlug,\n getMenuByLocation,\n getMenuItems,\n };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLComment } from './types';\n\nconst COMMENT_AUTHOR_FIELDS = `\n name\n url\n avatar { url width height }\n`;\n\nconst COMMENT_FIELDS = `\n id\n databaseId\n content(format: RENDERED)\n date\n parentId\n status\n author { node { ${COMMENT_AUTHOR_FIELDS} } }\n`;\n\nconst GQL_GET_COMMENTS_BY_POST = `\n query GetCommentsByPost($contentId: ID!, $first: Int, $after: String) {\n comments(\n first: $first\n after: $after\n where: { contentId: $contentId, status: \"approve\", parent: 0 }\n ) {\n nodes {\n ${COMMENT_FIELDS}\n replies(first: 100) {\n nodes { ${COMMENT_FIELDS} }\n }\n }\n pageInfo { hasNextPage endCursor }\n }\n }\n`;\n\nconst GQL_GET_ALL_COMMENTS_BY_POST = `\n query GetAllCommentsByPost($contentId: ID!) {\n comments(\n first: 100\n where: { contentId: $contentId, status: \"approve\" }\n ) {\n nodes { ${COMMENT_FIELDS} }\n }\n }\n`;\n\nconst GQL_GET_COMMENT_BY_ID = `\n query GetCommentById($id: ID!) {\n comment(id: $id, idType: DATABASE_ID) { ${COMMENT_FIELDS} }\n }\n`;\n\nexport function createCommentsQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetchGraceful } = fetcher;\n\n async function getCommentsByPostId(\n postId: number,\n first: number = 10,\n after?: string,\n ): Promise<{ nodes: GQLComment[]; pageInfo: { hasNextPage: boolean; endCursor?: string } }> {\n const data = await gqlFetchGraceful<{\n comments: { nodes: GQLComment[]; pageInfo: { hasNextPage: boolean; endCursor?: string } };\n }>(\n GQL_GET_COMMENTS_BY_POST,\n { comments: { nodes: [], pageInfo: { hasNextPage: false } } },\n { contentId: String(postId), first, after },\n ['wpgraphql', 'gql-comments', `gql-comments-post-${postId}`],\n );\n return data.comments;\n }\n\n async function getAllCommentsByPostId(postId: number): Promise<GQLComment[]> {\n const data = await gqlFetchGraceful<{ comments: { nodes: GQLComment[] } }>(\n GQL_GET_ALL_COMMENTS_BY_POST,\n { comments: { nodes: [] } },\n { contentId: String(postId) },\n ['wpgraphql', 'gql-comments', `gql-comments-post-${postId}`],\n );\n return data.comments.nodes;\n }\n\n async function getCommentById(id: number): Promise<GQLComment | null> {\n const data = await gqlFetchGraceful<{ comment: GQLComment | null }>(\n GQL_GET_COMMENT_BY_ID,\n { comment: null },\n { id: String(id) },\n ['wpgraphql', 'gql-comments', `gql-comment-${id}`],\n );\n return data.comment;\n }\n\n return {\n getCommentsByPostId,\n getAllCommentsByPostId,\n getCommentById,\n };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLConnection } from '@wpgraphql/client';\nimport type { GQLMediaItem } from './types';\n\nconst DEFAULT_FIRST = 10;\n\nconst MEDIA_FIELDS = `\n id\n databaseId\n slug\n title\n date\n sourceUrl\n altText\n caption\n description\n mediaType\n mimeType\n uri\n mediaDetails {\n width\n height\n file\n sizes { name width height mimeType sourceUrl }\n }\n`;\n\nconst GQL_GET_MEDIA_ITEMS = `\n query GetMediaItems($first: Int, $after: String) {\n mediaItems(first: $first, after: $after) {\n nodes { ${MEDIA_FIELDS} }\n pageInfo { hasNextPage hasPreviousPage startCursor endCursor }\n }\n }\n`;\n\nconst GQL_GET_MEDIA_ITEM_BY_ID = `\n query GetMediaItemById($id: ID!) {\n mediaItem(id: $id, idType: DATABASE_ID) { ${MEDIA_FIELDS} }\n }\n`;\n\nconst GQL_GET_MEDIA_ITEM_BY_SLUG = `\n query GetMediaItemBySlug($id: ID!) {\n mediaItem(id: $id, idType: SLUG) { ${MEDIA_FIELDS} }\n }\n`;\n\nexport function createMediaQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetchGraceful } = fetcher;\n\n async function getMediaItems(\n first: number = DEFAULT_FIRST,\n after?: string,\n ): Promise<GQLConnection<GQLMediaItem>> {\n const data = await gqlFetchGraceful<{ mediaItems: GQLConnection<GQLMediaItem> }>(\n GQL_GET_MEDIA_ITEMS,\n { mediaItems: { nodes: [], pageInfo: { hasNextPage: false, hasPreviousPage: false } } },\n { first, after },\n ['wpgraphql', 'gql-media'],\n );\n return data.mediaItems;\n }\n\n async function getMediaItemById(id: number): Promise<GQLMediaItem | null> {\n const data = await gqlFetchGraceful<{ mediaItem: GQLMediaItem | null }>(\n GQL_GET_MEDIA_ITEM_BY_ID,\n { mediaItem: null },\n { id: String(id) },\n ['wpgraphql', 'gql-media', `gql-media-${id}`],\n );\n return data.mediaItem;\n }\n\n async function getMediaItemBySlug(slug: string): Promise<GQLMediaItem | null> {\n const data = await gqlFetchGraceful<{ mediaItem: GQLMediaItem | null }>(\n GQL_GET_MEDIA_ITEM_BY_SLUG,\n { mediaItem: null },\n { id: slug },\n ['wpgraphql', 'gql-media', `gql-media-${slug}`],\n );\n return data.mediaItem;\n }\n\n return { getMediaItems, getMediaItemById, getMediaItemBySlug };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type {\n GQLCreatePostInput,\n GQLUpdatePostInput,\n GQLMutatedPost,\n GQLDeletePostResult,\n} from './types';\n\nconst MUTATED_POST_FIELDS = `\n id\n databaseId\n slug\n title\n status\n`;\n\nconst GQL_CREATE_POST = `\n mutation CreatePost($input: CreatePostInput!) {\n createPost(input: $input) {\n post { ${MUTATED_POST_FIELDS} }\n }\n }\n`;\n\nconst GQL_UPDATE_POST = `\n mutation UpdatePost($input: UpdatePostInput!) {\n updatePost(input: $input) {\n post { ${MUTATED_POST_FIELDS} }\n }\n }\n`;\n\nconst GQL_DELETE_POST = `\n mutation DeletePost($input: DeletePostInput!) {\n deletePost(input: $input) {\n deletedId\n post { ${MUTATED_POST_FIELDS} }\n }\n }\n`;\n\nexport function createPostsMutations(fetcher: WPGraphQLFetcher) {\n const { gqlMutate } = fetcher;\n\n async function createPost(input: GQLCreatePostInput, authToken: string): Promise<GQLMutatedPost> {\n const data = await gqlMutate<{ createPost: { post: GQLMutatedPost } }>(\n GQL_CREATE_POST,\n { input },\n authToken,\n );\n return data.createPost.post;\n }\n\n async function updatePost(input: GQLUpdatePostInput, authToken: string): Promise<GQLMutatedPost> {\n const data = await gqlMutate<{ updatePost: { post: GQLMutatedPost } }>(\n GQL_UPDATE_POST,\n { input },\n authToken,\n );\n return data.updatePost.post;\n }\n\n async function deletePost(\n id: string,\n authToken: string,\n forceDelete = false,\n ): Promise<GQLDeletePostResult> {\n const data = await gqlMutate<{ deletePost: GQLDeletePostResult }>(\n GQL_DELETE_POST,\n { input: { id, forceDelete } },\n authToken,\n );\n return data.deletePost;\n }\n\n return { createPost, updatePost, deletePost };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type {\n GQLCreateCommentInput,\n GQLUpdateCommentInput,\n GQLMutatedComment,\n GQLCreateCommentResult,\n GQLDeleteCommentResult,\n} from './types';\n\nconst MUTATED_COMMENT_FIELDS = `\n id\n databaseId\n content(format: RENDERED)\n date\n status\n parentId\n author { node { name url } }\n`;\n\nconst GQL_CREATE_COMMENT = `\n mutation CreateComment($input: CreateCommentInput!) {\n createComment(input: $input) {\n success\n comment { ${MUTATED_COMMENT_FIELDS} }\n }\n }\n`;\n\nconst GQL_UPDATE_COMMENT = `\n mutation UpdateComment($input: UpdateCommentInput!) {\n updateComment(input: $input) {\n comment { ${MUTATED_COMMENT_FIELDS} }\n }\n }\n`;\n\nconst GQL_DELETE_COMMENT = `\n mutation DeleteComment($input: DeleteCommentInput!) {\n deleteComment(input: $input) {\n deletedId\n comment { ${MUTATED_COMMENT_FIELDS} }\n }\n }\n`;\n\nexport function createCommentsMutations(fetcher: WPGraphQLFetcher) {\n const { gqlMutate } = fetcher;\n\n async function createComment(\n input: GQLCreateCommentInput,\n authToken?: string,\n ): Promise<GQLCreateCommentResult> {\n const gqlInput: Record<string, unknown> = {\n commentOn: input.postId,\n content: input.content,\n };\n if (input.authorName) gqlInput['author'] = input.authorName;\n if (input.authorEmail) gqlInput['authorEmail'] = input.authorEmail;\n if (input.authorUrl) gqlInput['authorUrl'] = input.authorUrl;\n if (input.parentId) gqlInput['parent'] = input.parentId;\n\n const data = await gqlMutate<{ createComment: GQLCreateCommentResult }>(\n GQL_CREATE_COMMENT,\n { input: gqlInput },\n authToken,\n );\n return data.createComment;\n }\n\n async function updateComment(\n input: GQLUpdateCommentInput,\n authToken: string,\n ): Promise<GQLMutatedComment> {\n const data = await gqlMutate<{ updateComment: { comment: GQLMutatedComment } }>(\n GQL_UPDATE_COMMENT,\n { input },\n authToken,\n );\n return data.updateComment.comment;\n }\n\n async function deleteComment(\n id: string,\n authToken: string,\n forceDelete = false,\n ): Promise<GQLDeleteCommentResult> {\n const data = await gqlMutate<{ deleteComment: GQLDeleteCommentResult }>(\n GQL_DELETE_COMMENT,\n { input: { id, forceDelete } },\n authToken,\n );\n return data.deleteComment;\n }\n\n return { createComment, updateComment, deleteComment };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type {\n GQLCreatePageInput,\n GQLUpdatePageInput,\n GQLMutatedPage,\n GQLDeletePageResult,\n} from './types';\n\nconst MUTATED_PAGE_FIELDS = `\n id\n databaseId\n slug\n title\n status\n uri\n`;\n\nconst GQL_CREATE_PAGE = `\n mutation CreatePage($input: CreatePageInput!) {\n createPage(input: $input) {\n page { ${MUTATED_PAGE_FIELDS} }\n }\n }\n`;\n\nconst GQL_UPDATE_PAGE = `\n mutation UpdatePage($input: UpdatePageInput!) {\n updatePage(input: $input) {\n page { ${MUTATED_PAGE_FIELDS} }\n }\n }\n`;\n\nconst GQL_DELETE_PAGE = `\n mutation DeletePage($input: DeletePageInput!) {\n deletePage(input: $input) {\n deletedId\n page { ${MUTATED_PAGE_FIELDS} }\n }\n }\n`;\n\nexport function createPagesMutations(fetcher: WPGraphQLFetcher) {\n const { gqlMutate } = fetcher;\n\n async function createPage(\n input: GQLCreatePageInput,\n authToken: string,\n ): Promise<GQLMutatedPage> {\n const data = await gqlMutate<{ createPage: { page: GQLMutatedPage } }>(\n GQL_CREATE_PAGE,\n { input },\n authToken,\n );\n return data.createPage.page;\n }\n\n async function updatePage(\n input: GQLUpdatePageInput,\n authToken: string,\n ): Promise<GQLMutatedPage> {\n const data = await gqlMutate<{ updatePage: { page: GQLMutatedPage } }>(\n GQL_UPDATE_PAGE,\n { input },\n authToken,\n );\n return data.updatePage.page;\n }\n\n async function deletePage(\n id: string,\n authToken: string,\n forceDelete = false,\n ): Promise<GQLDeletePageResult> {\n const data = await gqlMutate<{ deletePage: GQLDeletePageResult }>(\n GQL_DELETE_PAGE,\n { input: { id, forceDelete } },\n authToken,\n );\n return data.deletePage;\n }\n\n return { createPage, updatePage, deletePage };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type {\n GQLCreateCategoryInput,\n GQLUpdateCategoryInput,\n GQLMutatedCategory,\n GQLDeleteCategoryResult,\n} from './types';\n\nconst MUTATED_CATEGORY_FIELDS = `\n id\n databaseId\n name\n slug\n`;\n\nconst GQL_CREATE_CATEGORY = `\n mutation CreateCategory($input: CreateCategoryInput!) {\n createCategory(input: $input) {\n category { ${MUTATED_CATEGORY_FIELDS} }\n }\n }\n`;\n\nconst GQL_UPDATE_CATEGORY = `\n mutation UpdateCategory($input: UpdateCategoryInput!) {\n updateCategory(input: $input) {\n category { ${MUTATED_CATEGORY_FIELDS} }\n }\n }\n`;\n\nconst GQL_DELETE_CATEGORY = `\n mutation DeleteCategory($input: DeleteCategoryInput!) {\n deleteCategory(input: $input) {\n deletedId\n category { ${MUTATED_CATEGORY_FIELDS} }\n }\n }\n`;\n\nexport function createCategoriesMutations(fetcher: WPGraphQLFetcher) {\n const { gqlMutate } = fetcher;\n\n async function createCategory(\n input: GQLCreateCategoryInput,\n authToken: string,\n ): Promise<GQLMutatedCategory> {\n const data = await gqlMutate<{ createCategory: { category: GQLMutatedCategory } }>(\n GQL_CREATE_CATEGORY,\n { input },\n authToken,\n );\n return data.createCategory.category;\n }\n\n async function updateCategory(\n input: GQLUpdateCategoryInput,\n authToken: string,\n ): Promise<GQLMutatedCategory> {\n const data = await gqlMutate<{ updateCategory: { category: GQLMutatedCategory } }>(\n GQL_UPDATE_CATEGORY,\n { input },\n authToken,\n );\n return data.updateCategory.category;\n }\n\n async function deleteCategory(\n id: string,\n authToken: string,\n ): Promise<GQLDeleteCategoryResult> {\n const data = await gqlMutate<{ deleteCategory: GQLDeleteCategoryResult }>(\n GQL_DELETE_CATEGORY,\n { input: { id } },\n authToken,\n );\n return data.deleteCategory;\n }\n\n return { createCategory, updateCategory, deleteCategory };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type {\n GQLCreateTagInput,\n GQLUpdateTagInput,\n GQLMutatedTag,\n GQLDeleteTagResult,\n} from './types';\n\nconst MUTATED_TAG_FIELDS = `\n id\n databaseId\n name\n slug\n`;\n\nconst GQL_CREATE_TAG = `\n mutation CreateTag($input: CreateTagInput!) {\n createTag(input: $input) {\n tag { ${MUTATED_TAG_FIELDS} }\n }\n }\n`;\n\nconst GQL_UPDATE_TAG = `\n mutation UpdateTag($input: UpdateTagInput!) {\n updateTag(input: $input) {\n tag { ${MUTATED_TAG_FIELDS} }\n }\n }\n`;\n\nconst GQL_DELETE_TAG = `\n mutation DeleteTag($input: DeleteTagInput!) {\n deleteTag(input: $input) {\n deletedId\n tag { ${MUTATED_TAG_FIELDS} }\n }\n }\n`;\n\nexport function createTagsMutations(fetcher: WPGraphQLFetcher) {\n const { gqlMutate } = fetcher;\n\n async function createTag(\n input: GQLCreateTagInput,\n authToken: string,\n ): Promise<GQLMutatedTag> {\n const data = await gqlMutate<{ createTag: { tag: GQLMutatedTag } }>(\n GQL_CREATE_TAG,\n { input },\n authToken,\n );\n return data.createTag.tag;\n }\n\n async function updateTag(\n input: GQLUpdateTagInput,\n authToken: string,\n ): Promise<GQLMutatedTag> {\n const data = await gqlMutate<{ updateTag: { tag: GQLMutatedTag } }>(\n GQL_UPDATE_TAG,\n { input },\n authToken,\n );\n return data.updateTag.tag;\n }\n\n async function deleteTag(id: string, authToken: string): Promise<GQLDeleteTagResult> {\n const data = await gqlMutate<{ deleteTag: GQLDeleteTagResult }>(\n GQL_DELETE_TAG,\n { input: { id } },\n authToken,\n );\n return data.deleteTag;\n }\n\n return { createTag, updateTag, deleteTag };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type {\n GQLRegisterUserInput,\n GQLUpdateUserInput,\n GQLMutatedUser,\n GQLDeleteUserResult,\n} from './types';\n\nconst MUTATED_USER_FIELDS = `\n id\n databaseId\n name\n slug\n email\n`;\n\nconst GQL_REGISTER_USER = `\n mutation RegisterUser($input: RegisterUserInput!) {\n registerUser(input: $input) {\n user { ${MUTATED_USER_FIELDS} }\n }\n }\n`;\n\nconst GQL_UPDATE_USER = `\n mutation UpdateUser($input: UpdateUserInput!) {\n updateUser(input: $input) {\n user { ${MUTATED_USER_FIELDS} }\n }\n }\n`;\n\nconst GQL_DELETE_USER = `\n mutation DeleteUser($input: DeleteUserInput!) {\n deleteUser(input: $input) {\n deletedId\n user { ${MUTATED_USER_FIELDS} }\n }\n }\n`;\n\nexport function createAuthorsMutations(fetcher: WPGraphQLFetcher) {\n const { gqlMutate } = fetcher;\n\n async function registerUser(\n input: GQLRegisterUserInput,\n authToken?: string,\n ): Promise<GQLMutatedUser> {\n const data = await gqlMutate<{ registerUser: { user: GQLMutatedUser } }>(\n GQL_REGISTER_USER,\n { input },\n authToken,\n );\n return data.registerUser.user;\n }\n\n async function updateUser(\n input: GQLUpdateUserInput,\n authToken: string,\n ): Promise<GQLMutatedUser> {\n const data = await gqlMutate<{ updateUser: { user: GQLMutatedUser } }>(\n GQL_UPDATE_USER,\n { input },\n authToken,\n );\n return data.updateUser.user;\n }\n\n async function deleteUser(\n id: string,\n authToken: string,\n reassignPosts?: string,\n ): Promise<GQLDeleteUserResult> {\n const input: Record<string, unknown> = { id };\n if (reassignPosts) input['reassignId'] = reassignPosts;\n\n const data = await gqlMutate<{ deleteUser: GQLDeleteUserResult }>(\n GQL_DELETE_USER,\n { input },\n authToken,\n );\n return data.deleteUser;\n }\n\n return { registerUser, updateUser, deleteUser };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type {\n GQLCreateMediaItemInput,\n GQLUpdateMediaItemInput,\n GQLMutatedMediaItem,\n GQLDeleteMediaItemResult,\n} from './types';\n\nconst MUTATED_MEDIA_FIELDS = `\n id\n databaseId\n slug\n title\n sourceUrl\n altText\n`;\n\nconst GQL_CREATE_MEDIA_ITEM = `\n mutation CreateMediaItem($input: CreateMediaItemInput!) {\n createMediaItem(input: $input) {\n mediaItem { ${MUTATED_MEDIA_FIELDS} }\n }\n }\n`;\n\nconst GQL_UPDATE_MEDIA_ITEM = `\n mutation UpdateMediaItem($input: UpdateMediaItemInput!) {\n updateMediaItem(input: $input) {\n mediaItem { ${MUTATED_MEDIA_FIELDS} }\n }\n }\n`;\n\nconst GQL_DELETE_MEDIA_ITEM = `\n mutation DeleteMediaItem($input: DeleteMediaItemInput!) {\n deleteMediaItem(input: $input) {\n deletedId\n mediaItem { ${MUTATED_MEDIA_FIELDS} }\n }\n }\n`;\n\nexport function createMediaMutations(fetcher: WPGraphQLFetcher) {\n const { gqlMutate } = fetcher;\n\n async function createMediaItem(\n input: GQLCreateMediaItemInput,\n authToken: string,\n ): Promise<GQLMutatedMediaItem> {\n const data = await gqlMutate<{ createMediaItem: { mediaItem: GQLMutatedMediaItem } }>(\n GQL_CREATE_MEDIA_ITEM,\n { input },\n authToken,\n );\n return data.createMediaItem.mediaItem;\n }\n\n async function updateMediaItem(\n input: GQLUpdateMediaItemInput,\n authToken: string,\n ): Promise<GQLMutatedMediaItem> {\n const data = await gqlMutate<{ updateMediaItem: { mediaItem: GQLMutatedMediaItem } }>(\n GQL_UPDATE_MEDIA_ITEM,\n { input },\n authToken,\n );\n return data.updateMediaItem.mediaItem;\n }\n\n async function deleteMediaItem(\n id: string,\n authToken: string,\n forceDelete = true,\n ): Promise<GQLDeleteMediaItemResult> {\n const data = await gqlMutate<{ deleteMediaItem: GQLDeleteMediaItemResult }>(\n GQL_DELETE_MEDIA_ITEM,\n { input: { id, forceDelete } },\n authToken,\n );\n return data.deleteMediaItem;\n }\n\n return { createMediaItem, updateMediaItem, deleteMediaItem };\n}\n","export type {\n GQLPostStatus,\n GQLCreatePostInput,\n GQLUpdatePostInput,\n GQLMutatedPost,\n GQLDeletePostResult,\n} from './posts';\nexport { createPostsMutations } from './posts';\n\nexport type {\n GQLCreateCommentInput,\n GQLUpdateCommentInput,\n GQLMutatedComment,\n GQLCreateCommentResult,\n GQLDeleteCommentResult,\n} from './comments';\nexport { createCommentsMutations } from './comments';\n\nexport type {\n GQLPageStatus,\n GQLCreatePageInput,\n GQLUpdatePageInput,\n GQLMutatedPage,\n GQLDeletePageResult,\n} from './pages';\nexport { createPagesMutations } from './pages';\n\nexport type {\n GQLCreateCategoryInput,\n GQLUpdateCategoryInput,\n GQLMutatedCategory,\n GQLDeleteCategoryResult,\n} from './categories';\nexport { createCategoriesMutations } from './categories';\n\nexport type {\n GQLCreateTagInput,\n GQLUpdateTagInput,\n GQLMutatedTag,\n GQLDeleteTagResult,\n} from './tags';\nexport { createTagsMutations } from './tags';\n\nexport type {\n GQLRegisterUserInput,\n GQLUpdateUserInput,\n GQLMutatedUser,\n GQLDeleteUserResult,\n} from './authors';\nexport { createAuthorsMutations } from './authors';\n\nexport type {\n GQLCreateMediaItemInput,\n GQLUpdateMediaItemInput,\n GQLMutatedMediaItem,\n GQLDeleteMediaItemResult,\n} from './media';\nexport { createMediaMutations } from './media';\n\nimport { createWPGraphQLFetcher } from '@wpgraphql/client';\nimport type { WPGraphQLConfig } from '@wpgraphql/client';\nimport { createPostsMutations } from './posts';\nimport { createCommentsMutations } from './comments';\nimport { createPagesMutations } from './pages';\nimport { createCategoriesMutations } from './categories';\nimport { createTagsMutations } from './tags';\nimport { createAuthorsMutations } from './authors';\nimport { createMediaMutations } from './media';\n\nexport function createWPGraphQLMutationsClient(config: WPGraphQLConfig) {\n const fetcher = createWPGraphQLFetcher(config);\n return {\n ...createPostsMutations(fetcher),\n ...createCommentsMutations(fetcher),\n ...createPagesMutations(fetcher),\n ...createCategoriesMutations(fetcher),\n ...createTagsMutations(fetcher),\n ...createAuthorsMutations(fetcher),\n ...createMediaMutations(fetcher),\n };\n}\n","export type { GQLPost, GQLPostFilter } from './posts';\nexport { createPostsQueries } from './posts';\n\nexport type { GQLPage } from './pages';\nexport { createPagesQueries } from './pages';\n\nexport type { GQLCategory } from './categories';\nexport { createCategoriesQueries } from './categories';\n\nexport type { GQLTag } from './tags';\nexport { createTagsQueries } from './tags';\n\nexport type { GQLAuthor } from './authors';\nexport { createAuthorsQueries } from './authors';\n\nexport type { GQLMenu, GQLMenuItem } from './menus';\nexport { createMenusQueries } from './menus';\n\nexport type { GQLComment, GQLCommentAuthor } from './comments';\nexport { createCommentsQueries } from './comments';\n\nexport type { GQLMediaItem } from './media';\nexport { createMediaQueries } from './media';\n\nexport type {\n GQLPostStatus,\n GQLCreatePostInput,\n GQLUpdatePostInput,\n GQLMutatedPost,\n GQLDeletePostResult,\n GQLCreateCommentInput,\n GQLUpdateCommentInput,\n GQLMutatedComment,\n GQLCreateCommentResult,\n GQLDeleteCommentResult,\n GQLPageStatus,\n GQLCreatePageInput,\n GQLUpdatePageInput,\n GQLMutatedPage,\n GQLDeletePageResult,\n GQLCreateCategoryInput,\n GQLUpdateCategoryInput,\n GQLMutatedCategory,\n GQLDeleteCategoryResult,\n GQLCreateTagInput,\n GQLUpdateTagInput,\n GQLMutatedTag,\n GQLDeleteTagResult,\n GQLRegisterUserInput,\n GQLUpdateUserInput,\n GQLMutatedUser,\n GQLDeleteUserResult,\n GQLCreateMediaItemInput,\n GQLUpdateMediaItemInput,\n GQLMutatedMediaItem,\n GQLDeleteMediaItemResult,\n} from './mutations';\nexport {\n createPostsMutations,\n createCommentsMutations,\n createPagesMutations,\n createCategoriesMutations,\n createTagsMutations,\n createAuthorsMutations,\n createMediaMutations,\n} from './mutations';\n\nimport { createWPGraphQLFetcher } from '@wpgraphql/client';\nimport type { WPGraphQLConfig } from '@wpgraphql/client';\nimport { createPostsQueries } from './posts';\nimport { createPagesQueries } from './pages';\nimport { createCategoriesQueries } from './categories';\nimport { createTagsQueries } from './tags';\nimport { createAuthorsQueries } from './authors';\nimport { createMenusQueries } from './menus';\nimport { createCommentsQueries } from './comments';\nimport { createMediaQueries } from './media';\n\nexport function createWPGraphQLCoreClient(config: WPGraphQLConfig) {\n const fetcher = createWPGraphQLFetcher(config);\n\n return {\n ...createPostsQueries(fetcher),\n ...createPagesQueries(fetcher),\n ...createCategoriesQueries(fetcher),\n ...createTagsQueries(fetcher),\n ...createAuthorsQueries(fetcher),\n ...createMenusQueries(fetcher),\n ...createCommentsQueries(fetcher),\n ...createMediaQueries(fetcher),\n };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLPostWithSEO, GQLPageWithSEO } from './types';\n\nconst SEO_FIELDS = `\n seo {\n title\n metaDesc\n canonical\n opengraphTitle\n opengraphDescription\n opengraphImage { sourceUrl altText }\n twitterTitle\n twitterDescription\n twitterImage { sourceUrl }\n schema { raw }\n }\n`;\n\nconst POST_FIELDS_WITH_SEO = `\n id\n databaseId\n slug\n title\n content\n excerpt\n date\n modified\n status\n uri\n author {\n node {\n databaseId\n name\n slug\n avatar { url }\n }\n }\n featuredImage {\n node {\n sourceUrl\n altText\n mediaDetails { width height }\n }\n }\n categories {\n nodes { databaseId name slug }\n }\n tags {\n nodes { databaseId name slug }\n }\n ${SEO_FIELDS}\n`;\n\nconst PAGE_FIELDS_WITH_SEO = `\n id\n databaseId\n slug\n title\n content\n date\n modified\n status\n uri\n featuredImage {\n node {\n sourceUrl\n altText\n mediaDetails { width height }\n }\n }\n ${SEO_FIELDS}\n`;\n\nconst GQL_GET_POST_WITH_SEO = `\n query GetPostWithSEO($slug: ID!) {\n post(id: $slug, idType: SLUG) { ${POST_FIELDS_WITH_SEO} }\n }\n`;\n\nconst GQL_GET_PAGE_WITH_SEO = `\n query GetPageWithSEO($slug: ID!) {\n page(id: $slug, idType: SLUG) { ${PAGE_FIELDS_WITH_SEO} }\n }\n`;\n\nconst GQL_GET_PAGE_WITH_SEO_BY_URI = `\n query GetPageWithSEOByUri($uri: ID!) {\n page(id: $uri, idType: URI) { ${PAGE_FIELDS_WITH_SEO} }\n }\n`;\n\nexport function createYoastQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetchGraceful } = fetcher;\n\n async function getPostWithSEO(slug: string): Promise<GQLPostWithSEO | null> {\n const data = await gqlFetchGraceful<{ post: GQLPostWithSEO | null }>(\n GQL_GET_POST_WITH_SEO,\n { post: null },\n { slug },\n ['wpgraphql', 'gql-posts', 'gql-yoast', `gql-post-${slug}`],\n );\n return data.post;\n }\n\n async function getPageWithSEO(slug: string): Promise<GQLPageWithSEO | null> {\n const data = await gqlFetchGraceful<{ page: GQLPageWithSEO | null }>(\n GQL_GET_PAGE_WITH_SEO,\n { page: null },\n { slug },\n ['wpgraphql', 'gql-pages', 'gql-yoast', `gql-page-${slug}`],\n );\n return data.page;\n }\n\n async function getPageWithSEOByUri(uri: string): Promise<GQLPageWithSEO | null> {\n const data = await gqlFetchGraceful<{ page: GQLPageWithSEO | null }>(\n GQL_GET_PAGE_WITH_SEO_BY_URI,\n { page: null },\n { uri },\n ['wpgraphql', 'gql-pages', 'gql-yoast', `gql-page-uri-${uri.replace(/\\//g, '-')}`],\n );\n return data.page;\n }\n\n return { getPostWithSEO, getPageWithSEO, getPageWithSEOByUri };\n}\n","const BASE_POST_FIELDS = `\n id databaseId slug title content excerpt date modified status uri\n author { node { databaseId name slug avatar { url } } }\n featuredImage { node { sourceUrl altText mediaDetails { width height } } }\n categories { nodes { databaseId name slug } }\n tags { nodes { databaseId name slug } }\n`;\n\nconst BASE_PAGE_FIELDS = `\n id databaseId slug title content date modified status uri\n featuredImage { node { sourceUrl altText mediaDetails { width height } } }\n`;\n\nexport function buildACFFragment(fieldGroupName: string, fields: string[]): string {\n return `${fieldGroupName} { ${fields.join(' ')} }`;\n}\n\nexport function buildPostWithACFQuery(fieldGroupName: string, fields: string[]): string {\n return `\n query GetPostWithACF($slug: ID!) {\n post(id: $slug, idType: SLUG) {\n ${BASE_POST_FIELDS}\n ${buildACFFragment(fieldGroupName, fields)}\n }\n }\n `;\n}\n\nexport function buildPageWithACFQuery(fieldGroupName: string, fields: string[]): string {\n return `\n query GetPageWithACF($slug: ID!) {\n page(id: $slug, idType: SLUG) {\n ${BASE_PAGE_FIELDS}\n ${buildACFFragment(fieldGroupName, fields)}\n }\n }\n `;\n}\n\nexport function buildPostsWithACFQuery(fieldGroupName: string, fields: string[]): string {\n return `\n query GetPostsWithACF($first: Int, $after: String) {\n posts(first: $first, after: $after) {\n nodes {\n ${BASE_POST_FIELDS}\n ${buildACFFragment(fieldGroupName, fields)}\n }\n pageInfo { hasNextPage hasPreviousPage startCursor endCursor }\n }\n }\n `;\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLConnection } from '@wpgraphql/client';\nimport type { GQLProduct, GQLProductFilter } from './types';\n\nconst DEFAULT_FIRST = 10;\nconst BATCH_FIRST = 100;\n\nconst PRODUCT_FIELDS = `\n id\n databaseId\n slug\n name\n status\n description\n shortDescription\n type\n onSale\n featuredImage { node { sourceUrl altText } }\n galleryImages { nodes { sourceUrl altText } }\n productCategories { nodes { databaseId name slug } }\n productTags { nodes { databaseId name slug } }\n ... on SimpleProduct {\n sku\n price\n regularPrice\n salePrice\n stockStatus\n stockQuantity\n manageStock\n }\n ... on VariableProduct {\n price\n regularPrice\n salePrice\n stockStatus\n stockQuantity\n manageStock\n variations {\n nodes {\n id\n databaseId\n slug\n sku\n price\n regularPrice\n salePrice\n onSale\n stockStatus\n stockQuantity\n image { sourceUrl altText }\n attributes { nodes { name value } }\n }\n }\n }\n`;\n\nconst GQL_GET_PRODUCTS = `\n query GetProducts($first: Int, $after: String, $where: RootQueryToProductConnectionWhereArgs) {\n products(first: $first, after: $after, where: $where) {\n nodes { ${PRODUCT_FIELDS} }\n pageInfo { hasNextPage hasPreviousPage startCursor endCursor }\n }\n }\n`;\n\nconst GQL_GET_PRODUCT_BY_SLUG = `\n query GetProductBySlug($slug: ID!) {\n product(id: $slug, idType: SLUG) { ${PRODUCT_FIELDS} }\n }\n`;\n\nconst GQL_GET_PRODUCT_BY_DATABASE_ID = `\n query GetProductByDatabaseId($id: ID!) {\n product(id: $id, idType: DATABASE_ID) { ${PRODUCT_FIELDS} }\n }\n`;\n\nconst GQL_GET_ALL_PRODUCT_SLUGS = `\n query GetAllProductSlugs($first: Int, $after: String) {\n products(first: $first, after: $after) {\n nodes { slug }\n pageInfo { hasNextPage endCursor }\n }\n }\n`;\n\nexport function createProductsQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetch, gqlFetchGraceful } = fetcher;\n\n async function getProducts(\n first: number = DEFAULT_FIRST,\n after?: string,\n filter?: GQLProductFilter,\n ): Promise<GQLConnection<GQLProduct>> {\n const where: Record<string, unknown> = {};\n if (filter?.search) where['search'] = filter.search;\n if (filter?.onSale !== undefined) where['onSale'] = filter.onSale;\n if (filter?.featured !== undefined) where['featured'] = filter.featured;\n if (filter?.stockStatus) where['stockStatus'] = filter.stockStatus;\n if (filter?.minPrice) where['minPrice'] = filter.minPrice;\n if (filter?.maxPrice) where['maxPrice'] = filter.maxPrice;\n if (filter?.categoryId) where['categoryIdIn'] = [filter.categoryId];\n if (filter?.tagId) where['tagIdIn'] = [filter.tagId];\n\n const data = await gqlFetchGraceful<{ products: GQLConnection<GQLProduct> }>(\n GQL_GET_PRODUCTS,\n { products: { nodes: [], pageInfo: { hasNextPage: false, hasPreviousPage: false } } },\n { first, after, where: Object.keys(where).length > 0 ? where : undefined },\n ['wpgraphql', 'gql-products'],\n );\n return data.products;\n }\n\n async function getProductBySlug(slug: string): Promise<GQLProduct | null> {\n const data = await gqlFetchGraceful<{ product: GQLProduct | null }>(\n GQL_GET_PRODUCT_BY_SLUG,\n { product: null },\n { slug },\n ['wpgraphql', 'gql-products', `gql-product-${slug}`],\n );\n return data.product;\n }\n\n async function getProductByDatabaseId(id: number): Promise<GQLProduct | null> {\n const data = await gqlFetchGraceful<{ product: GQLProduct | null }>(\n GQL_GET_PRODUCT_BY_DATABASE_ID,\n { product: null },\n { id: String(id) },\n ['wpgraphql', 'gql-products', `gql-product-id-${id}`],\n );\n return data.product;\n }\n\n async function getFeaturedProducts(first: number = DEFAULT_FIRST): Promise<GQLProduct[]> {\n const connection = await getProducts(first, undefined, { featured: true });\n return connection.nodes;\n }\n\n async function getOnSaleProducts(first: number = DEFAULT_FIRST): Promise<GQLProduct[]> {\n const connection = await getProducts(first, undefined, { onSale: true });\n return connection.nodes;\n }\n\n async function getAllProductSlugs(): Promise<{ slug: string }[]> {\n try {\n const all: { slug: string }[] = [];\n let after: string | undefined = undefined;\n let hasNextPage = true;\n\n while (hasNextPage) {\n const data: { products: GQLConnection<{ slug: string }> } = await gqlFetch<{\n products: GQLConnection<{ slug: string }>;\n }>(GQL_GET_ALL_PRODUCT_SLUGS, { first: BATCH_FIRST, after }, ['wpgraphql']);\n all.push(...data.products.nodes);\n hasNextPage = data.products.pageInfo.hasNextPage;\n after = data.products.pageInfo.endCursor;\n }\n\n return all;\n } catch {\n console.warn('WPGraphQL unavailable, skipping static generation for products');\n return [];\n }\n }\n\n return {\n getProducts,\n getProductBySlug,\n getProductByDatabaseId,\n getFeaturedProducts,\n getOnSaleProducts,\n getAllProductSlugs,\n };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLConnection } from '@wpgraphql/client';\nimport type { GQLOrder } from './types';\n\nconst DEFAULT_FIRST = 10;\n\nconst ADDRESS_FIELDS = `\n firstName lastName address1 address2 city postcode country email phone\n`;\n\nconst ORDER_FIELDS = `\n id\n databaseId\n orderNumber\n status\n date\n modified\n total\n subtotal\n totalTax\n shippingTotal\n currency\n billing { ${ADDRESS_FIELDS} }\n shipping { ${ADDRESS_FIELDS} }\n lineItems {\n nodes {\n productId\n variationId\n quantity\n subtotal\n total\n product { node { databaseId name slug } }\n }\n }\n`;\n\n// Orders require authentication — queries use customer session/token\nconst GQL_GET_ORDER = `\n query GetOrder($id: ID!) {\n order(id: $id, idType: DATABASE_ID) { ${ORDER_FIELDS} }\n }\n`;\n\nconst GQL_GET_MY_ORDERS = `\n query GetMyOrders($first: Int, $after: String) {\n orders(first: $first, after: $after) {\n nodes { ${ORDER_FIELDS} }\n pageInfo { hasNextPage hasPreviousPage startCursor endCursor }\n }\n }\n`;\n\nexport function createOrdersQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetchGraceful } = fetcher;\n\n async function getOrder(id: number): Promise<GQLOrder | null> {\n const data = await gqlFetchGraceful<{ order: GQLOrder | null }>(\n GQL_GET_ORDER,\n { order: null },\n { id: String(id) },\n ['wpgraphql', 'gql-orders', `gql-order-${id}`],\n );\n return data.order;\n }\n\n async function getMyOrders(\n first: number = DEFAULT_FIRST,\n after?: string,\n ): Promise<GQLConnection<GQLOrder>> {\n const data = await gqlFetchGraceful<{ orders: GQLConnection<GQLOrder> }>(\n GQL_GET_MY_ORDERS,\n { orders: { nodes: [], pageInfo: { hasNextPage: false, hasPreviousPage: false } } },\n { first, after },\n ['wpgraphql', 'gql-orders'],\n );\n return data.orders;\n }\n\n return { getOrder, getMyOrders };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLCustomer } from './types';\n\nconst ADDRESS_FIELDS = `\n firstName lastName address1 address2 city postcode country\n`;\n\nconst CUSTOMER_FIELDS = `\n id\n databaseId\n email\n firstName\n lastName\n username\n billing { ${ADDRESS_FIELDS} phone }\n shipping { ${ADDRESS_FIELDS} }\n`;\n\n// Requires authentication — returns the currently logged-in customer\nconst GQL_GET_CUSTOMER = `\n query GetCustomer {\n customer { ${CUSTOMER_FIELDS} }\n }\n`;\n\nconst GQL_GET_CUSTOMER_BY_ID = `\n query GetCustomerById($id: ID!) {\n customer(customerId: $id) { ${CUSTOMER_FIELDS} }\n }\n`;\n\nexport function createCustomersQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetchGraceful } = fetcher;\n\n async function getCustomer(): Promise<GQLCustomer | null> {\n const data = await gqlFetchGraceful<{ customer: GQLCustomer | null }>(\n GQL_GET_CUSTOMER,\n { customer: null },\n undefined,\n ['wpgraphql', 'gql-customer'],\n );\n return data.customer;\n }\n\n async function getCustomerById(id: number): Promise<GQLCustomer | null> {\n const data = await gqlFetchGraceful<{ customer: GQLCustomer | null }>(\n GQL_GET_CUSTOMER_BY_ID,\n { customer: null },\n { id: String(id) },\n ['wpgraphql', 'gql-customer', `gql-customer-${id}`],\n );\n return data.customer;\n }\n\n return { getCustomer, getCustomerById };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLConnection } from '@wpgraphql/client';\nimport type { GQLProductCategory } from './types';\n\nconst DEFAULT_FIRST = 100;\n\nconst CATEGORY_FIELDS = `\n id\n databaseId\n name\n slug\n description\n count\n parent { node { id databaseId name slug } }\n image { sourceUrl altText }\n`;\n\nconst GQL_GET_PRODUCT_CATEGORIES = `\n query GetProductCategories($first: Int, $after: String) {\n productCategories(first: $first, after: $after) {\n nodes { ${CATEGORY_FIELDS} }\n pageInfo { hasNextPage hasPreviousPage startCursor endCursor }\n }\n }\n`;\n\nconst GQL_GET_PRODUCT_CATEGORY_BY_SLUG = `\n query GetProductCategoryBySlug($id: ID!) {\n productCategory(id: $id, idType: SLUG) { ${CATEGORY_FIELDS} }\n }\n`;\n\nconst GQL_GET_PRODUCT_CATEGORY_BY_ID = `\n query GetProductCategoryById($id: ID!) {\n productCategory(id: $id, idType: DATABASE_ID) { ${CATEGORY_FIELDS} }\n }\n`;\n\nexport function createCategoriesQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetchGraceful } = fetcher;\n\n async function getProductCategories(\n first: number = DEFAULT_FIRST,\n after?: string,\n ): Promise<GQLConnection<GQLProductCategory>> {\n const data = await gqlFetchGraceful<{\n productCategories: GQLConnection<GQLProductCategory>;\n }>(\n GQL_GET_PRODUCT_CATEGORIES,\n { productCategories: { nodes: [], pageInfo: { hasNextPage: false, hasPreviousPage: false } } },\n { first, after },\n ['wpgraphql', 'gql-product-categories'],\n );\n return data.productCategories;\n }\n\n async function getProductCategoryBySlug(slug: string): Promise<GQLProductCategory | null> {\n const data = await gqlFetchGraceful<{ productCategory: GQLProductCategory | null }>(\n GQL_GET_PRODUCT_CATEGORY_BY_SLUG,\n { productCategory: null },\n { id: slug },\n ['wpgraphql', 'gql-product-categories', `gql-product-category-${slug}`],\n );\n return data.productCategory;\n }\n\n async function getProductCategoryById(id: number): Promise<GQLProductCategory | null> {\n const data = await gqlFetchGraceful<{ productCategory: GQLProductCategory | null }>(\n GQL_GET_PRODUCT_CATEGORY_BY_ID,\n { productCategory: null },\n { id: String(id) },\n ['wpgraphql', 'gql-product-categories', `gql-product-category-${id}`],\n );\n return data.productCategory;\n }\n\n return { getProductCategories, getProductCategoryBySlug, getProductCategoryById };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLConnection } from '@wpgraphql/client';\nimport type { GQLProductTag } from './types';\n\nconst DEFAULT_FIRST = 100;\n\nconst TAG_FIELDS = `\n id\n databaseId\n name\n slug\n description\n count\n`;\n\nconst GQL_GET_PRODUCT_TAGS = `\n query GetProductTags($first: Int, $after: String) {\n productTags(first: $first, after: $after) {\n nodes { ${TAG_FIELDS} }\n pageInfo { hasNextPage hasPreviousPage startCursor endCursor }\n }\n }\n`;\n\nconst GQL_GET_PRODUCT_TAG_BY_SLUG = `\n query GetProductTagBySlug($id: ID!) {\n productTag(id: $id, idType: SLUG) { ${TAG_FIELDS} }\n }\n`;\n\nconst GQL_GET_PRODUCT_TAG_BY_ID = `\n query GetProductTagById($id: ID!) {\n productTag(id: $id, idType: DATABASE_ID) { ${TAG_FIELDS} }\n }\n`;\n\nexport function createTagsQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetchGraceful } = fetcher;\n\n async function getProductTags(\n first: number = DEFAULT_FIRST,\n after?: string,\n ): Promise<GQLConnection<GQLProductTag>> {\n const data = await gqlFetchGraceful<{ productTags: GQLConnection<GQLProductTag> }>(\n GQL_GET_PRODUCT_TAGS,\n { productTags: { nodes: [], pageInfo: { hasNextPage: false, hasPreviousPage: false } } },\n { first, after },\n ['wpgraphql', 'gql-product-tags'],\n );\n return data.productTags;\n }\n\n async function getProductTagBySlug(slug: string): Promise<GQLProductTag | null> {\n const data = await gqlFetchGraceful<{ productTag: GQLProductTag | null }>(\n GQL_GET_PRODUCT_TAG_BY_SLUG,\n { productTag: null },\n { id: slug },\n ['wpgraphql', 'gql-product-tags', `gql-product-tag-${slug}`],\n );\n return data.productTag;\n }\n\n async function getProductTagById(id: number): Promise<GQLProductTag | null> {\n const data = await gqlFetchGraceful<{ productTag: GQLProductTag | null }>(\n GQL_GET_PRODUCT_TAG_BY_ID,\n { productTag: null },\n { id: String(id) },\n ['wpgraphql', 'gql-product-tags', `gql-product-tag-${id}`],\n );\n return data.productTag;\n }\n\n return { getProductTags, getProductTagBySlug, getProductTagById };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLConnection } from '@wpgraphql/client';\nimport type { GQLCoupon } from './types';\n\nconst DEFAULT_FIRST = 100;\n\nconst COUPON_FIELDS = `\n id\n databaseId\n code\n discountType\n amount\n dateExpiry\n usageCount\n usageLimit\n usageLimitPerUser\n individualUse\n freeShipping\n minimumAmount\n maximumAmount\n description\n`;\n\nconst GQL_GET_COUPONS = `\n query GetCoupons($first: Int, $after: String) {\n coupons(first: $first, after: $after) {\n nodes { ${COUPON_FIELDS} }\n pageInfo { hasNextPage hasPreviousPage startCursor endCursor }\n }\n }\n`;\n\nconst GQL_GET_COUPON_BY_CODE = `\n query GetCouponByCode($id: ID!) {\n coupon(id: $id, idType: CODE) { ${COUPON_FIELDS} }\n }\n`;\n\nconst GQL_GET_COUPON_BY_ID = `\n query GetCouponById($id: ID!) {\n coupon(id: $id, idType: DATABASE_ID) { ${COUPON_FIELDS} }\n }\n`;\n\nexport function createCouponsQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetchGraceful } = fetcher;\n\n async function getCoupons(\n first: number = DEFAULT_FIRST,\n after?: string,\n ): Promise<GQLConnection<GQLCoupon>> {\n const data = await gqlFetchGraceful<{ coupons: GQLConnection<GQLCoupon> }>(\n GQL_GET_COUPONS,\n { coupons: { nodes: [], pageInfo: { hasNextPage: false, hasPreviousPage: false } } },\n { first, after },\n ['wpgraphql', 'gql-coupons'],\n );\n return data.coupons;\n }\n\n async function getCouponByCode(code: string): Promise<GQLCoupon | null> {\n const data = await gqlFetchGraceful<{ coupon: GQLCoupon | null }>(\n GQL_GET_COUPON_BY_CODE,\n { coupon: null },\n { id: code },\n ['wpgraphql', 'gql-coupons', `gql-coupon-${code}`],\n );\n return data.coupon;\n }\n\n async function getCouponById(id: number): Promise<GQLCoupon | null> {\n const data = await gqlFetchGraceful<{ coupon: GQLCoupon | null }>(\n GQL_GET_COUPON_BY_ID,\n { coupon: null },\n { id: String(id) },\n ['wpgraphql', 'gql-coupons', `gql-coupon-${id}`],\n );\n return data.coupon;\n }\n\n return { getCoupons, getCouponByCode, getCouponById };\n}\n","export type { GQLProduct, GQLProductVariation, GQLProductFilter } from './products';\nexport { createProductsQueries } from './products';\n\nexport type { GQLOrder, GQLLineItem, GQLOrderAddress } from './orders';\nexport { createOrdersQueries } from './orders';\n\nexport type { GQLCustomer } from './customers';\nexport { createCustomersQueries } from './customers';\n\nexport type { GQLProductCategory } from './categories';\nexport { createCategoriesQueries } from './categories';\n\nexport type { GQLProductTag } from './tags';\nexport { createTagsQueries } from './tags';\n\nexport type { GQLCoupon } from './coupons';\nexport { createCouponsQueries } from './coupons';\n\nimport { createWPGraphQLFetcher } from '@wpgraphql/client';\nimport type { WPGraphQLConfig } from '@wpgraphql/client';\nimport { createProductsQueries } from './products';\nimport { createOrdersQueries } from './orders';\nimport { createCustomersQueries } from './customers';\nimport { createCategoriesQueries } from './categories';\nimport { createTagsQueries } from './tags';\nimport { createCouponsQueries } from './coupons';\n\nexport function createWPGraphQLWooCommerceClient(config: WPGraphQLConfig) {\n const fetcher = createWPGraphQLFetcher(config);\n\n return {\n ...createProductsQueries(fetcher),\n ...createOrdersQueries(fetcher),\n ...createCustomersQueries(fetcher),\n ...createCategoriesQueries(fetcher),\n ...createTagsQueries(fetcher),\n ...createCouponsQueries(fetcher),\n };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLConnection } from '@wpgraphql/client';\nimport type { GQLCPTNode } from './types';\n\nconst DEFAULT_FIRST = 10;\nconst BATCH_FIRST = 100;\n\nconst BASE_CPT_FIELDS = `\n id databaseId slug title date modified status uri\n`;\n\n// typeName: plural GraphQL field name (e.g. 'events', 'portfolioItems')\n// singularTypeName: singular for single-item query (e.g. 'event', 'portfolioItem')\nexport function createCPTQueries(\n fetcher: WPGraphQLFetcher,\n typeName: string,\n singularTypeName: string,\n extraFields?: string,\n) {\n const { gqlFetch, gqlFetchGraceful } = fetcher;\n const fields = extraFields ? `${BASE_CPT_FIELDS} ${extraFields}` : BASE_CPT_FIELDS;\n\n const GQL_GET_ITEMS = `\n query GetCPT_${typeName}($first: Int, $after: String) {\n ${typeName}(first: $first, after: $after) {\n nodes { ${fields} }\n pageInfo { hasNextPage hasPreviousPage startCursor endCursor }\n }\n }\n `;\n\n const GQL_GET_ITEM_BY_SLUG = `\n query GetCPT_${singularTypeName}BySlug($slug: ID!) {\n ${singularTypeName}(id: $slug, idType: SLUG) { ${fields} }\n }\n `;\n\n const GQL_GET_ALL_SLUGS = `\n query GetAllCPT_${typeName}Slugs($first: Int, $after: String) {\n ${typeName}(first: $first, after: $after) {\n nodes { slug }\n pageInfo { hasNextPage endCursor }\n }\n }\n `;\n\n async function getItems(\n first: number = DEFAULT_FIRST,\n after?: string,\n ): Promise<GQLConnection<GQLCPTNode>> {\n const data = await gqlFetchGraceful<{ [key: string]: GQLConnection<GQLCPTNode> }>(\n GQL_GET_ITEMS,\n { [typeName]: { nodes: [], pageInfo: { hasNextPage: false, hasPreviousPage: false } } },\n { first, after },\n ['wpgraphql', `gql-${typeName}`],\n );\n return data[typeName] ?? { nodes: [], pageInfo: { hasNextPage: false, hasPreviousPage: false } };\n }\n\n async function getItemBySlug(slug: string): Promise<GQLCPTNode | null> {\n const data = await gqlFetchGraceful<{ [key: string]: GQLCPTNode | null }>(\n GQL_GET_ITEM_BY_SLUG,\n { [singularTypeName]: null },\n { slug },\n ['wpgraphql', `gql-${typeName}`, `gql-${singularTypeName}-${slug}`],\n );\n return data[singularTypeName] ?? null;\n }\n\n async function getAllSlugs(): Promise<{ slug: string }[]> {\n try {\n const all: { slug: string }[] = [];\n let after: string | undefined = undefined;\n let hasNextPage = true;\n\n while (hasNextPage) {\n const data: { [key: string]: GQLConnection<{ slug: string }> } = await gqlFetch<{\n [key: string]: GQLConnection<{ slug: string }>;\n }>(GQL_GET_ALL_SLUGS, { first: BATCH_FIRST, after }, ['wpgraphql']);\n const connection: GQLConnection<{ slug: string }> | undefined = data[typeName];\n if (!connection) break;\n all.push(...connection.nodes);\n hasNextPage = connection.pageInfo.hasNextPage;\n after = connection.pageInfo.endCursor;\n }\n\n return all;\n } catch {\n console.warn(`WPGraphQL unavailable, skipping static generation for ${typeName}`);\n return [];\n }\n }\n\n return { getItems, getItemBySlug, getAllSlugs };\n}\n","export interface RevalidationConfig {\n secret: string;\n}\n\nexport interface RevalidationPayload {\n action: string;\n post_id?: number;\n post_type?: string;\n slug?: string;\n taxonomy?: string;\n term_id?: number;\n}\n\nexport interface RevalidationResult {\n revalidated: boolean;\n tags: string[];\n message?: string;\n}\n\nconst ACTION_TAG_MAP: Record<string, string[]> = {\n save_post: ['wordpress', 'posts'],\n save_post_post: ['wordpress', 'posts'],\n save_post_page: ['wordpress', 'pages'],\n delete_post: ['wordpress', 'posts', 'pages'],\n created_term: ['wordpress', 'categories', 'tags'],\n edited_term: ['wordpress', 'categories', 'tags'],\n delete_term: ['wordpress', 'categories', 'tags'],\n wp_update_nav_menu: ['wordpress', 'menus'],\n woocommerce_product_updated: ['woocommerce', 'products'],\n woocommerce_new_product: ['woocommerce', 'products'],\n woocommerce_delete_product: ['woocommerce', 'products'],\n woocommerce_new_order: ['woocommerce', 'orders'],\n woocommerce_order_status_changed: ['woocommerce', 'orders'],\n woocommerce_update_order: ['woocommerce', 'orders'],\n woocommerce_product_category_updated: ['woocommerce', 'categories'],\n woocommerce_product_tag_updated: ['woocommerce', 'tags'],\n};\n\nfunction extractSecret(request: Request): string | null {\n const auth = request.headers.get('Authorization');\n if (auth?.startsWith('Bearer ')) return auth.slice(7);\n return new URL(request.url).searchParams.get('secret');\n}\n\nexport function createRevalidationHandler(\n config: RevalidationConfig,\n revalidateTag: (tag: string) => void\n): (request: Request) => Promise<Response> {\n return async function handler(request: Request): Promise<Response> {\n if (extractSecret(request) !== config.secret) {\n return Response.json({ revalidated: false, tags: [], message: 'Unauthorized' }, { status: 401 });\n }\n\n let payload: RevalidationPayload;\n try {\n payload = (await request.json()) as RevalidationPayload;\n } catch {\n return Response.json({ revalidated: false, tags: [], message: 'Invalid JSON body' }, { status: 400 });\n }\n\n const { action } = payload;\n const matched = ACTION_TAG_MAP[action];\n if (!matched) {\n return Response.json(\n { revalidated: false, tags: [], message: `Unknown action: ${action}` },\n { status: 400 }\n );\n }\n\n const tags = [...new Set(matched)];\n for (const tag of tags) {\n revalidateTag(tag);\n }\n\n return Response.json({ revalidated: true, tags } satisfies RevalidationResult);\n };\n}\n","export interface FaustConfig {\n wpUrl: string;\n secretKey: string;\n cookieName?: string;\n}\n\nexport interface FaustPreviewConfig {\n wpUrl: string;\n secretKey: string;\n previewPath?: string;\n}\n\nexport interface FaustPreviewDeps {\n enableDraftMode: () => Promise<void>;\n redirect: (url: string) => never;\n}\n\nexport function createFaustAuthHandler(config: FaustConfig) {\n const cookieName = config.cookieName ?? 'faustwp-rt';\n\n return async function handler(request: Request, routePath: string): Promise<Response> {\n if (routePath === 'auth/token') {\n const url = new URL(request.url);\n const code = url.searchParams.get('code');\n const redirectUri = url.searchParams.get('redirect_uri') ?? '/';\n const refreshToken = parseCookie(request, cookieName);\n\n if (!code && !refreshToken) {\n return Response.json({ error: 'Unauthorized' }, { status: 401 });\n }\n\n const wpRes = await fetch(`${config.wpUrl}/?rest_route=/faustwp/v1/authorize`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-faustwp-secret': config.secretKey,\n },\n body: JSON.stringify({ code, refreshToken }),\n });\n\n if (!wpRes.ok) {\n const body = await wpRes.text();\n return new Response(body, { status: wpRes.status });\n }\n\n const data = (await wpRes.json()) as { refreshToken: string };\n return new Response(null, {\n status: 302,\n headers: {\n Location: new URL(redirectUri, request.url).toString(),\n 'Set-Cookie': buildSetCookie(cookieName, data.refreshToken, 2592000),\n },\n });\n }\n\n if (routePath === 'auth/logout') {\n return new Response(JSON.stringify({}), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n 'Set-Cookie': `${cookieName}=; Max-Age=0; Path=/; HttpOnly`,\n },\n });\n }\n\n return Response.json({ error: 'Not Found' }, { status: 404 });\n };\n}\n\nexport function createPreviewHandler(\n config: FaustPreviewConfig,\n deps: FaustPreviewDeps,\n): (request: Request) => Promise<Response> {\n const previewPath = config.previewPath ?? 'posts';\n\n return async function handler(request: Request): Promise<Response> {\n const url = new URL(request.url);\n const postId = url.searchParams.get('postId');\n const previewPathname = url.searchParams.get('previewPathname');\n\n if (!postId) {\n return new Response('Missing postId', { status: 400 });\n }\n\n const slug = await resolvePreviewSlug(config, postId, previewPathname);\n\n if (!slug) {\n return new Response('Post not found', { status: 404 });\n }\n\n await deps.enableDraftMode();\n deps.redirect(`/${previewPath}/${slug}?postId=${postId}`);\n };\n}\n\nfunction parseCookie(request: Request, name: string): string | undefined {\n const header = request.headers.get('cookie') ?? '';\n const match = header.match(new RegExp(`(?:^|;\\\\s*)${name}=([^;]*)`));\n return match?.[1];\n}\n\nfunction buildSetCookie(name: string, value: string, maxAge: number): string {\n const secure = process.env.NODE_ENV === 'production' ? '; Secure' : '';\n return `${name}=${value}; HttpOnly; Path=/; SameSite=Strict; Max-Age=${maxAge}${secure}`;\n}\n\nasync function resolvePreviewSlug(\n config: FaustPreviewConfig,\n postId: string,\n previewPathname: string | null,\n): Promise<string | null> {\n if (previewPathname && !previewPathname.includes('p=')) {\n const slug = previewPathname.replace(/\\/$/, '').split('/').pop();\n if (slug) return slug;\n }\n\n const res = await fetch(`${config.wpUrl}/wp-json/wp/v2/posts/${postId}?_fields=slug`, {\n headers: { 'x-faustwp-secret': config.secretKey },\n cache: 'no-store',\n });\n\n if (!res.ok) return null;\n\n const data = (await res.json()) as { slug?: string };\n return data.slug ?? `preview-${postId}`;\n}\n","export interface CookieConsentCategories {\n necessary: true;\n analytics: boolean;\n marketing: boolean;\n}\n\nexport interface CookieConsentConfig {\n cookieName?: string;\n maxAge?: number;\n}\n\nexport function createCookieConsentHandler(config?: CookieConsentConfig) {\n const cookieName = config?.cookieName ?? 'cookie_notice_accepted';\n const maxAge = config?.maxAge ?? 31536000;\n\n return async function handler(request: Request): Promise<Response> {\n if (request.method === 'GET') {\n const consent = parseCookieConsent(request, cookieName);\n return Response.json(consent ?? null);\n }\n\n if (request.method === 'POST') {\n const body = (await request.json()) as Partial<CookieConsentCategories>;\n const categories: CookieConsentCategories = {\n necessary: true,\n analytics: body.analytics ?? false,\n marketing: body.marketing ?? false,\n };\n return new Response(JSON.stringify(categories), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n 'Set-Cookie': buildConsentCookie(cookieName, encodeURIComponent(JSON.stringify(categories)), maxAge),\n },\n });\n }\n\n if (request.method === 'DELETE') {\n return new Response(null, {\n status: 204,\n headers: {\n 'Set-Cookie': `${cookieName}=; Max-Age=0; Path=/; SameSite=Lax`,\n },\n });\n }\n\n return Response.json({ error: 'Method Not Allowed' }, { status: 405 });\n };\n}\n\nexport function parseCookieConsent(\n request: Request,\n cookieName = 'cookie_notice_accepted',\n): CookieConsentCategories | null {\n const header = request.headers.get('cookie') ?? '';\n const match = header.match(new RegExp(`(?:^|;\\\\s*)${cookieName}=([^;]*)`));\n if (!match) return null;\n // Cookie Notice plugin simple acceptance: value \"1\" means all accepted\n if (match[1] === '1') return { necessary: true, analytics: true, marketing: true };\n try {\n const parsed = JSON.parse(decodeURIComponent(match[1])) as CookieConsentCategories;\n if (typeof parsed !== 'object' || parsed === null) return null;\n return { necessary: true, analytics: parsed.analytics ?? false, marketing: parsed.marketing ?? false };\n } catch {\n return null;\n }\n}\n\nfunction buildConsentCookie(name: string, value: string, maxAge: number): string {\n const secure = process.env.NODE_ENV === 'production' ? '; Secure' : '';\n return `${name}=${value}; Path=/; SameSite=Lax; Max-Age=${maxAge}${secure}`;\n}\n","export function createApplicationPasswordToken(username: string, appPassword: string): string {\n const encoded = Buffer.from(`${username}:${appPassword}`).toString('base64');\n return `Basic ${encoded}`;\n}\n","import type { ErrorCode } from '@shared';\n\nexport interface JwtAuthCredentials {\n username: string;\n password: string;\n}\n\nexport interface JwtAuthResponse {\n token: string;\n user_email: string;\n user_nicename: string;\n user_display_name: string;\n}\n\nexport class AuthenticationError extends Error {\n constructor(\n public readonly code: ErrorCode,\n public readonly status: number,\n message: string,\n detail?: string,\n ) {\n super(detail ? `${message}: ${detail}` : message);\n this.name = 'AuthenticationError';\n }\n}\n","import type { NextWordpressConfig } from '@shared';\nimport { resolveBaseUrl, ErrorCode, resolveMessage } from '@shared';\nimport type { JwtAuthCredentials, JwtAuthResponse } from './types';\nimport { AuthenticationError } from './types';\n\nfunction resolveAuthErrorCode(status: number): ErrorCode {\n if (status === 401) return ErrorCode.AUTH_CREDENTIALS_INVALID;\n if (status === 403) return ErrorCode.AUTH_TOKEN_INVALID;\n return ErrorCode.AUTH_JWT_FAILED;\n}\n\nexport async function authenticateJwt(\n config: NextWordpressConfig,\n credentials: JwtAuthCredentials,\n): Promise<JwtAuthResponse> {\n const url = `${resolveBaseUrl(config)}/wp-json/jwt-auth/v1/token`;\n const response = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(credentials),\n cache: 'no-store',\n });\n if (!response.ok) {\n const code = resolveAuthErrorCode(response.status);\n throw new AuthenticationError(\n code,\n response.status,\n resolveMessage(code, config.errorMessages),\n response.statusText,\n );\n }\n return response.json() as Promise<JwtAuthResponse>;\n}\n\nexport async function validateJwtToken(\n config: NextWordpressConfig,\n token: string,\n): Promise<boolean> {\n const url = `${resolveBaseUrl(config)}/wp-json/jwt-auth/v1/token/validate`;\n const response = await fetch(url, {\n method: 'POST',\n headers: { Authorization: `Bearer ${token}` },\n cache: 'no-store',\n });\n return response.ok;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/shared/url.ts","../../src/shared/errors/codes.ts","../../src/integrations/restApi/core/mutations/posts/mutations.ts","../../src/integrations/restApi/core/mutations/comments/mutations.ts","../../src/integrations/restApi/core/mutations/pages/mutations.ts","../../src/integrations/restApi/core/mutations/categories/mutations.ts","../../src/integrations/restApi/core/mutations/tags/mutations.ts","../../src/integrations/restApi/core/mutations/authors/mutations.ts","../../src/integrations/restApi/core/mutations/menus/mutations.ts","../../src/integrations/restApi/core/mutations/media/mutations.ts","../../src/integrations/restApi/core/client/types.ts","../../src/integrations/restApi/core/client/url.ts","../../src/integrations/restApi/core/client/fetcher.ts","../../src/integrations/restApi/core/mutations/index.ts","../../src/integrations/restApi/core/posts/queries.ts","../../src/integrations/restApi/core/categories/queries.ts","../../src/integrations/restApi/core/tags/queries.ts","../../src/integrations/restApi/core/authors/queries.ts","../../src/integrations/restApi/core/media/queries.ts","../../src/integrations/restApi/core/pages/queries.ts","../../src/integrations/restApi/core/menus/queries.ts","../../src/integrations/restApi/core/comments/queries.ts","../../src/integrations/restApi/core/index.ts","../../src/integrations/restApi/woocommerce/omnibus/queries.ts","../../src/integrations/restApi/woocommerce/client/types.ts","../../src/integrations/restApi/woocommerce/client/errorMap.ts","../../src/integrations/restApi/woocommerce/client/fetcher.ts","../../src/integrations/restApi/woocommerce/products/queries.ts","../../src/integrations/restApi/woocommerce/products/mutations.ts","../../src/integrations/restApi/woocommerce/categories/queries.ts","../../src/integrations/restApi/woocommerce/categories/mutations.ts","../../src/integrations/restApi/woocommerce/tags/queries.ts","../../src/integrations/restApi/woocommerce/tags/mutations.ts","../../src/integrations/restApi/woocommerce/orders/queries.ts","../../src/integrations/restApi/woocommerce/coupons/queries.ts","../../src/integrations/restApi/woocommerce/coupons/mutations.ts","../../src/integrations/restApi/woocommerce/customers/queries.ts","../../src/integrations/restApi/woocommerce/payment_gateways/queries.ts","../../src/integrations/restApi/woocommerce/order_notes/queries.ts","../../src/integrations/restApi/woocommerce/order_refunds/queries.ts","../../src/integrations/restApi/woocommerce/product_attributes/queries.ts","../../src/integrations/restApi/woocommerce/product_reviews/queries.ts","../../src/integrations/restApi/woocommerce/shipping_classes/queries.ts","../../src/integrations/restApi/woocommerce/taxes/queries.ts","../../src/integrations/restApi/woocommerce/shipping/queries.ts","../../src/integrations/restApi/woocommerce/webhooks/queries.ts","../../src/integrations/restApi/woocommerce/settings/queries.ts","../../src/integrations/restApi/woocommerce/reports/queries.ts","../../src/integrations/restApi/woocommerce/data/queries.ts","../../src/integrations/restApi/woocommerce/index.ts","../../src/integrations/restApi/wpulike/queries.ts","../../src/integrations/restApi/contactForm7/types.ts","../../src/integrations/restApi/contactForm7/queries.ts","../../src/integrations/wpGraphQL/client/types.ts","../../src/integrations/wpGraphQL/client/fetcher.ts","../../src/integrations/wpGraphQL/core/posts/queries.ts","../../src/integrations/wpGraphQL/core/pages/queries.ts","../../src/integrations/wpGraphQL/core/categories/queries.ts","../../src/integrations/wpGraphQL/core/tags/queries.ts","../../src/integrations/wpGraphQL/core/authors/queries.ts","../../src/integrations/wpGraphQL/core/menus/queries.ts","../../src/integrations/wpGraphQL/core/comments/queries.ts","../../src/integrations/wpGraphQL/core/media/queries.ts","../../src/integrations/wpGraphQL/core/mutations/posts/mutations.ts","../../src/integrations/wpGraphQL/core/mutations/comments/mutations.ts","../../src/integrations/wpGraphQL/core/mutations/pages/mutations.ts","../../src/integrations/wpGraphQL/core/mutations/categories/mutations.ts","../../src/integrations/wpGraphQL/core/mutations/tags/mutations.ts","../../src/integrations/wpGraphQL/core/mutations/authors/mutations.ts","../../src/integrations/wpGraphQL/core/mutations/media/mutations.ts","../../src/integrations/wpGraphQL/core/mutations/passwordReset/mutations.ts","../../src/integrations/wpGraphQL/core/mutations/index.ts","../../src/integrations/wpGraphQL/core/index.ts","../../src/integrations/wpGraphQL/yoast/queries.ts","../../src/integrations/wpGraphQL/acf/helpers.ts","../../src/integrations/wpGraphQL/woocommerce/products/queries.ts","../../src/integrations/wpGraphQL/woocommerce/orders/queries.ts","../../src/integrations/wpGraphQL/woocommerce/customers/queries.ts","../../src/integrations/wpGraphQL/woocommerce/categories/queries.ts","../../src/integrations/wpGraphQL/woocommerce/tags/queries.ts","../../src/integrations/wpGraphQL/woocommerce/coupons/queries.ts","../../src/integrations/wpGraphQL/woocommerce/index.ts","../../src/integrations/wpGraphQL/cpt/queries.ts","../../src/nextjs/revalidation.ts","../../src/nextjs/faust.ts","../../src/nextjs/cookieConsent.ts","../../src/auth/applicationPassword.ts","../../src/auth/types.ts","../../src/auth/jwt.ts"],"names":["USER_AGENT","buildUrl","createCategoriesQueries","createCategoriesMutations","createTagsQueries","createTagsMutations","createPostsQueries","DEFAULT_FIRST","BATCH_FIRST","createPagesQueries","createAuthorsQueries","createMenusQueries","createCommentsQueries","createMediaQueries","createPostsMutations","createCommentsMutations","createPagesMutations","createAuthorsMutations","createMediaMutations","createProductsQueries","createOrdersQueries","ADDRESS_FIELDS","createCustomersQueries","CATEGORY_FIELDS","TAG_FIELDS","createCouponsQueries"],"mappings":"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","file":"index.js","sourcesContent":["import type { NextWordpressConfig } from './types';\n\nexport function resolveBaseUrl(config: NextWordpressConfig): string {\n return typeof window === 'undefined' ? config.serverURL : config.clientURL;\n}\n","export const ErrorCode = {\n // WordPress REST API\n WP_REQUEST_FAILED: 'WP_REQUEST_FAILED',\n WP_NOT_FOUND: 'WP_NOT_FOUND',\n WP_UNAUTHORIZED: 'WP_UNAUTHORIZED',\n WP_FORBIDDEN: 'WP_FORBIDDEN',\n // WPGraphQL\n GQL_REQUEST_FAILED: 'GQL_REQUEST_FAILED',\n GQL_NO_DATA: 'GQL_NO_DATA',\n GQL_ERRORS_IN_RESPONSE: 'GQL_ERRORS_IN_RESPONSE',\n // WooCommerce — generic\n WOO_REQUEST_FAILED: 'WOO_REQUEST_FAILED',\n WOO_NOT_FOUND: 'WOO_NOT_FOUND',\n WOO_UNAUTHORIZED: 'WOO_UNAUTHORIZED',\n WOO_FORBIDDEN: 'WOO_FORBIDDEN',\n // WooCommerce — resource-specific\n WOO_COUPON_NOT_FOUND: 'WOO_COUPON_NOT_FOUND',\n WOO_PRODUCT_NOT_FOUND: 'WOO_PRODUCT_NOT_FOUND',\n WOO_ORDER_NOT_FOUND: 'WOO_ORDER_NOT_FOUND',\n WOO_CUSTOMER_NOT_FOUND: 'WOO_CUSTOMER_NOT_FOUND',\n WOO_CATEGORY_NOT_FOUND: 'WOO_CATEGORY_NOT_FOUND',\n WOO_TAG_NOT_FOUND: 'WOO_TAG_NOT_FOUND',\n WOO_REVIEW_NOT_FOUND: 'WOO_REVIEW_NOT_FOUND',\n WOO_WEBHOOK_NOT_FOUND: 'WOO_WEBHOOK_NOT_FOUND',\n WOO_SHIPPING_ZONE_NOT_FOUND: 'WOO_SHIPPING_ZONE_NOT_FOUND',\n // Auth\n AUTH_JWT_FAILED: 'AUTH_JWT_FAILED',\n AUTH_CREDENTIALS_INVALID: 'AUTH_CREDENTIALS_INVALID',\n AUTH_TOKEN_INVALID: 'AUTH_TOKEN_INVALID',\n AUTH_PASSWORD_RESET_REQUESTED: 'AUTH_PASSWORD_RESET_REQUESTED',\n AUTH_PASSWORD_RESET_FAILED: 'AUTH_PASSWORD_RESET_FAILED',\n // Contact Form 7\n CF7_MAIL_SENT: 'CF7_MAIL_SENT',\n CF7_MAIL_FAILED: 'CF7_MAIL_FAILED',\n CF7_VALIDATION_FAILED: 'CF7_VALIDATION_FAILED',\n CF7_SPAM: 'CF7_SPAM',\n CF7_ABORTED: 'CF7_ABORTED',\n} as const;\n\nexport type ErrorCode = (typeof ErrorCode)[keyof typeof ErrorCode];\n\nexport const defaultMessages: Record<ErrorCode, string> = {\n WP_REQUEST_FAILED: 'WordPress API request failed',\n WP_NOT_FOUND: 'WordPress resource not found',\n WP_UNAUTHORIZED: 'WordPress authentication required',\n WP_FORBIDDEN: 'WordPress access denied',\n GQL_REQUEST_FAILED: 'WPGraphQL request failed',\n GQL_NO_DATA: 'No data returned from WPGraphQL',\n GQL_ERRORS_IN_RESPONSE: 'WPGraphQL returned errors',\n WOO_REQUEST_FAILED: 'WooCommerce API request failed',\n WOO_NOT_FOUND: 'WooCommerce resource not found',\n WOO_UNAUTHORIZED: 'WooCommerce authentication required',\n WOO_FORBIDDEN: 'WooCommerce access denied',\n WOO_COUPON_NOT_FOUND: 'Coupon not found',\n WOO_PRODUCT_NOT_FOUND: 'Product not found',\n WOO_ORDER_NOT_FOUND: 'Order not found',\n WOO_CUSTOMER_NOT_FOUND: 'Customer not found',\n WOO_CATEGORY_NOT_FOUND: 'Category not found',\n WOO_TAG_NOT_FOUND: 'Tag not found',\n WOO_REVIEW_NOT_FOUND: 'Product review not found',\n WOO_WEBHOOK_NOT_FOUND: 'Webhook not found',\n WOO_SHIPPING_ZONE_NOT_FOUND: 'Shipping zone not found',\n AUTH_JWT_FAILED: 'JWT authentication failed',\n AUTH_CREDENTIALS_INVALID: 'Invalid credentials',\n AUTH_TOKEN_INVALID: 'JWT token is invalid or expired',\n AUTH_PASSWORD_RESET_REQUESTED: 'Password reset email sent. Check your inbox.',\n AUTH_PASSWORD_RESET_FAILED: 'Password reset failed. The link may be invalid or expired.',\n CF7_MAIL_SENT: 'Thank you for your message.',\n CF7_MAIL_FAILED: 'There was an error trying to send your message.',\n CF7_VALIDATION_FAILED: 'One or more fields have an error. Please check and try again.',\n CF7_SPAM: 'There was an error trying to send your message. Please try later.',\n CF7_ABORTED: 'Message submission has been aborted.',\n};\n\nexport const defaultMessagesPl: Record<ErrorCode, string> = {\n WP_REQUEST_FAILED: 'Błąd żądania do WordPress API',\n WP_NOT_FOUND: 'Zasób WordPress nie istnieje',\n WP_UNAUTHORIZED: 'Wymagane uwierzytelnienie WordPress',\n WP_FORBIDDEN: 'Brak dostępu do zasobu WordPress',\n GQL_REQUEST_FAILED: 'Błąd żądania WPGraphQL',\n GQL_NO_DATA: 'WPGraphQL nie zwróciło danych',\n GQL_ERRORS_IN_RESPONSE: 'WPGraphQL zwróciło błędy',\n WOO_REQUEST_FAILED: 'Błąd żądania do WooCommerce API',\n WOO_NOT_FOUND: 'Zasób WooCommerce nie istnieje',\n WOO_UNAUTHORIZED: 'Wymagane uwierzytelnienie WooCommerce',\n WOO_FORBIDDEN: 'Brak dostępu do zasobu WooCommerce',\n WOO_COUPON_NOT_FOUND: 'Kupon nie istnieje',\n WOO_PRODUCT_NOT_FOUND: 'Produkt nie istnieje',\n WOO_ORDER_NOT_FOUND: 'Zamówienie nie istnieje',\n WOO_CUSTOMER_NOT_FOUND: 'Klient nie istnieje',\n WOO_CATEGORY_NOT_FOUND: 'Kategoria produktów nie istnieje',\n WOO_TAG_NOT_FOUND: 'Tag produktów nie istnieje',\n WOO_REVIEW_NOT_FOUND: 'Opinia o produkcie nie istnieje',\n WOO_WEBHOOK_NOT_FOUND: 'Webhook nie istnieje',\n WOO_SHIPPING_ZONE_NOT_FOUND: 'Strefa wysyłki nie istnieje',\n AUTH_JWT_FAILED: 'Błąd uwierzytelnienia JWT',\n AUTH_CREDENTIALS_INVALID: 'Nieprawidłowe dane logowania',\n AUTH_TOKEN_INVALID: 'Token JWT jest nieprawidłowy lub wygasł',\n AUTH_PASSWORD_RESET_REQUESTED: 'E-mail z resetowaniem hasła został wysłany. Sprawdź skrzynkę.',\n AUTH_PASSWORD_RESET_FAILED: 'Resetowanie hasła nie powiodło się. Link może być nieprawidłowy lub wygasł.',\n CF7_MAIL_SENT: 'Dziękujemy za wiadomość.',\n CF7_MAIL_FAILED: 'Wystąpił błąd podczas wysyłania wiadomości.',\n CF7_VALIDATION_FAILED: 'Jedno lub więcej pól zawiera błąd. Sprawdź i spróbuj ponownie.',\n CF7_SPAM: 'Wystąpił błąd podczas wysyłania wiadomości. Spróbuj później.',\n CF7_ABORTED: 'Wysyłanie formularza zostało przerwane.',\n};\n\nexport function resolveMessage(\n code: ErrorCode,\n overrides?: Partial<Record<ErrorCode, string>>,\n): string {\n return overrides?.[code] ?? defaultMessages[code];\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { Post } from '@restApi/core/posts';\nimport type { CreatePostInput, UpdatePostInput } from './types';\n\nexport function createPostsMutations(fetcher: WordPressFetcher) {\n const { wpMutate } = fetcher;\n\n async function createPost(input: CreatePostInput, authToken: string): Promise<Post> {\n return wpMutate<Post>('/wp-json/wp/v2/posts', input, 'POST', authToken);\n }\n\n async function updatePost(id: number, input: UpdatePostInput, authToken: string): Promise<Post> {\n return wpMutate<Post>(`/wp-json/wp/v2/posts/${id}`, input, 'PATCH', authToken);\n }\n\n async function deletePost(\n id: number,\n authToken: string,\n force = false,\n ): Promise<{ deleted: boolean; previous: Post }> {\n return wpMutate<{ deleted: boolean; previous: Post }>(\n `/wp-json/wp/v2/posts/${id}`,\n { force },\n 'DELETE',\n authToken,\n );\n }\n\n return { createPost, updatePost, deletePost };\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { Comment, CreateCommentInput } from '@restApi/core/comments';\nimport type { UpdateCommentInput } from './types';\n\nexport function createCommentsMutations(fetcher: WordPressFetcher) {\n const { wpMutate } = fetcher;\n\n async function createComment(\n input: CreateCommentInput,\n authToken?: string,\n ): Promise<Comment> {\n return wpMutate<Comment>('/wp-json/wp/v2/comments', input, 'POST', authToken);\n }\n\n async function updateComment(\n id: number,\n input: UpdateCommentInput,\n authToken: string,\n ): Promise<Comment> {\n return wpMutate<Comment>(`/wp-json/wp/v2/comments/${id}`, input, 'PATCH', authToken);\n }\n\n async function deleteComment(\n id: number,\n authToken: string,\n force = false,\n ): Promise<{ deleted: boolean; previous: Comment }> {\n return wpMutate<{ deleted: boolean; previous: Comment }>(\n `/wp-json/wp/v2/comments/${id}`,\n { force },\n 'DELETE',\n authToken,\n );\n }\n\n return { createComment, updateComment, deleteComment };\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { Page } from '@restApi/core/pages';\nimport type { CreatePageInput, UpdatePageInput } from './types';\n\nexport function createPagesMutations(fetcher: WordPressFetcher) {\n const { wpMutate } = fetcher;\n\n async function createPage(input: CreatePageInput, authToken: string): Promise<Page> {\n return wpMutate<Page>('/wp-json/wp/v2/pages', input, 'POST', authToken);\n }\n\n async function updatePage(id: number, input: UpdatePageInput, authToken: string): Promise<Page> {\n return wpMutate<Page>(`/wp-json/wp/v2/pages/${id}`, input, 'PATCH', authToken);\n }\n\n async function deletePage(\n id: number,\n authToken: string,\n force = false,\n ): Promise<{ deleted: boolean; previous: Page }> {\n return wpMutate<{ deleted: boolean; previous: Page }>(\n `/wp-json/wp/v2/pages/${id}`,\n { force },\n 'DELETE',\n authToken,\n );\n }\n\n return { createPage, updatePage, deletePage };\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { Category } from '@restApi/core/categories';\nimport type { CreateCategoryInput, UpdateCategoryInput } from './types';\n\nexport function createCategoriesMutations(fetcher: WordPressFetcher) {\n const { wpMutate } = fetcher;\n\n async function createCategory(\n input: CreateCategoryInput,\n authToken: string,\n ): Promise<Category> {\n return wpMutate<Category>('/wp-json/wp/v2/categories', input, 'POST', authToken);\n }\n\n async function updateCategory(\n id: number,\n input: UpdateCategoryInput,\n authToken: string,\n ): Promise<Category> {\n return wpMutate<Category>(`/wp-json/wp/v2/categories/${id}`, input, 'PATCH', authToken);\n }\n\n async function deleteCategory(\n id: number,\n authToken: string,\n force = false,\n ): Promise<{ deleted: boolean; previous: Category }> {\n return wpMutate<{ deleted: boolean; previous: Category }>(\n `/wp-json/wp/v2/categories/${id}`,\n { force },\n 'DELETE',\n authToken,\n );\n }\n\n return { createCategory, updateCategory, deleteCategory };\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { Tag } from '@restApi/core/tags';\nimport type { CreateTagInput, UpdateTagInput } from './types';\n\nexport function createTagsMutations(fetcher: WordPressFetcher) {\n const { wpMutate } = fetcher;\n\n async function createTag(input: CreateTagInput, authToken: string): Promise<Tag> {\n return wpMutate<Tag>('/wp-json/wp/v2/tags', input, 'POST', authToken);\n }\n\n async function updateTag(id: number, input: UpdateTagInput, authToken: string): Promise<Tag> {\n return wpMutate<Tag>(`/wp-json/wp/v2/tags/${id}`, input, 'PATCH', authToken);\n }\n\n async function deleteTag(\n id: number,\n authToken: string,\n force = false,\n ): Promise<{ deleted: boolean; previous: Tag }> {\n return wpMutate<{ deleted: boolean; previous: Tag }>(\n `/wp-json/wp/v2/tags/${id}`,\n { force },\n 'DELETE',\n authToken,\n );\n }\n\n return { createTag, updateTag, deleteTag };\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { Author } from '@restApi/core/authors';\nimport type { CreateAuthorInput, UpdateAuthorInput } from './types';\n\nexport function createAuthorsMutations(fetcher: WordPressFetcher) {\n const { wpMutate } = fetcher;\n\n async function createAuthor(input: CreateAuthorInput, authToken: string): Promise<Author> {\n return wpMutate<Author>('/wp-json/wp/v2/users', input, 'POST', authToken);\n }\n\n async function updateAuthor(\n id: number,\n input: UpdateAuthorInput,\n authToken: string,\n ): Promise<Author> {\n return wpMutate<Author>(`/wp-json/wp/v2/users/${id}`, input, 'PATCH', authToken);\n }\n\n async function deleteAuthor(\n id: number,\n authToken: string,\n reassign: number,\n ): Promise<{ deleted: boolean; previous: Author }> {\n return wpMutate<{ deleted: boolean; previous: Author }>(\n `/wp-json/wp/v2/users/${id}`,\n { force: true, reassign },\n 'DELETE',\n authToken,\n );\n }\n\n return { createAuthor, updateAuthor, deleteAuthor };\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { Menu, MenuItem } from '@restApi/core/menus';\nimport type {\n CreateMenuInput,\n UpdateMenuInput,\n CreateMenuItemInput,\n UpdateMenuItemInput,\n} from './types';\n\nexport function createMenusMutations(fetcher: WordPressFetcher) {\n const { wpMutate } = fetcher;\n\n async function createMenu(input: CreateMenuInput, authToken: string): Promise<Menu> {\n return wpMutate<Menu>('/wp-json/wp/v2/menus', input, 'POST', authToken);\n }\n\n async function updateMenu(id: number, input: UpdateMenuInput, authToken: string): Promise<Menu> {\n return wpMutate<Menu>(`/wp-json/wp/v2/menus/${id}`, input, 'PATCH', authToken);\n }\n\n async function deleteMenu(\n id: number,\n authToken: string,\n ): Promise<{ deleted: boolean; previous: Menu }> {\n return wpMutate<{ deleted: boolean; previous: Menu }>(\n `/wp-json/wp/v2/menus/${id}`,\n {},\n 'DELETE',\n authToken,\n );\n }\n\n async function createMenuItem(\n input: CreateMenuItemInput,\n authToken: string,\n ): Promise<MenuItem> {\n return wpMutate<MenuItem>('/wp-json/wp/v2/menu-items', input, 'POST', authToken);\n }\n\n async function updateMenuItem(\n id: number,\n input: UpdateMenuItemInput,\n authToken: string,\n ): Promise<MenuItem> {\n return wpMutate<MenuItem>(`/wp-json/wp/v2/menu-items/${id}`, input, 'PATCH', authToken);\n }\n\n async function deleteMenuItem(\n id: number,\n authToken: string,\n force = false,\n ): Promise<{ deleted: boolean; previous: MenuItem }> {\n return wpMutate<{ deleted: boolean; previous: MenuItem }>(\n `/wp-json/wp/v2/menu-items/${id}`,\n { force },\n 'DELETE',\n authToken,\n );\n }\n\n return { createMenu, updateMenu, deleteMenu, createMenuItem, updateMenuItem, deleteMenuItem };\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { FeaturedMedia } from '@restApi/core/media';\nimport type { UploadMediaInput, UpdateMediaInput } from './types';\n\nexport function createMediaMutations(fetcher: WordPressFetcher) {\n const { wpMutate, wpUpload } = fetcher;\n\n async function uploadMedia(\n input: UploadMediaInput,\n authToken: string,\n ): Promise<FeaturedMedia> {\n const media = await wpUpload<FeaturedMedia>(\n '/wp-json/wp/v2/media',\n input.file,\n input.filename,\n input.mimeType,\n authToken,\n );\n\n if (input.title || input.caption || input.alt_text) {\n return wpMutate<FeaturedMedia>(\n `/wp-json/wp/v2/media/${media.id}`,\n {\n ...(input.title && { title: input.title }),\n ...(input.caption && { caption: input.caption }),\n ...(input.alt_text && { alt_text: input.alt_text }),\n },\n 'PATCH',\n authToken,\n );\n }\n\n return media;\n }\n\n async function updateMedia(\n id: number,\n input: UpdateMediaInput,\n authToken: string,\n ): Promise<FeaturedMedia> {\n return wpMutate<FeaturedMedia>(`/wp-json/wp/v2/media/${id}`, input, 'PATCH', authToken);\n }\n\n async function deleteMedia(\n id: number,\n authToken: string,\n force = true,\n ): Promise<{ deleted: boolean; previous: FeaturedMedia }> {\n return wpMutate<{ deleted: boolean; previous: FeaturedMedia }>(\n `/wp-json/wp/v2/media/${id}`,\n { force },\n 'DELETE',\n authToken,\n );\n }\n\n return { uploadMedia, updateMedia, deleteMedia };\n}\n","import type { ErrorCode } from '@shared';\n\nexport interface WordPressPaginationHeaders {\n total: number;\n totalPages: number;\n}\n\nexport interface WordPressResponse<T> {\n data: T;\n headers: WordPressPaginationHeaders;\n}\n\nexport class WordPressAPIError extends Error {\n constructor(\n public readonly code: ErrorCode,\n public readonly status: number,\n public readonly endpoint: string,\n message: string,\n detail?: string,\n ) {\n super(detail ? `${message}: ${detail}` : message);\n this.name = 'WordPressAPIError';\n }\n}\n","import type { NextWordpressConfig } from '@shared';\nimport { resolveBaseUrl } from '@shared';\n\nexport function buildUrl(\n config: NextWordpressConfig,\n path: string,\n query?: Record<string, unknown>,\n): string {\n const base = resolveBaseUrl(config);\n if (!query) return `${base}${path}`;\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined && value !== null) {\n params.set(key, String(value));\n }\n }\n const qs = params.toString();\n return qs ? `${base}${path}?${qs}` : `${base}${path}`;\n}\n","import type { NextWordpressConfig } from '@shared';\nimport { ErrorCode, resolveMessage } from '@shared';\nimport type { WordPressResponse } from './types';\nimport { WordPressAPIError } from './types';\nimport { buildUrl } from './url';\n\nconst USER_AGENT = 'NextWordpress Client';\n\ninterface NextRequestInit extends RequestInit {\n next?: {\n revalidate?: number | false;\n tags?: string[];\n };\n}\n\nfunction resolveWpErrorCode(status: number): ErrorCode {\n if (status === 401) return ErrorCode.WP_UNAUTHORIZED;\n if (status === 403) return ErrorCode.WP_FORBIDDEN;\n if (status === 404) return ErrorCode.WP_NOT_FOUND;\n return ErrorCode.WP_REQUEST_FAILED;\n}\n\nexport function createFetcher(config: NextWordpressConfig) {\n const cacheTtl = config.cacheTTL ?? 300;\n\n async function doFetch(url: string, init: NextRequestInit = {}): Promise<Response> {\n const response = await fetch(url, init);\n if (!response.ok) {\n const code = resolveWpErrorCode(response.status);\n throw new WordPressAPIError(\n code,\n response.status,\n url,\n resolveMessage(code, config.errorMessages),\n response.statusText,\n );\n }\n return response;\n }\n\n async function wpFetch<T>(\n path: string,\n query?: Record<string, unknown>,\n tags: string[] = ['wordpress'],\n ): Promise<T> {\n const url = buildUrl(config, path, query);\n const res = await doFetch(url, {\n headers: { 'User-Agent': USER_AGENT },\n next: { tags, revalidate: cacheTtl },\n } as NextRequestInit);\n return (await res.json()) as T;\n }\n\n async function wpFetchGraceful<T>(\n path: string,\n fallback: T,\n query?: Record<string, unknown>,\n tags: string[] = ['wordpress'],\n ): Promise<T> {\n try {\n return await wpFetch<T>(path, query, tags);\n } catch {\n console.warn(`WordPress fetch failed for ${path}`);\n return fallback;\n }\n }\n\n async function wpFetchPaginated<T>(\n path: string,\n query?: Record<string, unknown>,\n tags: string[] = ['wordpress'],\n ): Promise<WordPressResponse<T[]>> {\n const url = buildUrl(config, path, query);\n const res = await doFetch(url, {\n headers: { 'User-Agent': USER_AGENT },\n next: { tags, revalidate: cacheTtl },\n } as NextRequestInit);\n return {\n data: (await res.json()) as T[],\n headers: {\n total: parseInt(res.headers.get('X-WP-Total') ?? '0', 10),\n totalPages: parseInt(res.headers.get('X-WP-TotalPages') ?? '0', 10),\n },\n };\n }\n\n async function wpFetchPaginatedGraceful<T>(\n path: string,\n query?: Record<string, unknown>,\n tags: string[] = ['wordpress'],\n ): Promise<WordPressResponse<T[]>> {\n const empty: WordPressResponse<T[]> = { data: [], headers: { total: 0, totalPages: 0 } };\n try {\n return await wpFetchPaginated<T>(path, query, tags);\n } catch {\n console.warn(`WordPress paginated fetch failed for ${path}`);\n return empty;\n }\n }\n\n async function wpMutate<T>(\n path: string,\n body: unknown,\n method: 'POST' | 'PUT' | 'PATCH' | 'DELETE' = 'POST',\n authToken?: string,\n ): Promise<T> {\n const url = buildUrl(config, path);\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'User-Agent': USER_AGENT,\n };\n if (authToken) {\n headers['Authorization'] = authToken.startsWith('Basic ') || authToken.startsWith('Bearer ')\n ? authToken\n : `Bearer ${authToken}`;\n }\n const res = await doFetch(url, {\n method,\n headers,\n body: JSON.stringify(body),\n cache: 'no-store',\n });\n return (await res.json()) as T;\n }\n\n async function wpUpload<T>(\n path: string,\n file: Blob | Buffer,\n filename: string,\n mimeType: string,\n authToken: string,\n ): Promise<T> {\n const url = buildUrl(config, path);\n const res = await doFetch(url, {\n method: 'POST',\n headers: {\n 'Content-Disposition': `attachment; filename=\"${filename}\"`,\n 'Content-Type': mimeType,\n 'User-Agent': USER_AGENT,\n 'Authorization': authToken.startsWith('Basic ') || authToken.startsWith('Bearer ')\n ? authToken\n : `Bearer ${authToken}`,\n },\n body: file as BodyInit,\n cache: 'no-store',\n });\n return (await res.json()) as T;\n }\n\n return { wpFetch, wpFetchGraceful, wpFetchPaginated, wpFetchPaginatedGraceful, wpMutate, wpUpload };\n}\n\nexport type WordPressFetcher = ReturnType<typeof createFetcher>;\n","export type { RestPostStatus, CreatePostInput, UpdatePostInput } from './posts';\nexport { createPostsMutations } from './posts';\n\nexport type { UpdateCommentInput } from './comments';\nexport { createCommentsMutations } from './comments';\n\nexport type { RestPageStatus, CreatePageInput, UpdatePageInput } from './pages';\nexport { createPagesMutations } from './pages';\n\nexport type { CreateCategoryInput, UpdateCategoryInput } from './categories';\nexport { createCategoriesMutations } from './categories';\n\nexport type { CreateTagInput, UpdateTagInput } from './tags';\nexport { createTagsMutations } from './tags';\n\nexport type { CreateAuthorInput, UpdateAuthorInput } from './authors';\nexport { createAuthorsMutations } from './authors';\n\nexport type { CreateMenuInput, UpdateMenuInput, CreateMenuItemInput, UpdateMenuItemInput } from './menus';\nexport { createMenusMutations } from './menus';\n\nexport type { UploadMediaInput, UpdateMediaInput } from './media';\nexport { createMediaMutations } from './media';\n\nimport type { NextWordpressConfig } from '@shared';\nimport { createFetcher } from '@restApi/core/client';\nimport { createPostsMutations } from './posts';\nimport { createCommentsMutations } from './comments';\nimport { createPagesMutations } from './pages';\nimport { createCategoriesMutations } from './categories';\nimport { createTagsMutations } from './tags';\nimport { createAuthorsMutations } from './authors';\nimport { createMenusMutations } from './menus';\nimport { createMediaMutations } from './media';\n\nexport function createWordPressMutationsClient(config: NextWordpressConfig) {\n const fetcher = createFetcher(config);\n return {\n ...createPostsMutations(fetcher),\n ...createCommentsMutations(fetcher),\n ...createPagesMutations(fetcher),\n ...createCategoriesMutations(fetcher),\n ...createTagsMutations(fetcher),\n ...createAuthorsMutations(fetcher),\n ...createMenusMutations(fetcher),\n ...createMediaMutations(fetcher),\n };\n}\n","import type { WordPressFetcher, WordPressResponse } from '@restApi/core/client';\nimport type { Post } from './types';\n\nexport function createPostsQueries(fetcher: WordPressFetcher) {\n const { wpFetch, wpFetchGraceful, wpFetchPaginated, wpFetchPaginatedGraceful } = fetcher;\n\n async function getPostsPaginated(\n page: number = 1,\n perPage: number = 9,\n filterParams?: {\n author?: string;\n tag?: string;\n category?: string;\n search?: string;\n },\n ): Promise<WordPressResponse<Post[]>> {\n const query: Record<string, unknown> = { _embed: true, per_page: perPage, page };\n const cacheTags = ['wordpress', 'posts', `posts-page-${page}`];\n\n if (filterParams?.search) { query.search = filterParams.search; cacheTags.push('posts-search'); }\n if (filterParams?.author) { query.author = filterParams.author; cacheTags.push(`posts-author-${filterParams.author}`); }\n if (filterParams?.tag) { query.tags = filterParams.tag; cacheTags.push(`posts-tag-${filterParams.tag}`); }\n if (filterParams?.category) { query.categories = filterParams.category; cacheTags.push(`posts-category-${filterParams.category}`); }\n\n return wpFetchPaginatedGraceful<Post>('/wp-json/wp/v2/posts', query, cacheTags);\n }\n\n async function getRecentPosts(filterParams?: {\n author?: string;\n tag?: string;\n category?: string;\n search?: string;\n }): Promise<Post[]> {\n const query: Record<string, unknown> = { _embed: true, per_page: 100 };\n if (filterParams?.search) query.search = filterParams.search;\n if (filterParams?.author) query.author = filterParams.author;\n if (filterParams?.tag) query.tags = filterParams.tag;\n if (filterParams?.category) query.categories = filterParams.category;\n return wpFetchGraceful<Post[]>('/wp-json/wp/v2/posts', [], query, ['wordpress', 'posts']);\n }\n\n async function getPostById(id: number): Promise<Post> {\n return wpFetch<Post>(`/wp-json/wp/v2/posts/${id}`);\n }\n\n async function getPostBySlug(slug: string): Promise<Post | undefined> {\n const posts = await wpFetchGraceful<Post[]>('/wp-json/wp/v2/posts', [], { slug, _embed: true });\n return posts[0];\n }\n\n async function getPostsByCategory(categoryId: number): Promise<Post[]> {\n return wpFetch<Post[]>('/wp-json/wp/v2/posts', { categories: categoryId });\n }\n\n async function getPostsByTag(tagId: number): Promise<Post[]> {\n return wpFetch<Post[]>('/wp-json/wp/v2/posts', { tags: tagId });\n }\n\n async function getPostsByAuthor(authorId: number): Promise<Post[]> {\n return wpFetch<Post[]>('/wp-json/wp/v2/posts', { author: authorId });\n }\n\n async function getPostsByCategoryPaginated(\n categoryId: number,\n page: number = 1,\n perPage: number = 9,\n ): Promise<WordPressResponse<Post[]>> {\n return wpFetchPaginatedGraceful<Post>('/wp-json/wp/v2/posts', {\n _embed: true, per_page: perPage, page, categories: categoryId,\n });\n }\n\n async function getPostsByTagPaginated(\n tagId: number,\n page: number = 1,\n perPage: number = 9,\n ): Promise<WordPressResponse<Post[]>> {\n return wpFetchPaginatedGraceful<Post>('/wp-json/wp/v2/posts', {\n _embed: true, per_page: perPage, page, tags: tagId,\n });\n }\n\n async function getPostsByAuthorPaginated(\n authorId: number,\n page: number = 1,\n perPage: number = 9,\n ): Promise<WordPressResponse<Post[]>> {\n return wpFetchPaginatedGraceful<Post>('/wp-json/wp/v2/posts', {\n _embed: true, per_page: perPage, page, author: authorId,\n });\n }\n\n async function getAllPostSlugs(): Promise<{ slug: string }[]> {\n try {\n const allSlugs: { slug: string }[] = [];\n let page = 1;\n let hasMore = true;\n while (hasMore) {\n const response = await wpFetchPaginated<Post>(\n '/wp-json/wp/v2/posts',\n { per_page: 100, page, _fields: 'slug' },\n );\n allSlugs.push(...response.data.map((post) => ({ slug: post.slug })));\n hasMore = page < response.headers.totalPages;\n page++;\n }\n return allSlugs;\n } catch {\n console.warn('WordPress unavailable, skipping static generation for posts');\n return [];\n }\n }\n\n async function getAllPostsForSitemap(): Promise<{ slug: string; modified: string }[]> {\n try {\n const allPosts: { slug: string; modified: string }[] = [];\n let page = 1;\n let hasMore = true;\n while (hasMore) {\n const response = await wpFetchPaginated<Post>(\n '/wp-json/wp/v2/posts',\n { per_page: 100, page, _fields: 'slug,modified' },\n );\n allPosts.push(...response.data.map((post) => ({ slug: post.slug, modified: post.modified })));\n hasMore = page < response.headers.totalPages;\n page++;\n }\n return allPosts;\n } catch {\n console.warn('WordPress unavailable, skipping sitemap generation');\n return [];\n }\n }\n\n return {\n getPostsPaginated,\n getRecentPosts,\n getPostById,\n getPostBySlug,\n getPostsByCategory,\n getPostsByTag,\n getPostsByAuthor,\n getPostsByCategoryPaginated,\n getPostsByTagPaginated,\n getPostsByAuthorPaginated,\n getAllPostSlugs,\n getAllPostsForSitemap,\n };\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { Category } from './types';\n\nexport function createCategoriesQueries(fetcher: WordPressFetcher) {\n const { wpFetch, wpFetchGraceful } = fetcher;\n\n async function getAllCategories(): Promise<Category[]> {\n return wpFetchGraceful<Category[]>('/wp-json/wp/v2/categories', [], { per_page: 100 }, [\n 'wordpress',\n 'categories',\n ]);\n }\n\n async function getCategoryById(id: number): Promise<Category> {\n return wpFetch<Category>(`/wp-json/wp/v2/categories/${id}`);\n }\n\n async function getCategoryBySlug(slug: string): Promise<Category> {\n const categories = await wpFetch<Category[]>('/wp-json/wp/v2/categories', { slug });\n return categories[0];\n }\n\n async function searchCategories(query: string): Promise<Category[]> {\n return wpFetchGraceful<Category[]>('/wp-json/wp/v2/categories', [], {\n search: query,\n per_page: 100,\n });\n }\n\n return { getAllCategories, getCategoryById, getCategoryBySlug, searchCategories };\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { Tag } from './types';\n\nexport function createTagsQueries(fetcher: WordPressFetcher) {\n const { wpFetch, wpFetchGraceful } = fetcher;\n\n async function getAllTags(): Promise<Tag[]> {\n return wpFetchGraceful<Tag[]>('/wp-json/wp/v2/tags', [], { per_page: 100 }, [\n 'wordpress',\n 'tags',\n ]);\n }\n\n async function getTagById(id: number): Promise<Tag> {\n return wpFetch<Tag>(`/wp-json/wp/v2/tags/${id}`);\n }\n\n async function getTagBySlug(slug: string): Promise<Tag> {\n const tags = await wpFetch<Tag[]>('/wp-json/wp/v2/tags', { slug });\n return tags[0];\n }\n\n async function getTagsByPost(postId: number): Promise<Tag[]> {\n return wpFetch<Tag[]>('/wp-json/wp/v2/tags', { post: postId });\n }\n\n async function searchTags(query: string): Promise<Tag[]> {\n return wpFetchGraceful<Tag[]>('/wp-json/wp/v2/tags', [], { search: query, per_page: 100 });\n }\n\n return { getAllTags, getTagById, getTagBySlug, getTagsByPost, searchTags };\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { Author } from './types';\n\nexport function createAuthorsQueries(fetcher: WordPressFetcher) {\n const { wpFetch, wpFetchGraceful } = fetcher;\n\n async function getAllAuthors(): Promise<Author[]> {\n return wpFetchGraceful<Author[]>('/wp-json/wp/v2/users', [], { per_page: 100 }, [\n 'wordpress',\n 'authors',\n ]);\n }\n\n async function getAuthorById(id: number): Promise<Author> {\n return wpFetch<Author>(`/wp-json/wp/v2/users/${id}`);\n }\n\n async function getAuthorBySlug(slug: string): Promise<Author> {\n const users = await wpFetch<Author[]>('/wp-json/wp/v2/users', { slug });\n return users[0];\n }\n\n async function searchAuthors(query: string): Promise<Author[]> {\n return wpFetchGraceful<Author[]>('/wp-json/wp/v2/users', [], { search: query, per_page: 100 });\n }\n\n return { getAllAuthors, getAuthorById, getAuthorBySlug, searchAuthors };\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { FeaturedMedia } from './types';\n\nexport function createMediaQueries(fetcher: WordPressFetcher) {\n const { wpFetch } = fetcher;\n\n async function getFeaturedMediaById(id: number): Promise<FeaturedMedia> {\n return wpFetch<FeaturedMedia>(`/wp-json/wp/v2/media/${id}`);\n }\n\n return { getFeaturedMediaById };\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { Page } from './types';\n\nexport function createPagesQueries(fetcher: WordPressFetcher) {\n const { wpFetch, wpFetchGraceful } = fetcher;\n\n async function getAllPages(): Promise<Page[]> {\n return wpFetchGraceful<Page[]>('/wp-json/wp/v2/pages', [], { per_page: 100 }, [\n 'wordpress',\n 'pages',\n ]);\n }\n\n async function getPageById(id: number): Promise<Page> {\n return wpFetch<Page>(`/wp-json/wp/v2/pages/${id}`);\n }\n\n async function getPageBySlug(slug: string): Promise<Page | undefined> {\n const pages = await wpFetchGraceful<Page[]>('/wp-json/wp/v2/pages', [], { slug });\n return pages[0];\n }\n\n return { getAllPages, getPageById, getPageBySlug };\n}\n","import type { WordPressFetcher } from '@restApi/core/client';\nimport type { Menu, MenuItem, MenuLocation, MenuWithItems } from './types';\n\nexport function createMenusQueries(fetcher: WordPressFetcher) {\n const { wpFetch, wpFetchGraceful } = fetcher;\n\n async function getMenus(): Promise<Menu[]> {\n return wpFetchGraceful<Menu[]>('/wp-json/wp/v2/menus', [], undefined, ['wordpress', 'menus']);\n }\n\n async function getMenuById(id: number): Promise<Menu> {\n return wpFetch<Menu>(`/wp-json/wp/v2/menus/${id}`, undefined, ['wordpress', 'menus', `menu-${id}`]);\n }\n\n async function getMenuBySlug(slug: string): Promise<Menu | undefined> {\n const menus = await wpFetchGraceful<Menu[]>('/wp-json/wp/v2/menus', [], { slug }, ['wordpress', 'menus']);\n return menus[0];\n }\n\n async function getMenuItemsByMenuId(menuId: number): Promise<MenuItem[]> {\n return wpFetchGraceful<MenuItem[]>(\n '/wp-json/wp/v2/menu-items',\n [],\n { menus: menuId, per_page: 100, orderby: 'menu_order', order: 'asc' },\n ['wordpress', 'menus', `menu-items-${menuId}`],\n );\n }\n\n async function getMenuLocations(): Promise<Record<string, MenuLocation>> {\n return wpFetchGraceful<Record<string, MenuLocation>>(\n '/wp-json/wp/v2/menu-locations',\n {},\n undefined,\n ['wordpress', 'menus', 'menu-locations'],\n );\n }\n\n async function getMenuByLocation(location: string): Promise<MenuWithItems | undefined> {\n const locations = await getMenuLocations();\n const loc = locations[location];\n if (!loc || !loc.menu) return undefined;\n\n const [menu, items] = await Promise.all([\n getMenuById(loc.menu),\n getMenuItemsByMenuId(loc.menu),\n ]);\n\n return { menu, items };\n }\n\n return {\n getMenus,\n getMenuById,\n getMenuBySlug,\n getMenuItemsByMenuId,\n getMenuLocations,\n getMenuByLocation,\n };\n}\n","import type { WordPressFetcher, WordPressResponse } from '@restApi/core/client';\nimport type { Comment, CreateCommentInput } from './types';\n\nexport function createCommentsQueries(fetcher: WordPressFetcher) {\n const { wpFetch, wpFetchGraceful, wpFetchPaginatedGraceful, wpMutate } = fetcher;\n\n async function getCommentsByPostId(\n postId: number,\n page: number = 1,\n perPage: number = 10,\n ): Promise<WordPressResponse<Comment[]>> {\n return wpFetchPaginatedGraceful<Comment>(\n '/wp-json/wp/v2/comments',\n { post: postId, per_page: perPage, page, status: 'approve' },\n ['wordpress', 'comments', `comments-post-${postId}`],\n );\n }\n\n async function getAllCommentsByPostId(postId: number): Promise<Comment[]> {\n return wpFetchGraceful<Comment[]>(\n '/wp-json/wp/v2/comments',\n [],\n { post: postId, per_page: 100, status: 'approve' },\n ['wordpress', 'comments', `comments-post-${postId}`],\n );\n }\n\n async function getCommentById(id: number): Promise<Comment> {\n return wpFetch<Comment>(`/wp-json/wp/v2/comments/${id}`, undefined, [\n 'wordpress',\n 'comments',\n `comment-${id}`,\n ]);\n }\n\n async function getCommentReplies(parentId: number): Promise<Comment[]> {\n return wpFetchGraceful<Comment[]>(\n '/wp-json/wp/v2/comments',\n [],\n { parent: parentId, per_page: 100, status: 'approve' },\n ['wordpress', 'comments', `comments-parent-${parentId}`],\n );\n }\n\n async function createComment(input: CreateCommentInput): Promise<Comment> {\n return wpMutate<Comment>('/wp-json/wp/v2/comments', input, 'POST');\n }\n\n return {\n getCommentsByPostId,\n getAllCommentsByPostId,\n getCommentById,\n getCommentReplies,\n createComment,\n };\n}\n","export type { Post, PostEmbedded } from '@restApi/core/posts';\nexport type { Category } from '@restApi/core/categories';\nexport type { Tag } from '@restApi/core/tags';\nexport type { Author, EmbeddedAuthor, EmbeddedTerm } from '@restApi/core/authors';\nexport type { FeaturedMedia, MediaDetails, MediaSize } from '@restApi/core/media';\nexport type { Page } from '@restApi/core/pages';\nexport type { Menu, MenuItem, MenuLocation, MenuWithItems } from '@restApi/core/menus';\nexport type { Comment, CommentAuthorAvatar, CreateCommentInput } from '@restApi/core/comments';\nexport * from '@restApi/core/blocks';\nexport type { RestPostStatus, CreatePostInput, UpdatePostInput } from '@restApi/core/mutations';\nexport type { UpdateCommentInput } from '@restApi/core/mutations';\nexport type { RestPageStatus, CreatePageInput, UpdatePageInput } from '@restApi/core/mutations';\nexport type { CreateCategoryInput, UpdateCategoryInput } from '@restApi/core/mutations';\nexport type { CreateTagInput, UpdateTagInput } from '@restApi/core/mutations';\nexport type { CreateAuthorInput, UpdateAuthorInput } from '@restApi/core/mutations';\nexport type { CreateMenuInput, UpdateMenuInput, CreateMenuItemInput, UpdateMenuItemInput } from '@restApi/core/mutations';\nexport type { UploadMediaInput, UpdateMediaInput } from '@restApi/core/mutations';\nexport {\n createPostsMutations,\n createCommentsMutations,\n createPagesMutations,\n createCategoriesMutations,\n createTagsMutations,\n createAuthorsMutations,\n createMenusMutations,\n createMediaMutations,\n createWordPressMutationsClient,\n} from '@restApi/core/mutations';\n\nexport { WordPressAPIError } from '@restApi/core/client';\n\nimport type { NextWordpressConfig } from '@shared';\nimport { createFetcher } from '@restApi/core/client';\nimport { createPostsQueries } from '@restApi/core/posts';\nimport { createCategoriesQueries } from '@restApi/core/categories';\nimport { createTagsQueries } from '@restApi/core/tags';\nimport { createAuthorsQueries } from '@restApi/core/authors';\nimport { createMediaQueries } from '@restApi/core/media';\nimport { createPagesQueries } from '@restApi/core/pages';\nimport { createMenusQueries } from '@restApi/core/menus';\nimport { createCommentsQueries } from '@restApi/core/comments';\n\nexport function createWordPressClient(config: NextWordpressConfig) {\n const fetcher = createFetcher(config);\n\n return {\n ...createPostsQueries(fetcher),\n ...createCategoriesQueries(fetcher),\n ...createTagsQueries(fetcher),\n ...createAuthorsQueries(fetcher),\n ...createMediaQueries(fetcher),\n ...createPagesQueries(fetcher),\n ...createMenusQueries(fetcher),\n ...createCommentsQueries(fetcher),\n };\n}\n","import type { WCProduct, WCProductVariation } from '@restApi/woocommerce/products';\nimport type {\n OmnibusProductData,\n OmnibusPriceEntry,\n WCProductWithOmnibus,\n WCProductVariationWithOmnibus,\n} from './types';\n\nconst META_KEY_LOWEST_PRICE = 'wpo_lowest_price';\nconst META_KEY_PRICE_HISTORY = '_alg_wc_price_history';\n\nfunction extractMetaValue<T>(\n meta_data: Array<{ id: number; key: string; value: unknown }>,\n key: string,\n): T | undefined {\n return meta_data.find((m) => m.key === key)?.value as T | undefined;\n}\n\nfunction parseHistory(raw: unknown): OmnibusPriceEntry[] {\n if (!raw || typeof raw !== 'object') return [];\n\n if (Array.isArray(raw)) {\n return raw\n .filter((e) => e && typeof e.price === 'string' && typeof e.date === 'string')\n .map((e) => ({ price: e.price as string, date: e.date as string }));\n }\n\n // Object keyed by date: { \"2024-01-01\": \"99.00\", ... }\n return Object.entries(raw as Record<string, string>)\n .map(([date, price]) => ({ date, price }))\n .sort((a, b) => a.date.localeCompare(b.date));\n}\n\nexport function extractOmnibusData(\n meta_data: Array<{ id: number; key: string; value: unknown }>,\n): OmnibusProductData {\n const lowestPrice = extractMetaValue<string>(meta_data, META_KEY_LOWEST_PRICE) ?? null;\n const rawHistory = extractMetaValue<unknown>(meta_data, META_KEY_PRICE_HISTORY);\n const priceHistory = parseHistory(rawHistory);\n\n return { lowestPrice, priceHistory };\n}\n\nexport function withOmnibus(product: WCProduct): WCProductWithOmnibus {\n return { ...product, omnibus: extractOmnibusData(product.meta_data) };\n}\n\nexport function withOmnibusVariation(variation: WCProductVariation & { meta_data?: Array<{ id: number; key: string; value: unknown }> }): WCProductVariationWithOmnibus {\n return {\n ...variation,\n omnibus: extractOmnibusData(variation.meta_data ?? []),\n };\n}\n","import type { ErrorCode } from '@shared';\n\nexport interface WooCommerceConfig {\n serverURL: string;\n clientURL?: string;\n consumerKey: string;\n consumerSecret: string;\n cacheTTL?: number;\n /** Override default error messages by error code. */\n errorMessages?: Partial<Record<ErrorCode, string>>;\n}\n\nexport interface WooCommercePaginationHeaders {\n total: number;\n totalPages: number;\n}\n\nexport interface WooCommerceResponse<T> {\n data: T;\n headers: WooCommercePaginationHeaders;\n}\n\nexport class WooCommerceError extends Error {\n constructor(\n public readonly code: ErrorCode,\n public readonly status: number,\n public readonly endpoint: string,\n message: string,\n public readonly upstreamCode?: string,\n detail?: string,\n ) {\n super(detail ? `${message}: ${detail}` : message);\n this.name = 'WooCommerceError';\n }\n}\n","import { ErrorCode } from '@shared';\n\nconst upstreamToErrorCode: Partial<Record<string, ErrorCode>> = {\n woocommerce_rest_coupon_invalid_id: ErrorCode.WOO_COUPON_NOT_FOUND,\n woocommerce_rest_product_invalid_id: ErrorCode.WOO_PRODUCT_NOT_FOUND,\n woocommerce_rest_order_invalid_id: ErrorCode.WOO_ORDER_NOT_FOUND,\n woocommerce_rest_customer_invalid_id: ErrorCode.WOO_CUSTOMER_NOT_FOUND,\n woocommerce_rest_term_invalid: ErrorCode.WOO_CATEGORY_NOT_FOUND,\n woocommerce_rest_review_invalid_id: ErrorCode.WOO_REVIEW_NOT_FOUND,\n woocommerce_rest_webhook_invalid_id: ErrorCode.WOO_WEBHOOK_NOT_FOUND,\n woocommerce_rest_shipping_zone_invalid_id: ErrorCode.WOO_SHIPPING_ZONE_NOT_FOUND,\n};\n\nexport function resolveWooErrorCode(status: number, upstreamCode?: string): ErrorCode {\n if (status === 401) return ErrorCode.WOO_UNAUTHORIZED;\n if (status === 403) return ErrorCode.WOO_FORBIDDEN;\n if (status === 404) {\n if (upstreamCode) {\n const mapped = upstreamToErrorCode[upstreamCode];\n if (mapped) return mapped;\n }\n return ErrorCode.WOO_NOT_FOUND;\n }\n return ErrorCode.WOO_REQUEST_FAILED;\n}\n","import { resolveMessage } from '@shared';\nimport type { WooCommerceConfig, WooCommerceResponse } from './types';\nimport { WooCommerceError } from './types';\nimport { resolveWooErrorCode } from './errorMap';\n\nconst USER_AGENT = 'NextWordpress WooCommerce Client';\nconst DEFAULT_CACHE_TTL = 3600;\n\ninterface NextRequestInit extends RequestInit {\n next?: {\n revalidate?: number | false;\n tags?: string[];\n };\n}\n\nfunction toQueryString(params: Record<string, unknown>): string {\n const pairs: string[] = [];\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined || value === null) continue;\n pairs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);\n }\n return pairs.join('&');\n}\n\nexport function createWooCommerceFetcher(config: WooCommerceConfig) {\n const cacheTTL = config.cacheTTL ?? DEFAULT_CACHE_TTL;\n\n function withAuth(query?: Record<string, unknown>): Record<string, unknown> {\n return { ...query, consumer_key: config.consumerKey, consumer_secret: config.consumerSecret };\n }\n\n function buildUrl(path: string, query?: Record<string, unknown>): string {\n const base =\n typeof window !== 'undefined' && config.clientURL ? config.clientURL : config.serverURL;\n return `${base}${path}?${toQueryString(withAuth(query))}`;\n }\n\n async function throwWooError(response: Response, url: string): Promise<never> {\n const body = (await response.json().catch(() => ({}))) as {\n message?: string;\n code?: string;\n };\n const errorCode = resolveWooErrorCode(response.status, body.code);\n throw new WooCommerceError(\n errorCode,\n response.status,\n url,\n resolveMessage(errorCode, config.errorMessages),\n body.code,\n body.message,\n );\n }\n\n async function wcFetch<T>(\n path: string,\n query?: Record<string, unknown>,\n tags: string[] = ['woocommerce'],\n options?: RequestInit,\n ): Promise<T> {\n const url = buildUrl(path, query);\n const isMutation = options?.method && options.method !== 'GET';\n const noStore = options?.cache === 'no-store';\n\n const response = await fetch(url, {\n ...options,\n headers: {\n 'User-Agent': USER_AGENT,\n 'Content-Type': 'application/json',\n ...(options?.headers as Record<string, string>),\n },\n next: isMutation || noStore ? undefined : { tags, revalidate: cacheTTL },\n } as NextRequestInit);\n\n if (!response.ok) {\n await throwWooError(response, url);\n }\n\n return response.json() as Promise<T>;\n }\n\n async function wcFetchGraceful<T>(\n path: string,\n fallback: T,\n query?: Record<string, unknown>,\n tags: string[] = ['woocommerce'],\n ): Promise<T> {\n try {\n return await wcFetch<T>(path, query, tags);\n } catch (err) {\n console.warn(`WooCommerce fetch failed for ${path}`, err);\n return fallback;\n }\n }\n\n async function wcFetchPaginated<T>(\n path: string,\n query?: Record<string, unknown>,\n tags: string[] = ['woocommerce'],\n ): Promise<WooCommerceResponse<T[]>> {\n const url = buildUrl(path, query);\n\n const response = await fetch(url, {\n headers: { 'User-Agent': USER_AGENT },\n next: { tags, revalidate: cacheTTL },\n } as NextRequestInit);\n\n if (!response.ok) {\n await throwWooError(response, url);\n }\n\n return {\n data: (await response.json()) as T[],\n headers: {\n total: parseInt(response.headers.get('X-WP-Total') ?? '0', 10),\n totalPages: parseInt(response.headers.get('X-WP-TotalPages') ?? '0', 10),\n },\n };\n }\n\n async function wcFetchPaginatedGraceful<T>(\n path: string,\n query?: Record<string, unknown>,\n tags: string[] = ['woocommerce'],\n ): Promise<WooCommerceResponse<T[]>> {\n const empty: WooCommerceResponse<T[]> = { data: [], headers: { total: 0, totalPages: 0 } };\n try {\n return await wcFetchPaginated<T>(path, query, tags);\n } catch (err) {\n console.warn(`WooCommerce paginated fetch failed for ${path}`, err);\n return empty;\n }\n }\n\n async function wcMutate<T>(\n path: string,\n body: unknown,\n method: 'POST' | 'PUT' | 'PATCH' | 'DELETE' = 'POST',\n ): Promise<T> {\n return wcFetch<T>(path, undefined, ['woocommerce'], {\n method,\n body: JSON.stringify(body),\n });\n }\n\n return { wcFetch, wcFetchGraceful, wcFetchPaginated, wcFetchPaginatedGraceful, wcMutate };\n}\n\nexport type WooCommerceFetcher = ReturnType<typeof createWooCommerceFetcher>;\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WooCommerceResponse } from '@restApi/woocommerce/client/types';\nimport type { WCProduct, WCProductFilterParams, WCProductVariation } from './types';\n\nfunction buildProductQuery(\n base: Record<string, unknown>,\n filterParams?: WCProductFilterParams,\n): Record<string, unknown> {\n const query = { ...base };\n if (!filterParams) return query;\n\n if (filterParams.category !== undefined) query.category = filterParams.category;\n if (filterParams.tag !== undefined) query.tag = filterParams.tag;\n if (filterParams.featured !== undefined) query.featured = filterParams.featured;\n if (filterParams.on_sale !== undefined) query.on_sale = filterParams.on_sale;\n if (filterParams.min_price !== undefined) query.min_price = filterParams.min_price;\n if (filterParams.max_price !== undefined) query.max_price = filterParams.max_price;\n if (filterParams.search !== undefined) query.search = filterParams.search;\n if (filterParams.orderby !== undefined) query.orderby = filterParams.orderby;\n if (filterParams.order !== undefined) query.order = filterParams.order;\n if (filterParams.stock_status !== undefined) query.stock_status = filterParams.stock_status;\n if (filterParams.type !== undefined) query.type = filterParams.type;\n\n return query;\n}\n\nexport function createProductsQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful, wcFetchPaginated, wcFetchPaginatedGraceful } = fetcher;\n\n async function getProducts(filterParams?: WCProductFilterParams): Promise<WCProduct[]> {\n const query = buildProductQuery({ per_page: 100, status: 'publish' }, filterParams);\n return wcFetchGraceful<WCProduct[]>('/wp-json/wc/v3/products', [], query, [\n 'woocommerce',\n 'products',\n ]);\n }\n\n async function getProductsPaginated(\n page: number = 1,\n perPage: number = 12,\n filterParams?: WCProductFilterParams,\n ): Promise<WooCommerceResponse<WCProduct[]>> {\n const query = buildProductQuery({ per_page: perPage, page, status: 'publish' }, filterParams);\n const cacheTags = ['woocommerce', 'products', `products-page-${page}`];\n\n if (filterParams?.category) cacheTags.push(`products-category-${filterParams.category}`);\n if (filterParams?.tag) cacheTags.push(`products-tag-${filterParams.tag}`);\n if (filterParams?.search) cacheTags.push('products-search');\n\n return wcFetchPaginatedGraceful<WCProduct>('/wp-json/wc/v3/products', query, cacheTags);\n }\n\n async function getProductById(id: number): Promise<WCProduct> {\n return wcFetch<WCProduct>(`/wp-json/wc/v3/products/${id}`, undefined, [\n 'woocommerce',\n 'products',\n `product-${id}`,\n ]);\n }\n\n async function getProductBySlug(slug: string): Promise<WCProduct | undefined> {\n const products = await wcFetchGraceful<WCProduct[]>(\n '/wp-json/wc/v3/products',\n [],\n { slug },\n ['woocommerce', 'products', `product-slug-${slug}`],\n );\n return products[0];\n }\n\n async function getFeaturedProducts(limit: number = 10): Promise<WCProduct[]> {\n return wcFetchGraceful<WCProduct[]>(\n '/wp-json/wc/v3/products',\n [],\n { featured: true, per_page: limit, status: 'publish' },\n ['woocommerce', 'products', 'featured'],\n );\n }\n\n async function getOnSaleProducts(limit: number = 10): Promise<WCProduct[]> {\n return wcFetchGraceful<WCProduct[]>(\n '/wp-json/wc/v3/products',\n [],\n { on_sale: true, per_page: limit, status: 'publish' },\n ['woocommerce', 'products', 'on-sale'],\n );\n }\n\n async function getRelatedProducts(productId: number): Promise<WCProduct[]> {\n const product = await getProductById(productId);\n if (!product.related_ids.length) return [];\n\n return wcFetchGraceful<WCProduct[]>(\n '/wp-json/wc/v3/products',\n [],\n { include: product.related_ids.join(','), per_page: 10, status: 'publish' },\n ['woocommerce', 'products', `related-${productId}`],\n );\n }\n\n async function getAllProductSlugs(): Promise<{ slug: string }[]> {\n try {\n const allSlugs: { slug: string }[] = [];\n let page = 1;\n let hasMore = true;\n\n while (hasMore) {\n const response = await wcFetchPaginated<WCProduct>('/wp-json/wc/v3/products', {\n per_page: 100,\n page,\n status: 'publish',\n _fields: 'slug',\n });\n\n allSlugs.push(...response.data.map((p) => ({ slug: p.slug })));\n hasMore = page < response.headers.totalPages;\n page++;\n }\n\n return allSlugs;\n } catch {\n console.warn('WooCommerce unavailable, skipping static generation for products');\n return [];\n }\n }\n\n async function getProductVariations(productId: number): Promise<WCProductVariation[]> {\n return wcFetchGraceful<WCProductVariation[]>(\n `/wp-json/wc/v3/products/${productId}/variations`,\n [],\n { per_page: 100 },\n ['woocommerce', 'products', `product-${productId}`, 'variations'],\n );\n }\n\n async function getProductVariationById(\n productId: number,\n variationId: number,\n ): Promise<WCProductVariation> {\n return wcFetch<WCProductVariation>(\n `/wp-json/wc/v3/products/${productId}/variations/${variationId}`,\n undefined,\n ['woocommerce', 'products', `product-${productId}`, `variation-${variationId}`],\n );\n }\n\n return {\n getProducts,\n getProductsPaginated,\n getProductById,\n getProductBySlug,\n getFeaturedProducts,\n getOnSaleProducts,\n getRelatedProducts,\n getAllProductSlugs,\n getProductVariations,\n getProductVariationById,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCProduct } from './types';\n\nexport type WCProductStatus = 'draft' | 'pending' | 'private' | 'publish';\n\nexport interface CreateProductInput {\n name: string;\n type?: 'simple' | 'variable' | 'grouped' | 'external';\n status?: WCProductStatus;\n description?: string;\n short_description?: string;\n sku?: string;\n regular_price?: string;\n sale_price?: string;\n manage_stock?: boolean;\n stock_quantity?: number;\n stock_status?: 'instock' | 'outofstock' | 'onbackorder';\n categories?: { id: number }[];\n tags?: { id: number }[];\n images?: { src: string; alt?: string }[];\n featured?: boolean;\n virtual?: boolean;\n downloadable?: boolean;\n weight?: string;\n attributes?: { id?: number; name: string; options: string[]; visible?: boolean; variation?: boolean }[];\n}\n\nexport interface UpdateProductInput extends Partial<Omit<CreateProductInput, 'name'>> {\n name?: string;\n}\n\nexport function createProductsMutations(fetcher: WooCommerceFetcher) {\n const { wcMutate } = fetcher;\n\n async function createProduct(input: CreateProductInput): Promise<WCProduct> {\n return wcMutate<WCProduct>('/wp-json/wc/v3/products', input, 'POST');\n }\n\n async function updateProduct(id: number, input: UpdateProductInput): Promise<WCProduct> {\n return wcMutate<WCProduct>(`/wp-json/wc/v3/products/${id}`, input, 'PUT');\n }\n\n async function deleteProduct(\n id: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCProduct }> {\n return wcMutate<{ deleted: boolean; previous: WCProduct }>(\n `/wp-json/wc/v3/products/${id}`,\n { force },\n 'DELETE',\n );\n }\n\n return { createProduct, updateProduct, deleteProduct };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCProduct } from '@restApi/woocommerce/products/types';\nimport type { WCProductCategory } from './types';\n\nexport function createCategoriesQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful } = fetcher;\n\n async function getAllProductCategories(): Promise<WCProductCategory[]> {\n return wcFetchGraceful<WCProductCategory[]>(\n '/wp-json/wc/v3/products/categories',\n [],\n { per_page: 100, hide_empty: false },\n ['woocommerce', 'product-categories'],\n );\n }\n\n async function getProductCategoryById(id: number): Promise<WCProductCategory> {\n return wcFetch<WCProductCategory>(\n `/wp-json/wc/v3/products/categories/${id}`,\n undefined,\n ['woocommerce', 'product-categories', `product-category-${id}`],\n );\n }\n\n async function getProductCategoryBySlug(slug: string): Promise<WCProductCategory | undefined> {\n const categories = await wcFetchGraceful<WCProductCategory[]>(\n '/wp-json/wc/v3/products/categories',\n [],\n { slug },\n ['woocommerce', 'product-categories', `product-category-slug-${slug}`],\n );\n return categories[0];\n }\n\n async function getProductsByCategory(\n categoryId: number,\n limit: number = 100,\n ): Promise<WCProduct[]> {\n return wcFetchGraceful<WCProduct[]>(\n '/wp-json/wc/v3/products',\n [],\n { category: categoryId, per_page: limit, status: 'publish' },\n ['woocommerce', 'products', `products-category-${categoryId}`],\n );\n }\n\n async function getProductsByCategorySlug(categorySlug: string): Promise<WCProduct[]> {\n const category = await getProductCategoryBySlug(categorySlug);\n if (!category) return [];\n return getProductsByCategory(category.id);\n }\n\n return {\n getAllProductCategories,\n getProductCategoryById,\n getProductCategoryBySlug,\n getProductsByCategory,\n getProductsByCategorySlug,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCProductCategory } from './types';\n\nexport interface CreateProductCategoryInput {\n name: string;\n slug?: string;\n parent?: number;\n description?: string;\n display?: 'default' | 'products' | 'subcategories' | 'both';\n image?: { src: string; alt?: string };\n menu_order?: number;\n}\n\nexport type UpdateProductCategoryInput = Partial<CreateProductCategoryInput>;\n\nexport function createCategoriesMutations(fetcher: WooCommerceFetcher) {\n const { wcMutate } = fetcher;\n\n async function createProductCategory(\n input: CreateProductCategoryInput,\n ): Promise<WCProductCategory> {\n return wcMutate<WCProductCategory>('/wp-json/wc/v3/products/categories', input, 'POST');\n }\n\n async function updateProductCategory(\n id: number,\n input: UpdateProductCategoryInput,\n ): Promise<WCProductCategory> {\n return wcMutate<WCProductCategory>(\n `/wp-json/wc/v3/products/categories/${id}`,\n input,\n 'PUT',\n );\n }\n\n async function deleteProductCategory(\n id: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCProductCategory }> {\n return wcMutate<{ deleted: boolean; previous: WCProductCategory }>(\n `/wp-json/wc/v3/products/categories/${id}`,\n { force },\n 'DELETE',\n );\n }\n\n return { createProductCategory, updateProductCategory, deleteProductCategory };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCProduct } from '@restApi/woocommerce/products/types';\nimport type { WCProductTag } from './types';\n\nexport function createTagsQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful } = fetcher;\n\n async function getAllProductTags(): Promise<WCProductTag[]> {\n return wcFetchGraceful<WCProductTag[]>(\n '/wp-json/wc/v3/products/tags',\n [],\n { per_page: 100 },\n ['woocommerce', 'product-tags'],\n );\n }\n\n async function getProductTagById(id: number): Promise<WCProductTag> {\n return wcFetch<WCProductTag>(`/wp-json/wc/v3/products/tags/${id}`, undefined, [\n 'woocommerce',\n 'product-tags',\n `product-tag-${id}`,\n ]);\n }\n\n async function getProductsByTag(tagId: number, limit: number = 100): Promise<WCProduct[]> {\n return wcFetchGraceful<WCProduct[]>(\n '/wp-json/wc/v3/products',\n [],\n { tag: tagId, per_page: limit },\n ['woocommerce', 'products', `products-tag-${tagId}`],\n );\n }\n\n return {\n getAllProductTags,\n getProductTagById,\n getProductsByTag,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCProductTag } from './types';\n\nexport interface CreateProductTagInput {\n name: string;\n slug?: string;\n description?: string;\n}\n\nexport type UpdateProductTagInput = Partial<CreateProductTagInput>;\n\nexport function createTagsMutations(fetcher: WooCommerceFetcher) {\n const { wcMutate } = fetcher;\n\n async function createProductTag(input: CreateProductTagInput): Promise<WCProductTag> {\n return wcMutate<WCProductTag>('/wp-json/wc/v3/products/tags', input, 'POST');\n }\n\n async function updateProductTag(\n id: number,\n input: UpdateProductTagInput,\n ): Promise<WCProductTag> {\n return wcMutate<WCProductTag>(`/wp-json/wc/v3/products/tags/${id}`, input, 'PUT');\n }\n\n async function deleteProductTag(\n id: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCProductTag }> {\n return wcMutate<{ deleted: boolean; previous: WCProductTag }>(\n `/wp-json/wc/v3/products/tags/${id}`,\n { force },\n 'DELETE',\n );\n }\n\n return { createProductTag, updateProductTag, deleteProductTag };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCCreateOrderInput, WCOrder } from './types';\n\nexport function createOrdersQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful, wcMutate } = fetcher;\n\n async function createOrder(input: WCCreateOrderInput): Promise<WCOrder> {\n return wcMutate<WCOrder>('/wp-json/wc/v3/orders', input, 'POST');\n }\n\n async function getOrderById(id: number): Promise<WCOrder> {\n return wcFetch<WCOrder>(`/wp-json/wc/v3/orders/${id}`, undefined, [\n 'woocommerce',\n 'orders',\n `order-${id}`,\n ]);\n }\n\n async function updateOrder(id: number, data: Partial<WCCreateOrderInput>): Promise<WCOrder> {\n return wcMutate<WCOrder>(`/wp-json/wc/v3/orders/${id}`, data, 'PUT');\n }\n\n async function getOrdersByCustomer(customerId: number): Promise<WCOrder[]> {\n return wcFetchGraceful<WCOrder[]>(\n '/wp-json/wc/v3/orders',\n [],\n { customer: customerId, per_page: 100 },\n ['woocommerce', 'orders', `orders-customer-${customerId}`],\n );\n }\n\n async function deleteOrder(\n id: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCOrder }> {\n return wcMutate<{ deleted: boolean; previous: WCOrder }>(\n `/wp-json/wc/v3/orders/${id}`,\n { force },\n 'DELETE',\n );\n }\n\n return {\n createOrder,\n getOrderById,\n updateOrder,\n getOrdersByCustomer,\n deleteOrder,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCCoupon } from './types';\n\nexport function createCouponsQueries(fetcher: WooCommerceFetcher) {\n const { wcFetchGraceful } = fetcher;\n\n async function getCouponByCode(code: string): Promise<WCCoupon | undefined> {\n const coupons = await wcFetchGraceful<WCCoupon[]>(\n '/wp-json/wc/v3/coupons',\n [],\n { code },\n ['woocommerce', 'coupons'],\n );\n return coupons[0];\n }\n\n async function validateCoupon(\n code: string,\n ): Promise<{ valid: boolean; coupon?: WCCoupon; reason?: string }> {\n const coupon = await getCouponByCode(code);\n\n if (!coupon) return { valid: false, reason: 'Coupon not found' };\n\n if (coupon.date_expires) {\n const expiry = new Date(coupon.date_expires);\n if (expiry < new Date()) return { valid: false, reason: 'Coupon has expired', coupon };\n }\n\n if (coupon.usage_limit !== null && coupon.usage_count >= coupon.usage_limit) {\n return { valid: false, reason: 'Coupon usage limit reached', coupon };\n }\n\n return { valid: true, coupon };\n }\n\n return {\n getCouponByCode,\n validateCoupon,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCCoupon } from './types';\n\nexport interface CreateCouponInput {\n code: string;\n discount_type?: 'percent' | 'fixed_cart' | 'fixed_product';\n amount?: string;\n description?: string;\n date_expires?: string | null;\n individual_use?: boolean;\n product_ids?: number[];\n excluded_product_ids?: number[];\n usage_limit?: number | null;\n usage_limit_per_user?: number | null;\n free_shipping?: boolean;\n minimum_amount?: string;\n maximum_amount?: string;\n}\n\nexport type UpdateCouponInput = Partial<CreateCouponInput>;\n\nexport function createCouponsMutations(fetcher: WooCommerceFetcher) {\n const { wcMutate } = fetcher;\n\n async function createCoupon(input: CreateCouponInput): Promise<WCCoupon> {\n return wcMutate<WCCoupon>('/wp-json/wc/v3/coupons', input, 'POST');\n }\n\n async function updateCoupon(id: number, input: UpdateCouponInput): Promise<WCCoupon> {\n return wcMutate<WCCoupon>(`/wp-json/wc/v3/coupons/${id}`, input, 'PUT');\n }\n\n async function deleteCoupon(\n id: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCCoupon }> {\n return wcMutate<{ deleted: boolean; previous: WCCoupon }>(\n `/wp-json/wc/v3/coupons/${id}`,\n { force },\n 'DELETE',\n );\n }\n\n return { createCoupon, updateCoupon, deleteCoupon };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCAddress } from '@restApi/woocommerce/shared/types';\nimport type { WCCustomer } from './types';\n\nexport interface UpdateCustomerInput {\n email?: string;\n first_name?: string;\n last_name?: string;\n username?: string;\n password?: string;\n billing?: Partial<WCAddress>;\n shipping?: Partial<Omit<WCAddress, 'email' | 'phone'>>;\n meta_data?: { key: string; value: unknown }[];\n}\n\nexport function createCustomersQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful, wcMutate } = fetcher;\n\n async function getCustomerById(id: number): Promise<WCCustomer> {\n return wcFetch<WCCustomer>(`/wp-json/wc/v3/customers/${id}`, undefined, [\n 'woocommerce',\n 'customers',\n `customer-${id}`,\n ]);\n }\n\n async function getCustomerByEmail(email: string): Promise<WCCustomer | undefined> {\n const customers = await wcFetchGraceful<WCCustomer[]>(\n '/wp-json/wc/v3/customers',\n [],\n { email },\n ['woocommerce', 'customers'],\n );\n return customers[0];\n }\n\n async function getCustomerByEmailNoCache(email: string): Promise<WCCustomer | undefined> {\n try {\n const customers = await wcFetch<WCCustomer[]>(\n '/wp-json/wc/v3/customers',\n { email },\n ['woocommerce', 'customers'],\n { cache: 'no-store' },\n );\n return customers[0];\n } catch {\n return undefined;\n }\n }\n\n async function createCustomer(\n data: Pick<WCCustomer, 'email' | 'first_name' | 'last_name'> & {\n username?: string;\n password?: string;\n billing?: Partial<WCAddress>;\n shipping?: Partial<Omit<WCAddress, 'email' | 'phone'>>;\n },\n ): Promise<WCCustomer> {\n return wcFetch<WCCustomer>(\n '/wp-json/wc/v3/customers',\n undefined,\n ['woocommerce', 'customers'],\n { method: 'POST', body: JSON.stringify(data) },\n );\n }\n\n async function updateCustomer(id: number, data: UpdateCustomerInput): Promise<WCCustomer> {\n return wcMutate<WCCustomer>(`/wp-json/wc/v3/customers/${id}`, data, 'PUT');\n }\n\n async function deleteCustomer(\n id: number,\n reassign?: number,\n ): Promise<{ deleted: boolean; previous: WCCustomer }> {\n return wcMutate<{ deleted: boolean; previous: WCCustomer }>(\n `/wp-json/wc/v3/customers/${id}`,\n { force: true, ...(reassign !== undefined && { reassign }) },\n 'DELETE',\n );\n }\n\n return {\n getCustomerById,\n getCustomerByEmail,\n getCustomerByEmailNoCache,\n createCustomer,\n updateCustomer,\n deleteCustomer,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCPaymentGateway } from './types';\n\nexport function createPaymentGatewaysQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful } = fetcher;\n\n async function getPaymentGateways(): Promise<WCPaymentGateway[]> {\n return wcFetchGraceful<WCPaymentGateway[]>(\n '/wp-json/wc/v3/payment_gateways',\n [],\n undefined,\n ['woocommerce', 'payment_gateways'],\n );\n }\n\n async function getEnabledPaymentGateways(): Promise<WCPaymentGateway[]> {\n const gateways = await wcFetchGraceful<WCPaymentGateway[]>(\n '/wp-json/wc/v3/payment_gateways',\n [],\n undefined,\n ['woocommerce', 'payment_gateways'],\n );\n return gateways.filter((g) => g.enabled);\n }\n\n async function getPaymentGatewayById(id: string): Promise<WCPaymentGateway> {\n return wcFetch<WCPaymentGateway>(\n `/wp-json/wc/v3/payment_gateways/${id}`,\n undefined,\n ['woocommerce', 'payment_gateways', `payment_gateway-${id}`],\n );\n }\n\n return {\n getPaymentGateways,\n getEnabledPaymentGateways,\n getPaymentGatewayById,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCCreateOrderNoteInput, WCOrderNote } from './types';\n\nexport function createOrderNotesQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful, wcMutate } = fetcher;\n\n async function getNotesByOrderId(orderId: number): Promise<WCOrderNote[]> {\n return wcFetchGraceful<WCOrderNote[]>(\n `/wp-json/wc/v3/orders/${orderId}/notes`,\n [],\n undefined,\n ['woocommerce', 'order_notes', `order-${orderId}-notes`],\n );\n }\n\n async function getOrderNoteById(orderId: number, noteId: number): Promise<WCOrderNote> {\n return wcFetch<WCOrderNote>(\n `/wp-json/wc/v3/orders/${orderId}/notes/${noteId}`,\n undefined,\n ['woocommerce', 'order_notes', `order-${orderId}-note-${noteId}`],\n );\n }\n\n async function createOrderNote(\n orderId: number,\n input: WCCreateOrderNoteInput,\n ): Promise<WCOrderNote> {\n return wcMutate<WCOrderNote>(\n `/wp-json/wc/v3/orders/${orderId}/notes`,\n input,\n 'POST',\n );\n }\n\n async function deleteOrderNote(\n orderId: number,\n noteId: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCOrderNote }> {\n return wcMutate<{ deleted: boolean; previous: WCOrderNote }>(\n `/wp-json/wc/v3/orders/${orderId}/notes/${noteId}`,\n { force },\n 'DELETE',\n );\n }\n\n return {\n getNotesByOrderId,\n getOrderNoteById,\n createOrderNote,\n deleteOrderNote,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCCreateOrderRefundInput, WCOrderRefund } from './types';\n\nexport function createOrderRefundsQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful, wcMutate } = fetcher;\n\n async function getRefundsByOrderId(orderId: number): Promise<WCOrderRefund[]> {\n return wcFetchGraceful<WCOrderRefund[]>(\n `/wp-json/wc/v3/orders/${orderId}/refunds`,\n [],\n undefined,\n ['woocommerce', 'order_refunds', `order-${orderId}-refunds`],\n );\n }\n\n async function getOrderRefundById(orderId: number, refundId: number): Promise<WCOrderRefund> {\n return wcFetch<WCOrderRefund>(\n `/wp-json/wc/v3/orders/${orderId}/refunds/${refundId}`,\n undefined,\n ['woocommerce', 'order_refunds', `order-${orderId}-refund-${refundId}`],\n );\n }\n\n async function createOrderRefund(\n orderId: number,\n input: WCCreateOrderRefundInput,\n ): Promise<WCOrderRefund> {\n return wcMutate<WCOrderRefund>(\n `/wp-json/wc/v3/orders/${orderId}/refunds`,\n input,\n 'POST',\n );\n }\n\n async function deleteOrderRefund(\n orderId: number,\n refundId: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCOrderRefund }> {\n return wcMutate<{ deleted: boolean; previous: WCOrderRefund }>(\n `/wp-json/wc/v3/orders/${orderId}/refunds/${refundId}`,\n { force },\n 'DELETE',\n );\n }\n\n return {\n getRefundsByOrderId,\n getOrderRefundById,\n createOrderRefund,\n deleteOrderRefund,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type {\n WCProductAttribute,\n WCAttributeTerm,\n CreateProductAttributeInput,\n UpdateProductAttributeInput,\n CreateAttributeTermInput,\n UpdateAttributeTermInput,\n} from './types';\n\nexport function createProductAttributesQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful, wcMutate } = fetcher;\n\n async function getProductAttributes(): Promise<WCProductAttribute[]> {\n return wcFetchGraceful<WCProductAttribute[]>(\n '/wp-json/wc/v3/products/attributes',\n [],\n undefined,\n ['woocommerce', 'product_attributes'],\n );\n }\n\n async function getProductAttributeById(id: number): Promise<WCProductAttribute> {\n return wcFetch<WCProductAttribute>(\n `/wp-json/wc/v3/products/attributes/${id}`,\n undefined,\n ['woocommerce', 'product_attributes', `attribute-${id}`],\n );\n }\n\n async function createProductAttribute(\n input: CreateProductAttributeInput,\n ): Promise<WCProductAttribute> {\n return wcMutate<WCProductAttribute>('/wp-json/wc/v3/products/attributes', input, 'POST');\n }\n\n async function updateProductAttribute(\n id: number,\n input: UpdateProductAttributeInput,\n ): Promise<WCProductAttribute> {\n return wcMutate<WCProductAttribute>(\n `/wp-json/wc/v3/products/attributes/${id}`,\n input,\n 'PUT',\n );\n }\n\n async function deleteProductAttribute(\n id: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCProductAttribute }> {\n return wcMutate<{ deleted: boolean; previous: WCProductAttribute }>(\n `/wp-json/wc/v3/products/attributes/${id}`,\n { force },\n 'DELETE',\n );\n }\n\n async function getAttributeTerms(attributeId: number): Promise<WCAttributeTerm[]> {\n return wcFetchGraceful<WCAttributeTerm[]>(\n `/wp-json/wc/v3/products/attributes/${attributeId}/terms`,\n [],\n undefined,\n ['woocommerce', 'attribute_terms', `attribute-${attributeId}-terms`],\n );\n }\n\n async function getAttributeTermById(\n attributeId: number,\n termId: number,\n ): Promise<WCAttributeTerm> {\n return wcFetch<WCAttributeTerm>(\n `/wp-json/wc/v3/products/attributes/${attributeId}/terms/${termId}`,\n undefined,\n ['woocommerce', 'attribute_terms', `attribute-${attributeId}-term-${termId}`],\n );\n }\n\n async function createAttributeTerm(\n attributeId: number,\n input: CreateAttributeTermInput,\n ): Promise<WCAttributeTerm> {\n return wcMutate<WCAttributeTerm>(\n `/wp-json/wc/v3/products/attributes/${attributeId}/terms`,\n input,\n 'POST',\n );\n }\n\n async function updateAttributeTerm(\n attributeId: number,\n termId: number,\n input: UpdateAttributeTermInput,\n ): Promise<WCAttributeTerm> {\n return wcMutate<WCAttributeTerm>(\n `/wp-json/wc/v3/products/attributes/${attributeId}/terms/${termId}`,\n input,\n 'PUT',\n );\n }\n\n async function deleteAttributeTerm(\n attributeId: number,\n termId: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCAttributeTerm }> {\n return wcMutate<{ deleted: boolean; previous: WCAttributeTerm }>(\n `/wp-json/wc/v3/products/attributes/${attributeId}/terms/${termId}`,\n { force },\n 'DELETE',\n );\n }\n\n return {\n getProductAttributes,\n getProductAttributeById,\n createProductAttribute,\n updateProductAttribute,\n deleteProductAttribute,\n getAttributeTerms,\n getAttributeTermById,\n createAttributeTerm,\n updateAttributeTerm,\n deleteAttributeTerm,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type {\n WCProductReview,\n WCProductReviewFilterParams,\n CreateProductReviewInput,\n UpdateProductReviewInput,\n} from './types';\n\nexport function createProductReviewsQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful, wcMutate } = fetcher;\n\n async function getProductReviews(\n params?: WCProductReviewFilterParams,\n ): Promise<WCProductReview[]> {\n return wcFetchGraceful<WCProductReview[]>(\n '/wp-json/wc/v3/products/reviews',\n [],\n params as Record<string, unknown>,\n ['woocommerce', 'product_reviews'],\n );\n }\n\n async function getProductReviewsByProductId(productId: number): Promise<WCProductReview[]> {\n return wcFetchGraceful<WCProductReview[]>(\n '/wp-json/wc/v3/products/reviews',\n [],\n { product: [productId] },\n ['woocommerce', 'product_reviews', `reviews-product-${productId}`],\n );\n }\n\n async function getProductReviewById(id: number): Promise<WCProductReview> {\n return wcFetch<WCProductReview>(\n `/wp-json/wc/v3/products/reviews/${id}`,\n undefined,\n ['woocommerce', 'product_reviews', `review-${id}`],\n );\n }\n\n async function createProductReview(input: CreateProductReviewInput): Promise<WCProductReview> {\n return wcMutate<WCProductReview>('/wp-json/wc/v3/products/reviews', input, 'POST');\n }\n\n async function updateProductReview(\n id: number,\n input: UpdateProductReviewInput,\n ): Promise<WCProductReview> {\n return wcMutate<WCProductReview>(`/wp-json/wc/v3/products/reviews/${id}`, input, 'PUT');\n }\n\n async function deleteProductReview(\n id: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCProductReview }> {\n return wcMutate<{ deleted: boolean; previous: WCProductReview }>(\n `/wp-json/wc/v3/products/reviews/${id}`,\n { force },\n 'DELETE',\n );\n }\n\n return {\n getProductReviews,\n getProductReviewsByProductId,\n getProductReviewById,\n createProductReview,\n updateProductReview,\n deleteProductReview,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type {\n WCShippingClass,\n CreateShippingClassInput,\n UpdateShippingClassInput,\n} from './types';\n\nexport function createShippingClassesQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful, wcMutate } = fetcher;\n\n async function getShippingClasses(): Promise<WCShippingClass[]> {\n return wcFetchGraceful<WCShippingClass[]>(\n '/wp-json/wc/v3/products/shipping_classes',\n [],\n undefined,\n ['woocommerce', 'shipping_classes'],\n );\n }\n\n async function getShippingClassById(id: number): Promise<WCShippingClass> {\n return wcFetch<WCShippingClass>(\n `/wp-json/wc/v3/products/shipping_classes/${id}`,\n undefined,\n ['woocommerce', 'shipping_classes', `shipping-class-${id}`],\n );\n }\n\n async function createShippingClass(input: CreateShippingClassInput): Promise<WCShippingClass> {\n return wcMutate<WCShippingClass>('/wp-json/wc/v3/products/shipping_classes', input, 'POST');\n }\n\n async function updateShippingClass(\n id: number,\n input: UpdateShippingClassInput,\n ): Promise<WCShippingClass> {\n return wcMutate<WCShippingClass>(\n `/wp-json/wc/v3/products/shipping_classes/${id}`,\n input,\n 'PUT',\n );\n }\n\n async function deleteShippingClass(\n id: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCShippingClass }> {\n return wcMutate<{ deleted: boolean; previous: WCShippingClass }>(\n `/wp-json/wc/v3/products/shipping_classes/${id}`,\n { force },\n 'DELETE',\n );\n }\n\n return {\n getShippingClasses,\n getShippingClassById,\n createShippingClass,\n updateShippingClass,\n deleteShippingClass,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type {\n WCTaxRate,\n WCTaxClass,\n CreateTaxRateInput,\n UpdateTaxRateInput,\n CreateTaxClassInput,\n} from './types';\n\nexport function createTaxesQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful, wcMutate } = fetcher;\n\n async function getTaxRates(params?: { class?: string; per_page?: number }): Promise<WCTaxRate[]> {\n return wcFetchGraceful<WCTaxRate[]>(\n '/wp-json/wc/v3/taxes',\n [],\n params,\n ['woocommerce', 'tax_rates'],\n );\n }\n\n async function getTaxRateById(id: number): Promise<WCTaxRate> {\n return wcFetch<WCTaxRate>(\n `/wp-json/wc/v3/taxes/${id}`,\n undefined,\n ['woocommerce', 'tax_rates', `tax-rate-${id}`],\n );\n }\n\n async function createTaxRate(input: CreateTaxRateInput): Promise<WCTaxRate> {\n return wcMutate<WCTaxRate>('/wp-json/wc/v3/taxes', input, 'POST');\n }\n\n async function updateTaxRate(id: number, input: UpdateTaxRateInput): Promise<WCTaxRate> {\n return wcMutate<WCTaxRate>(`/wp-json/wc/v3/taxes/${id}`, input, 'PUT');\n }\n\n async function deleteTaxRate(\n id: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCTaxRate }> {\n return wcMutate<{ deleted: boolean; previous: WCTaxRate }>(\n `/wp-json/wc/v3/taxes/${id}`,\n { force },\n 'DELETE',\n );\n }\n\n async function getTaxClasses(): Promise<WCTaxClass[]> {\n return wcFetchGraceful<WCTaxClass[]>(\n '/wp-json/wc/v3/taxes/classes',\n [],\n undefined,\n ['woocommerce', 'tax_classes'],\n );\n }\n\n async function createTaxClass(input: CreateTaxClassInput): Promise<WCTaxClass> {\n return wcMutate<WCTaxClass>('/wp-json/wc/v3/taxes/classes', input, 'POST');\n }\n\n async function deleteTaxClass(\n slug: string,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCTaxClass }> {\n return wcMutate<{ deleted: boolean; previous: WCTaxClass }>(\n `/wp-json/wc/v3/taxes/classes/${slug}`,\n { force },\n 'DELETE',\n );\n }\n\n return {\n getTaxRates,\n getTaxRateById,\n createTaxRate,\n updateTaxRate,\n deleteTaxRate,\n getTaxClasses,\n createTaxClass,\n deleteTaxClass,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type {\n WCShippingZone,\n WCShippingZoneLocation,\n WCShippingZoneMethod,\n WCShippingMethod,\n CreateShippingZoneInput,\n UpdateShippingZoneInput,\n CreateShippingZoneMethodInput,\n UpdateShippingZoneMethodInput,\n} from './types';\n\nexport function createShippingQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful, wcMutate } = fetcher;\n\n // Shipping Zones\n\n async function getShippingZones(): Promise<WCShippingZone[]> {\n return wcFetchGraceful<WCShippingZone[]>(\n '/wp-json/wc/v3/shipping/zones',\n [],\n undefined,\n ['woocommerce', 'shipping_zones'],\n );\n }\n\n async function getShippingZoneById(id: number): Promise<WCShippingZone> {\n return wcFetch<WCShippingZone>(\n `/wp-json/wc/v3/shipping/zones/${id}`,\n undefined,\n ['woocommerce', 'shipping_zones', `zone-${id}`],\n );\n }\n\n async function createShippingZone(input: CreateShippingZoneInput): Promise<WCShippingZone> {\n return wcMutate<WCShippingZone>('/wp-json/wc/v3/shipping/zones', input, 'POST');\n }\n\n async function updateShippingZone(\n id: number,\n input: UpdateShippingZoneInput,\n ): Promise<WCShippingZone> {\n return wcMutate<WCShippingZone>(`/wp-json/wc/v3/shipping/zones/${id}`, input, 'PUT');\n }\n\n async function deleteShippingZone(\n id: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCShippingZone }> {\n return wcMutate<{ deleted: boolean; previous: WCShippingZone }>(\n `/wp-json/wc/v3/shipping/zones/${id}`,\n { force },\n 'DELETE',\n );\n }\n\n // Zone Locations\n\n async function getShippingZoneLocations(zoneId: number): Promise<WCShippingZoneLocation[]> {\n return wcFetchGraceful<WCShippingZoneLocation[]>(\n `/wp-json/wc/v3/shipping/zones/${zoneId}/locations`,\n [],\n undefined,\n ['woocommerce', 'shipping_zone_locations', `zone-${zoneId}-locations`],\n );\n }\n\n async function updateShippingZoneLocations(\n zoneId: number,\n locations: WCShippingZoneLocation[],\n ): Promise<WCShippingZoneLocation[]> {\n return wcMutate<WCShippingZoneLocation[]>(\n `/wp-json/wc/v3/shipping/zones/${zoneId}/locations`,\n locations,\n 'PUT',\n );\n }\n\n // Zone Methods\n\n async function getShippingZoneMethods(zoneId: number): Promise<WCShippingZoneMethod[]> {\n return wcFetchGraceful<WCShippingZoneMethod[]>(\n `/wp-json/wc/v3/shipping/zones/${zoneId}/methods`,\n [],\n undefined,\n ['woocommerce', 'shipping_zone_methods', `zone-${zoneId}-methods`],\n );\n }\n\n async function getShippingZoneMethodById(\n zoneId: number,\n instanceId: number,\n ): Promise<WCShippingZoneMethod> {\n return wcFetch<WCShippingZoneMethod>(\n `/wp-json/wc/v3/shipping/zones/${zoneId}/methods/${instanceId}`,\n undefined,\n ['woocommerce', 'shipping_zone_methods', `zone-${zoneId}-method-${instanceId}`],\n );\n }\n\n async function createShippingZoneMethod(\n zoneId: number,\n input: CreateShippingZoneMethodInput,\n ): Promise<WCShippingZoneMethod> {\n return wcMutate<WCShippingZoneMethod>(\n `/wp-json/wc/v3/shipping/zones/${zoneId}/methods`,\n input,\n 'POST',\n );\n }\n\n async function updateShippingZoneMethod(\n zoneId: number,\n instanceId: number,\n input: UpdateShippingZoneMethodInput,\n ): Promise<WCShippingZoneMethod> {\n return wcMutate<WCShippingZoneMethod>(\n `/wp-json/wc/v3/shipping/zones/${zoneId}/methods/${instanceId}`,\n input,\n 'PUT',\n );\n }\n\n async function deleteShippingZoneMethod(\n zoneId: number,\n instanceId: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCShippingZoneMethod }> {\n return wcMutate<{ deleted: boolean; previous: WCShippingZoneMethod }>(\n `/wp-json/wc/v3/shipping/zones/${zoneId}/methods/${instanceId}`,\n { force },\n 'DELETE',\n );\n }\n\n // Shipping Methods (global, read-only)\n\n async function getShippingMethods(): Promise<WCShippingMethod[]> {\n return wcFetchGraceful<WCShippingMethod[]>(\n '/wp-json/wc/v3/shipping_methods',\n [],\n undefined,\n ['woocommerce', 'shipping_methods'],\n );\n }\n\n async function getShippingMethodById(id: string): Promise<WCShippingMethod> {\n return wcFetch<WCShippingMethod>(\n `/wp-json/wc/v3/shipping_methods/${id}`,\n undefined,\n ['woocommerce', 'shipping_methods', `shipping-method-${id}`],\n );\n }\n\n return {\n getShippingZones,\n getShippingZoneById,\n createShippingZone,\n updateShippingZone,\n deleteShippingZone,\n getShippingZoneLocations,\n updateShippingZoneLocations,\n getShippingZoneMethods,\n getShippingZoneMethodById,\n createShippingZoneMethod,\n updateShippingZoneMethod,\n deleteShippingZoneMethod,\n getShippingMethods,\n getShippingMethodById,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCWebhook, CreateWebhookInput, UpdateWebhookInput, WCWebhookStatus } from './types';\n\nexport function createWebhooksQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful, wcMutate } = fetcher;\n\n async function getWebhooks(params?: { status?: WCWebhookStatus }): Promise<WCWebhook[]> {\n return wcFetchGraceful<WCWebhook[]>(\n '/wp-json/wc/v3/webhooks',\n [],\n params,\n ['woocommerce', 'webhooks'],\n );\n }\n\n async function getWebhookById(id: number): Promise<WCWebhook> {\n return wcFetch<WCWebhook>(\n `/wp-json/wc/v3/webhooks/${id}`,\n undefined,\n ['woocommerce', 'webhooks', `webhook-${id}`],\n );\n }\n\n async function createWebhook(input: CreateWebhookInput): Promise<WCWebhook> {\n return wcMutate<WCWebhook>('/wp-json/wc/v3/webhooks', input, 'POST');\n }\n\n async function updateWebhook(id: number, input: UpdateWebhookInput): Promise<WCWebhook> {\n return wcMutate<WCWebhook>(`/wp-json/wc/v3/webhooks/${id}`, input, 'PUT');\n }\n\n async function deleteWebhook(\n id: number,\n force = true,\n ): Promise<{ deleted: boolean; previous: WCWebhook }> {\n return wcMutate<{ deleted: boolean; previous: WCWebhook }>(\n `/wp-json/wc/v3/webhooks/${id}`,\n { force },\n 'DELETE',\n );\n }\n\n return {\n getWebhooks,\n getWebhookById,\n createWebhook,\n updateWebhook,\n deleteWebhook,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type { WCSettingGroup, WCSettingOption } from './types';\n\nexport function createSettingsQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful, wcMutate } = fetcher;\n\n async function getSettingGroups(): Promise<WCSettingGroup[]> {\n return wcFetchGraceful<WCSettingGroup[]>(\n '/wp-json/wc/v3/settings',\n [],\n undefined,\n ['woocommerce', 'settings'],\n );\n }\n\n async function getSettingOptions(groupId: string): Promise<WCSettingOption[]> {\n return wcFetchGraceful<WCSettingOption[]>(\n `/wp-json/wc/v3/settings/${groupId}`,\n [],\n undefined,\n ['woocommerce', 'settings', `settings-${groupId}`],\n );\n }\n\n async function getSettingOption(groupId: string, optionId: string): Promise<WCSettingOption> {\n return wcFetch<WCSettingOption>(\n `/wp-json/wc/v3/settings/${groupId}/${optionId}`,\n undefined,\n ['woocommerce', 'settings', `settings-${groupId}-${optionId}`],\n );\n }\n\n async function updateSettingOption(\n groupId: string,\n optionId: string,\n value: string | string[],\n ): Promise<WCSettingOption> {\n return wcMutate<WCSettingOption>(\n `/wp-json/wc/v3/settings/${groupId}/${optionId}`,\n { value },\n 'PUT',\n );\n }\n\n return {\n getSettingGroups,\n getSettingOptions,\n getSettingOption,\n updateSettingOption,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type {\n WCSalesReport,\n WCSalesReportParams,\n WCTopSeller,\n WCTopSellersParams,\n WCStatusCount,\n} from './types';\n\nexport function createReportsQueries(fetcher: WooCommerceFetcher) {\n const { wcFetchGraceful } = fetcher;\n\n async function getSalesReport(params?: WCSalesReportParams): Promise<WCSalesReport[]> {\n return wcFetchGraceful<WCSalesReport[]>(\n '/wp-json/wc/v3/reports/sales',\n [],\n params as Record<string, unknown>,\n ['woocommerce', 'reports', 'sales'],\n );\n }\n\n async function getTopSellers(params?: WCTopSellersParams): Promise<WCTopSeller[]> {\n return wcFetchGraceful<WCTopSeller[]>(\n '/wp-json/wc/v3/reports/top_sellers',\n [],\n params as Record<string, unknown>,\n ['woocommerce', 'reports', 'top_sellers'],\n );\n }\n\n async function getOrdersTotals(): Promise<WCStatusCount[]> {\n return wcFetchGraceful<WCStatusCount[]>(\n '/wp-json/wc/v3/reports/orders/totals',\n [],\n undefined,\n ['woocommerce', 'reports', 'orders_totals'],\n );\n }\n\n async function getProductsTotals(): Promise<WCStatusCount[]> {\n return wcFetchGraceful<WCStatusCount[]>(\n '/wp-json/wc/v3/reports/products/totals',\n [],\n undefined,\n ['woocommerce', 'reports', 'products_totals'],\n );\n }\n\n async function getCustomersTotals(): Promise<WCStatusCount[]> {\n return wcFetchGraceful<WCStatusCount[]>(\n '/wp-json/wc/v3/reports/customers/totals',\n [],\n undefined,\n ['woocommerce', 'reports', 'customers_totals'],\n );\n }\n\n async function getCouponsTotals(): Promise<WCStatusCount[]> {\n return wcFetchGraceful<WCStatusCount[]>(\n '/wp-json/wc/v3/reports/coupons/totals',\n [],\n undefined,\n ['woocommerce', 'reports', 'coupons_totals'],\n );\n }\n\n async function getReviewsTotals(): Promise<WCStatusCount[]> {\n return wcFetchGraceful<WCStatusCount[]>(\n '/wp-json/wc/v3/reports/reviews/totals',\n [],\n undefined,\n ['woocommerce', 'reports', 'reviews_totals'],\n );\n }\n\n return {\n getSalesReport,\n getTopSellers,\n getOrdersTotals,\n getProductsTotals,\n getCustomersTotals,\n getCouponsTotals,\n getReviewsTotals,\n };\n}\n","import type { WooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport type {\n WCCurrency,\n WCContinent,\n WCCountry,\n WCSystemStatus,\n WCSystemStatusTool,\n} from './types';\n\nexport function createDataQueries(fetcher: WooCommerceFetcher) {\n const { wcFetch, wcFetchGraceful, wcMutate } = fetcher;\n\n async function getCurrencies(): Promise<WCCurrency[]> {\n return wcFetchGraceful<WCCurrency[]>(\n '/wp-json/wc/v3/data/currencies',\n [],\n undefined,\n ['woocommerce', 'data', 'currencies'],\n );\n }\n\n async function getCurrentCurrency(): Promise<WCCurrency> {\n return wcFetch<WCCurrency>(\n '/wp-json/wc/v3/data/currencies/current',\n undefined,\n ['woocommerce', 'data', 'currency_current'],\n );\n }\n\n async function getCurrencyByCode(code: string): Promise<WCCurrency> {\n return wcFetch<WCCurrency>(\n `/wp-json/wc/v3/data/currencies/${code.toUpperCase()}`,\n undefined,\n ['woocommerce', 'data', `currency-${code}`],\n );\n }\n\n async function getContinents(): Promise<WCContinent[]> {\n return wcFetchGraceful<WCContinent[]>(\n '/wp-json/wc/v3/data/continents',\n [],\n undefined,\n ['woocommerce', 'data', 'continents'],\n );\n }\n\n async function getContinentByCode(code: string): Promise<WCContinent> {\n return wcFetch<WCContinent>(\n `/wp-json/wc/v3/data/continents/${code.toUpperCase()}`,\n undefined,\n ['woocommerce', 'data', `continent-${code}`],\n );\n }\n\n async function getCountries(): Promise<WCCountry[]> {\n return wcFetchGraceful<WCCountry[]>(\n '/wp-json/wc/v3/data/countries',\n [],\n undefined,\n ['woocommerce', 'data', 'countries'],\n );\n }\n\n async function getCountryByCode(code: string): Promise<WCCountry> {\n return wcFetch<WCCountry>(\n `/wp-json/wc/v3/data/countries/${code.toUpperCase()}`,\n undefined,\n ['woocommerce', 'data', `country-${code}`],\n );\n }\n\n async function getTimeZones(): Promise<Record<string, string>> {\n return wcFetchGraceful<Record<string, string>>(\n '/wp-json/wc/v3/data/time_zones',\n {},\n undefined,\n ['woocommerce', 'data', 'time_zones'],\n );\n }\n\n async function getSystemStatus(): Promise<WCSystemStatus> {\n return wcFetch<WCSystemStatus>(\n '/wp-json/wc/v3/system_status',\n undefined,\n ['woocommerce', 'system_status'],\n );\n }\n\n async function getSystemStatusTools(): Promise<WCSystemStatusTool[]> {\n return wcFetchGraceful<WCSystemStatusTool[]>(\n '/wp-json/wc/v3/system_status/tools',\n [],\n undefined,\n ['woocommerce', 'system_status_tools'],\n );\n }\n\n async function runSystemStatusTool(toolId: string): Promise<WCSystemStatusTool> {\n return wcMutate<WCSystemStatusTool>(\n `/wp-json/wc/v3/system_status/tools/${toolId}`,\n {},\n 'PUT',\n );\n }\n\n return {\n getCurrencies,\n getCurrentCurrency,\n getCurrencyByCode,\n getContinents,\n getContinentByCode,\n getCountries,\n getCountryByCode,\n getTimeZones,\n getSystemStatus,\n getSystemStatusTools,\n runSystemStatusTool,\n };\n}\n","export type { WCImage, WCDimensions, WCAddress } from '@restApi/woocommerce/shared/types';\n\nexport type {\n WCProduct,\n WCProductFilterParams,\n WCProductVariation,\n WCProductAttribute,\n WCProductDefaultAttribute,\n WCProductStatus,\n CreateProductInput,\n UpdateProductInput,\n} from '@restApi/woocommerce/products';\n\nexport type {\n WCProductCategory,\n CreateProductCategoryInput,\n UpdateProductCategoryInput,\n} from '@restApi/woocommerce/categories';\n\nexport type {\n WCProductTag,\n CreateProductTagInput,\n UpdateProductTagInput,\n} from '@restApi/woocommerce/tags';\n\nexport type {\n WCOrder,\n WCCreateOrderInput,\n WCOrderLineItem,\n WCShippingLine,\n} from '@restApi/woocommerce/orders';\n\nexport type {\n WCCoupon,\n CreateCouponInput,\n UpdateCouponInput,\n} from '@restApi/woocommerce/coupons';\n\nexport type { WCCustomer, UpdateCustomerInput } from '@restApi/woocommerce/customers';\n\nexport type { WCPaymentGateway, WCPaymentGatewaySetting } from '@restApi/woocommerce/payment_gateways';\n\nexport type { WCOrderNote, WCCreateOrderNoteInput } from '@restApi/woocommerce/order_notes';\n\nexport type {\n WCOrderRefund,\n WCCreateOrderRefundInput,\n WCRefundLineItem,\n} from '@restApi/woocommerce/order_refunds';\n\nexport type {\n WCProductAttribute as WCGlobalProductAttribute,\n WCAttributeTerm,\n CreateProductAttributeInput,\n UpdateProductAttributeInput,\n CreateAttributeTermInput,\n UpdateAttributeTermInput,\n} from '@restApi/woocommerce/product_attributes';\n\nexport type {\n WCProductReview,\n WCReviewStatus,\n WCProductReviewFilterParams,\n CreateProductReviewInput,\n UpdateProductReviewInput,\n} from '@restApi/woocommerce/product_reviews';\n\nexport type {\n WCShippingClass,\n CreateShippingClassInput,\n UpdateShippingClassInput,\n} from '@restApi/woocommerce/shipping_classes';\n\nexport type {\n WCTaxRate,\n WCTaxClass,\n CreateTaxRateInput,\n UpdateTaxRateInput,\n CreateTaxClassInput,\n} from '@restApi/woocommerce/taxes';\n\nexport type {\n WCShippingZone,\n WCShippingZoneLocation,\n WCShippingZoneMethod,\n WCShippingMethod,\n CreateShippingZoneInput,\n UpdateShippingZoneInput,\n CreateShippingZoneMethodInput,\n UpdateShippingZoneMethodInput,\n} from '@restApi/woocommerce/shipping';\n\nexport type {\n WCWebhook,\n WCWebhookStatus,\n WCWebhookTopic,\n CreateWebhookInput,\n UpdateWebhookInput,\n} from '@restApi/woocommerce/webhooks';\n\nexport type { WCSettingGroup, WCSettingOption } from '@restApi/woocommerce/settings';\n\nexport type {\n WCSalesReport,\n WCSalesReportParams,\n WCTopSeller,\n WCTopSellersParams,\n WCStatusCount,\n} from '@restApi/woocommerce/reports';\n\nexport type {\n WCCurrency,\n WCCountry,\n WCContinent,\n WCSystemStatus,\n WCSystemStatusTool,\n} from '@restApi/woocommerce/data';\n\nexport type {\n OmnibusPriceEntry,\n OmnibusProductData,\n WCProductWithOmnibus,\n WCProductVariationWithOmnibus,\n} from '@restApi/woocommerce/omnibus';\nexport { extractOmnibusData, withOmnibus, withOmnibusVariation } from '@restApi/woocommerce/omnibus';\n\nexport type {\n WooCommerceConfig,\n WooCommerceResponse,\n WooCommercePaginationHeaders,\n} from '@restApi/woocommerce/client';\n\nexport { createWooCommerceFetcher, type WooCommerceFetcher } from '@restApi/woocommerce/client';\nexport { WooCommerceError } from '@restApi/woocommerce/client';\n\nimport { createWooCommerceFetcher } from '@restApi/woocommerce/client';\nimport type { WooCommerceConfig } from '@restApi/woocommerce/client';\nimport { createProductsQueries, createProductsMutations } from '@restApi/woocommerce/products';\nimport { createCategoriesQueries, createCategoriesMutations } from '@restApi/woocommerce/categories';\nimport { createTagsQueries, createTagsMutations } from '@restApi/woocommerce/tags';\nimport { createOrdersQueries } from '@restApi/woocommerce/orders';\nimport { createCouponsQueries, createCouponsMutations } from '@restApi/woocommerce/coupons';\nimport { createCustomersQueries } from '@restApi/woocommerce/customers';\nimport { createPaymentGatewaysQueries } from '@restApi/woocommerce/payment_gateways';\nimport { createOrderNotesQueries } from '@restApi/woocommerce/order_notes';\nimport { createOrderRefundsQueries } from '@restApi/woocommerce/order_refunds';\nimport { createProductAttributesQueries } from '@restApi/woocommerce/product_attributes';\nimport { createProductReviewsQueries } from '@restApi/woocommerce/product_reviews';\nimport { createShippingClassesQueries } from '@restApi/woocommerce/shipping_classes';\nimport { createTaxesQueries } from '@restApi/woocommerce/taxes';\nimport { createShippingQueries } from '@restApi/woocommerce/shipping';\nimport { createWebhooksQueries } from '@restApi/woocommerce/webhooks';\nimport { createSettingsQueries } from '@restApi/woocommerce/settings';\nimport { createReportsQueries } from '@restApi/woocommerce/reports';\nimport { createDataQueries } from '@restApi/woocommerce/data';\n\nexport function createWooCommerceClient(config: WooCommerceConfig) {\n const fetcher = createWooCommerceFetcher(config);\n\n return {\n ...createProductsQueries(fetcher),\n ...createProductsMutations(fetcher),\n ...createCategoriesQueries(fetcher),\n ...createCategoriesMutations(fetcher),\n ...createTagsQueries(fetcher),\n ...createTagsMutations(fetcher),\n ...createOrdersQueries(fetcher),\n ...createOrderNotesQueries(fetcher),\n ...createOrderRefundsQueries(fetcher),\n ...createProductAttributesQueries(fetcher),\n ...createProductReviewsQueries(fetcher),\n ...createShippingClassesQueries(fetcher),\n ...createTaxesQueries(fetcher),\n ...createShippingQueries(fetcher),\n ...createWebhooksQueries(fetcher),\n ...createSettingsQueries(fetcher),\n ...createReportsQueries(fetcher),\n ...createDataQueries(fetcher),\n ...createCouponsQueries(fetcher),\n ...createCouponsMutations(fetcher),\n ...createCustomersQueries(fetcher),\n ...createPaymentGatewaysQueries(fetcher),\n };\n}\n","import type { NextWordpressConfig } from '@shared';\nimport { createFetcher } from '@restApi/core/client';\nimport type { WordPressFetcher } from '@restApi/core/client';\nimport type {\n WPULikeStatsParams,\n WPULikeStats,\n WPULikeVoteParams,\n WPULikeVoteResponse,\n WPULikeCheckParams,\n WPULikeCheckResponse,\n} from './types';\n\nexport function createWPULikeQueries(fetcher: WordPressFetcher) {\n const { wpFetch, wpMutate } = fetcher;\n\n async function getLikeStats(\n params: WPULikeStatsParams,\n tags?: string[],\n ): Promise<WPULikeStats> {\n return wpFetch<WPULikeStats>(\n '/wp-json/wp-ulike/v1/stats',\n params as unknown as Record<string, unknown>,\n tags ?? ['wpulike', `wpulike-${params.id}`],\n );\n }\n\n async function checkLikeStatus(\n params: WPULikeCheckParams,\n tags?: string[],\n ): Promise<WPULikeCheckResponse> {\n return wpFetch<WPULikeCheckResponse>(\n '/wp-json/wp-ulike/v1/check',\n params as unknown as Record<string, unknown>,\n tags ?? ['wpulike', `wpulike-${params.id}`],\n );\n }\n\n async function vote(\n params: WPULikeVoteParams,\n authToken?: string,\n ): Promise<WPULikeVoteResponse> {\n return wpMutate<WPULikeVoteResponse>(\n '/wp-json/wp-ulike/v1/vote',\n params,\n 'POST',\n authToken,\n );\n }\n\n return { getLikeStats, checkLikeStatus, vote };\n}\n\nexport function createWPULikeClient(config: NextWordpressConfig) {\n const fetcher = createFetcher(config);\n return createWPULikeQueries(fetcher);\n}\n","import type { ErrorCode } from '@shared';\n\nexport type CF7SubmissionStatus =\n | 'mail_sent'\n | 'mail_failed'\n | 'validation_failed'\n | 'spam'\n | 'aborted';\n\nexport interface CF7ValidationError {\n field: string;\n message: string;\n idref: string | null;\n}\n\nexport interface CF7SubmissionResponse {\n status: CF7SubmissionStatus;\n message: string;\n invalid_fields?: CF7ValidationError[];\n}\n\nexport class CF7Error extends Error {\n constructor(\n public readonly code: ErrorCode,\n public readonly status: number,\n public readonly endpoint: string,\n message: string,\n ) {\n super(message);\n this.name = 'CF7Error';\n }\n}\n","import type { NextWordpressConfig } from '@shared';\nimport { resolveMessage } from '@shared';\nimport { buildUrl } from '@restApi/core/client';\nimport { ErrorCode } from '@shared/errors/codes';\nimport type { CF7SubmissionResponse, CF7SubmissionStatus } from './types';\nimport { CF7Error } from './types';\n\nconst statusToCode: Record<CF7SubmissionStatus, ErrorCode> = {\n mail_sent: ErrorCode.CF7_MAIL_SENT,\n mail_failed: ErrorCode.CF7_MAIL_FAILED,\n validation_failed: ErrorCode.CF7_VALIDATION_FAILED,\n spam: ErrorCode.CF7_SPAM,\n aborted: ErrorCode.CF7_ABORTED,\n};\n\nexport function createCF7Queries(config: NextWordpressConfig) {\n async function submitForm(\n formId: number,\n data: Record<string, string>,\n ): Promise<CF7SubmissionResponse> {\n const url = buildUrl(config, `/wp-json/contact-form-7/v1/contact-forms/${formId}/feedback`);\n const body = new FormData();\n for (const [key, value] of Object.entries(data)) {\n body.append(key, value);\n }\n const res = await fetch(url, { method: 'POST', body, cache: 'no-store' });\n if (!res.ok) {\n throw new CF7Error(\n ErrorCode.CF7_MAIL_FAILED,\n res.status,\n url,\n resolveMessage(ErrorCode.CF7_MAIL_FAILED, config.errorMessages),\n );\n }\n const result = (await res.json()) as CF7SubmissionResponse;\n const code = statusToCode[result.status];\n return { ...result, message: resolveMessage(code, config.errorMessages) };\n }\n\n return { submitForm };\n}\n","import type { NextWordpressConfig, ErrorCode } from '@shared';\n\nexport type WPGraphQLConfig = NextWordpressConfig;\n\nexport interface GQLPageInfo {\n hasNextPage: boolean;\n hasPreviousPage: boolean;\n startCursor?: string;\n endCursor?: string;\n}\n\nexport interface GQLConnection<T> {\n nodes: T[];\n pageInfo: GQLPageInfo;\n}\n\nexport interface GQLError {\n message: string;\n locations?: Array<{ line: number; column: number }>;\n path?: string[];\n}\n\nexport interface GQLResponse<T> {\n data?: T;\n errors?: GQLError[];\n}\n\nexport class WPGraphQLError extends Error {\n constructor(\n public readonly code: ErrorCode,\n public readonly status: number,\n public readonly endpoint: string,\n message: string,\n public readonly gqlErrors?: GQLError[],\n ) {\n super(message);\n this.name = 'WPGraphQLError';\n }\n}\n","import { resolveBaseUrl, ErrorCode, resolveMessage } from '@shared';\nimport type { WPGraphQLConfig, GQLResponse, GQLError } from './types';\nimport { WPGraphQLError } from './types';\n\nconst USER_AGENT = 'NextWordpress WPGraphQL Client';\n\ninterface NextRequestInit extends RequestInit {\n next?: {\n revalidate?: number | false;\n tags?: string[];\n };\n}\n\nexport function createWPGraphQLFetcher(config: WPGraphQLConfig) {\n const url = `${resolveBaseUrl(config)}/graphql`;\n const cacheTTL = config.cacheTTL ?? 300;\n\n async function gqlFetch<TData>(\n document: string,\n variables?: Record<string, unknown>,\n tags: string[] = ['wpgraphql'],\n ): Promise<TData> {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'User-Agent': USER_AGENT,\n },\n body: JSON.stringify({ query: document, variables }),\n next: { tags, revalidate: cacheTTL },\n } as NextRequestInit);\n\n if (!response.ok) {\n throw new WPGraphQLError(\n ErrorCode.GQL_REQUEST_FAILED,\n response.status,\n url,\n resolveMessage(ErrorCode.GQL_REQUEST_FAILED, config.errorMessages),\n );\n }\n\n const parsed = (await response.json()) as GQLResponse<TData>;\n\n if (parsed.errors && parsed.errors.length > 0) {\n throw new WPGraphQLError(\n ErrorCode.GQL_ERRORS_IN_RESPONSE,\n 200,\n url,\n resolveMessage(ErrorCode.GQL_ERRORS_IN_RESPONSE, config.errorMessages),\n parsed.errors as GQLError[],\n );\n }\n\n if (parsed.data === undefined) {\n throw new WPGraphQLError(\n ErrorCode.GQL_NO_DATA,\n 200,\n url,\n resolveMessage(ErrorCode.GQL_NO_DATA, config.errorMessages),\n );\n }\n\n return parsed.data;\n }\n\n async function gqlFetchGraceful<TData>(\n document: string,\n fallback: TData,\n variables?: Record<string, unknown>,\n tags: string[] = ['wpgraphql'],\n ): Promise<TData> {\n try {\n return await gqlFetch<TData>(document, variables, tags);\n } catch {\n console.warn(`WPGraphQL fetch failed for query`);\n return fallback;\n }\n }\n\n async function gqlMutate<TData>(\n document: string,\n variables?: Record<string, unknown>,\n authToken?: string,\n ): Promise<TData> {\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'User-Agent': USER_AGENT,\n };\n if (authToken) {\n headers['Authorization'] = authToken;\n }\n\n const response = await fetch(url, {\n method: 'POST',\n headers,\n body: JSON.stringify({ query: document, variables }),\n cache: 'no-store',\n });\n\n if (!response.ok) {\n throw new WPGraphQLError(\n ErrorCode.GQL_REQUEST_FAILED,\n response.status,\n url,\n resolveMessage(ErrorCode.GQL_REQUEST_FAILED, config.errorMessages),\n );\n }\n\n const parsed = (await response.json()) as GQLResponse<TData>;\n\n if (parsed.errors && parsed.errors.length > 0) {\n throw new WPGraphQLError(\n ErrorCode.GQL_ERRORS_IN_RESPONSE,\n 200,\n url,\n resolveMessage(ErrorCode.GQL_ERRORS_IN_RESPONSE, config.errorMessages),\n parsed.errors as GQLError[],\n );\n }\n\n if (parsed.data === undefined) {\n throw new WPGraphQLError(\n ErrorCode.GQL_NO_DATA,\n 200,\n url,\n resolveMessage(ErrorCode.GQL_NO_DATA, config.errorMessages),\n );\n }\n\n return parsed.data;\n }\n\n return { gqlFetch, gqlFetchGraceful, gqlMutate };\n}\n\nexport type WPGraphQLFetcher = ReturnType<typeof createWPGraphQLFetcher>;\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLConnection } from '@wpgraphql/client';\nimport type { GQLPost, GQLPostFilter } from './types';\n\nconst DEFAULT_FIRST = 10;\nconst BATCH_FIRST = 100;\n\nconst POST_FIELDS = `\n id\n databaseId\n slug\n title\n excerpt\n date\n modified\n status\n uri\n author {\n node {\n databaseId\n name\n slug\n avatar { url }\n }\n }\n featuredImage {\n node {\n sourceUrl\n altText\n mediaDetails { width height }\n }\n }\n categories {\n nodes { databaseId name slug }\n }\n tags {\n nodes { databaseId name slug }\n }\n`;\n\nconst POST_FIELDS_WITH_CONTENT = `\n ${POST_FIELDS}\n content\n`;\n\nconst GQL_GET_POSTS = `\n query GetPosts($first: Int, $after: String, $where: RootQueryToPostConnectionWhereArgs) {\n posts(first: $first, after: $after, where: $where) {\n nodes { ${POST_FIELDS} }\n pageInfo { hasNextPage hasPreviousPage startCursor endCursor }\n }\n }\n`;\n\nconst GQL_GET_POST_BY_SLUG = `\n query GetPostBySlug($slug: ID!) {\n post(id: $slug, idType: SLUG) { ${POST_FIELDS_WITH_CONTENT} }\n }\n`;\n\nconst GQL_GET_POST_BY_DATABASE_ID = `\n query GetPostByDatabaseId($id: ID!) {\n post(id: $id, idType: DATABASE_ID) { ${POST_FIELDS_WITH_CONTENT} }\n }\n`;\n\nconst GQL_GET_ALL_POST_SLUGS = `\n query GetAllPostSlugs($first: Int, $after: String) {\n posts(first: $first, after: $after) {\n nodes { slug }\n pageInfo { hasNextPage endCursor }\n }\n }\n`;\n\nconst GQL_GET_ALL_POSTS_FOR_SITEMAP = `\n query GetAllPostsForSitemap($first: Int, $after: String) {\n posts(first: $first, after: $after) {\n nodes { slug modified }\n pageInfo { hasNextPage endCursor }\n }\n }\n`;\n\nexport function createPostsQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetch, gqlFetchGraceful } = fetcher;\n\n async function getPosts(\n first: number = DEFAULT_FIRST,\n after?: string,\n filter?: GQLPostFilter,\n ): Promise<GQLConnection<GQLPost>> {\n const where: Record<string, unknown> = {};\n if (filter?.authorName) where['authorName'] = filter.authorName;\n if (filter?.categoryName) where['categoryName'] = filter.categoryName;\n if (filter?.tag) where['tag'] = filter.tag;\n if (filter?.search) where['search'] = filter.search;\n if (filter?.status) where['status'] = filter.status;\n\n const data = await gqlFetchGraceful<{ posts: GQLConnection<GQLPost> }>(\n GQL_GET_POSTS,\n { posts: { nodes: [], pageInfo: { hasNextPage: false, hasPreviousPage: false } } },\n { first, after, where: Object.keys(where).length > 0 ? where : undefined },\n ['wpgraphql', 'gql-posts'],\n );\n return data.posts;\n }\n\n async function getPostBySlug(slug: string): Promise<GQLPost | null> {\n const data = await gqlFetchGraceful<{ post: GQLPost | null }>(\n GQL_GET_POST_BY_SLUG,\n { post: null },\n { slug },\n ['wpgraphql', 'gql-posts', `gql-post-${slug}`],\n );\n return data.post;\n }\n\n async function getPostByDatabaseId(id: number): Promise<GQLPost | null> {\n const data = await gqlFetchGraceful<{ post: GQLPost | null }>(\n GQL_GET_POST_BY_DATABASE_ID,\n { post: null },\n { id: String(id) },\n ['wpgraphql', 'gql-posts', `gql-post-id-${id}`],\n );\n return data.post;\n }\n\n async function getRecentPosts(first: number = DEFAULT_FIRST): Promise<GQLPost[]> {\n const connection = await getPosts(first);\n return connection.nodes;\n }\n\n async function getAllPostSlugs(): Promise<{ slug: string }[]> {\n try {\n const all: { slug: string }[] = [];\n let after: string | undefined = undefined;\n let hasNextPage = true;\n\n while (hasNextPage) {\n const data: { posts: GQLConnection<{ slug: string }> } = await gqlFetch<{\n posts: GQLConnection<{ slug: string }>;\n }>(GQL_GET_ALL_POST_SLUGS, { first: BATCH_FIRST, after }, ['wpgraphql']);\n all.push(...data.posts.nodes);\n hasNextPage = data.posts.pageInfo.hasNextPage;\n after = data.posts.pageInfo.endCursor;\n }\n\n return all;\n } catch {\n console.warn('WPGraphQL unavailable, skipping static generation for posts');\n return [];\n }\n }\n\n async function getAllPostsForSitemap(): Promise<{ slug: string; modified: string }[]> {\n try {\n const all: { slug: string; modified: string }[] = [];\n let after: string | undefined = undefined;\n let hasNextPage = true;\n\n while (hasNextPage) {\n const data: { posts: GQLConnection<{ slug: string; modified: string }> } =\n await gqlFetch<{ posts: GQLConnection<{ slug: string; modified: string }> }>(\n GQL_GET_ALL_POSTS_FOR_SITEMAP,\n { first: BATCH_FIRST, after },\n ['wpgraphql'],\n );\n all.push(...data.posts.nodes);\n hasNextPage = data.posts.pageInfo.hasNextPage;\n after = data.posts.pageInfo.endCursor;\n }\n\n return all;\n } catch {\n console.warn('WPGraphQL unavailable, skipping sitemap generation');\n return [];\n }\n }\n\n return {\n getPosts,\n getPostBySlug,\n getPostByDatabaseId,\n getRecentPosts,\n getAllPostSlugs,\n getAllPostsForSitemap,\n };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLConnection } from '@wpgraphql/client';\nimport type { GQLPage } from './types';\n\nconst DEFAULT_FIRST = 10;\nconst BATCH_FIRST = 100;\n\nconst PAGE_FIELDS = `\n id\n databaseId\n slug\n title\n content\n date\n modified\n status\n uri\n featuredImage {\n node {\n sourceUrl\n altText\n mediaDetails { width height }\n }\n }\n`;\n\nconst GQL_GET_PAGES = `\n query GetPages($first: Int, $after: String) {\n pages(first: $first, after: $after) {\n nodes { ${PAGE_FIELDS} }\n pageInfo { hasNextPage hasPreviousPage startCursor endCursor }\n }\n }\n`;\n\n// PageIdType does not include SLUG — use URI (e.g. \"/about/\") for slug-based lookups\nconst GQL_GET_PAGE_BY_SLUG = `\n query GetPageBySlug($uri: ID!) {\n page(id: $uri, idType: URI) { ${PAGE_FIELDS} }\n }\n`;\n\nconst GQL_GET_PAGE_BY_URI = `\n query GetPageByUri($uri: ID!) {\n page(id: $uri, idType: URI) { ${PAGE_FIELDS} }\n }\n`;\n\nconst GQL_GET_ALL_PAGE_URIS = `\n query GetAllPageUris($first: Int, $after: String) {\n pages(first: $first, after: $after) {\n nodes { uri }\n pageInfo { hasNextPage endCursor }\n }\n }\n`;\n\nexport function createPagesQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetch, gqlFetchGraceful } = fetcher;\n\n async function getPages(\n first: number = DEFAULT_FIRST,\n after?: string,\n ): Promise<GQLConnection<GQLPage>> {\n const data = await gqlFetchGraceful<{ pages: GQLConnection<GQLPage> }>(\n GQL_GET_PAGES,\n { pages: { nodes: [], pageInfo: { hasNextPage: false, hasPreviousPage: false } } },\n { first, after },\n ['wpgraphql', 'gql-pages'],\n );\n return data.pages;\n }\n\n async function getPageBySlug(slug: string): Promise<GQLPage | null> {\n const data = await gqlFetchGraceful<{ page: GQLPage | null }>(\n GQL_GET_PAGE_BY_SLUG,\n { page: null },\n { uri: `/${slug}/` },\n ['wpgraphql', 'gql-pages', `gql-page-${slug}`],\n );\n return data.page;\n }\n\n async function getPageByUri(uri: string): Promise<GQLPage | null> {\n const data = await gqlFetchGraceful<{ page: GQLPage | null }>(\n GQL_GET_PAGE_BY_URI,\n { page: null },\n { uri },\n ['wpgraphql', 'gql-pages', `gql-page-uri-${uri.replace(/\\//g, '-')}`],\n );\n return data.page;\n }\n\n async function getAllPageUris(): Promise<{ uri: string }[]> {\n try {\n const all: { uri: string }[] = [];\n let after: string | undefined = undefined;\n let hasNextPage = true;\n\n while (hasNextPage) {\n const data: { pages: GQLConnection<{ uri: string }> } = await gqlFetch<{\n pages: GQLConnection<{ uri: string }>;\n }>(GQL_GET_ALL_PAGE_URIS, { first: BATCH_FIRST, after }, ['wpgraphql']);\n all.push(...data.pages.nodes);\n hasNextPage = data.pages.pageInfo.hasNextPage;\n after = data.pages.pageInfo.endCursor;\n }\n\n return all;\n } catch {\n console.warn('WPGraphQL unavailable, skipping static generation for pages');\n return [];\n }\n }\n\n return { getPages, getPageBySlug, getPageByUri, getAllPageUris };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLConnection } from '@wpgraphql/client';\nimport type { GQLCategory } from './types';\n\nconst DEFAULT_FIRST = 100;\n\nconst CATEGORY_FIELDS = `\n id\n databaseId\n name\n slug\n description\n count\n uri\n parent {\n node { databaseId name slug }\n }\n`;\n\nconst GQL_GET_CATEGORIES = `\n query GetCategories($first: Int, $after: String) {\n categories(first: $first, after: $after) {\n nodes { ${CATEGORY_FIELDS} }\n pageInfo { hasNextPage hasPreviousPage startCursor endCursor }\n }\n }\n`;\n\nconst GQL_GET_CATEGORY_BY_SLUG = `\n query GetCategoryBySlug($slug: ID!) {\n category(id: $slug, idType: SLUG) { ${CATEGORY_FIELDS} }\n }\n`;\n\nconst GQL_GET_CATEGORY_BY_DATABASE_ID = `\n query GetCategoryByDatabaseId($id: ID!) {\n category(id: $id, idType: DATABASE_ID) { ${CATEGORY_FIELDS} }\n }\n`;\n\nexport function createCategoriesQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetchGraceful } = fetcher;\n\n async function getCategories(\n first: number = DEFAULT_FIRST,\n after?: string,\n ): Promise<GQLConnection<GQLCategory>> {\n const data = await gqlFetchGraceful<{ categories: GQLConnection<GQLCategory> }>(\n GQL_GET_CATEGORIES,\n { categories: { nodes: [], pageInfo: { hasNextPage: false, hasPreviousPage: false } } },\n { first, after },\n ['wpgraphql', 'gql-categories'],\n );\n return data.categories;\n }\n\n async function getCategoryBySlug(slug: string): Promise<GQLCategory | null> {\n const data = await gqlFetchGraceful<{ category: GQLCategory | null }>(\n GQL_GET_CATEGORY_BY_SLUG,\n { category: null },\n { slug },\n ['wpgraphql', 'gql-categories', `gql-category-${slug}`],\n );\n return data.category;\n }\n\n async function getCategoryByDatabaseId(id: number): Promise<GQLCategory | null> {\n const data = await gqlFetchGraceful<{ category: GQLCategory | null }>(\n GQL_GET_CATEGORY_BY_DATABASE_ID,\n { category: null },\n { id: String(id) },\n ['wpgraphql', 'gql-categories', `gql-category-id-${id}`],\n );\n return data.category;\n }\n\n return { getCategories, getCategoryBySlug, getCategoryByDatabaseId };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLConnection } from '@wpgraphql/client';\nimport type { GQLTag } from './types';\n\nconst DEFAULT_FIRST = 100;\n\nconst TAG_FIELDS = `\n id\n databaseId\n name\n slug\n description\n count\n uri\n`;\n\nconst GQL_GET_TAGS = `\n query GetTags($first: Int, $after: String) {\n tags(first: $first, after: $after) {\n nodes { ${TAG_FIELDS} }\n pageInfo { hasNextPage hasPreviousPage startCursor endCursor }\n }\n }\n`;\n\nconst GQL_GET_TAG_BY_SLUG = `\n query GetTagBySlug($slug: ID!) {\n tag(id: $slug, idType: SLUG) { ${TAG_FIELDS} }\n }\n`;\n\nexport function createTagsQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetchGraceful } = fetcher;\n\n async function getTags(\n first: number = DEFAULT_FIRST,\n after?: string,\n ): Promise<GQLConnection<GQLTag>> {\n const data = await gqlFetchGraceful<{ tags: GQLConnection<GQLTag> }>(\n GQL_GET_TAGS,\n { tags: { nodes: [], pageInfo: { hasNextPage: false, hasPreviousPage: false } } },\n { first, after },\n ['wpgraphql', 'gql-tags'],\n );\n return data.tags;\n }\n\n async function getTagBySlug(slug: string): Promise<GQLTag | null> {\n const data = await gqlFetchGraceful<{ tag: GQLTag | null }>(\n GQL_GET_TAG_BY_SLUG,\n { tag: null },\n { slug },\n ['wpgraphql', 'gql-tags', `gql-tag-${slug}`],\n );\n return data.tag;\n }\n\n return { getTags, getTagBySlug };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLConnection } from '@wpgraphql/client';\nimport type { GQLAuthor } from './types';\n\nconst DEFAULT_FIRST = 100;\n\nconst AUTHOR_FIELDS = `\n id\n databaseId\n name\n slug\n description\n email\n uri\n avatar { url width height }\n`;\n\nconst GQL_GET_AUTHORS = `\n query GetAuthors($first: Int, $after: String) {\n users(first: $first, after: $after) {\n nodes { ${AUTHOR_FIELDS} }\n pageInfo { hasNextPage hasPreviousPage startCursor endCursor }\n }\n }\n`;\n\n// WPGraphQL exposes authors via the users query; login matches the user slug\nconst GQL_GET_AUTHOR_BY_SLUG = `\n query GetAuthorBySlug($slug: String!) {\n users(where: { login: $slug }) {\n nodes { ${AUTHOR_FIELDS} }\n }\n }\n`;\n\nexport function createAuthorsQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetchGraceful } = fetcher;\n\n async function getAuthors(\n first: number = DEFAULT_FIRST,\n after?: string,\n ): Promise<GQLConnection<GQLAuthor>> {\n const data = await gqlFetchGraceful<{ users: GQLConnection<GQLAuthor> }>(\n GQL_GET_AUTHORS,\n { users: { nodes: [], pageInfo: { hasNextPage: false, hasPreviousPage: false } } },\n { first, after },\n ['wpgraphql', 'gql-authors'],\n );\n return data.users;\n }\n\n async function getAuthorBySlug(slug: string): Promise<GQLAuthor | null> {\n const data = await gqlFetchGraceful<{ users: { nodes: GQLAuthor[] } }>(\n GQL_GET_AUTHOR_BY_SLUG,\n { users: { nodes: [] } },\n { slug },\n ['wpgraphql', 'gql-authors', `gql-author-${slug}`],\n );\n return data.users.nodes[0] ?? null;\n }\n\n return { getAuthors, getAuthorBySlug };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLMenu, GQLMenuItem } from './types';\n\nconst MENU_ITEM_FIELDS = `\n id\n databaseId\n label\n url\n parentId\n order\n target\n cssClasses\n description\n connectedNode {\n node {\n __typename\n ... on Page { id databaseId slug }\n ... on Post { id databaseId slug }\n ... on Category { id databaseId slug }\n ... on Tag { id databaseId slug }\n }\n }\n`;\n\nconst MENU_FIELDS = `\n id\n databaseId\n name\n slug\n locations\n menuItems(first: 100) {\n nodes { ${MENU_ITEM_FIELDS} }\n }\n`;\n\nconst GQL_GET_MENUS = `\n query GetMenus {\n menus(first: 100) {\n nodes { ${MENU_FIELDS} }\n }\n }\n`;\n\nconst GQL_GET_MENU_BY_ID = `\n query GetMenuById($id: ID!) {\n menu(id: $id, idType: DATABASE_ID) { ${MENU_FIELDS} }\n }\n`;\n\nconst GQL_GET_MENU_BY_SLUG = `\n query GetMenuBySlug($id: ID!) {\n menu(id: $id, idType: SLUG) { ${MENU_FIELDS} }\n }\n`;\n\nconst GQL_GET_MENUS_BY_LOCATION = `\n query GetMenusByLocation($location: MenuLocationEnum!) {\n menus(where: { location: $location }, first: 1) {\n nodes { ${MENU_FIELDS} }\n }\n }\n`;\n\nexport function createMenusQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetch, gqlFetchGraceful } = fetcher;\n\n async function getMenus(): Promise<GQLMenu[]> {\n const data = await gqlFetchGraceful<{ menus: { nodes: GQLMenu[] } }>(\n GQL_GET_MENUS,\n { menus: { nodes: [] } },\n undefined,\n ['wpgraphql', 'gql-menus'],\n );\n return data.menus.nodes;\n }\n\n async function getMenuById(id: number): Promise<GQLMenu | null> {\n const data = await gqlFetchGraceful<{ menu: GQLMenu | null }>(\n GQL_GET_MENU_BY_ID,\n { menu: null },\n { id: String(id) },\n ['wpgraphql', 'gql-menus', `gql-menu-${id}`],\n );\n return data.menu;\n }\n\n async function getMenuBySlug(slug: string): Promise<GQLMenu | null> {\n const data = await gqlFetchGraceful<{ menu: GQLMenu | null }>(\n GQL_GET_MENU_BY_SLUG,\n { menu: null },\n { id: slug },\n ['wpgraphql', 'gql-menus', `gql-menu-${slug}`],\n );\n return data.menu;\n }\n\n async function getMenuByLocation(location: string): Promise<GQLMenu | null> {\n const data = await gqlFetch<{ menus: { nodes: GQLMenu[] } }>(\n GQL_GET_MENUS_BY_LOCATION,\n { location: location.toUpperCase() },\n ['wpgraphql', 'gql-menus', `gql-menu-location-${location}`],\n );\n return data.menus.nodes[0] ?? null;\n }\n\n async function getMenuItems(menuSlug: string): Promise<GQLMenuItem[]> {\n const menu = await getMenuBySlug(menuSlug);\n return menu?.menuItems?.nodes ?? [];\n }\n\n return {\n getMenus,\n getMenuById,\n getMenuBySlug,\n getMenuByLocation,\n getMenuItems,\n };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLComment } from './types';\n\nconst COMMENT_AUTHOR_FIELDS = `\n name\n url\n avatar { url width height }\n`;\n\nconst COMMENT_FIELDS = `\n id\n databaseId\n content(format: RENDERED)\n date\n parentId\n status\n author { node { ${COMMENT_AUTHOR_FIELDS} } }\n`;\n\nconst GQL_GET_COMMENTS_BY_POST = `\n query GetCommentsByPost($contentId: ID!, $first: Int, $after: String) {\n comments(\n first: $first\n after: $after\n where: { contentId: $contentId, status: \"approve\", parent: 0 }\n ) {\n nodes {\n ${COMMENT_FIELDS}\n replies(first: 100) {\n nodes { ${COMMENT_FIELDS} }\n }\n }\n pageInfo { hasNextPage endCursor }\n }\n }\n`;\n\nconst GQL_GET_ALL_COMMENTS_BY_POST = `\n query GetAllCommentsByPost($contentId: ID!) {\n comments(\n first: 100\n where: { contentId: $contentId, status: \"approve\" }\n ) {\n nodes { ${COMMENT_FIELDS} }\n }\n }\n`;\n\nconst GQL_GET_COMMENT_BY_ID = `\n query GetCommentById($id: ID!) {\n comment(id: $id, idType: DATABASE_ID) { ${COMMENT_FIELDS} }\n }\n`;\n\nexport function createCommentsQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetchGraceful } = fetcher;\n\n async function getCommentsByPostId(\n postId: number,\n first: number = 10,\n after?: string,\n ): Promise<{ nodes: GQLComment[]; pageInfo: { hasNextPage: boolean; endCursor?: string } }> {\n const data = await gqlFetchGraceful<{\n comments: { nodes: GQLComment[]; pageInfo: { hasNextPage: boolean; endCursor?: string } };\n }>(\n GQL_GET_COMMENTS_BY_POST,\n { comments: { nodes: [], pageInfo: { hasNextPage: false } } },\n { contentId: String(postId), first, after },\n ['wpgraphql', 'gql-comments', `gql-comments-post-${postId}`],\n );\n return data.comments;\n }\n\n async function getAllCommentsByPostId(postId: number): Promise<GQLComment[]> {\n const data = await gqlFetchGraceful<{ comments: { nodes: GQLComment[] } }>(\n GQL_GET_ALL_COMMENTS_BY_POST,\n { comments: { nodes: [] } },\n { contentId: String(postId) },\n ['wpgraphql', 'gql-comments', `gql-comments-post-${postId}`],\n );\n return data.comments.nodes;\n }\n\n async function getCommentById(id: number): Promise<GQLComment | null> {\n const data = await gqlFetchGraceful<{ comment: GQLComment | null }>(\n GQL_GET_COMMENT_BY_ID,\n { comment: null },\n { id: String(id) },\n ['wpgraphql', 'gql-comments', `gql-comment-${id}`],\n );\n return data.comment;\n }\n\n return {\n getCommentsByPostId,\n getAllCommentsByPostId,\n getCommentById,\n };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLConnection } from '@wpgraphql/client';\nimport type { GQLMediaItem } from './types';\n\nconst DEFAULT_FIRST = 10;\n\nconst MEDIA_FIELDS = `\n id\n databaseId\n slug\n title\n date\n sourceUrl\n altText\n caption\n description\n mediaType\n mimeType\n uri\n mediaDetails {\n width\n height\n file\n sizes { name width height mimeType sourceUrl }\n }\n`;\n\nconst GQL_GET_MEDIA_ITEMS = `\n query GetMediaItems($first: Int, $after: String) {\n mediaItems(first: $first, after: $after) {\n nodes { ${MEDIA_FIELDS} }\n pageInfo { hasNextPage hasPreviousPage startCursor endCursor }\n }\n }\n`;\n\nconst GQL_GET_MEDIA_ITEM_BY_ID = `\n query GetMediaItemById($id: ID!) {\n mediaItem(id: $id, idType: DATABASE_ID) { ${MEDIA_FIELDS} }\n }\n`;\n\nconst GQL_GET_MEDIA_ITEM_BY_SLUG = `\n query GetMediaItemBySlug($id: ID!) {\n mediaItem(id: $id, idType: SLUG) { ${MEDIA_FIELDS} }\n }\n`;\n\nexport function createMediaQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetchGraceful } = fetcher;\n\n async function getMediaItems(\n first: number = DEFAULT_FIRST,\n after?: string,\n ): Promise<GQLConnection<GQLMediaItem>> {\n const data = await gqlFetchGraceful<{ mediaItems: GQLConnection<GQLMediaItem> }>(\n GQL_GET_MEDIA_ITEMS,\n { mediaItems: { nodes: [], pageInfo: { hasNextPage: false, hasPreviousPage: false } } },\n { first, after },\n ['wpgraphql', 'gql-media'],\n );\n return data.mediaItems;\n }\n\n async function getMediaItemById(id: number): Promise<GQLMediaItem | null> {\n const data = await gqlFetchGraceful<{ mediaItem: GQLMediaItem | null }>(\n GQL_GET_MEDIA_ITEM_BY_ID,\n { mediaItem: null },\n { id: String(id) },\n ['wpgraphql', 'gql-media', `gql-media-${id}`],\n );\n return data.mediaItem;\n }\n\n async function getMediaItemBySlug(slug: string): Promise<GQLMediaItem | null> {\n const data = await gqlFetchGraceful<{ mediaItem: GQLMediaItem | null }>(\n GQL_GET_MEDIA_ITEM_BY_SLUG,\n { mediaItem: null },\n { id: slug },\n ['wpgraphql', 'gql-media', `gql-media-${slug}`],\n );\n return data.mediaItem;\n }\n\n return { getMediaItems, getMediaItemById, getMediaItemBySlug };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type {\n GQLCreatePostInput,\n GQLUpdatePostInput,\n GQLMutatedPost,\n GQLDeletePostResult,\n} from './types';\n\nconst MUTATED_POST_FIELDS = `\n id\n databaseId\n slug\n title\n status\n`;\n\nconst GQL_CREATE_POST = `\n mutation CreatePost($input: CreatePostInput!) {\n createPost(input: $input) {\n post { ${MUTATED_POST_FIELDS} }\n }\n }\n`;\n\nconst GQL_UPDATE_POST = `\n mutation UpdatePost($input: UpdatePostInput!) {\n updatePost(input: $input) {\n post { ${MUTATED_POST_FIELDS} }\n }\n }\n`;\n\nconst GQL_DELETE_POST = `\n mutation DeletePost($input: DeletePostInput!) {\n deletePost(input: $input) {\n deletedId\n post { ${MUTATED_POST_FIELDS} }\n }\n }\n`;\n\nexport function createPostsMutations(fetcher: WPGraphQLFetcher) {\n const { gqlMutate } = fetcher;\n\n async function createPost(input: GQLCreatePostInput, authToken: string): Promise<GQLMutatedPost> {\n const data = await gqlMutate<{ createPost: { post: GQLMutatedPost } }>(\n GQL_CREATE_POST,\n { input },\n authToken,\n );\n return data.createPost.post;\n }\n\n async function updatePost(input: GQLUpdatePostInput, authToken: string): Promise<GQLMutatedPost> {\n const data = await gqlMutate<{ updatePost: { post: GQLMutatedPost } }>(\n GQL_UPDATE_POST,\n { input },\n authToken,\n );\n return data.updatePost.post;\n }\n\n async function deletePost(\n id: string,\n authToken: string,\n forceDelete = false,\n ): Promise<GQLDeletePostResult> {\n const data = await gqlMutate<{ deletePost: GQLDeletePostResult }>(\n GQL_DELETE_POST,\n { input: { id, forceDelete } },\n authToken,\n );\n return data.deletePost;\n }\n\n return { createPost, updatePost, deletePost };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type {\n GQLCreateCommentInput,\n GQLUpdateCommentInput,\n GQLMutatedComment,\n GQLCreateCommentResult,\n GQLDeleteCommentResult,\n} from './types';\n\nconst MUTATED_COMMENT_FIELDS = `\n id\n databaseId\n content(format: RENDERED)\n date\n status\n parentId\n author { node { name url } }\n`;\n\nconst GQL_CREATE_COMMENT = `\n mutation CreateComment($input: CreateCommentInput!) {\n createComment(input: $input) {\n success\n comment { ${MUTATED_COMMENT_FIELDS} }\n }\n }\n`;\n\nconst GQL_UPDATE_COMMENT = `\n mutation UpdateComment($input: UpdateCommentInput!) {\n updateComment(input: $input) {\n comment { ${MUTATED_COMMENT_FIELDS} }\n }\n }\n`;\n\nconst GQL_DELETE_COMMENT = `\n mutation DeleteComment($input: DeleteCommentInput!) {\n deleteComment(input: $input) {\n deletedId\n comment { ${MUTATED_COMMENT_FIELDS} }\n }\n }\n`;\n\nexport function createCommentsMutations(fetcher: WPGraphQLFetcher) {\n const { gqlMutate } = fetcher;\n\n async function createComment(\n input: GQLCreateCommentInput,\n authToken?: string,\n ): Promise<GQLCreateCommentResult> {\n const gqlInput: Record<string, unknown> = {\n commentOn: input.postId,\n content: input.content,\n };\n if (input.authorName) gqlInput['author'] = input.authorName;\n if (input.authorEmail) gqlInput['authorEmail'] = input.authorEmail;\n if (input.authorUrl) gqlInput['authorUrl'] = input.authorUrl;\n if (input.parentId) gqlInput['parent'] = input.parentId;\n\n const data = await gqlMutate<{ createComment: GQLCreateCommentResult }>(\n GQL_CREATE_COMMENT,\n { input: gqlInput },\n authToken,\n );\n return data.createComment;\n }\n\n async function updateComment(\n input: GQLUpdateCommentInput,\n authToken: string,\n ): Promise<GQLMutatedComment> {\n const data = await gqlMutate<{ updateComment: { comment: GQLMutatedComment } }>(\n GQL_UPDATE_COMMENT,\n { input },\n authToken,\n );\n return data.updateComment.comment;\n }\n\n async function deleteComment(\n id: string,\n authToken: string,\n forceDelete = false,\n ): Promise<GQLDeleteCommentResult> {\n const data = await gqlMutate<{ deleteComment: GQLDeleteCommentResult }>(\n GQL_DELETE_COMMENT,\n { input: { id, forceDelete } },\n authToken,\n );\n return data.deleteComment;\n }\n\n return { createComment, updateComment, deleteComment };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type {\n GQLCreatePageInput,\n GQLUpdatePageInput,\n GQLMutatedPage,\n GQLDeletePageResult,\n} from './types';\n\nconst MUTATED_PAGE_FIELDS = `\n id\n databaseId\n slug\n title\n status\n uri\n`;\n\nconst GQL_CREATE_PAGE = `\n mutation CreatePage($input: CreatePageInput!) {\n createPage(input: $input) {\n page { ${MUTATED_PAGE_FIELDS} }\n }\n }\n`;\n\nconst GQL_UPDATE_PAGE = `\n mutation UpdatePage($input: UpdatePageInput!) {\n updatePage(input: $input) {\n page { ${MUTATED_PAGE_FIELDS} }\n }\n }\n`;\n\nconst GQL_DELETE_PAGE = `\n mutation DeletePage($input: DeletePageInput!) {\n deletePage(input: $input) {\n deletedId\n page { ${MUTATED_PAGE_FIELDS} }\n }\n }\n`;\n\nexport function createPagesMutations(fetcher: WPGraphQLFetcher) {\n const { gqlMutate } = fetcher;\n\n async function createPage(\n input: GQLCreatePageInput,\n authToken: string,\n ): Promise<GQLMutatedPage> {\n const data = await gqlMutate<{ createPage: { page: GQLMutatedPage } }>(\n GQL_CREATE_PAGE,\n { input },\n authToken,\n );\n return data.createPage.page;\n }\n\n async function updatePage(\n input: GQLUpdatePageInput,\n authToken: string,\n ): Promise<GQLMutatedPage> {\n const data = await gqlMutate<{ updatePage: { page: GQLMutatedPage } }>(\n GQL_UPDATE_PAGE,\n { input },\n authToken,\n );\n return data.updatePage.page;\n }\n\n async function deletePage(\n id: string,\n authToken: string,\n forceDelete = false,\n ): Promise<GQLDeletePageResult> {\n const data = await gqlMutate<{ deletePage: GQLDeletePageResult }>(\n GQL_DELETE_PAGE,\n { input: { id, forceDelete } },\n authToken,\n );\n return data.deletePage;\n }\n\n return { createPage, updatePage, deletePage };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type {\n GQLCreateCategoryInput,\n GQLUpdateCategoryInput,\n GQLMutatedCategory,\n GQLDeleteCategoryResult,\n} from './types';\n\nconst MUTATED_CATEGORY_FIELDS = `\n id\n databaseId\n name\n slug\n`;\n\nconst GQL_CREATE_CATEGORY = `\n mutation CreateCategory($input: CreateCategoryInput!) {\n createCategory(input: $input) {\n category { ${MUTATED_CATEGORY_FIELDS} }\n }\n }\n`;\n\nconst GQL_UPDATE_CATEGORY = `\n mutation UpdateCategory($input: UpdateCategoryInput!) {\n updateCategory(input: $input) {\n category { ${MUTATED_CATEGORY_FIELDS} }\n }\n }\n`;\n\nconst GQL_DELETE_CATEGORY = `\n mutation DeleteCategory($input: DeleteCategoryInput!) {\n deleteCategory(input: $input) {\n deletedId\n category { ${MUTATED_CATEGORY_FIELDS} }\n }\n }\n`;\n\nexport function createCategoriesMutations(fetcher: WPGraphQLFetcher) {\n const { gqlMutate } = fetcher;\n\n async function createCategory(\n input: GQLCreateCategoryInput,\n authToken: string,\n ): Promise<GQLMutatedCategory> {\n const data = await gqlMutate<{ createCategory: { category: GQLMutatedCategory } }>(\n GQL_CREATE_CATEGORY,\n { input },\n authToken,\n );\n return data.createCategory.category;\n }\n\n async function updateCategory(\n input: GQLUpdateCategoryInput,\n authToken: string,\n ): Promise<GQLMutatedCategory> {\n const data = await gqlMutate<{ updateCategory: { category: GQLMutatedCategory } }>(\n GQL_UPDATE_CATEGORY,\n { input },\n authToken,\n );\n return data.updateCategory.category;\n }\n\n async function deleteCategory(\n id: string,\n authToken: string,\n ): Promise<GQLDeleteCategoryResult> {\n const data = await gqlMutate<{ deleteCategory: GQLDeleteCategoryResult }>(\n GQL_DELETE_CATEGORY,\n { input: { id } },\n authToken,\n );\n return data.deleteCategory;\n }\n\n return { createCategory, updateCategory, deleteCategory };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type {\n GQLCreateTagInput,\n GQLUpdateTagInput,\n GQLMutatedTag,\n GQLDeleteTagResult,\n} from './types';\n\nconst MUTATED_TAG_FIELDS = `\n id\n databaseId\n name\n slug\n`;\n\nconst GQL_CREATE_TAG = `\n mutation CreateTag($input: CreateTagInput!) {\n createTag(input: $input) {\n tag { ${MUTATED_TAG_FIELDS} }\n }\n }\n`;\n\nconst GQL_UPDATE_TAG = `\n mutation UpdateTag($input: UpdateTagInput!) {\n updateTag(input: $input) {\n tag { ${MUTATED_TAG_FIELDS} }\n }\n }\n`;\n\nconst GQL_DELETE_TAG = `\n mutation DeleteTag($input: DeleteTagInput!) {\n deleteTag(input: $input) {\n deletedId\n tag { ${MUTATED_TAG_FIELDS} }\n }\n }\n`;\n\nexport function createTagsMutations(fetcher: WPGraphQLFetcher) {\n const { gqlMutate } = fetcher;\n\n async function createTag(\n input: GQLCreateTagInput,\n authToken: string,\n ): Promise<GQLMutatedTag> {\n const data = await gqlMutate<{ createTag: { tag: GQLMutatedTag } }>(\n GQL_CREATE_TAG,\n { input },\n authToken,\n );\n return data.createTag.tag;\n }\n\n async function updateTag(\n input: GQLUpdateTagInput,\n authToken: string,\n ): Promise<GQLMutatedTag> {\n const data = await gqlMutate<{ updateTag: { tag: GQLMutatedTag } }>(\n GQL_UPDATE_TAG,\n { input },\n authToken,\n );\n return data.updateTag.tag;\n }\n\n async function deleteTag(id: string, authToken: string): Promise<GQLDeleteTagResult> {\n const data = await gqlMutate<{ deleteTag: GQLDeleteTagResult }>(\n GQL_DELETE_TAG,\n { input: { id } },\n authToken,\n );\n return data.deleteTag;\n }\n\n return { createTag, updateTag, deleteTag };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type {\n GQLRegisterUserInput,\n GQLUpdateUserInput,\n GQLMutatedUser,\n GQLDeleteUserResult,\n} from './types';\n\nconst MUTATED_USER_FIELDS = `\n id\n databaseId\n name\n slug\n email\n`;\n\nconst GQL_REGISTER_USER = `\n mutation RegisterUser($input: RegisterUserInput!) {\n registerUser(input: $input) {\n user { ${MUTATED_USER_FIELDS} }\n }\n }\n`;\n\nconst GQL_UPDATE_USER = `\n mutation UpdateUser($input: UpdateUserInput!) {\n updateUser(input: $input) {\n user { ${MUTATED_USER_FIELDS} }\n }\n }\n`;\n\nconst GQL_DELETE_USER = `\n mutation DeleteUser($input: DeleteUserInput!) {\n deleteUser(input: $input) {\n deletedId\n user { ${MUTATED_USER_FIELDS} }\n }\n }\n`;\n\nexport function createAuthorsMutations(fetcher: WPGraphQLFetcher) {\n const { gqlMutate } = fetcher;\n\n async function registerUser(\n input: GQLRegisterUserInput,\n authToken?: string,\n ): Promise<GQLMutatedUser> {\n const data = await gqlMutate<{ registerUser: { user: GQLMutatedUser } }>(\n GQL_REGISTER_USER,\n { input },\n authToken,\n );\n return data.registerUser.user;\n }\n\n async function updateUser(\n input: GQLUpdateUserInput,\n authToken: string,\n ): Promise<GQLMutatedUser> {\n const data = await gqlMutate<{ updateUser: { user: GQLMutatedUser } }>(\n GQL_UPDATE_USER,\n { input },\n authToken,\n );\n return data.updateUser.user;\n }\n\n async function deleteUser(\n id: string,\n authToken: string,\n reassignPosts?: string,\n ): Promise<GQLDeleteUserResult> {\n const input: Record<string, unknown> = { id };\n if (reassignPosts) input['reassignId'] = reassignPosts;\n\n const data = await gqlMutate<{ deleteUser: GQLDeleteUserResult }>(\n GQL_DELETE_USER,\n { input },\n authToken,\n );\n return data.deleteUser;\n }\n\n return { registerUser, updateUser, deleteUser };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type {\n GQLCreateMediaItemInput,\n GQLUpdateMediaItemInput,\n GQLMutatedMediaItem,\n GQLDeleteMediaItemResult,\n} from './types';\n\nconst MUTATED_MEDIA_FIELDS = `\n id\n databaseId\n slug\n title\n sourceUrl\n altText\n`;\n\nconst GQL_CREATE_MEDIA_ITEM = `\n mutation CreateMediaItem($input: CreateMediaItemInput!) {\n createMediaItem(input: $input) {\n mediaItem { ${MUTATED_MEDIA_FIELDS} }\n }\n }\n`;\n\nconst GQL_UPDATE_MEDIA_ITEM = `\n mutation UpdateMediaItem($input: UpdateMediaItemInput!) {\n updateMediaItem(input: $input) {\n mediaItem { ${MUTATED_MEDIA_FIELDS} }\n }\n }\n`;\n\nconst GQL_DELETE_MEDIA_ITEM = `\n mutation DeleteMediaItem($input: DeleteMediaItemInput!) {\n deleteMediaItem(input: $input) {\n deletedId\n mediaItem { ${MUTATED_MEDIA_FIELDS} }\n }\n }\n`;\n\nexport function createMediaMutations(fetcher: WPGraphQLFetcher) {\n const { gqlMutate } = fetcher;\n\n async function createMediaItem(\n input: GQLCreateMediaItemInput,\n authToken: string,\n ): Promise<GQLMutatedMediaItem> {\n const data = await gqlMutate<{ createMediaItem: { mediaItem: GQLMutatedMediaItem } }>(\n GQL_CREATE_MEDIA_ITEM,\n { input },\n authToken,\n );\n return data.createMediaItem.mediaItem;\n }\n\n async function updateMediaItem(\n input: GQLUpdateMediaItemInput,\n authToken: string,\n ): Promise<GQLMutatedMediaItem> {\n const data = await gqlMutate<{ updateMediaItem: { mediaItem: GQLMutatedMediaItem } }>(\n GQL_UPDATE_MEDIA_ITEM,\n { input },\n authToken,\n );\n return data.updateMediaItem.mediaItem;\n }\n\n async function deleteMediaItem(\n id: string,\n authToken: string,\n forceDelete = true,\n ): Promise<GQLDeleteMediaItemResult> {\n const data = await gqlMutate<{ deleteMediaItem: GQLDeleteMediaItemResult }>(\n GQL_DELETE_MEDIA_ITEM,\n { input: { id, forceDelete } },\n authToken,\n );\n return data.deleteMediaItem;\n }\n\n return { createMediaItem, updateMediaItem, deleteMediaItem };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type {\n GQLSendPasswordResetEmailInput,\n GQLSendPasswordResetEmailResult,\n GQLResetUserPasswordInput,\n GQLResetUserPasswordResult,\n} from './types';\n\nconst GQL_SEND_PASSWORD_RESET_EMAIL = `\n mutation SendPasswordResetEmail($input: SendPasswordResetEmailInput!) {\n sendPasswordResetEmail(input: $input) {\n success\n user {\n email\n }\n }\n }\n`;\n\nconst GQL_RESET_USER_PASSWORD = `\n mutation ResetUserPassword($input: ResetUserPasswordInput!) {\n resetUserPassword(input: $input) {\n user {\n id\n databaseId\n email\n }\n }\n }\n`;\n\nexport function createPasswordResetMutations(fetcher: WPGraphQLFetcher) {\n const { gqlMutate } = fetcher;\n\n async function sendPasswordResetEmail(\n input: GQLSendPasswordResetEmailInput,\n ): Promise<GQLSendPasswordResetEmailResult> {\n const data = await gqlMutate<{\n sendPasswordResetEmail: GQLSendPasswordResetEmailResult;\n }>(GQL_SEND_PASSWORD_RESET_EMAIL, { input });\n return data.sendPasswordResetEmail;\n }\n\n async function resetUserPassword(\n input: GQLResetUserPasswordInput,\n ): Promise<GQLResetUserPasswordResult> {\n const data = await gqlMutate<{\n resetUserPassword: GQLResetUserPasswordResult;\n }>(GQL_RESET_USER_PASSWORD, { input });\n return data.resetUserPassword;\n }\n\n return { sendPasswordResetEmail, resetUserPassword };\n}\n","export type {\n GQLPostStatus,\n GQLCreatePostInput,\n GQLUpdatePostInput,\n GQLMutatedPost,\n GQLDeletePostResult,\n} from './posts';\nexport { createPostsMutations } from './posts';\n\nexport type {\n GQLCreateCommentInput,\n GQLUpdateCommentInput,\n GQLMutatedComment,\n GQLCreateCommentResult,\n GQLDeleteCommentResult,\n} from './comments';\nexport { createCommentsMutations } from './comments';\n\nexport type {\n GQLPageStatus,\n GQLCreatePageInput,\n GQLUpdatePageInput,\n GQLMutatedPage,\n GQLDeletePageResult,\n} from './pages';\nexport { createPagesMutations } from './pages';\n\nexport type {\n GQLCreateCategoryInput,\n GQLUpdateCategoryInput,\n GQLMutatedCategory,\n GQLDeleteCategoryResult,\n} from './categories';\nexport { createCategoriesMutations } from './categories';\n\nexport type {\n GQLCreateTagInput,\n GQLUpdateTagInput,\n GQLMutatedTag,\n GQLDeleteTagResult,\n} from './tags';\nexport { createTagsMutations } from './tags';\n\nexport type {\n GQLRegisterUserInput,\n GQLUpdateUserInput,\n GQLMutatedUser,\n GQLDeleteUserResult,\n} from './authors';\nexport { createAuthorsMutations } from './authors';\n\nexport type {\n GQLCreateMediaItemInput,\n GQLUpdateMediaItemInput,\n GQLMutatedMediaItem,\n GQLDeleteMediaItemResult,\n} from './media';\nexport { createMediaMutations } from './media';\n\nexport type {\n GQLSendPasswordResetEmailInput,\n GQLSendPasswordResetEmailResult,\n GQLResetUserPasswordInput,\n GQLResetUserPasswordResult,\n} from './passwordReset';\nexport { createPasswordResetMutations } from './passwordReset';\n\nimport { createWPGraphQLFetcher } from '@wpgraphql/client';\nimport type { WPGraphQLConfig } from '@wpgraphql/client';\nimport { createPostsMutations } from './posts';\nimport { createCommentsMutations } from './comments';\nimport { createPagesMutations } from './pages';\nimport { createCategoriesMutations } from './categories';\nimport { createTagsMutations } from './tags';\nimport { createAuthorsMutations } from './authors';\nimport { createMediaMutations } from './media';\nimport { createPasswordResetMutations } from './passwordReset';\n\nexport function createWPGraphQLMutationsClient(config: WPGraphQLConfig) {\n const fetcher = createWPGraphQLFetcher(config);\n return {\n ...createPostsMutations(fetcher),\n ...createCommentsMutations(fetcher),\n ...createPagesMutations(fetcher),\n ...createCategoriesMutations(fetcher),\n ...createTagsMutations(fetcher),\n ...createAuthorsMutations(fetcher),\n ...createMediaMutations(fetcher),\n ...createPasswordResetMutations(fetcher),\n };\n}\n","export type { GQLPost, GQLPostFilter } from './posts';\nexport { createPostsQueries } from './posts';\n\nexport type { GQLPage } from './pages';\nexport { createPagesQueries } from './pages';\n\nexport type { GQLCategory } from './categories';\nexport { createCategoriesQueries } from './categories';\n\nexport type { GQLTag } from './tags';\nexport { createTagsQueries } from './tags';\n\nexport type { GQLAuthor } from './authors';\nexport { createAuthorsQueries } from './authors';\n\nexport type { GQLMenu, GQLMenuItem } from './menus';\nexport { createMenusQueries } from './menus';\n\nexport type { GQLComment, GQLCommentAuthor } from './comments';\nexport { createCommentsQueries } from './comments';\n\nexport type { GQLMediaItem } from './media';\nexport { createMediaQueries } from './media';\n\nexport type {\n GQLPostStatus,\n GQLCreatePostInput,\n GQLUpdatePostInput,\n GQLMutatedPost,\n GQLDeletePostResult,\n GQLCreateCommentInput,\n GQLUpdateCommentInput,\n GQLMutatedComment,\n GQLCreateCommentResult,\n GQLDeleteCommentResult,\n GQLPageStatus,\n GQLCreatePageInput,\n GQLUpdatePageInput,\n GQLMutatedPage,\n GQLDeletePageResult,\n GQLCreateCategoryInput,\n GQLUpdateCategoryInput,\n GQLMutatedCategory,\n GQLDeleteCategoryResult,\n GQLCreateTagInput,\n GQLUpdateTagInput,\n GQLMutatedTag,\n GQLDeleteTagResult,\n GQLRegisterUserInput,\n GQLUpdateUserInput,\n GQLMutatedUser,\n GQLDeleteUserResult,\n GQLCreateMediaItemInput,\n GQLUpdateMediaItemInput,\n GQLMutatedMediaItem,\n GQLDeleteMediaItemResult,\n} from './mutations';\nexport {\n createPostsMutations,\n createCommentsMutations,\n createPagesMutations,\n createCategoriesMutations,\n createTagsMutations,\n createAuthorsMutations,\n createMediaMutations,\n} from './mutations';\n\nimport { createWPGraphQLFetcher } from '@wpgraphql/client';\nimport type { WPGraphQLConfig } from '@wpgraphql/client';\nimport { createPostsQueries } from './posts';\nimport { createPagesQueries } from './pages';\nimport { createCategoriesQueries } from './categories';\nimport { createTagsQueries } from './tags';\nimport { createAuthorsQueries } from './authors';\nimport { createMenusQueries } from './menus';\nimport { createCommentsQueries } from './comments';\nimport { createMediaQueries } from './media';\n\nexport function createWPGraphQLCoreClient(config: WPGraphQLConfig) {\n const fetcher = createWPGraphQLFetcher(config);\n\n return {\n ...createPostsQueries(fetcher),\n ...createPagesQueries(fetcher),\n ...createCategoriesQueries(fetcher),\n ...createTagsQueries(fetcher),\n ...createAuthorsQueries(fetcher),\n ...createMenusQueries(fetcher),\n ...createCommentsQueries(fetcher),\n ...createMediaQueries(fetcher),\n };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLPostWithSEO, GQLPageWithSEO } from './types';\n\nconst SEO_FIELDS = `\n seo {\n title\n metaDesc\n canonical\n opengraphTitle\n opengraphDescription\n opengraphImage { sourceUrl altText }\n twitterTitle\n twitterDescription\n twitterImage { sourceUrl }\n schema { raw }\n }\n`;\n\nconst POST_FIELDS_WITH_SEO = `\n id\n databaseId\n slug\n title\n content\n excerpt\n date\n modified\n status\n uri\n author {\n node {\n databaseId\n name\n slug\n avatar { url }\n }\n }\n featuredImage {\n node {\n sourceUrl\n altText\n mediaDetails { width height }\n }\n }\n categories {\n nodes { databaseId name slug }\n }\n tags {\n nodes { databaseId name slug }\n }\n ${SEO_FIELDS}\n`;\n\nconst PAGE_FIELDS_WITH_SEO = `\n id\n databaseId\n slug\n title\n content\n date\n modified\n status\n uri\n featuredImage {\n node {\n sourceUrl\n altText\n mediaDetails { width height }\n }\n }\n ${SEO_FIELDS}\n`;\n\nconst GQL_GET_POST_WITH_SEO = `\n query GetPostWithSEO($slug: ID!) {\n post(id: $slug, idType: SLUG) { ${POST_FIELDS_WITH_SEO} }\n }\n`;\n\nconst GQL_GET_PAGE_WITH_SEO = `\n query GetPageWithSEO($slug: ID!) {\n page(id: $slug, idType: SLUG) { ${PAGE_FIELDS_WITH_SEO} }\n }\n`;\n\nconst GQL_GET_PAGE_WITH_SEO_BY_URI = `\n query GetPageWithSEOByUri($uri: ID!) {\n page(id: $uri, idType: URI) { ${PAGE_FIELDS_WITH_SEO} }\n }\n`;\n\nexport function createYoastQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetchGraceful } = fetcher;\n\n async function getPostWithSEO(slug: string): Promise<GQLPostWithSEO | null> {\n const data = await gqlFetchGraceful<{ post: GQLPostWithSEO | null }>(\n GQL_GET_POST_WITH_SEO,\n { post: null },\n { slug },\n ['wpgraphql', 'gql-posts', 'gql-yoast', `gql-post-${slug}`],\n );\n return data.post;\n }\n\n async function getPageWithSEO(slug: string): Promise<GQLPageWithSEO | null> {\n const data = await gqlFetchGraceful<{ page: GQLPageWithSEO | null }>(\n GQL_GET_PAGE_WITH_SEO,\n { page: null },\n { slug },\n ['wpgraphql', 'gql-pages', 'gql-yoast', `gql-page-${slug}`],\n );\n return data.page;\n }\n\n async function getPageWithSEOByUri(uri: string): Promise<GQLPageWithSEO | null> {\n const data = await gqlFetchGraceful<{ page: GQLPageWithSEO | null }>(\n GQL_GET_PAGE_WITH_SEO_BY_URI,\n { page: null },\n { uri },\n ['wpgraphql', 'gql-pages', 'gql-yoast', `gql-page-uri-${uri.replace(/\\//g, '-')}`],\n );\n return data.page;\n }\n\n return { getPostWithSEO, getPageWithSEO, getPageWithSEOByUri };\n}\n","const BASE_POST_FIELDS = `\n id databaseId slug title content excerpt date modified status uri\n author { node { databaseId name slug avatar { url } } }\n featuredImage { node { sourceUrl altText mediaDetails { width height } } }\n categories { nodes { databaseId name slug } }\n tags { nodes { databaseId name slug } }\n`;\n\nconst BASE_PAGE_FIELDS = `\n id databaseId slug title content date modified status uri\n featuredImage { node { sourceUrl altText mediaDetails { width height } } }\n`;\n\nexport function buildACFFragment(fieldGroupName: string, fields: string[]): string {\n return `${fieldGroupName} { ${fields.join(' ')} }`;\n}\n\nexport function buildPostWithACFQuery(fieldGroupName: string, fields: string[]): string {\n return `\n query GetPostWithACF($slug: ID!) {\n post(id: $slug, idType: SLUG) {\n ${BASE_POST_FIELDS}\n ${buildACFFragment(fieldGroupName, fields)}\n }\n }\n `;\n}\n\nexport function buildPageWithACFQuery(fieldGroupName: string, fields: string[]): string {\n return `\n query GetPageWithACF($slug: ID!) {\n page(id: $slug, idType: SLUG) {\n ${BASE_PAGE_FIELDS}\n ${buildACFFragment(fieldGroupName, fields)}\n }\n }\n `;\n}\n\nexport function buildPostsWithACFQuery(fieldGroupName: string, fields: string[]): string {\n return `\n query GetPostsWithACF($first: Int, $after: String) {\n posts(first: $first, after: $after) {\n nodes {\n ${BASE_POST_FIELDS}\n ${buildACFFragment(fieldGroupName, fields)}\n }\n pageInfo { hasNextPage hasPreviousPage startCursor endCursor }\n }\n }\n `;\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLConnection } from '@wpgraphql/client';\nimport type { GQLProduct, GQLProductFilter } from './types';\n\nconst DEFAULT_FIRST = 10;\nconst BATCH_FIRST = 100;\n\nconst PRODUCT_FIELDS = `\n id\n databaseId\n slug\n name\n status\n description\n shortDescription\n type\n onSale\n featuredImage { node { sourceUrl altText } }\n galleryImages { nodes { sourceUrl altText } }\n productCategories { nodes { databaseId name slug } }\n productTags { nodes { databaseId name slug } }\n ... on SimpleProduct {\n sku\n price\n regularPrice\n salePrice\n stockStatus\n stockQuantity\n manageStock\n }\n ... on VariableProduct {\n price\n regularPrice\n salePrice\n stockStatus\n stockQuantity\n manageStock\n variations {\n nodes {\n id\n databaseId\n slug\n sku\n price\n regularPrice\n salePrice\n onSale\n stockStatus\n stockQuantity\n image { sourceUrl altText }\n attributes { nodes { name value } }\n }\n }\n }\n`;\n\nconst GQL_GET_PRODUCTS = `\n query GetProducts($first: Int, $after: String, $where: RootQueryToProductConnectionWhereArgs) {\n products(first: $first, after: $after, where: $where) {\n nodes { ${PRODUCT_FIELDS} }\n pageInfo { hasNextPage hasPreviousPage startCursor endCursor }\n }\n }\n`;\n\nconst GQL_GET_PRODUCT_BY_SLUG = `\n query GetProductBySlug($slug: ID!) {\n product(id: $slug, idType: SLUG) { ${PRODUCT_FIELDS} }\n }\n`;\n\nconst GQL_GET_PRODUCT_BY_DATABASE_ID = `\n query GetProductByDatabaseId($id: ID!) {\n product(id: $id, idType: DATABASE_ID) { ${PRODUCT_FIELDS} }\n }\n`;\n\nconst GQL_GET_ALL_PRODUCT_SLUGS = `\n query GetAllProductSlugs($first: Int, $after: String) {\n products(first: $first, after: $after) {\n nodes { slug }\n pageInfo { hasNextPage endCursor }\n }\n }\n`;\n\nexport function createProductsQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetch, gqlFetchGraceful } = fetcher;\n\n async function getProducts(\n first: number = DEFAULT_FIRST,\n after?: string,\n filter?: GQLProductFilter,\n ): Promise<GQLConnection<GQLProduct>> {\n const where: Record<string, unknown> = {};\n if (filter?.search) where['search'] = filter.search;\n if (filter?.onSale !== undefined) where['onSale'] = filter.onSale;\n if (filter?.featured !== undefined) where['featured'] = filter.featured;\n if (filter?.stockStatus) where['stockStatus'] = filter.stockStatus;\n if (filter?.minPrice) where['minPrice'] = filter.minPrice;\n if (filter?.maxPrice) where['maxPrice'] = filter.maxPrice;\n if (filter?.categoryId) where['categoryIdIn'] = [filter.categoryId];\n if (filter?.tagId) where['tagIdIn'] = [filter.tagId];\n\n const data = await gqlFetchGraceful<{ products: GQLConnection<GQLProduct> }>(\n GQL_GET_PRODUCTS,\n { products: { nodes: [], pageInfo: { hasNextPage: false, hasPreviousPage: false } } },\n { first, after, where: Object.keys(where).length > 0 ? where : undefined },\n ['wpgraphql', 'gql-products'],\n );\n return data.products;\n }\n\n async function getProductBySlug(slug: string): Promise<GQLProduct | null> {\n const data = await gqlFetchGraceful<{ product: GQLProduct | null }>(\n GQL_GET_PRODUCT_BY_SLUG,\n { product: null },\n { slug },\n ['wpgraphql', 'gql-products', `gql-product-${slug}`],\n );\n return data.product;\n }\n\n async function getProductByDatabaseId(id: number): Promise<GQLProduct | null> {\n const data = await gqlFetchGraceful<{ product: GQLProduct | null }>(\n GQL_GET_PRODUCT_BY_DATABASE_ID,\n { product: null },\n { id: String(id) },\n ['wpgraphql', 'gql-products', `gql-product-id-${id}`],\n );\n return data.product;\n }\n\n async function getFeaturedProducts(first: number = DEFAULT_FIRST): Promise<GQLProduct[]> {\n const connection = await getProducts(first, undefined, { featured: true });\n return connection.nodes;\n }\n\n async function getOnSaleProducts(first: number = DEFAULT_FIRST): Promise<GQLProduct[]> {\n const connection = await getProducts(first, undefined, { onSale: true });\n return connection.nodes;\n }\n\n async function getAllProductSlugs(): Promise<{ slug: string }[]> {\n try {\n const all: { slug: string }[] = [];\n let after: string | undefined = undefined;\n let hasNextPage = true;\n\n while (hasNextPage) {\n const data: { products: GQLConnection<{ slug: string }> } = await gqlFetch<{\n products: GQLConnection<{ slug: string }>;\n }>(GQL_GET_ALL_PRODUCT_SLUGS, { first: BATCH_FIRST, after }, ['wpgraphql']);\n all.push(...data.products.nodes);\n hasNextPage = data.products.pageInfo.hasNextPage;\n after = data.products.pageInfo.endCursor;\n }\n\n return all;\n } catch {\n console.warn('WPGraphQL unavailable, skipping static generation for products');\n return [];\n }\n }\n\n return {\n getProducts,\n getProductBySlug,\n getProductByDatabaseId,\n getFeaturedProducts,\n getOnSaleProducts,\n getAllProductSlugs,\n };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLConnection } from '@wpgraphql/client';\nimport type { GQLOrder } from './types';\n\nconst DEFAULT_FIRST = 10;\n\nconst ADDRESS_FIELDS = `\n firstName lastName address1 address2 city postcode country email phone\n`;\n\nconst ORDER_FIELDS = `\n id\n databaseId\n orderNumber\n status\n date\n modified\n total\n subtotal\n totalTax\n shippingTotal\n currency\n billing { ${ADDRESS_FIELDS} }\n shipping { ${ADDRESS_FIELDS} }\n lineItems {\n nodes {\n productId\n variationId\n quantity\n subtotal\n total\n product { node { databaseId name slug } }\n }\n }\n`;\n\n// Orders require authentication — queries use customer session/token\nconst GQL_GET_ORDER = `\n query GetOrder($id: ID!) {\n order(id: $id, idType: DATABASE_ID) { ${ORDER_FIELDS} }\n }\n`;\n\nconst GQL_GET_MY_ORDERS = `\n query GetMyOrders($first: Int, $after: String) {\n orders(first: $first, after: $after) {\n nodes { ${ORDER_FIELDS} }\n pageInfo { hasNextPage hasPreviousPage startCursor endCursor }\n }\n }\n`;\n\nexport function createOrdersQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetchGraceful } = fetcher;\n\n async function getOrder(id: number): Promise<GQLOrder | null> {\n const data = await gqlFetchGraceful<{ order: GQLOrder | null }>(\n GQL_GET_ORDER,\n { order: null },\n { id: String(id) },\n ['wpgraphql', 'gql-orders', `gql-order-${id}`],\n );\n return data.order;\n }\n\n async function getMyOrders(\n first: number = DEFAULT_FIRST,\n after?: string,\n ): Promise<GQLConnection<GQLOrder>> {\n const data = await gqlFetchGraceful<{ orders: GQLConnection<GQLOrder> }>(\n GQL_GET_MY_ORDERS,\n { orders: { nodes: [], pageInfo: { hasNextPage: false, hasPreviousPage: false } } },\n { first, after },\n ['wpgraphql', 'gql-orders'],\n );\n return data.orders;\n }\n\n return { getOrder, getMyOrders };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLCustomer } from './types';\n\nconst ADDRESS_FIELDS = `\n firstName lastName address1 address2 city postcode country\n`;\n\nconst CUSTOMER_FIELDS = `\n id\n databaseId\n email\n firstName\n lastName\n username\n billing { ${ADDRESS_FIELDS} phone }\n shipping { ${ADDRESS_FIELDS} }\n`;\n\n// Requires authentication — returns the currently logged-in customer\nconst GQL_GET_CUSTOMER = `\n query GetCustomer {\n customer { ${CUSTOMER_FIELDS} }\n }\n`;\n\nconst GQL_GET_CUSTOMER_BY_ID = `\n query GetCustomerById($id: ID!) {\n customer(customerId: $id) { ${CUSTOMER_FIELDS} }\n }\n`;\n\nexport function createCustomersQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetchGraceful } = fetcher;\n\n async function getCustomer(): Promise<GQLCustomer | null> {\n const data = await gqlFetchGraceful<{ customer: GQLCustomer | null }>(\n GQL_GET_CUSTOMER,\n { customer: null },\n undefined,\n ['wpgraphql', 'gql-customer'],\n );\n return data.customer;\n }\n\n async function getCustomerById(id: number): Promise<GQLCustomer | null> {\n const data = await gqlFetchGraceful<{ customer: GQLCustomer | null }>(\n GQL_GET_CUSTOMER_BY_ID,\n { customer: null },\n { id: String(id) },\n ['wpgraphql', 'gql-customer', `gql-customer-${id}`],\n );\n return data.customer;\n }\n\n return { getCustomer, getCustomerById };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLConnection } from '@wpgraphql/client';\nimport type { GQLProductCategory } from './types';\n\nconst DEFAULT_FIRST = 100;\n\nconst CATEGORY_FIELDS = `\n id\n databaseId\n name\n slug\n description\n count\n parent { node { id databaseId name slug } }\n image { sourceUrl altText }\n`;\n\nconst GQL_GET_PRODUCT_CATEGORIES = `\n query GetProductCategories($first: Int, $after: String) {\n productCategories(first: $first, after: $after) {\n nodes { ${CATEGORY_FIELDS} }\n pageInfo { hasNextPage hasPreviousPage startCursor endCursor }\n }\n }\n`;\n\nconst GQL_GET_PRODUCT_CATEGORY_BY_SLUG = `\n query GetProductCategoryBySlug($id: ID!) {\n productCategory(id: $id, idType: SLUG) { ${CATEGORY_FIELDS} }\n }\n`;\n\nconst GQL_GET_PRODUCT_CATEGORY_BY_ID = `\n query GetProductCategoryById($id: ID!) {\n productCategory(id: $id, idType: DATABASE_ID) { ${CATEGORY_FIELDS} }\n }\n`;\n\nexport function createCategoriesQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetchGraceful } = fetcher;\n\n async function getProductCategories(\n first: number = DEFAULT_FIRST,\n after?: string,\n ): Promise<GQLConnection<GQLProductCategory>> {\n const data = await gqlFetchGraceful<{\n productCategories: GQLConnection<GQLProductCategory>;\n }>(\n GQL_GET_PRODUCT_CATEGORIES,\n { productCategories: { nodes: [], pageInfo: { hasNextPage: false, hasPreviousPage: false } } },\n { first, after },\n ['wpgraphql', 'gql-product-categories'],\n );\n return data.productCategories;\n }\n\n async function getProductCategoryBySlug(slug: string): Promise<GQLProductCategory | null> {\n const data = await gqlFetchGraceful<{ productCategory: GQLProductCategory | null }>(\n GQL_GET_PRODUCT_CATEGORY_BY_SLUG,\n { productCategory: null },\n { id: slug },\n ['wpgraphql', 'gql-product-categories', `gql-product-category-${slug}`],\n );\n return data.productCategory;\n }\n\n async function getProductCategoryById(id: number): Promise<GQLProductCategory | null> {\n const data = await gqlFetchGraceful<{ productCategory: GQLProductCategory | null }>(\n GQL_GET_PRODUCT_CATEGORY_BY_ID,\n { productCategory: null },\n { id: String(id) },\n ['wpgraphql', 'gql-product-categories', `gql-product-category-${id}`],\n );\n return data.productCategory;\n }\n\n return { getProductCategories, getProductCategoryBySlug, getProductCategoryById };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLConnection } from '@wpgraphql/client';\nimport type { GQLProductTag } from './types';\n\nconst DEFAULT_FIRST = 100;\n\nconst TAG_FIELDS = `\n id\n databaseId\n name\n slug\n description\n count\n`;\n\nconst GQL_GET_PRODUCT_TAGS = `\n query GetProductTags($first: Int, $after: String) {\n productTags(first: $first, after: $after) {\n nodes { ${TAG_FIELDS} }\n pageInfo { hasNextPage hasPreviousPage startCursor endCursor }\n }\n }\n`;\n\nconst GQL_GET_PRODUCT_TAG_BY_SLUG = `\n query GetProductTagBySlug($id: ID!) {\n productTag(id: $id, idType: SLUG) { ${TAG_FIELDS} }\n }\n`;\n\nconst GQL_GET_PRODUCT_TAG_BY_ID = `\n query GetProductTagById($id: ID!) {\n productTag(id: $id, idType: DATABASE_ID) { ${TAG_FIELDS} }\n }\n`;\n\nexport function createTagsQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetchGraceful } = fetcher;\n\n async function getProductTags(\n first: number = DEFAULT_FIRST,\n after?: string,\n ): Promise<GQLConnection<GQLProductTag>> {\n const data = await gqlFetchGraceful<{ productTags: GQLConnection<GQLProductTag> }>(\n GQL_GET_PRODUCT_TAGS,\n { productTags: { nodes: [], pageInfo: { hasNextPage: false, hasPreviousPage: false } } },\n { first, after },\n ['wpgraphql', 'gql-product-tags'],\n );\n return data.productTags;\n }\n\n async function getProductTagBySlug(slug: string): Promise<GQLProductTag | null> {\n const data = await gqlFetchGraceful<{ productTag: GQLProductTag | null }>(\n GQL_GET_PRODUCT_TAG_BY_SLUG,\n { productTag: null },\n { id: slug },\n ['wpgraphql', 'gql-product-tags', `gql-product-tag-${slug}`],\n );\n return data.productTag;\n }\n\n async function getProductTagById(id: number): Promise<GQLProductTag | null> {\n const data = await gqlFetchGraceful<{ productTag: GQLProductTag | null }>(\n GQL_GET_PRODUCT_TAG_BY_ID,\n { productTag: null },\n { id: String(id) },\n ['wpgraphql', 'gql-product-tags', `gql-product-tag-${id}`],\n );\n return data.productTag;\n }\n\n return { getProductTags, getProductTagBySlug, getProductTagById };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLConnection } from '@wpgraphql/client';\nimport type { GQLCoupon } from './types';\n\nconst DEFAULT_FIRST = 100;\n\nconst COUPON_FIELDS = `\n id\n databaseId\n code\n discountType\n amount\n dateExpiry\n usageCount\n usageLimit\n usageLimitPerUser\n individualUse\n freeShipping\n minimumAmount\n maximumAmount\n description\n`;\n\nconst GQL_GET_COUPONS = `\n query GetCoupons($first: Int, $after: String) {\n coupons(first: $first, after: $after) {\n nodes { ${COUPON_FIELDS} }\n pageInfo { hasNextPage hasPreviousPage startCursor endCursor }\n }\n }\n`;\n\nconst GQL_GET_COUPON_BY_CODE = `\n query GetCouponByCode($id: ID!) {\n coupon(id: $id, idType: CODE) { ${COUPON_FIELDS} }\n }\n`;\n\nconst GQL_GET_COUPON_BY_ID = `\n query GetCouponById($id: ID!) {\n coupon(id: $id, idType: DATABASE_ID) { ${COUPON_FIELDS} }\n }\n`;\n\nexport function createCouponsQueries(fetcher: WPGraphQLFetcher) {\n const { gqlFetchGraceful } = fetcher;\n\n async function getCoupons(\n first: number = DEFAULT_FIRST,\n after?: string,\n ): Promise<GQLConnection<GQLCoupon>> {\n const data = await gqlFetchGraceful<{ coupons: GQLConnection<GQLCoupon> }>(\n GQL_GET_COUPONS,\n { coupons: { nodes: [], pageInfo: { hasNextPage: false, hasPreviousPage: false } } },\n { first, after },\n ['wpgraphql', 'gql-coupons'],\n );\n return data.coupons;\n }\n\n async function getCouponByCode(code: string): Promise<GQLCoupon | null> {\n const data = await gqlFetchGraceful<{ coupon: GQLCoupon | null }>(\n GQL_GET_COUPON_BY_CODE,\n { coupon: null },\n { id: code },\n ['wpgraphql', 'gql-coupons', `gql-coupon-${code}`],\n );\n return data.coupon;\n }\n\n async function getCouponById(id: number): Promise<GQLCoupon | null> {\n const data = await gqlFetchGraceful<{ coupon: GQLCoupon | null }>(\n GQL_GET_COUPON_BY_ID,\n { coupon: null },\n { id: String(id) },\n ['wpgraphql', 'gql-coupons', `gql-coupon-${id}`],\n );\n return data.coupon;\n }\n\n return { getCoupons, getCouponByCode, getCouponById };\n}\n","export type { GQLProduct, GQLProductVariation, GQLProductFilter } from './products';\nexport { createProductsQueries } from './products';\n\nexport type { GQLOrder, GQLLineItem, GQLOrderAddress } from './orders';\nexport { createOrdersQueries } from './orders';\n\nexport type { GQLCustomer } from './customers';\nexport { createCustomersQueries } from './customers';\n\nexport type { GQLProductCategory } from './categories';\nexport { createCategoriesQueries } from './categories';\n\nexport type { GQLProductTag } from './tags';\nexport { createTagsQueries } from './tags';\n\nexport type { GQLCoupon } from './coupons';\nexport { createCouponsQueries } from './coupons';\n\nimport { createWPGraphQLFetcher } from '@wpgraphql/client';\nimport type { WPGraphQLConfig } from '@wpgraphql/client';\nimport { createProductsQueries } from './products';\nimport { createOrdersQueries } from './orders';\nimport { createCustomersQueries } from './customers';\nimport { createCategoriesQueries } from './categories';\nimport { createTagsQueries } from './tags';\nimport { createCouponsQueries } from './coupons';\n\nexport function createWPGraphQLWooCommerceClient(config: WPGraphQLConfig) {\n const fetcher = createWPGraphQLFetcher(config);\n\n return {\n ...createProductsQueries(fetcher),\n ...createOrdersQueries(fetcher),\n ...createCustomersQueries(fetcher),\n ...createCategoriesQueries(fetcher),\n ...createTagsQueries(fetcher),\n ...createCouponsQueries(fetcher),\n };\n}\n","import type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport type { GQLConnection } from '@wpgraphql/client';\nimport type { GQLCPTNode } from './types';\n\nconst DEFAULT_FIRST = 10;\nconst BATCH_FIRST = 100;\n\nconst BASE_CPT_FIELDS = `\n id databaseId slug title date modified status uri\n`;\n\n// typeName: plural GraphQL field name (e.g. 'events', 'portfolioItems')\n// singularTypeName: singular for single-item query (e.g. 'event', 'portfolioItem')\nexport function createCPTQueries(\n fetcher: WPGraphQLFetcher,\n typeName: string,\n singularTypeName: string,\n extraFields?: string,\n) {\n const { gqlFetch, gqlFetchGraceful } = fetcher;\n const fields = extraFields ? `${BASE_CPT_FIELDS} ${extraFields}` : BASE_CPT_FIELDS;\n\n const GQL_GET_ITEMS = `\n query GetCPT_${typeName}($first: Int, $after: String) {\n ${typeName}(first: $first, after: $after) {\n nodes { ${fields} }\n pageInfo { hasNextPage hasPreviousPage startCursor endCursor }\n }\n }\n `;\n\n const GQL_GET_ITEM_BY_SLUG = `\n query GetCPT_${singularTypeName}BySlug($slug: ID!) {\n ${singularTypeName}(id: $slug, idType: SLUG) { ${fields} }\n }\n `;\n\n const GQL_GET_ALL_SLUGS = `\n query GetAllCPT_${typeName}Slugs($first: Int, $after: String) {\n ${typeName}(first: $first, after: $after) {\n nodes { slug }\n pageInfo { hasNextPage endCursor }\n }\n }\n `;\n\n async function getItems(\n first: number = DEFAULT_FIRST,\n after?: string,\n ): Promise<GQLConnection<GQLCPTNode>> {\n const data = await gqlFetchGraceful<{ [key: string]: GQLConnection<GQLCPTNode> }>(\n GQL_GET_ITEMS,\n { [typeName]: { nodes: [], pageInfo: { hasNextPage: false, hasPreviousPage: false } } },\n { first, after },\n ['wpgraphql', `gql-${typeName}`],\n );\n return data[typeName] ?? { nodes: [], pageInfo: { hasNextPage: false, hasPreviousPage: false } };\n }\n\n async function getItemBySlug(slug: string): Promise<GQLCPTNode | null> {\n const data = await gqlFetchGraceful<{ [key: string]: GQLCPTNode | null }>(\n GQL_GET_ITEM_BY_SLUG,\n { [singularTypeName]: null },\n { slug },\n ['wpgraphql', `gql-${typeName}`, `gql-${singularTypeName}-${slug}`],\n );\n return data[singularTypeName] ?? null;\n }\n\n async function getAllSlugs(): Promise<{ slug: string }[]> {\n try {\n const all: { slug: string }[] = [];\n let after: string | undefined = undefined;\n let hasNextPage = true;\n\n while (hasNextPage) {\n const data: { [key: string]: GQLConnection<{ slug: string }> } = await gqlFetch<{\n [key: string]: GQLConnection<{ slug: string }>;\n }>(GQL_GET_ALL_SLUGS, { first: BATCH_FIRST, after }, ['wpgraphql']);\n const connection: GQLConnection<{ slug: string }> | undefined = data[typeName];\n if (!connection) break;\n all.push(...connection.nodes);\n hasNextPage = connection.pageInfo.hasNextPage;\n after = connection.pageInfo.endCursor;\n }\n\n return all;\n } catch {\n console.warn(`WPGraphQL unavailable, skipping static generation for ${typeName}`);\n return [];\n }\n }\n\n return { getItems, getItemBySlug, getAllSlugs };\n}\n","export interface RevalidationConfig {\n secret: string;\n}\n\nexport interface RevalidationPayload {\n action: string;\n post_id?: number;\n post_type?: string;\n slug?: string;\n taxonomy?: string;\n term_id?: number;\n}\n\nexport interface RevalidationResult {\n revalidated: boolean;\n tags: string[];\n message?: string;\n}\n\nconst ACTION_TAG_MAP: Record<string, string[]> = {\n save_post: ['wordpress', 'posts'],\n save_post_post: ['wordpress', 'posts'],\n save_post_page: ['wordpress', 'pages'],\n delete_post: ['wordpress', 'posts', 'pages'],\n created_term: ['wordpress', 'categories', 'tags'],\n edited_term: ['wordpress', 'categories', 'tags'],\n delete_term: ['wordpress', 'categories', 'tags'],\n wp_update_nav_menu: ['wordpress', 'menus'],\n woocommerce_product_updated: ['woocommerce', 'products'],\n woocommerce_new_product: ['woocommerce', 'products'],\n woocommerce_delete_product: ['woocommerce', 'products'],\n woocommerce_new_order: ['woocommerce', 'orders'],\n woocommerce_order_status_changed: ['woocommerce', 'orders'],\n woocommerce_update_order: ['woocommerce', 'orders'],\n woocommerce_product_category_updated: ['woocommerce', 'categories'],\n woocommerce_product_tag_updated: ['woocommerce', 'tags'],\n};\n\nfunction extractSecret(request: Request): string | null {\n const auth = request.headers.get('Authorization');\n if (auth?.startsWith('Bearer ')) return auth.slice(7);\n return new URL(request.url).searchParams.get('secret');\n}\n\nexport function createRevalidationHandler(\n config: RevalidationConfig,\n revalidateTag: (tag: string) => void\n): (request: Request) => Promise<Response> {\n return async function handler(request: Request): Promise<Response> {\n if (extractSecret(request) !== config.secret) {\n return Response.json({ revalidated: false, tags: [], message: 'Unauthorized' }, { status: 401 });\n }\n\n let payload: RevalidationPayload;\n try {\n payload = (await request.json()) as RevalidationPayload;\n } catch {\n return Response.json({ revalidated: false, tags: [], message: 'Invalid JSON body' }, { status: 400 });\n }\n\n const { action } = payload;\n const matched = ACTION_TAG_MAP[action];\n if (!matched) {\n return Response.json(\n { revalidated: false, tags: [], message: `Unknown action: ${action}` },\n { status: 400 }\n );\n }\n\n const tags = [...new Set(matched)];\n for (const tag of tags) {\n revalidateTag(tag);\n }\n\n return Response.json({ revalidated: true, tags } satisfies RevalidationResult);\n };\n}\n","export interface FaustConfig {\n wpUrl: string;\n secretKey: string;\n cookieName?: string;\n}\n\nexport interface FaustPreviewConfig {\n wpUrl: string;\n secretKey: string;\n previewPath?: string;\n}\n\nexport interface FaustPreviewDeps {\n enableDraftMode: () => Promise<void>;\n redirect: (url: string) => never;\n}\n\nexport function createFaustAuthHandler(config: FaustConfig) {\n const cookieName = config.cookieName ?? 'faustwp-rt';\n\n return async function handler(request: Request, routePath: string): Promise<Response> {\n if (routePath === 'auth/token') {\n const url = new URL(request.url);\n const code = url.searchParams.get('code');\n const redirectUri = url.searchParams.get('redirect_uri') ?? '/';\n const refreshToken = parseCookie(request, cookieName);\n\n if (!code && !refreshToken) {\n return Response.json({ error: 'Unauthorized' }, { status: 401 });\n }\n\n const wpRes = await fetch(`${config.wpUrl}/?rest_route=/faustwp/v1/authorize`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-faustwp-secret': config.secretKey,\n },\n body: JSON.stringify({ code, refreshToken }),\n });\n\n if (!wpRes.ok) {\n const body = await wpRes.text();\n return new Response(body, { status: wpRes.status });\n }\n\n const data = (await wpRes.json()) as { refreshToken: string };\n return new Response(null, {\n status: 302,\n headers: {\n Location: new URL(redirectUri, request.url).toString(),\n 'Set-Cookie': buildSetCookie(cookieName, data.refreshToken, 2592000),\n },\n });\n }\n\n if (routePath === 'auth/logout') {\n return new Response(JSON.stringify({}), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n 'Set-Cookie': `${cookieName}=; Max-Age=0; Path=/; HttpOnly`,\n },\n });\n }\n\n return Response.json({ error: 'Not Found' }, { status: 404 });\n };\n}\n\nexport function createPreviewHandler(\n config: FaustPreviewConfig,\n deps: FaustPreviewDeps,\n): (request: Request) => Promise<Response> {\n const previewPath = config.previewPath ?? 'posts';\n\n return async function handler(request: Request): Promise<Response> {\n const url = new URL(request.url);\n const postId = url.searchParams.get('postId');\n const previewPathname = url.searchParams.get('previewPathname');\n\n if (!postId) {\n return new Response('Missing postId', { status: 400 });\n }\n\n const slug = await resolvePreviewSlug(config, postId, previewPathname);\n\n if (!slug) {\n return new Response('Post not found', { status: 404 });\n }\n\n await deps.enableDraftMode();\n deps.redirect(`/${previewPath}/${slug}?postId=${postId}`);\n };\n}\n\nfunction parseCookie(request: Request, name: string): string | undefined {\n const header = request.headers.get('cookie') ?? '';\n const match = header.match(new RegExp(`(?:^|;\\\\s*)${name}=([^;]*)`));\n return match?.[1];\n}\n\nfunction buildSetCookie(name: string, value: string, maxAge: number): string {\n const secure = process.env.NODE_ENV === 'production' ? '; Secure' : '';\n return `${name}=${value}; HttpOnly; Path=/; SameSite=Strict; Max-Age=${maxAge}${secure}`;\n}\n\nasync function resolvePreviewSlug(\n config: FaustPreviewConfig,\n postId: string,\n previewPathname: string | null,\n): Promise<string | null> {\n if (previewPathname && !previewPathname.includes('p=')) {\n const slug = previewPathname.replace(/\\/$/, '').split('/').pop();\n if (slug) return slug;\n }\n\n const res = await fetch(`${config.wpUrl}/wp-json/wp/v2/posts/${postId}?_fields=slug`, {\n headers: { 'x-faustwp-secret': config.secretKey },\n cache: 'no-store',\n });\n\n if (!res.ok) return null;\n\n const data = (await res.json()) as { slug?: string };\n return data.slug ?? `preview-${postId}`;\n}\n","export interface CookieConsentCategories {\n necessary: true;\n analytics: boolean;\n marketing: boolean;\n}\n\nexport interface CookieConsentConfig {\n cookieName?: string;\n maxAge?: number;\n}\n\nexport function createCookieConsentHandler(config?: CookieConsentConfig) {\n const cookieName = config?.cookieName ?? 'cookie_notice_accepted';\n const maxAge = config?.maxAge ?? 31536000;\n\n return async function handler(request: Request): Promise<Response> {\n if (request.method === 'GET') {\n const consent = parseCookieConsent(request, cookieName);\n return Response.json(consent ?? null);\n }\n\n if (request.method === 'POST') {\n const body = (await request.json()) as Partial<CookieConsentCategories>;\n const categories: CookieConsentCategories = {\n necessary: true,\n analytics: body.analytics ?? false,\n marketing: body.marketing ?? false,\n };\n return new Response(JSON.stringify(categories), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n 'Set-Cookie': buildConsentCookie(cookieName, encodeURIComponent(JSON.stringify(categories)), maxAge),\n },\n });\n }\n\n if (request.method === 'DELETE') {\n return new Response(null, {\n status: 204,\n headers: {\n 'Set-Cookie': `${cookieName}=; Max-Age=0; Path=/; SameSite=Lax`,\n },\n });\n }\n\n return Response.json({ error: 'Method Not Allowed' }, { status: 405 });\n };\n}\n\nexport function parseCookieConsent(\n request: Request,\n cookieName = 'cookie_notice_accepted',\n): CookieConsentCategories | null {\n const header = request.headers.get('cookie') ?? '';\n const match = header.match(new RegExp(`(?:^|;\\\\s*)${cookieName}=([^;]*)`));\n if (!match) return null;\n // Cookie Notice plugin simple acceptance: value \"1\" means all accepted\n if (match[1] === '1') return { necessary: true, analytics: true, marketing: true };\n try {\n const parsed = JSON.parse(decodeURIComponent(match[1])) as CookieConsentCategories;\n if (typeof parsed !== 'object' || parsed === null) return null;\n return { necessary: true, analytics: parsed.analytics ?? false, marketing: parsed.marketing ?? false };\n } catch {\n return null;\n }\n}\n\nfunction buildConsentCookie(name: string, value: string, maxAge: number): string {\n const secure = process.env.NODE_ENV === 'production' ? '; Secure' : '';\n return `${name}=${value}; Path=/; SameSite=Lax; Max-Age=${maxAge}${secure}`;\n}\n","export function createApplicationPasswordToken(username: string, appPassword: string): string {\n const encoded = Buffer.from(`${username}:${appPassword}`).toString('base64');\n return `Basic ${encoded}`;\n}\n","import type { ErrorCode } from '@shared';\n\nexport interface JwtAuthCredentials {\n username: string;\n password: string;\n}\n\nexport interface JwtAuthResponse {\n token: string;\n user_email: string;\n user_nicename: string;\n user_display_name: string;\n}\n\nexport class AuthenticationError extends Error {\n constructor(\n public readonly code: ErrorCode,\n public readonly status: number,\n message: string,\n detail?: string,\n ) {\n super(detail ? `${message}: ${detail}` : message);\n this.name = 'AuthenticationError';\n }\n}\n","import type { NextWordpressConfig } from '@shared';\nimport { resolveBaseUrl, ErrorCode, resolveMessage } from '@shared';\nimport type { JwtAuthCredentials, JwtAuthResponse } from './types';\nimport { AuthenticationError } from './types';\n\nfunction resolveAuthErrorCode(status: number): ErrorCode {\n if (status === 401) return ErrorCode.AUTH_CREDENTIALS_INVALID;\n if (status === 403) return ErrorCode.AUTH_TOKEN_INVALID;\n return ErrorCode.AUTH_JWT_FAILED;\n}\n\nexport async function authenticateJwt(\n config: NextWordpressConfig,\n credentials: JwtAuthCredentials,\n): Promise<JwtAuthResponse> {\n const url = `${resolveBaseUrl(config)}/wp-json/jwt-auth/v1/token`;\n const response = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(credentials),\n cache: 'no-store',\n });\n if (!response.ok) {\n const code = resolveAuthErrorCode(response.status);\n throw new AuthenticationError(\n code,\n response.status,\n resolveMessage(code, config.errorMessages),\n response.statusText,\n );\n }\n return response.json() as Promise<JwtAuthResponse>;\n}\n\nexport async function validateJwtToken(\n config: NextWordpressConfig,\n token: string,\n): Promise<boolean> {\n const url = `${resolveBaseUrl(config)}/wp-json/jwt-auth/v1/token/validate`;\n const response = await fetch(url, {\n method: 'POST',\n headers: { Authorization: `Bearer ${token}` },\n cache: 'no-store',\n });\n return response.ok;\n}\n"]}
|