@atomic-solutions/wordpress-react 0.1.0 → 0.2.0

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.
@@ -65,7 +65,7 @@ var usePosts = (params, options) => {
65
65
  ...options
66
66
  });
67
67
  };
68
- var useInfinitePosts = (params) => {
68
+ var useInfinitePosts = (params, options) => {
69
69
  const client = useWordPressClient();
70
70
  const queryKeys2 = useWordPressQueryKeys();
71
71
  return useInfiniteQuery({
@@ -74,8 +74,9 @@ var useInfinitePosts = (params) => {
74
74
  initialPageParam: 1,
75
75
  getNextPageParam: (lastPage) => lastPage.pagination.hasNextPage ? lastPage.pagination.nextPage : void 0,
76
76
  getPreviousPageParam: (firstPage) => firstPage.pagination.hasPrevPage ? firstPage.pagination.prevPage : void 0,
77
- staleTime: 1e3 * 60 * 60
77
+ staleTime: 1e3 * 60 * 60,
78
78
  // 1 hour
79
+ ...options
79
80
  });
80
81
  };
81
82
  var usePost = (id, options) => {
@@ -116,7 +117,7 @@ var useCategories = (params, options) => {
116
117
  ...options
117
118
  });
118
119
  };
119
- var useInfiniteCategories = (params) => {
120
+ var useInfiniteCategories = (params, options) => {
120
121
  const client = useWordPressClient();
121
122
  const queryKeys2 = useWordPressQueryKeys();
122
123
  return useInfiniteQuery2({
@@ -127,8 +128,9 @@ var useInfiniteCategories = (params) => {
127
128
  getPreviousPageParam: (firstPage) => firstPage.pagination.hasPrevPage ? firstPage.pagination.prevPage : void 0,
128
129
  staleTime: 1e3 * 60 * 60 * 24 * 7,
129
130
  // 1 week
130
- gcTime: 1e3 * 60 * 60 * 24 * 30
131
+ gcTime: 1e3 * 60 * 60 * 24 * 30,
131
132
  // 30 days
133
+ ...options
132
134
  });
133
135
  };
134
136
  var useCategory = (id, options) => {
@@ -228,4 +230,4 @@ export {
228
230
  useLogin,
229
231
  useValidateToken
230
232
  };
231
- //# sourceMappingURL=chunk-3MTIYB4V.js.map
233
+ //# sourceMappingURL=chunk-5PIK3BB6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/useWordPressClient.ts","../src/hooks/queryKeys.ts","../src/hooks/posts.ts","../src/hooks/categories.ts","../src/hooks/media.ts","../src/hooks/users.ts","../src/hooks/auth.ts"],"sourcesContent":["/**\n * Hook for accessing WordPress client and query keys from context\n */\n\nimport { useContext } from 'react';\nimport type { WordPressClient } from '@atomic-solutions/wordpress-api-client';\n\nimport { WordPressContext } from '../provider/WordPressContext';\nimport type { QueryKeys } from './queryKeys';\n\n/**\n * Hook to access the WordPress client from context\n *\n * Must be used within a WordPressProvider\n *\n * @returns WordPress client instance\n * @throws Error if used outside WordPressProvider\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const client = useWordPressClient();\n *\n * const handleFetchPosts = async () => {\n * const posts = await client.posts.list({ per_page: 10 });\n * console.log(posts);\n * };\n *\n * return <button onClick={handleFetchPosts}>Fetch Posts</button>;\n * };\n * ```\n */\nexport const useWordPressClient = (): WordPressClient => {\n const context = useContext(WordPressContext);\n\n if (!context) {\n throw new Error('useWordPressClient must be used within a WordPressProvider');\n }\n\n return context.client;\n};\n\n/**\n * Hook to access WordPress query keys from context\n *\n * Must be used within a WordPressProvider\n *\n * @returns Query keys instance\n * @throws Error if used outside WordPressProvider\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const queryKeys = useWordPressQueryKeys();\n * const queryClient = useQueryClient();\n *\n * const handleInvalidate = () => {\n * queryClient.invalidateQueries({ queryKey: queryKeys.posts.all });\n * };\n *\n * return <button onClick={handleInvalidate}>Refresh Posts</button>;\n * }\n * ```\n */\nexport const useWordPressQueryKeys = (): QueryKeys => {\n const context = useContext(WordPressContext);\n\n if (!context) {\n throw new Error('useWordPressQueryKeys must be used within a WordPressProvider');\n }\n\n return context.queryKeys;\n};\n","/**\n * React Query key factory\n */\n\nimport type { CategoryParams, PostParams } from '@atomic-solutions/wordpress-api-client';\n\n/**\n * Query keys for WordPress API\n */\nexport interface QueryKeys {\n /** All WordPress queries */\n all: readonly string[];\n\n /** Posts queries */\n posts: {\n all: readonly unknown[];\n lists: () => readonly unknown[];\n list: (params?: PostParams) => readonly unknown[];\n details: () => readonly unknown[];\n detail: (id: number) => readonly unknown[];\n bySlug: (slug: string) => readonly unknown[];\n };\n\n /** Categories queries */\n categories: {\n all: readonly unknown[];\n lists: () => readonly unknown[];\n list: (params?: CategoryParams) => readonly unknown[];\n details: () => readonly unknown[];\n detail: (id: number) => readonly unknown[];\n };\n\n /** Media queries */\n media: {\n all: readonly unknown[];\n details: () => readonly unknown[];\n detail: (id: number) => readonly unknown[];\n };\n\n /** Users queries */\n users: {\n all: readonly unknown[];\n me: () => readonly unknown[];\n detail: (id: number) => readonly unknown[];\n };\n}\n\n/**\n * Create query keys factory with optional prefix\n *\n * @param prefix - Optional prefix for all query keys\n * @returns Query keys factory\n */\nexport const createQueryKeys = (prefix: string[] = ['wordpress']): QueryKeys => {\n return {\n all: prefix,\n\n posts: {\n all: [...prefix, 'posts'] as const,\n lists: () => [...prefix, 'posts', 'list'] as const,\n list: (params?: PostParams) => [...prefix, 'posts', 'list', params] as const,\n details: () => [...prefix, 'posts', 'detail'] as const,\n detail: (id: number) => [...prefix, 'posts', 'detail', id] as const,\n bySlug: (slug: string) => [...prefix, 'posts', 'slug', slug] as const,\n },\n\n categories: {\n all: [...prefix, 'categories'] as const,\n lists: () => [...prefix, 'categories', 'list'] as const,\n list: (params?: CategoryParams) => [...prefix, 'categories', 'list', params] as const,\n details: () => [...prefix, 'categories', 'detail'] as const,\n detail: (id: number) => [...prefix, 'categories', 'detail', id] as const,\n },\n\n media: {\n all: [...prefix, 'media'] as const,\n details: () => [...prefix, 'media', 'detail'] as const,\n detail: (id: number) => [...prefix, 'media', 'detail', id] as const,\n },\n\n users: {\n all: [...prefix, 'users'] as const,\n me: () => [...prefix, 'users', 'me'] as const,\n detail: (id: number) => [...prefix, 'users', 'detail', id] as const,\n },\n };\n};\n\nexport const queryKeys = createQueryKeys();\n","/**\n * Posts React Query hooks\n */\n\nimport type { PaginatedResponse, Post, PostParams } from '@atomic-solutions/wordpress-api-client';\nimport { useInfiniteQuery, useQuery } from '@tanstack/react-query';\n\nimport type { InfiniteQueryOptions, QueryOptions } from '../types';\nimport { useWordPressClient, useWordPressQueryKeys } from './useWordPressClient';\n\n/**\n * Hook for fetching paginated posts\n *\n * @param params - Post query parameters\n * @param options - React Query options\n */\nexport const usePosts = (params?: PostParams, options?: QueryOptions<PaginatedResponse<Post>>) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useQuery({\n queryKey: queryKeys.posts.list(params),\n queryFn: () => client.posts.list(params),\n staleTime: 1000 * 60 * 60, // 1 hour\n ...options,\n });\n};\n\n/**\n * Hook for infinite scrolling posts\n *\n * @param params - Base post query parameters (page will be managed automatically)\n */\nexport const useInfinitePosts = (\n params?: Omit<PostParams, 'page'>,\n options?: InfiniteQueryOptions<PaginatedResponse<Post>>\n) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useInfiniteQuery({\n queryKey: queryKeys.posts.lists(),\n queryFn: ({ pageParam = 1 }) => client.posts.list({ ...params, page: pageParam as number }),\n initialPageParam: 1,\n getNextPageParam: (lastPage) =>\n lastPage.pagination.hasNextPage ? lastPage.pagination.nextPage : undefined,\n getPreviousPageParam: (firstPage) =>\n firstPage.pagination.hasPrevPage ? firstPage.pagination.prevPage : undefined,\n staleTime: 1000 * 60 * 60, // 1 hour\n ...options,\n });\n};\n\n/**\n * Hook for fetching a single post by ID\n *\n * @param id - Post ID\n * @param options - React Query options\n */\nexport const usePost = (id: number, options?: QueryOptions<Post>) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useQuery({\n queryKey: queryKeys.posts.detail(id),\n queryFn: () => client.posts.get(id),\n staleTime: 1000 * 60 * 60, // 1 hour\n enabled: id > 0,\n ...options,\n });\n};\n\n/**\n * Hook for fetching a single post by slug\n *\n * @param slug - Post slug\n * @param options - React Query options (`enabled` is derived from slug and cannot be overridden)\n */\nexport const usePostBySlug = (\n slug: string,\n options?: Omit<QueryOptions<Post | null>, 'enabled'>\n) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useQuery({\n queryKey: queryKeys.posts.bySlug(slug),\n queryFn: () => client.posts.getBySlug(slug),\n staleTime: 1000 * 60 * 60, // 1 hour\n enabled: !!slug,\n ...options,\n });\n};\n","/**\n * Categories React Query hooks\n */\n\nimport type {\n Category,\n CategoryParams,\n PaginatedResponse,\n} from '@atomic-solutions/wordpress-api-client';\nimport { useInfiniteQuery, useQuery } from '@tanstack/react-query';\n\nimport type { InfiniteQueryOptions, QueryOptions } from '../types';\nimport { useWordPressClient, useWordPressQueryKeys } from './useWordPressClient';\n\n/**\n * Hook for fetching paginated categories\n *\n * @param params - Category query parameters\n * @param options - React Query options\n */\nexport const useCategories = (\n params?: CategoryParams,\n options?: QueryOptions<PaginatedResponse<Category>>\n) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useQuery({\n queryKey: queryKeys.categories.list(params),\n queryFn: () => client.categories.list(params),\n staleTime: 1000 * 60 * 60 * 24 * 7, // 1 week\n ...options,\n });\n};\n\n/**\n * Hook for infinite scrolling categories\n *\n * @param params - Base category query parameters\n */\nexport const useInfiniteCategories = (\n params?: Omit<CategoryParams, 'page'>,\n options?: InfiniteQueryOptions<PaginatedResponse<Category>>\n) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useInfiniteQuery({\n queryKey: queryKeys.categories.lists(),\n queryFn: ({ pageParam = 1 }) =>\n client.categories.list({ ...params, page: pageParam as number }),\n initialPageParam: 1,\n getNextPageParam: (lastPage) =>\n lastPage.pagination.hasNextPage ? lastPage.pagination.nextPage : undefined,\n getPreviousPageParam: (firstPage) =>\n firstPage.pagination.hasPrevPage ? firstPage.pagination.prevPage : undefined,\n staleTime: 1000 * 60 * 60 * 24 * 7, // 1 week\n gcTime: 1000 * 60 * 60 * 24 * 30, // 30 days\n ...options,\n });\n};\n\n/**\n * Hook for fetching a single category by ID\n *\n * @param id - Category ID\n * @param options - React Query options\n */\nexport const useCategory = (id: number, options?: QueryOptions<Category>) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useQuery({\n queryKey: queryKeys.categories.detail(id),\n queryFn: () => client.categories.get(id),\n staleTime: 1000 * 60 * 60 * 24 * 7, // 1 week\n enabled: id > 0,\n ...options,\n });\n};\n","/**\n * Media React Query hooks\n */\n\nimport type { Media } from '@atomic-solutions/wordpress-api-client';\nimport { useQuery } from '@tanstack/react-query';\n\nimport type { QueryOptions } from '../types';\nimport { useWordPressClient, useWordPressQueryKeys } from './useWordPressClient';\n\n/**\n * Hook for fetching a single media item by ID\n *\n * @param id - Media item ID\n * @param options - React Query options\n */\nexport const useMediaItem = (id: number | undefined, options?: QueryOptions<Media>) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useQuery({\n queryKey: queryKeys.media.detail(id || 0),\n queryFn: () => client.media.get(id!),\n staleTime: 1000 * 60 * 60 * 24, // 1 day\n gcTime: 1000 * 60 * 60 * 24 * 7, // 1 week\n enabled: !!id && id > 0,\n ...options,\n });\n};\n","/**\n * Users React Query hooks\n */\n\nimport type { CurrentUser, User } from '@atomic-solutions/wordpress-api-client';\nimport { useQuery } from '@tanstack/react-query';\n\nimport type { QueryOptions } from '../types';\nimport { useWordPressClient, useWordPressQueryKeys } from './useWordPressClient';\n\n/**\n * Hook for fetching current authenticated user\n *\n * Requires JWT token to be configured\n *\n * @param options - React Query options\n */\nexport const useCurrentUser = (options?: QueryOptions<CurrentUser>) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useQuery({\n queryKey: queryKeys.users.me(),\n queryFn: () => client.users.me(),\n staleTime: 1000 * 60 * 5, // 5 minutes\n retry: false, // Don't retry auth failures\n ...options,\n });\n};\n\n/**\n * Hook for fetching a user by ID\n *\n * @param id - User ID\n * @param options - React Query options\n */\nexport const useUser = (id: number, options?: QueryOptions<User>) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useQuery({\n queryKey: queryKeys.users.detail(id),\n queryFn: () => client.users.get(id),\n staleTime: 1000 * 60 * 60, // 1 hour\n enabled: id > 0,\n ...options,\n });\n};\n","/**\n * Auth React Query hooks\n */\n\nimport type { JwtLoginInput, JwtTokenResponse } from '@atomic-solutions/wordpress-api-client';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\n\nimport type { MutationOptions } from '../types';\nimport { useWordPressClient, useWordPressQueryKeys } from './useWordPressClient';\n\n/**\n * Hook for logging in with username/password\n *\n * Returns JWT token on success\n *\n * @param options - React Query mutation options\n *\n * @example\n * ```tsx\n * const { mutate: login, isPending } = useLogin({\n * onSuccess: (data) => {\n * // Save token to storage\n * AsyncStorage.setItem('wp_jwt_token', data.token);\n * },\n * onError: (error) => {\n * // Handle login error\n * Alert.alert('Error', error.message);\n * },\n * });\n *\n * login({ username: 'user', password: 'pass' });\n * ```\n */\nexport const useLogin = (options?: MutationOptions<JwtTokenResponse, Error, JwtLoginInput>) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: (input: JwtLoginInput) => client.auth.login(input),\n onSuccess: () => {\n // Invalidate user queries after login\n queryClient.invalidateQueries({ queryKey: queryKeys.users.all });\n },\n ...options,\n });\n};\n\n/**\n * Hook for validating current JWT token\n *\n * @param options - React Query mutation options\n */\nexport const useValidateToken = (options?: MutationOptions<boolean, Error, void>) => {\n const client = useWordPressClient();\n\n return useMutation({\n mutationFn: () => client.auth.validateToken(),\n ...options,\n });\n};\n"],"mappings":"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","names":["queryKeys","useInfiniteQuery","useQuery","queryKeys","useQuery","useInfiniteQuery","useQuery","queryKeys","useQuery","useQuery","queryKeys","useQuery","queryKeys"]}
@@ -107,7 +107,7 @@ var usePosts = (params, options) => {
107
107
  ...options
108
108
  });
109
109
  };
110
- var useInfinitePosts = (params) => {
110
+ var useInfinitePosts = (params, options) => {
111
111
  const client = useWordPressClient();
112
112
  const queryKeys2 = useWordPressQueryKeys();
113
113
  return (0, import_react_query.useInfiniteQuery)({
@@ -116,8 +116,9 @@ var useInfinitePosts = (params) => {
116
116
  initialPageParam: 1,
117
117
  getNextPageParam: (lastPage) => lastPage.pagination.hasNextPage ? lastPage.pagination.nextPage : void 0,
118
118
  getPreviousPageParam: (firstPage) => firstPage.pagination.hasPrevPage ? firstPage.pagination.prevPage : void 0,
119
- staleTime: 1e3 * 60 * 60
119
+ staleTime: 1e3 * 60 * 60,
120
120
  // 1 hour
121
+ ...options
121
122
  });
122
123
  };
123
124
  var usePost = (id, options) => {
@@ -158,7 +159,7 @@ var useCategories = (params, options) => {
158
159
  ...options
159
160
  });
160
161
  };
161
- var useInfiniteCategories = (params) => {
162
+ var useInfiniteCategories = (params, options) => {
162
163
  const client = useWordPressClient();
163
164
  const queryKeys2 = useWordPressQueryKeys();
164
165
  return (0, import_react_query2.useInfiniteQuery)({
@@ -169,8 +170,9 @@ var useInfiniteCategories = (params) => {
169
170
  getPreviousPageParam: (firstPage) => firstPage.pagination.hasPrevPage ? firstPage.pagination.prevPage : void 0,
170
171
  staleTime: 1e3 * 60 * 60 * 24 * 7,
171
172
  // 1 week
172
- gcTime: 1e3 * 60 * 60 * 24 * 30
173
+ gcTime: 1e3 * 60 * 60 * 24 * 30,
173
174
  // 30 days
175
+ ...options
174
176
  });
175
177
  };
176
178
  var useCategory = (id, options) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/index.ts","../../src/hooks/useWordPressClient.ts","../../src/provider/WordPressContext.ts","../../src/hooks/queryKeys.ts","../../src/hooks/posts.ts","../../src/hooks/categories.ts","../../src/hooks/media.ts","../../src/hooks/users.ts","../../src/hooks/auth.ts"],"sourcesContent":["/**\n * Hooks exports\n */\n\nexport { useWordPressClient, useWordPressQueryKeys } from './useWordPressClient';\nexport { createQueryKeys, type QueryKeys } from './queryKeys';\n\n// Post hooks\nexport { usePosts, useInfinitePosts, usePost, usePostBySlug } from './posts';\n\n// Category hooks\nexport { useCategories, useInfiniteCategories, useCategory } from './categories';\n\n// Media hooks\nexport { useMediaItem } from './media';\n\n// User hooks\nexport { useCurrentUser, useUser } from './users';\n\n// Auth hooks\nexport { useLogin, useValidateToken } from './auth';\n","/**\n * Hook for accessing WordPress client and query keys from context\n */\n\nimport { useContext } from 'react';\nimport type { WordPressClient } from '@atomic-solutions/wordpress-api-client';\n\nimport { WordPressContext } from '../provider/WordPressContext';\nimport type { QueryKeys } from './queryKeys';\n\n/**\n * Hook to access the WordPress client from context\n *\n * Must be used within a WordPressProvider\n *\n * @returns WordPress client instance\n * @throws Error if used outside WordPressProvider\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const client = useWordPressClient();\n *\n * const handleFetchPosts = async () => {\n * const posts = await client.posts.list({ per_page: 10 });\n * console.log(posts);\n * };\n *\n * return <button onClick={handleFetchPosts}>Fetch Posts</button>;\n * };\n * ```\n */\nexport const useWordPressClient = (): WordPressClient => {\n const context = useContext(WordPressContext);\n\n if (!context) {\n throw new Error('useWordPressClient must be used within a WordPressProvider');\n }\n\n return context.client;\n};\n\n/**\n * Hook to access WordPress query keys from context\n *\n * Must be used within a WordPressProvider\n *\n * @returns Query keys instance\n * @throws Error if used outside WordPressProvider\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const queryKeys = useWordPressQueryKeys();\n * const queryClient = useQueryClient();\n *\n * const handleInvalidate = () => {\n * queryClient.invalidateQueries({ queryKey: queryKeys.posts.all });\n * };\n *\n * return <button onClick={handleInvalidate}>Refresh Posts</button>;\n * }\n * ```\n */\nexport const useWordPressQueryKeys = (): QueryKeys => {\n const context = useContext(WordPressContext);\n\n if (!context) {\n throw new Error('useWordPressQueryKeys must be used within a WordPressProvider');\n }\n\n return context.queryKeys;\n};\n","/**\n * WordPress client context\n */\n\nimport { createContext } from 'react';\nimport type { WordPressClient } from '@atomic-solutions/wordpress-api-client';\n\nimport type { QueryKeys } from '../hooks/queryKeys';\n\n/**\n * WordPress context value\n */\nexport interface WordPressContextValue {\n client: WordPressClient;\n queryKeys: QueryKeys;\n}\n\n/**\n * React context for WordPress client and query keys\n */\nexport const WordPressContext = createContext<WordPressContextValue | null>(null);\n","/**\n * React Query key factory\n */\n\nimport type { CategoryParams, PostParams } from '@atomic-solutions/wordpress-api-client';\n\n/**\n * Query keys for WordPress API\n */\nexport interface QueryKeys {\n /** All WordPress queries */\n all: readonly string[];\n\n /** Posts queries */\n posts: {\n all: readonly unknown[];\n lists: () => readonly unknown[];\n list: (params?: PostParams) => readonly unknown[];\n details: () => readonly unknown[];\n detail: (id: number) => readonly unknown[];\n bySlug: (slug: string) => readonly unknown[];\n };\n\n /** Categories queries */\n categories: {\n all: readonly unknown[];\n lists: () => readonly unknown[];\n list: (params?: CategoryParams) => readonly unknown[];\n details: () => readonly unknown[];\n detail: (id: number) => readonly unknown[];\n };\n\n /** Media queries */\n media: {\n all: readonly unknown[];\n details: () => readonly unknown[];\n detail: (id: number) => readonly unknown[];\n };\n\n /** Users queries */\n users: {\n all: readonly unknown[];\n me: () => readonly unknown[];\n detail: (id: number) => readonly unknown[];\n };\n}\n\n/**\n * Create query keys factory with optional prefix\n *\n * @param prefix - Optional prefix for all query keys\n * @returns Query keys factory\n */\nexport const createQueryKeys = (prefix: string[] = ['wordpress']): QueryKeys => {\n return {\n all: prefix,\n\n posts: {\n all: [...prefix, 'posts'] as const,\n lists: () => [...prefix, 'posts', 'list'] as const,\n list: (params?: PostParams) => [...prefix, 'posts', 'list', params] as const,\n details: () => [...prefix, 'posts', 'detail'] as const,\n detail: (id: number) => [...prefix, 'posts', 'detail', id] as const,\n bySlug: (slug: string) => [...prefix, 'posts', 'slug', slug] as const,\n },\n\n categories: {\n all: [...prefix, 'categories'] as const,\n lists: () => [...prefix, 'categories', 'list'] as const,\n list: (params?: CategoryParams) => [...prefix, 'categories', 'list', params] as const,\n details: () => [...prefix, 'categories', 'detail'] as const,\n detail: (id: number) => [...prefix, 'categories', 'detail', id] as const,\n },\n\n media: {\n all: [...prefix, 'media'] as const,\n details: () => [...prefix, 'media', 'detail'] as const,\n detail: (id: number) => [...prefix, 'media', 'detail', id] as const,\n },\n\n users: {\n all: [...prefix, 'users'] as const,\n me: () => [...prefix, 'users', 'me'] as const,\n detail: (id: number) => [...prefix, 'users', 'detail', id] as const,\n },\n };\n};\n\nexport const queryKeys = createQueryKeys();\n","/**\n * Posts React Query hooks\n */\n\nimport type { PaginatedResponse, Post, PostParams } from '@atomic-solutions/wordpress-api-client';\nimport { useInfiniteQuery, useQuery, type UseQueryOptions } from '@tanstack/react-query';\n\nimport { useWordPressClient, useWordPressQueryKeys } from './useWordPressClient';\n\ntype UsePostsOptions = Omit<\n UseQueryOptions<PaginatedResponse<Post>, Error>,\n 'queryKey' | 'queryFn'\n>;\n\ntype UsePostOptions = Omit<UseQueryOptions<Post, Error>, 'queryKey' | 'queryFn'>;\n\n/**\n * Hook for fetching paginated posts\n *\n * @param params - Post query parameters\n * @param options - React Query options\n */\nexport const usePosts = (params?: PostParams, options?: UsePostsOptions) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useQuery({\n queryKey: queryKeys.posts.list(params),\n queryFn: () => client.posts.list(params),\n staleTime: 1000 * 60 * 60, // 1 hour\n ...options,\n });\n};\n\n/**\n * Hook for infinite scrolling posts\n *\n * @param params - Base post query parameters (page will be managed automatically)\n */\nexport const useInfinitePosts = (params?: Omit<PostParams, 'page'>) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useInfiniteQuery({\n queryKey: queryKeys.posts.lists(),\n queryFn: ({ pageParam = 1 }) => client.posts.list({ ...params, page: pageParam as number }),\n initialPageParam: 1,\n getNextPageParam: (lastPage) =>\n lastPage.pagination.hasNextPage ? lastPage.pagination.nextPage : undefined,\n getPreviousPageParam: (firstPage) =>\n firstPage.pagination.hasPrevPage ? firstPage.pagination.prevPage : undefined,\n staleTime: 1000 * 60 * 60, // 1 hour\n });\n};\n\n/**\n * Hook for fetching a single post by ID\n *\n * @param id - Post ID\n * @param options - React Query options\n */\nexport const usePost = (id: number, options?: UsePostOptions) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useQuery({\n queryKey: queryKeys.posts.detail(id),\n queryFn: () => client.posts.get(id),\n staleTime: 1000 * 60 * 60, // 1 hour\n enabled: id > 0,\n ...options,\n });\n};\n\ntype UsePostBySlugOptions = Omit<\n UseQueryOptions<Post | null, Error>,\n 'queryKey' | 'queryFn' | 'enabled'\n>;\n\n/**\n * Hook for fetching a single post by slug\n *\n * @param slug - Post slug\n * @param options - React Query options\n */\nexport const usePostBySlug = (slug: string, options?: UsePostBySlugOptions) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useQuery({\n queryKey: queryKeys.posts.bySlug(slug),\n queryFn: () => client.posts.getBySlug(slug),\n staleTime: 1000 * 60 * 60, // 1 hour\n enabled: !!slug,\n ...options,\n });\n};\n","/**\n * Categories React Query hooks\n */\n\nimport type {\n Category,\n CategoryParams,\n PaginatedResponse,\n} from '@atomic-solutions/wordpress-api-client';\nimport { useInfiniteQuery, useQuery, type UseQueryOptions } from '@tanstack/react-query';\n\nimport { useWordPressClient, useWordPressQueryKeys } from './useWordPressClient';\n\ntype UseCategoriesOptions = Omit<\n UseQueryOptions<PaginatedResponse<Category>, Error>,\n 'queryKey' | 'queryFn'\n>;\n\ntype UseCategoryOptions = Omit<UseQueryOptions<Category, Error>, 'queryKey' | 'queryFn'>;\n\n/**\n * Hook for fetching paginated categories\n *\n * @param params - Category query parameters\n * @param options - React Query options\n */\nexport const useCategories = (params?: CategoryParams, options?: UseCategoriesOptions) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useQuery({\n queryKey: queryKeys.categories.list(params),\n queryFn: () => client.categories.list(params),\n staleTime: 1000 * 60 * 60 * 24 * 7, // 1 week\n ...options,\n });\n};\n\n/**\n * Hook for infinite scrolling categories\n *\n * @param params - Base category query parameters\n */\nexport const useInfiniteCategories = (params?: Omit<CategoryParams, 'page'>) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useInfiniteQuery({\n queryKey: queryKeys.categories.lists(),\n queryFn: ({ pageParam = 1 }) =>\n client.categories.list({ ...params, page: pageParam as number }),\n initialPageParam: 1,\n getNextPageParam: (lastPage) =>\n lastPage.pagination.hasNextPage ? lastPage.pagination.nextPage : undefined,\n getPreviousPageParam: (firstPage) =>\n firstPage.pagination.hasPrevPage ? firstPage.pagination.prevPage : undefined,\n staleTime: 1000 * 60 * 60 * 24 * 7, // 1 week\n gcTime: 1000 * 60 * 60 * 24 * 30, // 30 days\n });\n};\n\n/**\n * Hook for fetching a single category by ID\n *\n * @param id - Category ID\n * @param options - React Query options\n */\nexport const useCategory = (id: number, options?: UseCategoryOptions) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useQuery({\n queryKey: queryKeys.categories.detail(id),\n queryFn: () => client.categories.get(id),\n staleTime: 1000 * 60 * 60 * 24 * 7, // 1 week\n enabled: id > 0,\n ...options,\n });\n};\n","/**\n * Media React Query hooks\n */\n\nimport type { Media } from '@atomic-solutions/wordpress-api-client';\nimport { useQuery, type UseQueryOptions } from '@tanstack/react-query';\n\nimport { useWordPressClient, useWordPressQueryKeys } from './useWordPressClient';\n\ntype UseMediaItemOptions = Omit<UseQueryOptions<Media, Error>, 'queryKey' | 'queryFn'>;\n\n/**\n * Hook for fetching a single media item by ID\n *\n * @param id - Media item ID\n * @param options - React Query options\n */\nexport const useMediaItem = (id: number | undefined, options?: UseMediaItemOptions) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useQuery({\n queryKey: queryKeys.media.detail(id || 0),\n queryFn: () => client.media.get(id!),\n staleTime: 1000 * 60 * 60 * 24, // 1 day\n gcTime: 1000 * 60 * 60 * 24 * 7, // 1 week\n enabled: !!id && id > 0,\n ...options,\n });\n};\n","/**\n * Users React Query hooks\n */\n\nimport type { CurrentUser, User } from '@atomic-solutions/wordpress-api-client';\nimport { useQuery, type UseQueryOptions } from '@tanstack/react-query';\n\nimport { useWordPressClient, useWordPressQueryKeys } from './useWordPressClient';\n\ntype UseCurrentUserOptions = Omit<UseQueryOptions<CurrentUser, Error>, 'queryKey' | 'queryFn'>;\n\ntype UseUserOptions = Omit<UseQueryOptions<User, Error>, 'queryKey' | 'queryFn'>;\n\n/**\n * Hook for fetching current authenticated user\n *\n * Requires JWT token to be configured\n *\n * @param options - React Query options\n */\nexport const useCurrentUser = (options?: UseCurrentUserOptions) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useQuery({\n queryKey: queryKeys.users.me(),\n queryFn: () => client.users.me(),\n staleTime: 1000 * 60 * 5, // 5 minutes\n retry: false, // Don't retry auth failures\n ...options,\n });\n};\n\n/**\n * Hook for fetching a user by ID\n *\n * @param id - User ID\n * @param options - React Query options\n */\nexport const useUser = (id: number, options?: UseUserOptions) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useQuery({\n queryKey: queryKeys.users.detail(id),\n queryFn: () => client.users.get(id),\n staleTime: 1000 * 60 * 60, // 1 hour\n enabled: id > 0,\n ...options,\n });\n};\n","/**\n * Auth React Query hooks\n */\n\nimport type { JwtLoginInput, JwtTokenResponse } from '@atomic-solutions/wordpress-api-client';\nimport { useMutation, useQueryClient, type UseMutationOptions } from '@tanstack/react-query';\n\nimport { useWordPressClient, useWordPressQueryKeys } from './useWordPressClient';\n\ntype UseLoginOptions = Omit<\n UseMutationOptions<JwtTokenResponse, Error, JwtLoginInput>,\n 'mutationFn'\n>;\n\n/**\n * Hook for logging in with username/password\n *\n * Returns JWT token on success\n *\n * @param options - React Query mutation options\n *\n * @example\n * ```tsx\n * const { mutate: login, isPending } = useLogin({\n * onSuccess: (data) => {\n * // Save token to storage\n * AsyncStorage.setItem('wp_jwt_token', data.token);\n * },\n * onError: (error) => {\n * // Handle login error\n * Alert.alert('Error', error.message);\n * },\n * });\n *\n * login({ username: 'user', password: 'pass' });\n * ```\n */\nexport const useLogin = (options?: UseLoginOptions) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: (input: JwtLoginInput) => client.auth.login(input),\n onSuccess: () => {\n // Invalidate user queries after login\n queryClient.invalidateQueries({ queryKey: queryKeys.users.all });\n },\n ...options,\n });\n};\n\n/**\n * Hook for validating current JWT token\n *\n * @param options - React Query mutation options\n */\nexport const useValidateToken = (\n options?: Omit<UseMutationOptions<boolean, Error, void>, 'mutationFn'>\n) => {\n const client = useWordPressClient();\n\n return useMutation({\n mutationFn: () => client.auth.validateToken(),\n ...options,\n });\n};\n"],"mappings":"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","names":["import_react","queryKeys","import_react_query","queryKeys","import_react_query","queryKeys","import_react_query","queryKeys","import_react_query","queryKeys"]}
1
+ {"version":3,"sources":["../../src/hooks/index.ts","../../src/hooks/useWordPressClient.ts","../../src/provider/WordPressContext.ts","../../src/hooks/queryKeys.ts","../../src/hooks/posts.ts","../../src/hooks/categories.ts","../../src/hooks/media.ts","../../src/hooks/users.ts","../../src/hooks/auth.ts"],"sourcesContent":["/**\n * Hooks exports\n */\n\nexport { useWordPressClient, useWordPressQueryKeys } from './useWordPressClient';\nexport { createQueryKeys, type QueryKeys } from './queryKeys';\n\n// Post hooks\nexport { usePosts, useInfinitePosts, usePost, usePostBySlug } from './posts';\n\n// Category hooks\nexport { useCategories, useInfiniteCategories, useCategory } from './categories';\n\n// Media hooks\nexport { useMediaItem } from './media';\n\n// User hooks\nexport { useCurrentUser, useUser } from './users';\n\n// Auth hooks\nexport { useLogin, useValidateToken } from './auth';\n","/**\n * Hook for accessing WordPress client and query keys from context\n */\n\nimport { useContext } from 'react';\nimport type { WordPressClient } from '@atomic-solutions/wordpress-api-client';\n\nimport { WordPressContext } from '../provider/WordPressContext';\nimport type { QueryKeys } from './queryKeys';\n\n/**\n * Hook to access the WordPress client from context\n *\n * Must be used within a WordPressProvider\n *\n * @returns WordPress client instance\n * @throws Error if used outside WordPressProvider\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const client = useWordPressClient();\n *\n * const handleFetchPosts = async () => {\n * const posts = await client.posts.list({ per_page: 10 });\n * console.log(posts);\n * };\n *\n * return <button onClick={handleFetchPosts}>Fetch Posts</button>;\n * };\n * ```\n */\nexport const useWordPressClient = (): WordPressClient => {\n const context = useContext(WordPressContext);\n\n if (!context) {\n throw new Error('useWordPressClient must be used within a WordPressProvider');\n }\n\n return context.client;\n};\n\n/**\n * Hook to access WordPress query keys from context\n *\n * Must be used within a WordPressProvider\n *\n * @returns Query keys instance\n * @throws Error if used outside WordPressProvider\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const queryKeys = useWordPressQueryKeys();\n * const queryClient = useQueryClient();\n *\n * const handleInvalidate = () => {\n * queryClient.invalidateQueries({ queryKey: queryKeys.posts.all });\n * };\n *\n * return <button onClick={handleInvalidate}>Refresh Posts</button>;\n * }\n * ```\n */\nexport const useWordPressQueryKeys = (): QueryKeys => {\n const context = useContext(WordPressContext);\n\n if (!context) {\n throw new Error('useWordPressQueryKeys must be used within a WordPressProvider');\n }\n\n return context.queryKeys;\n};\n","/**\n * WordPress client context\n */\n\nimport { createContext } from 'react';\nimport type { WordPressClient } from '@atomic-solutions/wordpress-api-client';\n\nimport type { QueryKeys } from '../hooks/queryKeys';\n\n/**\n * WordPress context value\n */\nexport interface WordPressContextValue {\n client: WordPressClient;\n queryKeys: QueryKeys;\n}\n\n/**\n * React context for WordPress client and query keys\n */\nexport const WordPressContext = createContext<WordPressContextValue | null>(null);\n","/**\n * React Query key factory\n */\n\nimport type { CategoryParams, PostParams } from '@atomic-solutions/wordpress-api-client';\n\n/**\n * Query keys for WordPress API\n */\nexport interface QueryKeys {\n /** All WordPress queries */\n all: readonly string[];\n\n /** Posts queries */\n posts: {\n all: readonly unknown[];\n lists: () => readonly unknown[];\n list: (params?: PostParams) => readonly unknown[];\n details: () => readonly unknown[];\n detail: (id: number) => readonly unknown[];\n bySlug: (slug: string) => readonly unknown[];\n };\n\n /** Categories queries */\n categories: {\n all: readonly unknown[];\n lists: () => readonly unknown[];\n list: (params?: CategoryParams) => readonly unknown[];\n details: () => readonly unknown[];\n detail: (id: number) => readonly unknown[];\n };\n\n /** Media queries */\n media: {\n all: readonly unknown[];\n details: () => readonly unknown[];\n detail: (id: number) => readonly unknown[];\n };\n\n /** Users queries */\n users: {\n all: readonly unknown[];\n me: () => readonly unknown[];\n detail: (id: number) => readonly unknown[];\n };\n}\n\n/**\n * Create query keys factory with optional prefix\n *\n * @param prefix - Optional prefix for all query keys\n * @returns Query keys factory\n */\nexport const createQueryKeys = (prefix: string[] = ['wordpress']): QueryKeys => {\n return {\n all: prefix,\n\n posts: {\n all: [...prefix, 'posts'] as const,\n lists: () => [...prefix, 'posts', 'list'] as const,\n list: (params?: PostParams) => [...prefix, 'posts', 'list', params] as const,\n details: () => [...prefix, 'posts', 'detail'] as const,\n detail: (id: number) => [...prefix, 'posts', 'detail', id] as const,\n bySlug: (slug: string) => [...prefix, 'posts', 'slug', slug] as const,\n },\n\n categories: {\n all: [...prefix, 'categories'] as const,\n lists: () => [...prefix, 'categories', 'list'] as const,\n list: (params?: CategoryParams) => [...prefix, 'categories', 'list', params] as const,\n details: () => [...prefix, 'categories', 'detail'] as const,\n detail: (id: number) => [...prefix, 'categories', 'detail', id] as const,\n },\n\n media: {\n all: [...prefix, 'media'] as const,\n details: () => [...prefix, 'media', 'detail'] as const,\n detail: (id: number) => [...prefix, 'media', 'detail', id] as const,\n },\n\n users: {\n all: [...prefix, 'users'] as const,\n me: () => [...prefix, 'users', 'me'] as const,\n detail: (id: number) => [...prefix, 'users', 'detail', id] as const,\n },\n };\n};\n\nexport const queryKeys = createQueryKeys();\n","/**\n * Posts React Query hooks\n */\n\nimport type { PaginatedResponse, Post, PostParams } from '@atomic-solutions/wordpress-api-client';\nimport { useInfiniteQuery, useQuery } from '@tanstack/react-query';\n\nimport type { InfiniteQueryOptions, QueryOptions } from '../types';\nimport { useWordPressClient, useWordPressQueryKeys } from './useWordPressClient';\n\n/**\n * Hook for fetching paginated posts\n *\n * @param params - Post query parameters\n * @param options - React Query options\n */\nexport const usePosts = (params?: PostParams, options?: QueryOptions<PaginatedResponse<Post>>) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useQuery({\n queryKey: queryKeys.posts.list(params),\n queryFn: () => client.posts.list(params),\n staleTime: 1000 * 60 * 60, // 1 hour\n ...options,\n });\n};\n\n/**\n * Hook for infinite scrolling posts\n *\n * @param params - Base post query parameters (page will be managed automatically)\n */\nexport const useInfinitePosts = (\n params?: Omit<PostParams, 'page'>,\n options?: InfiniteQueryOptions<PaginatedResponse<Post>>\n) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useInfiniteQuery({\n queryKey: queryKeys.posts.lists(),\n queryFn: ({ pageParam = 1 }) => client.posts.list({ ...params, page: pageParam as number }),\n initialPageParam: 1,\n getNextPageParam: (lastPage) =>\n lastPage.pagination.hasNextPage ? lastPage.pagination.nextPage : undefined,\n getPreviousPageParam: (firstPage) =>\n firstPage.pagination.hasPrevPage ? firstPage.pagination.prevPage : undefined,\n staleTime: 1000 * 60 * 60, // 1 hour\n ...options,\n });\n};\n\n/**\n * Hook for fetching a single post by ID\n *\n * @param id - Post ID\n * @param options - React Query options\n */\nexport const usePost = (id: number, options?: QueryOptions<Post>) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useQuery({\n queryKey: queryKeys.posts.detail(id),\n queryFn: () => client.posts.get(id),\n staleTime: 1000 * 60 * 60, // 1 hour\n enabled: id > 0,\n ...options,\n });\n};\n\n/**\n * Hook for fetching a single post by slug\n *\n * @param slug - Post slug\n * @param options - React Query options (`enabled` is derived from slug and cannot be overridden)\n */\nexport const usePostBySlug = (\n slug: string,\n options?: Omit<QueryOptions<Post | null>, 'enabled'>\n) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useQuery({\n queryKey: queryKeys.posts.bySlug(slug),\n queryFn: () => client.posts.getBySlug(slug),\n staleTime: 1000 * 60 * 60, // 1 hour\n enabled: !!slug,\n ...options,\n });\n};\n","/**\n * Categories React Query hooks\n */\n\nimport type {\n Category,\n CategoryParams,\n PaginatedResponse,\n} from '@atomic-solutions/wordpress-api-client';\nimport { useInfiniteQuery, useQuery } from '@tanstack/react-query';\n\nimport type { InfiniteQueryOptions, QueryOptions } from '../types';\nimport { useWordPressClient, useWordPressQueryKeys } from './useWordPressClient';\n\n/**\n * Hook for fetching paginated categories\n *\n * @param params - Category query parameters\n * @param options - React Query options\n */\nexport const useCategories = (\n params?: CategoryParams,\n options?: QueryOptions<PaginatedResponse<Category>>\n) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useQuery({\n queryKey: queryKeys.categories.list(params),\n queryFn: () => client.categories.list(params),\n staleTime: 1000 * 60 * 60 * 24 * 7, // 1 week\n ...options,\n });\n};\n\n/**\n * Hook for infinite scrolling categories\n *\n * @param params - Base category query parameters\n */\nexport const useInfiniteCategories = (\n params?: Omit<CategoryParams, 'page'>,\n options?: InfiniteQueryOptions<PaginatedResponse<Category>>\n) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useInfiniteQuery({\n queryKey: queryKeys.categories.lists(),\n queryFn: ({ pageParam = 1 }) =>\n client.categories.list({ ...params, page: pageParam as number }),\n initialPageParam: 1,\n getNextPageParam: (lastPage) =>\n lastPage.pagination.hasNextPage ? lastPage.pagination.nextPage : undefined,\n getPreviousPageParam: (firstPage) =>\n firstPage.pagination.hasPrevPage ? firstPage.pagination.prevPage : undefined,\n staleTime: 1000 * 60 * 60 * 24 * 7, // 1 week\n gcTime: 1000 * 60 * 60 * 24 * 30, // 30 days\n ...options,\n });\n};\n\n/**\n * Hook for fetching a single category by ID\n *\n * @param id - Category ID\n * @param options - React Query options\n */\nexport const useCategory = (id: number, options?: QueryOptions<Category>) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useQuery({\n queryKey: queryKeys.categories.detail(id),\n queryFn: () => client.categories.get(id),\n staleTime: 1000 * 60 * 60 * 24 * 7, // 1 week\n enabled: id > 0,\n ...options,\n });\n};\n","/**\n * Media React Query hooks\n */\n\nimport type { Media } from '@atomic-solutions/wordpress-api-client';\nimport { useQuery } from '@tanstack/react-query';\n\nimport type { QueryOptions } from '../types';\nimport { useWordPressClient, useWordPressQueryKeys } from './useWordPressClient';\n\n/**\n * Hook for fetching a single media item by ID\n *\n * @param id - Media item ID\n * @param options - React Query options\n */\nexport const useMediaItem = (id: number | undefined, options?: QueryOptions<Media>) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useQuery({\n queryKey: queryKeys.media.detail(id || 0),\n queryFn: () => client.media.get(id!),\n staleTime: 1000 * 60 * 60 * 24, // 1 day\n gcTime: 1000 * 60 * 60 * 24 * 7, // 1 week\n enabled: !!id && id > 0,\n ...options,\n });\n};\n","/**\n * Users React Query hooks\n */\n\nimport type { CurrentUser, User } from '@atomic-solutions/wordpress-api-client';\nimport { useQuery } from '@tanstack/react-query';\n\nimport type { QueryOptions } from '../types';\nimport { useWordPressClient, useWordPressQueryKeys } from './useWordPressClient';\n\n/**\n * Hook for fetching current authenticated user\n *\n * Requires JWT token to be configured\n *\n * @param options - React Query options\n */\nexport const useCurrentUser = (options?: QueryOptions<CurrentUser>) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useQuery({\n queryKey: queryKeys.users.me(),\n queryFn: () => client.users.me(),\n staleTime: 1000 * 60 * 5, // 5 minutes\n retry: false, // Don't retry auth failures\n ...options,\n });\n};\n\n/**\n * Hook for fetching a user by ID\n *\n * @param id - User ID\n * @param options - React Query options\n */\nexport const useUser = (id: number, options?: QueryOptions<User>) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n\n return useQuery({\n queryKey: queryKeys.users.detail(id),\n queryFn: () => client.users.get(id),\n staleTime: 1000 * 60 * 60, // 1 hour\n enabled: id > 0,\n ...options,\n });\n};\n","/**\n * Auth React Query hooks\n */\n\nimport type { JwtLoginInput, JwtTokenResponse } from '@atomic-solutions/wordpress-api-client';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\n\nimport type { MutationOptions } from '../types';\nimport { useWordPressClient, useWordPressQueryKeys } from './useWordPressClient';\n\n/**\n * Hook for logging in with username/password\n *\n * Returns JWT token on success\n *\n * @param options - React Query mutation options\n *\n * @example\n * ```tsx\n * const { mutate: login, isPending } = useLogin({\n * onSuccess: (data) => {\n * // Save token to storage\n * AsyncStorage.setItem('wp_jwt_token', data.token);\n * },\n * onError: (error) => {\n * // Handle login error\n * Alert.alert('Error', error.message);\n * },\n * });\n *\n * login({ username: 'user', password: 'pass' });\n * ```\n */\nexport const useLogin = (options?: MutationOptions<JwtTokenResponse, Error, JwtLoginInput>) => {\n const client = useWordPressClient();\n const queryKeys = useWordPressQueryKeys();\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: (input: JwtLoginInput) => client.auth.login(input),\n onSuccess: () => {\n // Invalidate user queries after login\n queryClient.invalidateQueries({ queryKey: queryKeys.users.all });\n },\n ...options,\n });\n};\n\n/**\n * Hook for validating current JWT token\n *\n * @param options - React Query mutation options\n */\nexport const useValidateToken = (options?: MutationOptions<boolean, Error, void>) => {\n const client = useWordPressClient();\n\n return useMutation({\n mutationFn: () => client.auth.validateToken(),\n ...options,\n });\n};\n"],"mappings":"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","names":["import_react","queryKeys","import_react_query","queryKeys","import_react_query","queryKeys","import_react_query","queryKeys","import_react_query","queryKeys"]}