@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.
- package/dist/{chunk-3MTIYB4V.js → chunk-5PIK3BB6.js} +7 -5
- package/dist/chunk-5PIK3BB6.js.map +1 -0
- package/dist/hooks/index.cjs +6 -4
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.d.cts +5 -1815
- package/dist/hooks/index.d.ts +5 -1815
- package/dist/hooks/index.js +1 -1
- package/dist/index-Cc8n-JUw.d.cts +1822 -0
- package/dist/index-KQf_Lfz0.d.ts +1822 -0
- package/dist/index.cjs +6 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-3MTIYB4V.js.map +0 -1
|
@@ -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-
|
|
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"]}
|
package/dist/hooks/index.cjs
CHANGED
|
@@ -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) => {
|
package/dist/hooks/index.cjs.map
CHANGED
|
@@ -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"]}
|