@szymonpiatek/nextwordpress 0.0.18 → 0.0.19

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/shared/url.ts","../../src/shared/errors/codes.ts","../../src/auth/types.ts","../../src/auth/jwt.ts","../../src/hooks/auth/AuthProvider.tsx","../../src/integrations/wpGraphQL/client/types.ts","../../src/integrations/wpGraphQL/client/fetcher.ts","../../src/integrations/wpGraphQL/core/mutations/passwordReset/mutations.ts","../../src/hooks/auth/useSendPasswordResetEmail.ts","../../src/hooks/auth/useResetUserPassword.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/passwordReset/mutations.ts","../../src/hooks/auth/useSendPasswordResetEmailRest.ts","../../src/hooks/auth/useResetUserPasswordRest.ts","../../src/hooks/cookieConsent/useCookieConsent.ts","../../src/integrations/restApi/core/posts/queries.ts","../../src/hooks/core/usePosts.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/hooks/woocommerce/useProducts.ts","../../src/integrations/restApi/woocommerce/orders/queries.ts","../../src/hooks/woocommerce/useCart.tsx","../../src/integrations/restApi/woocommerce/customers/queries.ts","../../src/hooks/woocommerce/useCustomer.tsx","../../src/integrations/wpGraphQL/core/posts/queries.ts","../../src/hooks/wpgraphql/useWPGraphQL.ts","../../src/integrations/restApi/wpulike/queries.ts","../../src/hooks/wpulike/useWPULike.ts","../../src/integrations/restApi/contactForm7/types.ts","../../src/integrations/restApi/contactForm7/queries.ts","../../src/hooks/contactForm7/useCF7Submit.ts"],"names":["document","useSWRMutation","USER_AGENT","createPasswordResetMutations","useState","useEffect","useCallback","useSWR","buildUrl","createContext","jsx","useContext","createPostsQueries"],"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 { 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","'use client';\n\nimport { createContext, useCallback, useContext, useEffect, useState, type ReactNode } from 'react';\nimport { authenticateJwt, validateJwtToken } from '@/auth';\nimport type { JwtAuthCredentials } from '@/auth';\nimport type { NextWordpressConfig } from '@shared';\n\nexport interface AuthUser {\n token: string;\n email: string;\n nicename: string;\n displayName: string;\n}\n\nexport interface AuthContextValue {\n user: AuthUser | null;\n isLoggedIn: boolean;\n isLoading: boolean;\n error: string | null;\n login: (credentials: JwtAuthCredentials) => Promise<void>;\n logout: () => void;\n}\n\nconst AuthContext = createContext<AuthContextValue | null>(null);\n\nconst TOKEN_KEY = 'nw_auth_token';\nconst USER_KEY = 'nw_auth_user';\n\nexport function AuthProvider({\n config,\n children,\n}: {\n config: NextWordpressConfig;\n children: ReactNode;\n}) {\n const [user, setUser] = useState<AuthUser | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n const clearStorage = useCallback(() => {\n localStorage.removeItem(TOKEN_KEY);\n localStorage.removeItem(USER_KEY);\n }, []);\n\n useEffect(() => {\n const token = localStorage.getItem(TOKEN_KEY);\n const storedUser = localStorage.getItem(USER_KEY);\n if (!token || !storedUser) {\n setIsLoading(false);\n return;\n }\n validateJwtToken(config, token)\n .then((valid) => {\n if (valid) {\n setUser(JSON.parse(storedUser) as AuthUser);\n } else {\n clearStorage();\n }\n })\n .catch(() => clearStorage())\n .finally(() => setIsLoading(false));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const login = async (credentials: JwtAuthCredentials): Promise<void> => {\n setError(null);\n setIsLoading(true);\n try {\n const response = await authenticateJwt(config, credentials);\n const authUser: AuthUser = {\n token: response.token,\n email: response.user_email,\n nicename: response.user_nicename,\n displayName: response.user_display_name,\n };\n localStorage.setItem(TOKEN_KEY, response.token);\n localStorage.setItem(USER_KEY, JSON.stringify(authUser));\n setUser(authUser);\n } catch (err) {\n const message = err instanceof Error ? err.message : 'Authentication failed';\n setError(message);\n throw err;\n } finally {\n setIsLoading(false);\n }\n };\n\n const logout = () => {\n clearStorage();\n setUser(null);\n setError(null);\n };\n\n return (\n <AuthContext.Provider value={{ user, isLoggedIn: !!user, isLoading, error, login, logout }}>\n {children}\n </AuthContext.Provider>\n );\n}\n\nexport function useAuth(): AuthContextValue {\n const ctx = useContext(AuthContext);\n if (!ctx) throw new Error('useAuth must be used within an AuthProvider');\n return ctx;\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 { WPGraphQLError } from '@wpgraphql/client';\nimport type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport { ErrorCode } from '@shared';\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 }\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\n const result = data.sendPasswordResetEmail;\n\n if (!result.success) {\n throw new WPGraphQLError(ErrorCode.GQL_ERRORS_IN_RESPONSE, 200, 'sendPasswordResetEmail', 'User not found');\n }\n\n return result;\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","import useSWRMutation from 'swr/mutation';\nimport { createWPGraphQLFetcher } from '@wpgraphql/client';\nimport { createPasswordResetMutations } from '@wpgraphql/core/mutations/passwordReset';\nimport type { WPGraphQLConfig } from '@wpgraphql/client';\nimport type { GQLSendPasswordResetEmailResult } from '@wpgraphql/core/mutations/passwordReset';\n\ntype SendPasswordResetEmailArg = { username: string };\n\nexport function useSendPasswordResetEmail(config: WPGraphQLConfig) {\n return useSWRMutation<GQLSendPasswordResetEmailResult, Error, string, SendPasswordResetEmailArg>(\n `send-password-reset:${config.serverURL}`,\n async (_, { arg }) => {\n return createPasswordResetMutations(createWPGraphQLFetcher(config)).sendPasswordResetEmail({\n username: arg.username,\n });\n },\n );\n}\n","import useSWRMutation from 'swr/mutation';\nimport { createWPGraphQLFetcher } from '@wpgraphql/client';\nimport { createPasswordResetMutations } from '@wpgraphql/core/mutations/passwordReset';\nimport type { WPGraphQLConfig } from '@wpgraphql/client';\nimport type { GQLResetUserPasswordResult } from '@wpgraphql/core/mutations/passwordReset';\n\ntype ResetUserPasswordArg = { key: string; login: string; password: string };\n\nexport function useResetUserPassword(config: WPGraphQLConfig) {\n return useSWRMutation<GQLResetUserPasswordResult, Error, string, ResetUserPasswordArg>(\n `reset-user-password:${config.serverURL}`,\n async (_, { arg }) => {\n return createPasswordResetMutations(createWPGraphQLFetcher(config)).resetUserPassword({\n key: arg.key,\n login: arg.login,\n password: arg.password,\n });\n },\n );\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","import type { WordPressFetcher } from '@restApi/core/client';\nimport type {\n RestSendPasswordResetEmailInput,\n RestSendPasswordResetEmailResult,\n RestResetUserPasswordInput,\n RestResetUserPasswordResult,\n} from './types';\n\nexport function createPasswordResetMutations(fetcher: WordPressFetcher) {\n const { wpMutate } = fetcher;\n\n async function sendPasswordResetEmail(\n input: RestSendPasswordResetEmailInput,\n ): Promise<RestSendPasswordResetEmailResult> {\n return wpMutate<RestSendPasswordResetEmailResult>(\n '/wp-json/wp/v2/users/lost-password',\n input,\n 'POST',\n );\n }\n\n async function resetUserPassword(\n input: RestResetUserPasswordInput,\n ): Promise<RestResetUserPasswordResult> {\n return wpMutate<RestResetUserPasswordResult>(\n '/wp-json/wp/v2/users/reset-password',\n input,\n 'POST',\n );\n }\n\n return { sendPasswordResetEmail, resetUserPassword };\n}\n","import useSWRMutation from 'swr/mutation';\nimport { createFetcher } from '@restApi/core/client';\nimport { createPasswordResetMutations } from '@restApi/core/mutations/passwordReset';\nimport type { NextWordpressConfig } from '@shared';\nimport type { RestSendPasswordResetEmailResult } from '@restApi/core/mutations/passwordReset';\n\ntype SendPasswordResetEmailArg = { username: string };\n\nexport function useSendPasswordResetEmailRest(config: NextWordpressConfig) {\n return useSWRMutation<\n RestSendPasswordResetEmailResult,\n Error,\n string,\n SendPasswordResetEmailArg\n >(\n `send-password-reset-rest:${config.serverURL}`,\n async (_, { arg }) => {\n return createPasswordResetMutations(createFetcher(config)).sendPasswordResetEmail({\n username: arg.username,\n });\n },\n );\n}\n","import useSWRMutation from 'swr/mutation';\nimport { createFetcher } from '@restApi/core/client';\nimport { createPasswordResetMutations } from '@restApi/core/mutations/passwordReset';\nimport type { NextWordpressConfig } from '@shared';\nimport type { RestResetUserPasswordResult } from '@restApi/core/mutations/passwordReset';\n\ntype ResetUserPasswordArg = { key: string; login: string; password: string };\n\nexport function useResetUserPasswordRest(config: NextWordpressConfig) {\n return useSWRMutation<RestResetUserPasswordResult, Error, string, ResetUserPasswordArg>(\n `reset-user-password-rest:${config.serverURL}`,\n async (_, { arg }) => {\n return createPasswordResetMutations(createFetcher(config)).resetUserPassword({\n key: arg.key,\n login: arg.login,\n password: arg.password,\n });\n },\n );\n}\n","'use client';\n\nimport { useCallback, useEffect, useState } from 'react';\nimport type { CookieConsentCategories } from '@/nextjs/cookieConsent';\n\nfunction readConsentFromDocument(cookieName: string): CookieConsentCategories | null {\n if (typeof document === 'undefined') return null;\n const match = document.cookie.match(new RegExp(`(?:^|;\\\\s*)${cookieName}=([^;]*)`));\n if (!match) return null;\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 parsed;\n } catch {\n return null;\n }\n}\n\nexport function useCookieConsent(\n consentPath = '/api/cookie-consent',\n cookieName = 'cookie_notice_accepted',\n) {\n const [consent, setConsentState] = useState<CookieConsentCategories | null>(null);\n const [isLoaded, setIsLoaded] = useState(false);\n\n useEffect(() => {\n setConsentState(readConsentFromDocument(cookieName));\n setIsLoaded(true);\n }, [cookieName]);\n\n const setConsent = useCallback(\n async (categories: Omit<CookieConsentCategories, 'necessary'>) => {\n const res = await fetch(consentPath, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(categories),\n });\n const data = (await res.json()) as CookieConsentCategories;\n setConsentState(data);\n },\n [consentPath],\n );\n\n const clearConsent = useCallback(async () => {\n await fetch(consentPath, { method: 'DELETE' });\n setConsentState(null);\n }, [consentPath]);\n\n return { consent, isLoaded, setConsent, clearConsent };\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 useSWR from 'swr';\nimport type { SWRConfiguration } from 'swr';\nimport { createFetcher } from '@restApi/core/client/fetcher';\nimport { createPostsQueries } from '@restApi/core/posts/queries';\nimport type { NextWordpressConfig } from '@shared/types';\nimport type { Post } from '@restApi/core/posts/types';\nimport type { WordPressResponse } from '@restApi/core/client/types';\n\ntype PostFilterParams = {\n author?: string;\n tag?: string;\n category?: string;\n search?: string;\n};\n\nexport function usePosts(\n config: NextWordpressConfig,\n filter?: PostFilterParams,\n swrOptions?: SWRConfiguration<Post[]>,\n) {\n const key = ['wp-posts', config.clientURL, JSON.stringify(filter ?? null)];\n return useSWR<Post[]>(\n key,\n () => {\n const fetcher = createFetcher(config);\n return createPostsQueries(fetcher).getRecentPosts(filter);\n },\n swrOptions,\n );\n}\n\nexport function usePost(\n config: NextWordpressConfig,\n id: number | null | undefined,\n swrOptions?: SWRConfiguration<Post>,\n) {\n const key = id != null ? ['wp-post', config.clientURL, id] : null;\n return useSWR<Post>(\n key,\n () => {\n const fetcher = createFetcher(config);\n return createPostsQueries(fetcher).getPostById(id!);\n },\n swrOptions,\n );\n}\n\nexport function usePostBySlug(\n config: NextWordpressConfig,\n slug: string | null | undefined,\n swrOptions?: SWRConfiguration<Post | undefined>,\n) {\n const key = slug ? ['wp-post-slug', config.clientURL, slug] : null;\n return useSWR<Post | undefined>(\n key,\n () => {\n const fetcher = createFetcher(config);\n return createPostsQueries(fetcher).getPostBySlug(slug!);\n },\n swrOptions,\n );\n}\n\nexport function usePostsPaginated(\n config: NextWordpressConfig,\n page: number = 1,\n perPage: number = 9,\n filter?: PostFilterParams,\n swrOptions?: SWRConfiguration<WordPressResponse<Post[]>>,\n) {\n const key = ['wp-posts-paginated', config.clientURL, page, perPage, JSON.stringify(filter ?? null)];\n return useSWR<WordPressResponse<Post[]>>(\n key,\n () => {\n const fetcher = createFetcher(config);\n return createPostsQueries(fetcher).getPostsPaginated(page, perPage, filter);\n },\n swrOptions,\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 useSWR from 'swr';\nimport type { SWRConfiguration } from 'swr';\nimport { createWooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport { createProductsQueries } from '@restApi/woocommerce/products/queries';\nimport type { WooCommerceConfig, WooCommerceResponse } from '@restApi/woocommerce/client/types';\nimport type { WCProduct, WCProductFilterParams } from '@restApi/woocommerce/products/types';\n\nexport function useProducts(\n config: WooCommerceConfig,\n filter?: WCProductFilterParams,\n swrOptions?: SWRConfiguration<WCProduct[]>,\n) {\n const key = ['wc-products', config.serverURL, JSON.stringify(filter ?? null)];\n return useSWR<WCProduct[]>(\n key,\n () => {\n const fetcher = createWooCommerceFetcher(config);\n return createProductsQueries(fetcher).getProducts(filter);\n },\n swrOptions,\n );\n}\n\nexport function useProduct(\n config: WooCommerceConfig,\n id: number | null | undefined,\n swrOptions?: SWRConfiguration<WCProduct>,\n) {\n const key = id != null ? ['wc-product', config.serverURL, id] : null;\n return useSWR<WCProduct>(\n key,\n () => {\n const fetcher = createWooCommerceFetcher(config);\n return createProductsQueries(fetcher).getProductById(id!);\n },\n swrOptions,\n );\n}\n\nexport function useProductBySlug(\n config: WooCommerceConfig,\n slug: string | null | undefined,\n swrOptions?: SWRConfiguration<WCProduct | undefined>,\n) {\n const key = slug ? ['wc-product-slug', config.serverURL, slug] : null;\n return useSWR<WCProduct | undefined>(\n key,\n () => {\n const fetcher = createWooCommerceFetcher(config);\n return createProductsQueries(fetcher).getProductBySlug(slug!);\n },\n swrOptions,\n );\n}\n\nexport function useProductsPaginated(\n config: WooCommerceConfig,\n page: number = 1,\n perPage: number = 12,\n filter?: WCProductFilterParams,\n swrOptions?: SWRConfiguration<WooCommerceResponse<WCProduct[]>>,\n) {\n const key = ['wc-products-paginated', config.serverURL, page, perPage, JSON.stringify(filter ?? null)];\n return useSWR<WooCommerceResponse<WCProduct[]>>(\n key,\n () => {\n const fetcher = createWooCommerceFetcher(config);\n return createProductsQueries(fetcher).getProductsPaginated(page, perPage, filter);\n },\n swrOptions,\n );\n}\n\nexport function useFeaturedProducts(\n config: WooCommerceConfig,\n limit: number = 10,\n swrOptions?: SWRConfiguration<WCProduct[]>,\n) {\n const key = ['wc-products-featured', config.serverURL, limit];\n return useSWR<WCProduct[]>(\n key,\n () => {\n const fetcher = createWooCommerceFetcher(config);\n return createProductsQueries(fetcher).getFeaturedProducts(limit);\n },\n swrOptions,\n );\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","'use client';\n\nimport { createContext, useContext, useEffect, useReducer, type ReactNode } from 'react';\nimport { createWooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport { createOrdersQueries } from '@restApi/woocommerce/orders/queries';\nimport type { WooCommerceConfig } from '@restApi/woocommerce/client/types';\nimport type { WCOrder, WCCreateOrderInput } from '@restApi/woocommerce/orders/types';\n\nconst STORAGE_KEY = 'nw-cart';\n\nexport interface CartItem {\n productId: number;\n variationId?: number;\n quantity: number;\n name: string;\n price: string;\n image: string | null;\n}\n\nexport interface CheckoutOptions {\n billing?: WCCreateOrderInput['billing'];\n shipping?: WCCreateOrderInput['shipping'];\n paymentMethod?: string;\n paymentMethodTitle?: string;\n customerNote?: string;\n couponCodes?: string[];\n}\n\ninterface CartState {\n items: CartItem[];\n}\n\nexport type CartAction =\n | { type: 'ADD'; item: CartItem }\n | { type: 'REMOVE'; productId: number; variationId?: number }\n | { type: 'UPDATE'; productId: number; quantity: number; variationId?: number }\n | { type: 'CLEAR' }\n | { type: 'LOAD'; items: CartItem[] };\n\nfunction isSame(a: CartItem, b: { productId: number; variationId?: number }) {\n return a.productId === b.productId && (a.variationId ?? 0) === (b.variationId ?? 0);\n}\n\nexport function cartReducer(state: CartState, action: CartAction): CartState {\n switch (action.type) {\n case 'LOAD':\n return { items: action.items };\n\n case 'ADD': {\n const existing = state.items.find(i => isSame(i, action.item));\n if (existing) {\n return {\n items: state.items.map(i =>\n isSame(i, action.item) ? { ...i, quantity: i.quantity + action.item.quantity } : i,\n ),\n };\n }\n return { items: [...state.items, action.item] };\n }\n\n case 'REMOVE':\n return { items: state.items.filter(i => !isSame(i, action)) };\n\n case 'UPDATE':\n if (action.quantity <= 0) {\n return { items: state.items.filter(i => !isSame(i, action)) };\n }\n return {\n items: state.items.map(i =>\n isSame(i, action) ? { ...i, quantity: action.quantity } : i,\n ),\n };\n\n case 'CLEAR':\n return { items: [] };\n }\n}\n\nexport interface CartContextValue {\n items: CartItem[];\n totalItems: number;\n subtotal: string;\n isEmpty: boolean;\n addItem: (item: Omit<CartItem, 'quantity'>, quantity?: number) => void;\n removeItem: (productId: number, variationId?: number) => void;\n updateQuantity: (productId: number, quantity: number, variationId?: number) => void;\n clearCart: () => void;\n checkout: (config: WooCommerceConfig, options?: CheckoutOptions) => Promise<WCOrder>;\n}\n\nconst CartContext = createContext<CartContextValue | null>(null);\n\nexport function CartProvider({ children }: { children: ReactNode }) {\n const [state, dispatch] = useReducer(cartReducer, { items: [] });\n\n useEffect(() => {\n try {\n const stored = localStorage.getItem(STORAGE_KEY);\n if (stored) dispatch({ type: 'LOAD', items: JSON.parse(stored) as CartItem[] });\n } catch {\n // ignore malformed storage\n }\n }, []);\n\n useEffect(() => {\n try {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(state.items));\n } catch {\n // ignore quota errors\n }\n }, [state.items]);\n\n const totalItems = state.items.reduce((sum, i) => sum + i.quantity, 0);\n const subtotal = state.items\n .reduce((sum, i) => sum + parseFloat(i.price) * i.quantity, 0)\n .toFixed(2);\n\n function addItem(item: Omit<CartItem, 'quantity'>, quantity = 1) {\n dispatch({ type: 'ADD', item: { ...item, quantity } });\n }\n\n function removeItem(productId: number, variationId?: number) {\n dispatch({ type: 'REMOVE', productId, variationId });\n }\n\n function updateQuantity(productId: number, quantity: number, variationId?: number) {\n dispatch({ type: 'UPDATE', productId, quantity, variationId });\n }\n\n function clearCart() {\n dispatch({ type: 'CLEAR' });\n }\n\n async function checkout(config: WooCommerceConfig, options: CheckoutOptions = {}): Promise<WCOrder> {\n if (state.items.length === 0) throw new Error('Cannot checkout with an empty cart');\n\n const fetcher = createWooCommerceFetcher(config);\n const input: WCCreateOrderInput = {\n status: 'pending',\n line_items: state.items.map(i => ({\n product_id: i.productId,\n ...(i.variationId !== undefined ? { variation_id: i.variationId } : {}),\n quantity: i.quantity,\n })),\n ...(options.billing ? { billing: options.billing } : {}),\n ...(options.shipping ? { shipping: options.shipping } : {}),\n ...(options.paymentMethod ? { payment_method: options.paymentMethod } : {}),\n ...(options.paymentMethodTitle ? { payment_method_title: options.paymentMethodTitle } : {}),\n ...(options.customerNote ? { customer_note: options.customerNote } : {}),\n ...(options.couponCodes ? { coupon_lines: options.couponCodes.map(code => ({ code })) } : {}),\n };\n\n const order = await createOrdersQueries(fetcher).createOrder(input);\n dispatch({ type: 'CLEAR' });\n return order;\n }\n\n return (\n <CartContext.Provider\n value={{ items: state.items, totalItems, subtotal, isEmpty: state.items.length === 0, addItem, removeItem, updateQuantity, clearCart, checkout }}\n >\n {children}\n </CartContext.Provider>\n );\n}\n\nexport function useCart(): CartContextValue {\n const ctx = useContext(CartContext);\n if (!ctx) throw new Error('useCart must be used within a CartProvider');\n return ctx;\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","'use client';\n\nimport { createContext, useCallback, useContext, useEffect, useState, type ReactNode } from 'react';\nimport { createWooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport { createCustomersQueries } from '@restApi/woocommerce/customers/queries';\nimport { createOrdersQueries } from '@restApi/woocommerce/orders/queries';\nimport type { WooCommerceConfig } from '@restApi/woocommerce/client/types';\nimport type { WCCustomer } from '@restApi/woocommerce/customers/types';\nimport type { WCOrder } from '@restApi/woocommerce/orders/types';\nimport type { UpdateCustomerInput } from '@restApi/woocommerce/customers/queries';\nimport { useAuth } from '@/hooks';\n\nexport interface CustomerContextValue {\n customer: WCCustomer | null;\n orders: WCOrder[];\n isLoading: boolean;\n error: string | null;\n updateCustomer: (data: UpdateCustomerInput) => Promise<WCCustomer>;\n refetch: () => void;\n}\n\nconst CustomerContext = createContext<CustomerContextValue | null>(null);\n\nexport function WooCommerceCustomerProvider({\n config,\n children,\n}: {\n config: WooCommerceConfig;\n children: ReactNode;\n}) {\n const { user, isLoggedIn } = useAuth();\n const [customer, setCustomer] = useState<WCCustomer | null>(null);\n const [orders, setOrders] = useState<WCOrder[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [tick, setTick] = useState(0);\n\n const fetchData = useCallback(async () => {\n if (!isLoggedIn || !user?.email) {\n setCustomer(null);\n setOrders([]);\n return;\n }\n setIsLoading(true);\n setError(null);\n try {\n const fetcher = createWooCommerceFetcher(config);\n const foundCustomer = await createCustomersQueries(fetcher).getCustomerByEmailNoCache(user.email);\n if (!foundCustomer) {\n setCustomer(null);\n setOrders([]);\n return;\n }\n const customerOrders = await createOrdersQueries(fetcher).getOrdersByCustomer(foundCustomer.id);\n setCustomer(foundCustomer);\n setOrders(customerOrders);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to load customer data');\n } finally {\n setIsLoading(false);\n }\n }, [isLoggedIn, user?.email, config, tick]);\n\n useEffect(() => {\n void fetchData();\n }, [fetchData]);\n\n const updateCustomer = async (data: UpdateCustomerInput): Promise<WCCustomer> => {\n if (!customer) throw new Error('No customer loaded');\n const fetcher = createWooCommerceFetcher(config);\n const updated = await createCustomersQueries(fetcher).updateCustomer(customer.id, data);\n setCustomer(updated);\n return updated;\n };\n\n const refetch = () => setTick((t) => t + 1);\n\n return (\n <CustomerContext.Provider value={{ customer, orders, isLoading, error, updateCustomer, refetch }}>\n {children}\n </CustomerContext.Provider>\n );\n}\n\nexport function useCustomer(): CustomerContextValue {\n const ctx = useContext(CustomerContext);\n if (!ctx) throw new Error('useCustomer must be used within a WooCommerceCustomerProvider');\n return ctx;\n}\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 useSWR from 'swr';\nimport type { SWRConfiguration } from 'swr';\nimport { createWPGraphQLFetcher } from '@wpgraphql/client/fetcher';\nimport { createPostsQueries } from '@wpgraphql/core/posts/queries';\nimport type { WPGraphQLConfig, GQLConnection } from '@wpgraphql/client/types';\nimport type { GQLPost, GQLPostFilter } from '@wpgraphql/core/posts/types';\n\nexport function useWPGraphQL<TData>(\n config: WPGraphQLConfig,\n query: string,\n variables?: Record<string, unknown>,\n tags?: string[],\n swrOptions?: SWRConfiguration<TData>,\n) {\n const key = ['wpgraphql', config.clientURL, query, JSON.stringify(variables ?? null)];\n return useSWR<TData>(\n key,\n () => {\n const fetcher = createWPGraphQLFetcher(config);\n return fetcher.gqlFetch<TData>(query, variables, tags);\n },\n swrOptions,\n );\n}\n\nexport function useGQLPosts(\n config: WPGraphQLConfig,\n first?: number,\n after?: string,\n filter?: GQLPostFilter,\n swrOptions?: SWRConfiguration<GQLConnection<GQLPost>>,\n) {\n const key = ['wpgraphql-posts', config.clientURL, first, after, JSON.stringify(filter ?? null)];\n return useSWR<GQLConnection<GQLPost>>(\n key,\n () => {\n const fetcher = createWPGraphQLFetcher(config);\n return createPostsQueries(fetcher).getPosts(first, after, filter);\n },\n swrOptions,\n );\n}\n\nexport function useGQLPostBySlug(\n config: WPGraphQLConfig,\n slug: string | null | undefined,\n swrOptions?: SWRConfiguration<GQLPost | null>,\n) {\n const key = slug ? ['wpgraphql-post-slug', config.clientURL, slug] : null;\n return useSWR<GQLPost | null>(\n key,\n () => {\n const fetcher = createWPGraphQLFetcher(config);\n return createPostsQueries(fetcher).getPostBySlug(slug!);\n },\n swrOptions,\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 useSWR from 'swr';\nimport type { SWRConfiguration } from 'swr';\nimport { createFetcher } from '@restApi/core/client/fetcher';\nimport { createWPULikeQueries } from '@restApi/wpulike/queries';\nimport type { NextWordpressConfig } from '@shared/types';\nimport type {\n WPULikeStats,\n WPULikeStatsParams,\n WPULikeCheckResponse,\n WPULikeCheckParams,\n WPULikeStatus,\n WPULikeVoteResponse,\n} from '@restApi/wpulike/types';\n\nexport function useWPULikeStats(\n config: NextWordpressConfig,\n params: WPULikeStatsParams | null | undefined,\n swrOptions?: SWRConfiguration<WPULikeStats>,\n) {\n const key = params ? ['wpulike-stats', config.clientURL, params.id, params.type ?? 'post'] : null;\n return useSWR<WPULikeStats>(\n key,\n () => {\n const fetcher = createFetcher(config);\n return createWPULikeQueries(fetcher).getLikeStats(params!);\n },\n swrOptions,\n );\n}\n\nexport function useWPULikeCheck(\n config: NextWordpressConfig,\n params: WPULikeCheckParams | null | undefined,\n swrOptions?: SWRConfiguration<WPULikeCheckResponse>,\n) {\n const key = params ? ['wpulike-check', config.clientURL, params.id, params.type ?? 'post'] : null;\n return useSWR<WPULikeCheckResponse>(\n key,\n () => {\n const fetcher = createFetcher(config);\n return createWPULikeQueries(fetcher).checkLikeStatus(params!);\n },\n swrOptions,\n );\n}\n\nexport function useWPULike(\n config: NextWordpressConfig,\n params: WPULikeStatsParams | null | undefined,\n swrOptions?: SWRConfiguration<WPULikeStats>,\n) {\n const key = params ? ['wpulike-stats', config.clientURL, params.id, params.type ?? 'post'] : null;\n const { data, error, isLoading, mutate } = useSWR<WPULikeStats>(\n key,\n () => {\n const fetcher = createFetcher(config);\n return createWPULikeQueries(fetcher).getLikeStats(params!);\n },\n swrOptions,\n );\n\n async function vote(status: WPULikeStatus, authToken?: string): Promise<WPULikeVoteResponse> {\n const fetcher = createFetcher(config);\n const result = await createWPULikeQueries(fetcher).vote({ ...params!, status }, authToken);\n await mutate();\n return result;\n }\n\n return { data, error, isLoading, vote };\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 useSWRMutation from 'swr/mutation';\nimport { createCF7Queries } from '@restApi/contactForm7/queries';\nimport type { NextWordpressConfig } from '@shared/types';\nimport type { CF7SubmissionResponse } from '@restApi/contactForm7/types';\n\ntype CF7SubmitArg = { formId: number; fields: Record<string, string> };\n\nexport function useCF7Submit(config: NextWordpressConfig) {\n return useSWRMutation<CF7SubmissionResponse, Error, string, CF7SubmitArg>(\n `cf7-submit:${config.serverURL}`,\n async (_, { arg }) => {\n return createCF7Queries(config).submitForm(arg.formId, arg.fields);\n },\n );\n}\n"]}
1
+ {"version":3,"sources":["../../src/shared/url.ts","../../src/shared/errors/codes.ts","../../src/auth/types.ts","../../src/auth/jwt.ts","../../src/hooks/auth/AuthProvider.tsx","../../src/integrations/wpGraphQL/client/types.ts","../../src/integrations/wpGraphQL/client/fetcher.ts","../../src/integrations/wpGraphQL/core/mutations/passwordReset/mutations.ts","../../src/hooks/auth/useSendPasswordResetEmail.ts","../../src/hooks/auth/useResetUserPassword.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/passwordReset/mutations.ts","../../src/hooks/auth/useSendPasswordResetEmailRest.ts","../../src/hooks/auth/useResetUserPasswordRest.ts","../../src/hooks/cookieConsent/useCookieConsent.ts","../../src/integrations/restApi/core/posts/queries.ts","../../src/hooks/core/usePosts.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/hooks/woocommerce/useProducts.ts","../../src/integrations/restApi/woocommerce/orders/queries.ts","../../src/hooks/woocommerce/useCart.tsx","../../src/integrations/restApi/woocommerce/customers/queries.ts","../../src/hooks/woocommerce/useCustomer.tsx","../../src/integrations/restApi/woocommerce/wishlist/fetcher.ts","../../src/integrations/restApi/woocommerce/wishlist/queries.ts","../../src/hooks/woocommerce/useWishlist.ts","../../src/integrations/wpGraphQL/core/posts/queries.ts","../../src/hooks/wpgraphql/useWPGraphQL.ts","../../src/integrations/restApi/wpulike/queries.ts","../../src/hooks/wpulike/useWPULike.ts","../../src/integrations/restApi/contactForm7/types.ts","../../src/integrations/restApi/contactForm7/queries.ts","../../src/hooks/contactForm7/useCF7Submit.ts"],"names":["document","useSWRMutation","USER_AGENT","createPasswordResetMutations","useState","useEffect","useCallback","useSWR","buildUrl","createContext","jsx","useContext","DEFAULT_CACHE_TTL","createPostsQueries"],"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 WOO_WISHLIST_NOT_FOUND: 'WOO_WISHLIST_NOT_FOUND',\n WOO_WISHLIST_ITEM_NOT_FOUND: 'WOO_WISHLIST_ITEM_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 WOO_WISHLIST_NOT_FOUND: 'Wishlist not found',\n WOO_WISHLIST_ITEM_NOT_FOUND: 'Wishlist item 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 WOO_WISHLIST_NOT_FOUND: 'Lista życzeń nie istnieje',\n WOO_WISHLIST_ITEM_NOT_FOUND: 'Element listy życzeń 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 { 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","'use client';\n\nimport { createContext, useCallback, useContext, useEffect, useState, type ReactNode } from 'react';\nimport { authenticateJwt, validateJwtToken } from '@/auth';\nimport type { JwtAuthCredentials } from '@/auth';\nimport type { NextWordpressConfig } from '@shared';\n\nexport interface AuthUser {\n token: string;\n email: string;\n nicename: string;\n displayName: string;\n}\n\nexport interface AuthContextValue {\n user: AuthUser | null;\n isLoggedIn: boolean;\n isLoading: boolean;\n error: string | null;\n login: (credentials: JwtAuthCredentials) => Promise<void>;\n logout: () => void;\n}\n\nconst AuthContext = createContext<AuthContextValue | null>(null);\n\nconst TOKEN_KEY = 'nw_auth_token';\nconst USER_KEY = 'nw_auth_user';\n\nexport function AuthProvider({\n config,\n children,\n}: {\n config: NextWordpressConfig;\n children: ReactNode;\n}) {\n const [user, setUser] = useState<AuthUser | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n const clearStorage = useCallback(() => {\n localStorage.removeItem(TOKEN_KEY);\n localStorage.removeItem(USER_KEY);\n }, []);\n\n useEffect(() => {\n const token = localStorage.getItem(TOKEN_KEY);\n const storedUser = localStorage.getItem(USER_KEY);\n if (!token || !storedUser) {\n setIsLoading(false);\n return;\n }\n validateJwtToken(config, token)\n .then((valid) => {\n if (valid) {\n setUser(JSON.parse(storedUser) as AuthUser);\n } else {\n clearStorage();\n }\n })\n .catch(() => clearStorage())\n .finally(() => setIsLoading(false));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const login = async (credentials: JwtAuthCredentials): Promise<void> => {\n setError(null);\n setIsLoading(true);\n try {\n const response = await authenticateJwt(config, credentials);\n const authUser: AuthUser = {\n token: response.token,\n email: response.user_email,\n nicename: response.user_nicename,\n displayName: response.user_display_name,\n };\n localStorage.setItem(TOKEN_KEY, response.token);\n localStorage.setItem(USER_KEY, JSON.stringify(authUser));\n setUser(authUser);\n } catch (err) {\n const message = err instanceof Error ? err.message : 'Authentication failed';\n setError(message);\n throw err;\n } finally {\n setIsLoading(false);\n }\n };\n\n const logout = () => {\n clearStorage();\n setUser(null);\n setError(null);\n };\n\n return (\n <AuthContext.Provider value={{ user, isLoggedIn: !!user, isLoading, error, login, logout }}>\n {children}\n </AuthContext.Provider>\n );\n}\n\nexport function useAuth(): AuthContextValue {\n const ctx = useContext(AuthContext);\n if (!ctx) throw new Error('useAuth must be used within an AuthProvider');\n return ctx;\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 { WPGraphQLError } from '@wpgraphql/client';\nimport type { WPGraphQLFetcher } from '@wpgraphql/client';\nimport { ErrorCode } from '@shared';\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 }\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\n const result = data.sendPasswordResetEmail;\n\n if (!result.success) {\n throw new WPGraphQLError(ErrorCode.GQL_ERRORS_IN_RESPONSE, 200, 'sendPasswordResetEmail', 'User not found');\n }\n\n return result;\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","import useSWRMutation from 'swr/mutation';\nimport { createWPGraphQLFetcher } from '@wpgraphql/client';\nimport { createPasswordResetMutations } from '@wpgraphql/core/mutations/passwordReset';\nimport type { WPGraphQLConfig } from '@wpgraphql/client';\nimport type { GQLSendPasswordResetEmailResult } from '@wpgraphql/core/mutations/passwordReset';\n\ntype SendPasswordResetEmailArg = { username: string };\n\nexport function useSendPasswordResetEmail(config: WPGraphQLConfig) {\n return useSWRMutation<GQLSendPasswordResetEmailResult, Error, string, SendPasswordResetEmailArg>(\n `send-password-reset:${config.serverURL}`,\n async (_, { arg }) => {\n return createPasswordResetMutations(createWPGraphQLFetcher(config)).sendPasswordResetEmail({\n username: arg.username,\n });\n },\n );\n}\n","import useSWRMutation from 'swr/mutation';\nimport { createWPGraphQLFetcher } from '@wpgraphql/client';\nimport { createPasswordResetMutations } from '@wpgraphql/core/mutations/passwordReset';\nimport type { WPGraphQLConfig } from '@wpgraphql/client';\nimport type { GQLResetUserPasswordResult } from '@wpgraphql/core/mutations/passwordReset';\n\ntype ResetUserPasswordArg = { key: string; login: string; password: string };\n\nexport function useResetUserPassword(config: WPGraphQLConfig) {\n return useSWRMutation<GQLResetUserPasswordResult, Error, string, ResetUserPasswordArg>(\n `reset-user-password:${config.serverURL}`,\n async (_, { arg }) => {\n return createPasswordResetMutations(createWPGraphQLFetcher(config)).resetUserPassword({\n key: arg.key,\n login: arg.login,\n password: arg.password,\n });\n },\n );\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","import type { WordPressFetcher } from '@restApi/core/client';\nimport type {\n RestSendPasswordResetEmailInput,\n RestSendPasswordResetEmailResult,\n RestResetUserPasswordInput,\n RestResetUserPasswordResult,\n} from './types';\n\nexport function createPasswordResetMutations(fetcher: WordPressFetcher) {\n const { wpMutate } = fetcher;\n\n async function sendPasswordResetEmail(\n input: RestSendPasswordResetEmailInput,\n ): Promise<RestSendPasswordResetEmailResult> {\n return wpMutate<RestSendPasswordResetEmailResult>(\n '/wp-json/wp/v2/users/lost-password',\n input,\n 'POST',\n );\n }\n\n async function resetUserPassword(\n input: RestResetUserPasswordInput,\n ): Promise<RestResetUserPasswordResult> {\n return wpMutate<RestResetUserPasswordResult>(\n '/wp-json/wp/v2/users/reset-password',\n input,\n 'POST',\n );\n }\n\n return { sendPasswordResetEmail, resetUserPassword };\n}\n","import useSWRMutation from 'swr/mutation';\nimport { createFetcher } from '@restApi/core/client';\nimport { createPasswordResetMutations } from '@restApi/core/mutations/passwordReset';\nimport type { NextWordpressConfig } from '@shared';\nimport type { RestSendPasswordResetEmailResult } from '@restApi/core/mutations/passwordReset';\n\ntype SendPasswordResetEmailArg = { username: string };\n\nexport function useSendPasswordResetEmailRest(config: NextWordpressConfig) {\n return useSWRMutation<\n RestSendPasswordResetEmailResult,\n Error,\n string,\n SendPasswordResetEmailArg\n >(\n `send-password-reset-rest:${config.serverURL}`,\n async (_, { arg }) => {\n return createPasswordResetMutations(createFetcher(config)).sendPasswordResetEmail({\n username: arg.username,\n });\n },\n );\n}\n","import useSWRMutation from 'swr/mutation';\nimport { createFetcher } from '@restApi/core/client';\nimport { createPasswordResetMutations } from '@restApi/core/mutations/passwordReset';\nimport type { NextWordpressConfig } from '@shared';\nimport type { RestResetUserPasswordResult } from '@restApi/core/mutations/passwordReset';\n\ntype ResetUserPasswordArg = { key: string; login: string; password: string };\n\nexport function useResetUserPasswordRest(config: NextWordpressConfig) {\n return useSWRMutation<RestResetUserPasswordResult, Error, string, ResetUserPasswordArg>(\n `reset-user-password-rest:${config.serverURL}`,\n async (_, { arg }) => {\n return createPasswordResetMutations(createFetcher(config)).resetUserPassword({\n key: arg.key,\n login: arg.login,\n password: arg.password,\n });\n },\n );\n}\n","'use client';\n\nimport { useCallback, useEffect, useState } from 'react';\nimport type { CookieConsentCategories } from '@/nextjs/cookieConsent';\n\nfunction readConsentFromDocument(cookieName: string): CookieConsentCategories | null {\n if (typeof document === 'undefined') return null;\n const match = document.cookie.match(new RegExp(`(?:^|;\\\\s*)${cookieName}=([^;]*)`));\n if (!match) return null;\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 parsed;\n } catch {\n return null;\n }\n}\n\nexport function useCookieConsent(\n consentPath = '/api/cookie-consent',\n cookieName = 'cookie_notice_accepted',\n) {\n const [consent, setConsentState] = useState<CookieConsentCategories | null>(null);\n const [isLoaded, setIsLoaded] = useState(false);\n\n useEffect(() => {\n setConsentState(readConsentFromDocument(cookieName));\n setIsLoaded(true);\n }, [cookieName]);\n\n const setConsent = useCallback(\n async (categories: Omit<CookieConsentCategories, 'necessary'>) => {\n const res = await fetch(consentPath, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(categories),\n });\n const data = (await res.json()) as CookieConsentCategories;\n setConsentState(data);\n },\n [consentPath],\n );\n\n const clearConsent = useCallback(async () => {\n await fetch(consentPath, { method: 'DELETE' });\n setConsentState(null);\n }, [consentPath]);\n\n return { consent, isLoaded, setConsent, clearConsent };\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 useSWR from 'swr';\nimport type { SWRConfiguration } from 'swr';\nimport { createFetcher } from '@restApi/core/client/fetcher';\nimport { createPostsQueries } from '@restApi/core/posts/queries';\nimport type { NextWordpressConfig } from '@shared/types';\nimport type { Post } from '@restApi/core/posts/types';\nimport type { WordPressResponse } from '@restApi/core/client/types';\n\ntype PostFilterParams = {\n author?: string;\n tag?: string;\n category?: string;\n search?: string;\n};\n\nexport function usePosts(\n config: NextWordpressConfig,\n filter?: PostFilterParams,\n swrOptions?: SWRConfiguration<Post[]>,\n) {\n const key = ['wp-posts', config.clientURL, JSON.stringify(filter ?? null)];\n return useSWR<Post[]>(\n key,\n () => {\n const fetcher = createFetcher(config);\n return createPostsQueries(fetcher).getRecentPosts(filter);\n },\n swrOptions,\n );\n}\n\nexport function usePost(\n config: NextWordpressConfig,\n id: number | null | undefined,\n swrOptions?: SWRConfiguration<Post>,\n) {\n const key = id != null ? ['wp-post', config.clientURL, id] : null;\n return useSWR<Post>(\n key,\n () => {\n const fetcher = createFetcher(config);\n return createPostsQueries(fetcher).getPostById(id!);\n },\n swrOptions,\n );\n}\n\nexport function usePostBySlug(\n config: NextWordpressConfig,\n slug: string | null | undefined,\n swrOptions?: SWRConfiguration<Post | undefined>,\n) {\n const key = slug ? ['wp-post-slug', config.clientURL, slug] : null;\n return useSWR<Post | undefined>(\n key,\n () => {\n const fetcher = createFetcher(config);\n return createPostsQueries(fetcher).getPostBySlug(slug!);\n },\n swrOptions,\n );\n}\n\nexport function usePostsPaginated(\n config: NextWordpressConfig,\n page: number = 1,\n perPage: number = 9,\n filter?: PostFilterParams,\n swrOptions?: SWRConfiguration<WordPressResponse<Post[]>>,\n) {\n const key = ['wp-posts-paginated', config.clientURL, page, perPage, JSON.stringify(filter ?? null)];\n return useSWR<WordPressResponse<Post[]>>(\n key,\n () => {\n const fetcher = createFetcher(config);\n return createPostsQueries(fetcher).getPostsPaginated(page, perPage, filter);\n },\n swrOptions,\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 useSWR from 'swr';\nimport type { SWRConfiguration } from 'swr';\nimport { createWooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport { createProductsQueries } from '@restApi/woocommerce/products/queries';\nimport type { WooCommerceConfig, WooCommerceResponse } from '@restApi/woocommerce/client/types';\nimport type { WCProduct, WCProductFilterParams } from '@restApi/woocommerce/products/types';\n\nexport function useProducts(\n config: WooCommerceConfig,\n filter?: WCProductFilterParams,\n swrOptions?: SWRConfiguration<WCProduct[]>,\n) {\n const key = ['wc-products', config.serverURL, JSON.stringify(filter ?? null)];\n return useSWR<WCProduct[]>(\n key,\n () => {\n const fetcher = createWooCommerceFetcher(config);\n return createProductsQueries(fetcher).getProducts(filter);\n },\n swrOptions,\n );\n}\n\nexport function useProduct(\n config: WooCommerceConfig,\n id: number | null | undefined,\n swrOptions?: SWRConfiguration<WCProduct>,\n) {\n const key = id != null ? ['wc-product', config.serverURL, id] : null;\n return useSWR<WCProduct>(\n key,\n () => {\n const fetcher = createWooCommerceFetcher(config);\n return createProductsQueries(fetcher).getProductById(id!);\n },\n swrOptions,\n );\n}\n\nexport function useProductBySlug(\n config: WooCommerceConfig,\n slug: string | null | undefined,\n swrOptions?: SWRConfiguration<WCProduct | undefined>,\n) {\n const key = slug ? ['wc-product-slug', config.serverURL, slug] : null;\n return useSWR<WCProduct | undefined>(\n key,\n () => {\n const fetcher = createWooCommerceFetcher(config);\n return createProductsQueries(fetcher).getProductBySlug(slug!);\n },\n swrOptions,\n );\n}\n\nexport function useProductsPaginated(\n config: WooCommerceConfig,\n page: number = 1,\n perPage: number = 12,\n filter?: WCProductFilterParams,\n swrOptions?: SWRConfiguration<WooCommerceResponse<WCProduct[]>>,\n) {\n const key = ['wc-products-paginated', config.serverURL, page, perPage, JSON.stringify(filter ?? null)];\n return useSWR<WooCommerceResponse<WCProduct[]>>(\n key,\n () => {\n const fetcher = createWooCommerceFetcher(config);\n return createProductsQueries(fetcher).getProductsPaginated(page, perPage, filter);\n },\n swrOptions,\n );\n}\n\nexport function useFeaturedProducts(\n config: WooCommerceConfig,\n limit: number = 10,\n swrOptions?: SWRConfiguration<WCProduct[]>,\n) {\n const key = ['wc-products-featured', config.serverURL, limit];\n return useSWR<WCProduct[]>(\n key,\n () => {\n const fetcher = createWooCommerceFetcher(config);\n return createProductsQueries(fetcher).getFeaturedProducts(limit);\n },\n swrOptions,\n );\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","'use client';\n\nimport { createContext, useContext, useEffect, useReducer, type ReactNode } from 'react';\nimport { createWooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport { createOrdersQueries } from '@restApi/woocommerce/orders/queries';\nimport type { WooCommerceConfig } from '@restApi/woocommerce/client/types';\nimport type { WCOrder, WCCreateOrderInput } from '@restApi/woocommerce/orders/types';\n\nconst STORAGE_KEY = 'nw-cart';\n\nexport interface CartItem {\n productId: number;\n variationId?: number;\n quantity: number;\n name: string;\n price: string;\n image: string | null;\n}\n\nexport interface CheckoutOptions {\n billing?: WCCreateOrderInput['billing'];\n shipping?: WCCreateOrderInput['shipping'];\n paymentMethod?: string;\n paymentMethodTitle?: string;\n customerNote?: string;\n couponCodes?: string[];\n}\n\ninterface CartState {\n items: CartItem[];\n}\n\nexport type CartAction =\n | { type: 'ADD'; item: CartItem }\n | { type: 'REMOVE'; productId: number; variationId?: number }\n | { type: 'UPDATE'; productId: number; quantity: number; variationId?: number }\n | { type: 'CLEAR' }\n | { type: 'LOAD'; items: CartItem[] };\n\nfunction isSame(a: CartItem, b: { productId: number; variationId?: number }) {\n return a.productId === b.productId && (a.variationId ?? 0) === (b.variationId ?? 0);\n}\n\nexport function cartReducer(state: CartState, action: CartAction): CartState {\n switch (action.type) {\n case 'LOAD':\n return { items: action.items };\n\n case 'ADD': {\n const existing = state.items.find(i => isSame(i, action.item));\n if (existing) {\n return {\n items: state.items.map(i =>\n isSame(i, action.item) ? { ...i, quantity: i.quantity + action.item.quantity } : i,\n ),\n };\n }\n return { items: [...state.items, action.item] };\n }\n\n case 'REMOVE':\n return { items: state.items.filter(i => !isSame(i, action)) };\n\n case 'UPDATE':\n if (action.quantity <= 0) {\n return { items: state.items.filter(i => !isSame(i, action)) };\n }\n return {\n items: state.items.map(i =>\n isSame(i, action) ? { ...i, quantity: action.quantity } : i,\n ),\n };\n\n case 'CLEAR':\n return { items: [] };\n }\n}\n\nexport interface CartContextValue {\n items: CartItem[];\n totalItems: number;\n subtotal: string;\n isEmpty: boolean;\n addItem: (item: Omit<CartItem, 'quantity'>, quantity?: number) => void;\n removeItem: (productId: number, variationId?: number) => void;\n updateQuantity: (productId: number, quantity: number, variationId?: number) => void;\n clearCart: () => void;\n checkout: (config: WooCommerceConfig, options?: CheckoutOptions) => Promise<WCOrder>;\n}\n\nconst CartContext = createContext<CartContextValue | null>(null);\n\nexport function CartProvider({ children }: { children: ReactNode }) {\n const [state, dispatch] = useReducer(cartReducer, { items: [] });\n\n useEffect(() => {\n try {\n const stored = localStorage.getItem(STORAGE_KEY);\n if (stored) dispatch({ type: 'LOAD', items: JSON.parse(stored) as CartItem[] });\n } catch {\n // ignore malformed storage\n }\n }, []);\n\n useEffect(() => {\n try {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(state.items));\n } catch {\n // ignore quota errors\n }\n }, [state.items]);\n\n const totalItems = state.items.reduce((sum, i) => sum + i.quantity, 0);\n const subtotal = state.items\n .reduce((sum, i) => sum + parseFloat(i.price) * i.quantity, 0)\n .toFixed(2);\n\n function addItem(item: Omit<CartItem, 'quantity'>, quantity = 1) {\n dispatch({ type: 'ADD', item: { ...item, quantity } });\n }\n\n function removeItem(productId: number, variationId?: number) {\n dispatch({ type: 'REMOVE', productId, variationId });\n }\n\n function updateQuantity(productId: number, quantity: number, variationId?: number) {\n dispatch({ type: 'UPDATE', productId, quantity, variationId });\n }\n\n function clearCart() {\n dispatch({ type: 'CLEAR' });\n }\n\n async function checkout(config: WooCommerceConfig, options: CheckoutOptions = {}): Promise<WCOrder> {\n if (state.items.length === 0) throw new Error('Cannot checkout with an empty cart');\n\n const fetcher = createWooCommerceFetcher(config);\n const input: WCCreateOrderInput = {\n status: 'pending',\n line_items: state.items.map(i => ({\n product_id: i.productId,\n ...(i.variationId !== undefined ? { variation_id: i.variationId } : {}),\n quantity: i.quantity,\n })),\n ...(options.billing ? { billing: options.billing } : {}),\n ...(options.shipping ? { shipping: options.shipping } : {}),\n ...(options.paymentMethod ? { payment_method: options.paymentMethod } : {}),\n ...(options.paymentMethodTitle ? { payment_method_title: options.paymentMethodTitle } : {}),\n ...(options.customerNote ? { customer_note: options.customerNote } : {}),\n ...(options.couponCodes ? { coupon_lines: options.couponCodes.map(code => ({ code })) } : {}),\n };\n\n const order = await createOrdersQueries(fetcher).createOrder(input);\n dispatch({ type: 'CLEAR' });\n return order;\n }\n\n return (\n <CartContext.Provider\n value={{ items: state.items, totalItems, subtotal, isEmpty: state.items.length === 0, addItem, removeItem, updateQuantity, clearCart, checkout }}\n >\n {children}\n </CartContext.Provider>\n );\n}\n\nexport function useCart(): CartContextValue {\n const ctx = useContext(CartContext);\n if (!ctx) throw new Error('useCart must be used within a CartProvider');\n return ctx;\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","'use client';\n\nimport { createContext, useCallback, useContext, useEffect, useState, type ReactNode } from 'react';\nimport { createWooCommerceFetcher } from '@restApi/woocommerce/client/fetcher';\nimport { createCustomersQueries } from '@restApi/woocommerce/customers/queries';\nimport { createOrdersQueries } from '@restApi/woocommerce/orders/queries';\nimport type { WooCommerceConfig } from '@restApi/woocommerce/client/types';\nimport type { WCCustomer } from '@restApi/woocommerce/customers/types';\nimport type { WCOrder } from '@restApi/woocommerce/orders/types';\nimport type { UpdateCustomerInput } from '@restApi/woocommerce/customers/queries';\nimport { useAuth } from '@/hooks';\n\nexport interface CustomerContextValue {\n customer: WCCustomer | null;\n orders: WCOrder[];\n isLoading: boolean;\n error: string | null;\n updateCustomer: (data: UpdateCustomerInput) => Promise<WCCustomer>;\n refetch: () => void;\n}\n\nconst CustomerContext = createContext<CustomerContextValue | null>(null);\n\nexport function WooCommerceCustomerProvider({\n config,\n children,\n}: {\n config: WooCommerceConfig;\n children: ReactNode;\n}) {\n const { user, isLoggedIn } = useAuth();\n const [customer, setCustomer] = useState<WCCustomer | null>(null);\n const [orders, setOrders] = useState<WCOrder[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [tick, setTick] = useState(0);\n\n const fetchData = useCallback(async () => {\n if (!isLoggedIn || !user?.email) {\n setCustomer(null);\n setOrders([]);\n return;\n }\n setIsLoading(true);\n setError(null);\n try {\n const fetcher = createWooCommerceFetcher(config);\n const foundCustomer = await createCustomersQueries(fetcher).getCustomerByEmailNoCache(user.email);\n if (!foundCustomer) {\n setCustomer(null);\n setOrders([]);\n return;\n }\n const customerOrders = await createOrdersQueries(fetcher).getOrdersByCustomer(foundCustomer.id);\n setCustomer(foundCustomer);\n setOrders(customerOrders);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to load customer data');\n } finally {\n setIsLoading(false);\n }\n }, [isLoggedIn, user?.email, config, tick]);\n\n useEffect(() => {\n void fetchData();\n }, [fetchData]);\n\n const updateCustomer = async (data: UpdateCustomerInput): Promise<WCCustomer> => {\n if (!customer) throw new Error('No customer loaded');\n const fetcher = createWooCommerceFetcher(config);\n const updated = await createCustomersQueries(fetcher).updateCustomer(customer.id, data);\n setCustomer(updated);\n return updated;\n };\n\n const refetch = () => setTick((t) => t + 1);\n\n return (\n <CustomerContext.Provider value={{ customer, orders, isLoading, error, updateCustomer, refetch }}>\n {children}\n </CustomerContext.Provider>\n );\n}\n\nexport function useCustomer(): CustomerContextValue {\n const ctx = useContext(CustomerContext);\n if (!ctx) throw new Error('useCustomer must be used within a WooCommerceCustomerProvider');\n return ctx;\n}\n","import { resolveMessage, ErrorCode } from '@shared';\nimport type { YithWishlistConfig } from './types';\n\nconst USER_AGENT = 'NextWordpress YITH Wishlist Client';\nconst DEFAULT_CACHE_TTL = 3600;\n\ninterface NextRequestInit extends RequestInit {\n next?: {\n revalidate?: number | false;\n tags?: string[];\n };\n}\n\nexport class YithWishlistError extends Error {\n constructor(\n public readonly code: ErrorCode,\n public readonly status: number,\n public readonly url: string,\n message: string,\n public readonly upstreamCode?: string,\n public readonly upstreamMessage?: string,\n ) {\n super(message);\n this.name = 'YithWishlistError';\n }\n}\n\nfunction resolveYithErrorCode(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 === 'yith_wcwl_wishlist_not_found') return ErrorCode.WOO_WISHLIST_NOT_FOUND;\n if (upstreamCode === 'yith_wcwl_wishlist_item_not_found')\n return ErrorCode.WOO_WISHLIST_ITEM_NOT_FOUND;\n return ErrorCode.WOO_NOT_FOUND;\n }\n return ErrorCode.WOO_REQUEST_FAILED;\n}\n\nexport function createYithWishlistFetcher(config: YithWishlistConfig) {\n const cacheTTL = config.cacheTTL ?? DEFAULT_CACHE_TTL;\n\n function buildUrl(path: string): string {\n const base =\n typeof window !== 'undefined' && config.clientURL ? config.clientURL : config.serverURL;\n return `${base}${path}`;\n }\n\n function authHeaders(): Record<string, string> {\n return {\n 'User-Agent': USER_AGENT,\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${config.token}`,\n };\n }\n\n async function throwYithError(response: Response, url: string): Promise<never> {\n const body = (await response.json().catch(() => ({}))) as {\n message?: string;\n code?: string;\n };\n const errorCode = resolveYithErrorCode(response.status, body.code);\n throw new YithWishlistError(\n errorCode,\n response.status,\n url,\n resolveMessage(errorCode, config.errorMessages),\n body.code,\n body.message,\n );\n }\n\n async function yithFetch<T>(\n path: string,\n tags: string[] = ['yith-wishlist'],\n options?: RequestInit,\n ): Promise<T> {\n const url = buildUrl(path);\n const isMutation = options?.method && options.method !== 'GET';\n\n const response = await fetch(url, {\n ...options,\n headers: {\n ...authHeaders(),\n ...(options?.headers as Record<string, string>),\n },\n next: isMutation ? undefined : { tags, revalidate: cacheTTL },\n } as NextRequestInit);\n\n if (!response.ok) {\n await throwYithError(response, url);\n }\n\n return response.json() as Promise<T>;\n }\n\n async function yithFetchGraceful<T>(\n path: string,\n fallback: T,\n tags: string[] = ['yith-wishlist'],\n ): Promise<T> {\n try {\n return await yithFetch<T>(path, tags);\n } catch (err) {\n console.warn(`YITH Wishlist fetch failed for ${path}`, err);\n return fallback;\n }\n }\n\n async function yithMutate<T>(\n path: string,\n body: unknown,\n method: 'POST' | 'PATCH' | 'DELETE' = 'POST',\n ): Promise<T> {\n return yithFetch<T>(path, ['yith-wishlist'], {\n method,\n body: JSON.stringify(body),\n });\n }\n\n return { yithFetch, yithFetchGraceful, yithMutate };\n}\n\nexport type YithWishlistFetcher = ReturnType<typeof createYithWishlistFetcher>;\n","import type { YithWishlistFetcher } from './fetcher';\nimport type { WCWishlist } from './types';\n\nconst BASE = '/wp-json/yith/wishlist/v1/wishlists';\n\nexport function createWishlistQueries(fetcher: YithWishlistFetcher) {\n const { yithFetch, yithFetchGraceful } = fetcher;\n\n async function getWishlists(): Promise<WCWishlist[]> {\n return yithFetchGraceful<WCWishlist[]>(BASE, [], ['yith-wishlist', 'wishlists']);\n }\n\n async function getWishlistByToken(token: string): Promise<WCWishlist> {\n return yithFetch<WCWishlist>(`${BASE}/${token}`, ['yith-wishlist', 'wishlists', `wishlist-${token}`]);\n }\n\n return { getWishlists, getWishlistByToken };\n}\n","import useSWR from 'swr';\nimport type { SWRConfiguration } from 'swr';\nimport { createYithWishlistFetcher } from '@restApi/woocommerce/wishlist/fetcher';\nimport { createWishlistQueries } from '@restApi/woocommerce/wishlist/queries';\nimport type { YithWishlistConfig, WCWishlist } from '@restApi/woocommerce/wishlist/types';\n\nexport function useWishlists(\n config: YithWishlistConfig,\n swrOptions?: SWRConfiguration<WCWishlist[]>,\n) {\n const key = ['yith-wishlists', config.serverURL, config.token];\n return useSWR<WCWishlist[]>(\n key,\n () => {\n const fetcher = createYithWishlistFetcher(config);\n return createWishlistQueries(fetcher).getWishlists();\n },\n swrOptions,\n );\n}\n\nexport function useWishlist(\n config: YithWishlistConfig,\n wishlistToken: string | null | undefined,\n swrOptions?: SWRConfiguration<WCWishlist>,\n) {\n const key =\n wishlistToken != null\n ? ['yith-wishlist', config.serverURL, config.token, wishlistToken]\n : null;\n return useSWR<WCWishlist>(\n key,\n () => {\n const fetcher = createYithWishlistFetcher(config);\n return createWishlistQueries(fetcher).getWishlistByToken(wishlistToken!);\n },\n swrOptions,\n );\n}\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 useSWR from 'swr';\nimport type { SWRConfiguration } from 'swr';\nimport { createWPGraphQLFetcher } from '@wpgraphql/client/fetcher';\nimport { createPostsQueries } from '@wpgraphql/core/posts/queries';\nimport type { WPGraphQLConfig, GQLConnection } from '@wpgraphql/client/types';\nimport type { GQLPost, GQLPostFilter } from '@wpgraphql/core/posts/types';\n\nexport function useWPGraphQL<TData>(\n config: WPGraphQLConfig,\n query: string,\n variables?: Record<string, unknown>,\n tags?: string[],\n swrOptions?: SWRConfiguration<TData>,\n) {\n const key = ['wpgraphql', config.clientURL, query, JSON.stringify(variables ?? null)];\n return useSWR<TData>(\n key,\n () => {\n const fetcher = createWPGraphQLFetcher(config);\n return fetcher.gqlFetch<TData>(query, variables, tags);\n },\n swrOptions,\n );\n}\n\nexport function useGQLPosts(\n config: WPGraphQLConfig,\n first?: number,\n after?: string,\n filter?: GQLPostFilter,\n swrOptions?: SWRConfiguration<GQLConnection<GQLPost>>,\n) {\n const key = ['wpgraphql-posts', config.clientURL, first, after, JSON.stringify(filter ?? null)];\n return useSWR<GQLConnection<GQLPost>>(\n key,\n () => {\n const fetcher = createWPGraphQLFetcher(config);\n return createPostsQueries(fetcher).getPosts(first, after, filter);\n },\n swrOptions,\n );\n}\n\nexport function useGQLPostBySlug(\n config: WPGraphQLConfig,\n slug: string | null | undefined,\n swrOptions?: SWRConfiguration<GQLPost | null>,\n) {\n const key = slug ? ['wpgraphql-post-slug', config.clientURL, slug] : null;\n return useSWR<GQLPost | null>(\n key,\n () => {\n const fetcher = createWPGraphQLFetcher(config);\n return createPostsQueries(fetcher).getPostBySlug(slug!);\n },\n swrOptions,\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 useSWR from 'swr';\nimport type { SWRConfiguration } from 'swr';\nimport { createFetcher } from '@restApi/core/client/fetcher';\nimport { createWPULikeQueries } from '@restApi/wpulike/queries';\nimport type { NextWordpressConfig } from '@shared/types';\nimport type {\n WPULikeStats,\n WPULikeStatsParams,\n WPULikeCheckResponse,\n WPULikeCheckParams,\n WPULikeStatus,\n WPULikeVoteResponse,\n} from '@restApi/wpulike/types';\n\nexport function useWPULikeStats(\n config: NextWordpressConfig,\n params: WPULikeStatsParams | null | undefined,\n swrOptions?: SWRConfiguration<WPULikeStats>,\n) {\n const key = params ? ['wpulike-stats', config.clientURL, params.id, params.type ?? 'post'] : null;\n return useSWR<WPULikeStats>(\n key,\n () => {\n const fetcher = createFetcher(config);\n return createWPULikeQueries(fetcher).getLikeStats(params!);\n },\n swrOptions,\n );\n}\n\nexport function useWPULikeCheck(\n config: NextWordpressConfig,\n params: WPULikeCheckParams | null | undefined,\n swrOptions?: SWRConfiguration<WPULikeCheckResponse>,\n) {\n const key = params ? ['wpulike-check', config.clientURL, params.id, params.type ?? 'post'] : null;\n return useSWR<WPULikeCheckResponse>(\n key,\n () => {\n const fetcher = createFetcher(config);\n return createWPULikeQueries(fetcher).checkLikeStatus(params!);\n },\n swrOptions,\n );\n}\n\nexport function useWPULike(\n config: NextWordpressConfig,\n params: WPULikeStatsParams | null | undefined,\n swrOptions?: SWRConfiguration<WPULikeStats>,\n) {\n const key = params ? ['wpulike-stats', config.clientURL, params.id, params.type ?? 'post'] : null;\n const { data, error, isLoading, mutate } = useSWR<WPULikeStats>(\n key,\n () => {\n const fetcher = createFetcher(config);\n return createWPULikeQueries(fetcher).getLikeStats(params!);\n },\n swrOptions,\n );\n\n async function vote(status: WPULikeStatus, authToken?: string): Promise<WPULikeVoteResponse> {\n const fetcher = createFetcher(config);\n const result = await createWPULikeQueries(fetcher).vote({ ...params!, status }, authToken);\n await mutate();\n return result;\n }\n\n return { data, error, isLoading, vote };\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 useSWRMutation from 'swr/mutation';\nimport { createCF7Queries } from '@restApi/contactForm7/queries';\nimport type { NextWordpressConfig } from '@shared/types';\nimport type { CF7SubmissionResponse } from '@restApi/contactForm7/types';\n\ntype CF7SubmitArg = { formId: number; fields: Record<string, string> };\n\nexport function useCF7Submit(config: NextWordpressConfig) {\n return useSWRMutation<CF7SubmissionResponse, Error, string, CF7SubmitArg>(\n `cf7-submit:${config.serverURL}`,\n async (_, { arg }) => {\n return createCF7Queries(config).submitForm(arg.formId, arg.fields);\n },\n );\n}\n"]}