@atomic-solutions/wordpress-react 0.1.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/LICENSE +21 -0
- package/README.md +87 -0
- package/dist/chunk-3MTIYB4V.js +231 -0
- package/dist/chunk-3MTIYB4V.js.map +1 -0
- package/dist/chunk-S5XNF5RD.js +23 -0
- package/dist/chunk-S5XNF5RD.js.map +1 -0
- package/dist/chunk-WEGZSYNS.js +8 -0
- package/dist/chunk-WEGZSYNS.js.map +1 -0
- package/dist/hooks/index.cjs +273 -0
- package/dist/hooks/index.cjs.map +1 -0
- package/dist/hooks/index.d.cts +1815 -0
- package/dist/hooks/index.d.ts +1815 -0
- package/dist/hooks/index.js +36 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/index-BgFRJIdn.d.cts +54 -0
- package/dist/index-CtTu7gRa.d.ts +54 -0
- package/dist/index.cjs +292 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +7 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/provider/index.cjs +51 -0
- package/dist/provider/index.cjs.map +1 -0
- package/dist/provider/index.d.cts +4 -0
- package/dist/provider/index.d.ts +4 -0
- package/dist/provider/index.js +11 -0
- package/dist/provider/index.js.map +1 -0
- package/dist/queryKeys-ByTaglNR.d.cts +51 -0
- package/dist/queryKeys-ByTaglNR.d.ts +51 -0
- package/package.json +89 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createQueryKeys,
|
|
3
|
+
useCategories,
|
|
4
|
+
useCategory,
|
|
5
|
+
useCurrentUser,
|
|
6
|
+
useInfiniteCategories,
|
|
7
|
+
useInfinitePosts,
|
|
8
|
+
useLogin,
|
|
9
|
+
useMediaItem,
|
|
10
|
+
usePost,
|
|
11
|
+
usePostBySlug,
|
|
12
|
+
usePosts,
|
|
13
|
+
useUser,
|
|
14
|
+
useValidateToken,
|
|
15
|
+
useWordPressClient,
|
|
16
|
+
useWordPressQueryKeys
|
|
17
|
+
} from "../chunk-3MTIYB4V.js";
|
|
18
|
+
import "../chunk-WEGZSYNS.js";
|
|
19
|
+
export {
|
|
20
|
+
createQueryKeys,
|
|
21
|
+
useCategories,
|
|
22
|
+
useCategory,
|
|
23
|
+
useCurrentUser,
|
|
24
|
+
useInfiniteCategories,
|
|
25
|
+
useInfinitePosts,
|
|
26
|
+
useLogin,
|
|
27
|
+
useMediaItem,
|
|
28
|
+
usePost,
|
|
29
|
+
usePostBySlug,
|
|
30
|
+
usePosts,
|
|
31
|
+
useUser,
|
|
32
|
+
useValidateToken,
|
|
33
|
+
useWordPressClient,
|
|
34
|
+
useWordPressQueryKeys
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import React__default, { ReactNode } from 'react';
|
|
3
|
+
import { WordPressClient } from '@atomic-solutions/wordpress-api-client';
|
|
4
|
+
import { Q as QueryKeys } from './queryKeys-ByTaglNR.cjs';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* WordPress client provider
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Base props shared by both provider modes
|
|
12
|
+
*/
|
|
13
|
+
interface WordPressProviderBaseProps {
|
|
14
|
+
/** Query keys instance created with createQueryKeys() */
|
|
15
|
+
queryKeys: QueryKeys;
|
|
16
|
+
/** Child components */
|
|
17
|
+
children: ReactNode;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Provider props when using config (provider creates client)
|
|
21
|
+
*/
|
|
22
|
+
interface WordPressProviderWithConfig extends WordPressProviderBaseProps {
|
|
23
|
+
client: WordPressClient;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* WordPress provider props - either config OR client (mutually exclusive)
|
|
27
|
+
*/
|
|
28
|
+
type WordPressProviderProps = WordPressProviderWithConfig;
|
|
29
|
+
/**
|
|
30
|
+
* Provider component for WordPress client and query keys
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```tsx
|
|
34
|
+
* import { WordPressProvider, createQueryKeys } from '@atomic-solutions/react-wordpress';
|
|
35
|
+
*
|
|
36
|
+
* const queryKeys = createQueryKeys(['my-app']);
|
|
37
|
+
* const client = createClient({ baseURL: '...' });
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
declare const WordPressProvider: React__default.FC<WordPressProviderProps>;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* WordPress context value
|
|
44
|
+
*/
|
|
45
|
+
interface WordPressContextValue {
|
|
46
|
+
client: WordPressClient;
|
|
47
|
+
queryKeys: QueryKeys;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* React context for WordPress client and query keys
|
|
51
|
+
*/
|
|
52
|
+
declare const WordPressContext: React.Context<WordPressContextValue | null>;
|
|
53
|
+
|
|
54
|
+
export { WordPressContext as W, type WordPressContextValue as a, WordPressProvider as b, type WordPressProviderProps as c };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import React__default, { ReactNode } from 'react';
|
|
3
|
+
import { WordPressClient } from '@atomic-solutions/wordpress-api-client';
|
|
4
|
+
import { Q as QueryKeys } from './queryKeys-ByTaglNR.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* WordPress client provider
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Base props shared by both provider modes
|
|
12
|
+
*/
|
|
13
|
+
interface WordPressProviderBaseProps {
|
|
14
|
+
/** Query keys instance created with createQueryKeys() */
|
|
15
|
+
queryKeys: QueryKeys;
|
|
16
|
+
/** Child components */
|
|
17
|
+
children: ReactNode;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Provider props when using config (provider creates client)
|
|
21
|
+
*/
|
|
22
|
+
interface WordPressProviderWithConfig extends WordPressProviderBaseProps {
|
|
23
|
+
client: WordPressClient;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* WordPress provider props - either config OR client (mutually exclusive)
|
|
27
|
+
*/
|
|
28
|
+
type WordPressProviderProps = WordPressProviderWithConfig;
|
|
29
|
+
/**
|
|
30
|
+
* Provider component for WordPress client and query keys
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```tsx
|
|
34
|
+
* import { WordPressProvider, createQueryKeys } from '@atomic-solutions/react-wordpress';
|
|
35
|
+
*
|
|
36
|
+
* const queryKeys = createQueryKeys(['my-app']);
|
|
37
|
+
* const client = createClient({ baseURL: '...' });
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
declare const WordPressProvider: React__default.FC<WordPressProviderProps>;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* WordPress context value
|
|
44
|
+
*/
|
|
45
|
+
interface WordPressContextValue {
|
|
46
|
+
client: WordPressClient;
|
|
47
|
+
queryKeys: QueryKeys;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* React context for WordPress client and query keys
|
|
51
|
+
*/
|
|
52
|
+
declare const WordPressContext: React.Context<WordPressContextValue | null>;
|
|
53
|
+
|
|
54
|
+
export { WordPressContext as W, type WordPressContextValue as a, WordPressProvider as b, type WordPressProviderProps as c };
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/index.ts
|
|
21
|
+
var src_exports = {};
|
|
22
|
+
__export(src_exports, {
|
|
23
|
+
WordPressContext: () => WordPressContext,
|
|
24
|
+
WordPressProvider: () => WordPressProvider,
|
|
25
|
+
createQueryKeys: () => createQueryKeys,
|
|
26
|
+
useCategories: () => useCategories,
|
|
27
|
+
useCategory: () => useCategory,
|
|
28
|
+
useCurrentUser: () => useCurrentUser,
|
|
29
|
+
useInfiniteCategories: () => useInfiniteCategories,
|
|
30
|
+
useInfinitePosts: () => useInfinitePosts,
|
|
31
|
+
useLogin: () => useLogin,
|
|
32
|
+
useMediaItem: () => useMediaItem,
|
|
33
|
+
usePost: () => usePost,
|
|
34
|
+
usePostBySlug: () => usePostBySlug,
|
|
35
|
+
usePosts: () => usePosts,
|
|
36
|
+
useUser: () => useUser,
|
|
37
|
+
useValidateToken: () => useValidateToken,
|
|
38
|
+
useWordPressClient: () => useWordPressClient,
|
|
39
|
+
useWordPressQueryKeys: () => useWordPressQueryKeys
|
|
40
|
+
});
|
|
41
|
+
module.exports = __toCommonJS(src_exports);
|
|
42
|
+
|
|
43
|
+
// src/provider/WordPressProvider.tsx
|
|
44
|
+
var import_react2 = require("react");
|
|
45
|
+
|
|
46
|
+
// src/provider/WordPressContext.ts
|
|
47
|
+
var import_react = require("react");
|
|
48
|
+
var WordPressContext = (0, import_react.createContext)(null);
|
|
49
|
+
|
|
50
|
+
// src/provider/WordPressProvider.tsx
|
|
51
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
52
|
+
var WordPressProvider = ({
|
|
53
|
+
queryKeys: queryKeys2,
|
|
54
|
+
children,
|
|
55
|
+
client
|
|
56
|
+
}) => {
|
|
57
|
+
const contextValue = (0, import_react2.useMemo)(() => ({ client, queryKeys: queryKeys2 }), [client, queryKeys2]);
|
|
58
|
+
if (!contextValue.client && !contextValue.queryKeys) {
|
|
59
|
+
return children;
|
|
60
|
+
}
|
|
61
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(WordPressContext.Provider, { value: contextValue, children });
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
// src/hooks/useWordPressClient.ts
|
|
65
|
+
var import_react3 = require("react");
|
|
66
|
+
var useWordPressClient = () => {
|
|
67
|
+
const context = (0, import_react3.useContext)(WordPressContext);
|
|
68
|
+
if (!context) {
|
|
69
|
+
throw new Error("useWordPressClient must be used within a WordPressProvider");
|
|
70
|
+
}
|
|
71
|
+
return context.client;
|
|
72
|
+
};
|
|
73
|
+
var useWordPressQueryKeys = () => {
|
|
74
|
+
const context = (0, import_react3.useContext)(WordPressContext);
|
|
75
|
+
if (!context) {
|
|
76
|
+
throw new Error("useWordPressQueryKeys must be used within a WordPressProvider");
|
|
77
|
+
}
|
|
78
|
+
return context.queryKeys;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
// src/hooks/queryKeys.ts
|
|
82
|
+
var createQueryKeys = (prefix = ["wordpress"]) => {
|
|
83
|
+
return {
|
|
84
|
+
all: prefix,
|
|
85
|
+
posts: {
|
|
86
|
+
all: [...prefix, "posts"],
|
|
87
|
+
lists: () => [...prefix, "posts", "list"],
|
|
88
|
+
list: (params) => [...prefix, "posts", "list", params],
|
|
89
|
+
details: () => [...prefix, "posts", "detail"],
|
|
90
|
+
detail: (id) => [...prefix, "posts", "detail", id],
|
|
91
|
+
bySlug: (slug) => [...prefix, "posts", "slug", slug]
|
|
92
|
+
},
|
|
93
|
+
categories: {
|
|
94
|
+
all: [...prefix, "categories"],
|
|
95
|
+
lists: () => [...prefix, "categories", "list"],
|
|
96
|
+
list: (params) => [...prefix, "categories", "list", params],
|
|
97
|
+
details: () => [...prefix, "categories", "detail"],
|
|
98
|
+
detail: (id) => [...prefix, "categories", "detail", id]
|
|
99
|
+
},
|
|
100
|
+
media: {
|
|
101
|
+
all: [...prefix, "media"],
|
|
102
|
+
details: () => [...prefix, "media", "detail"],
|
|
103
|
+
detail: (id) => [...prefix, "media", "detail", id]
|
|
104
|
+
},
|
|
105
|
+
users: {
|
|
106
|
+
all: [...prefix, "users"],
|
|
107
|
+
me: () => [...prefix, "users", "me"],
|
|
108
|
+
detail: (id) => [...prefix, "users", "detail", id]
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
var queryKeys = createQueryKeys();
|
|
113
|
+
|
|
114
|
+
// src/hooks/posts.ts
|
|
115
|
+
var import_react_query = require("@tanstack/react-query");
|
|
116
|
+
var usePosts = (params, options) => {
|
|
117
|
+
const client = useWordPressClient();
|
|
118
|
+
const queryKeys2 = useWordPressQueryKeys();
|
|
119
|
+
return (0, import_react_query.useQuery)({
|
|
120
|
+
queryKey: queryKeys2.posts.list(params),
|
|
121
|
+
queryFn: () => client.posts.list(params),
|
|
122
|
+
staleTime: 1e3 * 60 * 60,
|
|
123
|
+
// 1 hour
|
|
124
|
+
...options
|
|
125
|
+
});
|
|
126
|
+
};
|
|
127
|
+
var useInfinitePosts = (params) => {
|
|
128
|
+
const client = useWordPressClient();
|
|
129
|
+
const queryKeys2 = useWordPressQueryKeys();
|
|
130
|
+
return (0, import_react_query.useInfiniteQuery)({
|
|
131
|
+
queryKey: queryKeys2.posts.lists(),
|
|
132
|
+
queryFn: ({ pageParam = 1 }) => client.posts.list({ ...params, page: pageParam }),
|
|
133
|
+
initialPageParam: 1,
|
|
134
|
+
getNextPageParam: (lastPage) => lastPage.pagination.hasNextPage ? lastPage.pagination.nextPage : void 0,
|
|
135
|
+
getPreviousPageParam: (firstPage) => firstPage.pagination.hasPrevPage ? firstPage.pagination.prevPage : void 0,
|
|
136
|
+
staleTime: 1e3 * 60 * 60
|
|
137
|
+
// 1 hour
|
|
138
|
+
});
|
|
139
|
+
};
|
|
140
|
+
var usePost = (id, options) => {
|
|
141
|
+
const client = useWordPressClient();
|
|
142
|
+
const queryKeys2 = useWordPressQueryKeys();
|
|
143
|
+
return (0, import_react_query.useQuery)({
|
|
144
|
+
queryKey: queryKeys2.posts.detail(id),
|
|
145
|
+
queryFn: () => client.posts.get(id),
|
|
146
|
+
staleTime: 1e3 * 60 * 60,
|
|
147
|
+
// 1 hour
|
|
148
|
+
enabled: id > 0,
|
|
149
|
+
...options
|
|
150
|
+
});
|
|
151
|
+
};
|
|
152
|
+
var usePostBySlug = (slug, options) => {
|
|
153
|
+
const client = useWordPressClient();
|
|
154
|
+
const queryKeys2 = useWordPressQueryKeys();
|
|
155
|
+
return (0, import_react_query.useQuery)({
|
|
156
|
+
queryKey: queryKeys2.posts.bySlug(slug),
|
|
157
|
+
queryFn: () => client.posts.getBySlug(slug),
|
|
158
|
+
staleTime: 1e3 * 60 * 60,
|
|
159
|
+
// 1 hour
|
|
160
|
+
enabled: !!slug,
|
|
161
|
+
...options
|
|
162
|
+
});
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
// src/hooks/categories.ts
|
|
166
|
+
var import_react_query2 = require("@tanstack/react-query");
|
|
167
|
+
var useCategories = (params, options) => {
|
|
168
|
+
const client = useWordPressClient();
|
|
169
|
+
const queryKeys2 = useWordPressQueryKeys();
|
|
170
|
+
return (0, import_react_query2.useQuery)({
|
|
171
|
+
queryKey: queryKeys2.categories.list(params),
|
|
172
|
+
queryFn: () => client.categories.list(params),
|
|
173
|
+
staleTime: 1e3 * 60 * 60 * 24 * 7,
|
|
174
|
+
// 1 week
|
|
175
|
+
...options
|
|
176
|
+
});
|
|
177
|
+
};
|
|
178
|
+
var useInfiniteCategories = (params) => {
|
|
179
|
+
const client = useWordPressClient();
|
|
180
|
+
const queryKeys2 = useWordPressQueryKeys();
|
|
181
|
+
return (0, import_react_query2.useInfiniteQuery)({
|
|
182
|
+
queryKey: queryKeys2.categories.lists(),
|
|
183
|
+
queryFn: ({ pageParam = 1 }) => client.categories.list({ ...params, page: pageParam }),
|
|
184
|
+
initialPageParam: 1,
|
|
185
|
+
getNextPageParam: (lastPage) => lastPage.pagination.hasNextPage ? lastPage.pagination.nextPage : void 0,
|
|
186
|
+
getPreviousPageParam: (firstPage) => firstPage.pagination.hasPrevPage ? firstPage.pagination.prevPage : void 0,
|
|
187
|
+
staleTime: 1e3 * 60 * 60 * 24 * 7,
|
|
188
|
+
// 1 week
|
|
189
|
+
gcTime: 1e3 * 60 * 60 * 24 * 30
|
|
190
|
+
// 30 days
|
|
191
|
+
});
|
|
192
|
+
};
|
|
193
|
+
var useCategory = (id, options) => {
|
|
194
|
+
const client = useWordPressClient();
|
|
195
|
+
const queryKeys2 = useWordPressQueryKeys();
|
|
196
|
+
return (0, import_react_query2.useQuery)({
|
|
197
|
+
queryKey: queryKeys2.categories.detail(id),
|
|
198
|
+
queryFn: () => client.categories.get(id),
|
|
199
|
+
staleTime: 1e3 * 60 * 60 * 24 * 7,
|
|
200
|
+
// 1 week
|
|
201
|
+
enabled: id > 0,
|
|
202
|
+
...options
|
|
203
|
+
});
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
// src/hooks/media.ts
|
|
207
|
+
var import_react_query3 = require("@tanstack/react-query");
|
|
208
|
+
var useMediaItem = (id, options) => {
|
|
209
|
+
const client = useWordPressClient();
|
|
210
|
+
const queryKeys2 = useWordPressQueryKeys();
|
|
211
|
+
return (0, import_react_query3.useQuery)({
|
|
212
|
+
queryKey: queryKeys2.media.detail(id || 0),
|
|
213
|
+
queryFn: () => client.media.get(id),
|
|
214
|
+
staleTime: 1e3 * 60 * 60 * 24,
|
|
215
|
+
// 1 day
|
|
216
|
+
gcTime: 1e3 * 60 * 60 * 24 * 7,
|
|
217
|
+
// 1 week
|
|
218
|
+
enabled: !!id && id > 0,
|
|
219
|
+
...options
|
|
220
|
+
});
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
// src/hooks/users.ts
|
|
224
|
+
var import_react_query4 = require("@tanstack/react-query");
|
|
225
|
+
var useCurrentUser = (options) => {
|
|
226
|
+
const client = useWordPressClient();
|
|
227
|
+
const queryKeys2 = useWordPressQueryKeys();
|
|
228
|
+
return (0, import_react_query4.useQuery)({
|
|
229
|
+
queryKey: queryKeys2.users.me(),
|
|
230
|
+
queryFn: () => client.users.me(),
|
|
231
|
+
staleTime: 1e3 * 60 * 5,
|
|
232
|
+
// 5 minutes
|
|
233
|
+
retry: false,
|
|
234
|
+
// Don't retry auth failures
|
|
235
|
+
...options
|
|
236
|
+
});
|
|
237
|
+
};
|
|
238
|
+
var useUser = (id, options) => {
|
|
239
|
+
const client = useWordPressClient();
|
|
240
|
+
const queryKeys2 = useWordPressQueryKeys();
|
|
241
|
+
return (0, import_react_query4.useQuery)({
|
|
242
|
+
queryKey: queryKeys2.users.detail(id),
|
|
243
|
+
queryFn: () => client.users.get(id),
|
|
244
|
+
staleTime: 1e3 * 60 * 60,
|
|
245
|
+
// 1 hour
|
|
246
|
+
enabled: id > 0,
|
|
247
|
+
...options
|
|
248
|
+
});
|
|
249
|
+
};
|
|
250
|
+
|
|
251
|
+
// src/hooks/auth.ts
|
|
252
|
+
var import_react_query5 = require("@tanstack/react-query");
|
|
253
|
+
var useLogin = (options) => {
|
|
254
|
+
const client = useWordPressClient();
|
|
255
|
+
const queryKeys2 = useWordPressQueryKeys();
|
|
256
|
+
const queryClient = (0, import_react_query5.useQueryClient)();
|
|
257
|
+
return (0, import_react_query5.useMutation)({
|
|
258
|
+
mutationFn: (input) => client.auth.login(input),
|
|
259
|
+
onSuccess: () => {
|
|
260
|
+
queryClient.invalidateQueries({ queryKey: queryKeys2.users.all });
|
|
261
|
+
},
|
|
262
|
+
...options
|
|
263
|
+
});
|
|
264
|
+
};
|
|
265
|
+
var useValidateToken = (options) => {
|
|
266
|
+
const client = useWordPressClient();
|
|
267
|
+
return (0, import_react_query5.useMutation)({
|
|
268
|
+
mutationFn: () => client.auth.validateToken(),
|
|
269
|
+
...options
|
|
270
|
+
});
|
|
271
|
+
};
|
|
272
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
273
|
+
0 && (module.exports = {
|
|
274
|
+
WordPressContext,
|
|
275
|
+
WordPressProvider,
|
|
276
|
+
createQueryKeys,
|
|
277
|
+
useCategories,
|
|
278
|
+
useCategory,
|
|
279
|
+
useCurrentUser,
|
|
280
|
+
useInfiniteCategories,
|
|
281
|
+
useInfinitePosts,
|
|
282
|
+
useLogin,
|
|
283
|
+
useMediaItem,
|
|
284
|
+
usePost,
|
|
285
|
+
usePostBySlug,
|
|
286
|
+
usePosts,
|
|
287
|
+
useUser,
|
|
288
|
+
useValidateToken,
|
|
289
|
+
useWordPressClient,
|
|
290
|
+
useWordPressQueryKeys
|
|
291
|
+
});
|
|
292
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/provider/WordPressProvider.tsx","../src/provider/WordPressContext.ts","../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 * @atomic-solutions/react-wordpress\n *\n * React Query hooks and provider for WordPress REST API\n */\n\n// ============================================================================\n// Provider\n// ============================================================================\n\nexport { WordPressProvider } from './provider/WordPressProvider';\nexport type { WordPressProviderProps } from './provider/WordPressProvider';\nexport { WordPressContext, type WordPressContextValue } from './provider/WordPressContext';\n\n// ============================================================================\n// Hooks\n// ============================================================================\n\nexport { useWordPressClient, useWordPressQueryKeys } from './hooks/useWordPressClient';\nexport { createQueryKeys, type QueryKeys } from './hooks/queryKeys';\n\n// Post hooks\nexport { usePosts, useInfinitePosts, usePost, usePostBySlug } from './hooks/posts';\n\n// Category hooks\nexport { useCategories, useInfiniteCategories, useCategory } from './hooks/categories';\n\n// Media hooks\nexport { useMediaItem } from './hooks/media';\n\n// User hooks\nexport { useCurrentUser, useUser } from './hooks/users';\n\n// Auth hooks\nexport { useLogin, useValidateToken } from './hooks/auth';\n\n// ============================================================================\n// Re-export types from wordpress-utils for convenience\n// ============================================================================\n\nexport type {\n WordPressConfig,\n WordPressClient,\n JwtTokenAdapter,\n PostsAPI,\n CategoriesAPI,\n MediaAPI,\n UsersAPI,\n AuthAPI,\n} from '@atomic-solutions/wordpress-api-client';\n\nexport type {\n // Base types\n RenderedContent,\n Guid,\n PostStatus,\n HalLinks,\n HalLinkItem,\n WordPressBase,\n PaginationParams,\n // Post types\n Post,\n PostsList,\n PostParams,\n EmbeddedPost,\n EmbeddedPostsList,\n // Category types\n Category,\n CategoriesList,\n CategoryParams,\n Tag,\n TagsList,\n // Media types\n Media,\n MediaList,\n MediaDetails,\n MediaSize,\n MediaSizes,\n ImageMeta,\n // User types\n User,\n UsersList,\n CurrentUser,\n AvatarUrls,\n // Auth types\n JwtLoginInput,\n JwtTokenResponse,\n JwtValidateResponse,\n JwtErrorResponse,\n} from '@atomic-solutions/wordpress-api-client';\n\nexport type {\n PaginatedResponse,\n Pagination,\n PaginationMeta,\n} from '@atomic-solutions/wordpress-api-client';\n","/**\n * WordPress client provider\n */\n\nimport React, { useMemo, type ReactNode } from 'react';\nimport { type WordPressClient } from '@atomic-solutions/wordpress-api-client';\n\nimport type { QueryKeys } from '../hooks/queryKeys';\nimport { WordPressContext } from './WordPressContext';\n\n/**\n * Base props shared by both provider modes\n */\ninterface WordPressProviderBaseProps {\n /** Query keys instance created with createQueryKeys() */\n queryKeys: QueryKeys;\n\n /** Child components */\n children: ReactNode;\n}\n\n/**\n * Provider props when using config (provider creates client)\n */\ninterface WordPressProviderWithConfig extends WordPressProviderBaseProps {\n client: WordPressClient;\n}\n\n/**\n * WordPress provider props - either config OR client (mutually exclusive)\n */\nexport type WordPressProviderProps = WordPressProviderWithConfig;\n\n/**\n * Provider component for WordPress client and query keys\n *\n * @example\n * ```tsx\n * import { WordPressProvider, createQueryKeys } from '@atomic-solutions/react-wordpress';\n *\n * const queryKeys = createQueryKeys(['my-app']);\n * const client = createClient({ baseURL: '...' });\n * ```\n */\nexport const WordPressProvider: React.FC<WordPressProviderProps> = ({\n queryKeys,\n children,\n client,\n}) => {\n const contextValue = useMemo(() => ({ client, queryKeys }), [client, queryKeys]);\n\n if (!contextValue.client && !contextValue.queryKeys) {\n return children;\n }\n\n return <WordPressContext.Provider value={contextValue}>{children}</WordPressContext.Provider>;\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 * 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, 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","queryKeys","import_react_query","queryKeys","import_react_query","queryKeys","import_react_query","queryKeys","import_react_query","queryKeys"]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { W as WordPressContext, a as WordPressContextValue, b as WordPressProvider, c as WordPressProviderProps } from './index-BgFRJIdn.cjs';
|
|
2
|
+
export { useCategories, useCategory, useCurrentUser, useInfiniteCategories, useInfinitePosts, useLogin, useMediaItem, usePost, usePostBySlug, usePosts, useUser, useValidateToken, useWordPressClient, useWordPressQueryKeys } from './hooks/index.cjs';
|
|
3
|
+
export { Q as QueryKeys, c as createQueryKeys } from './queryKeys-ByTaglNR.cjs';
|
|
4
|
+
export { AuthAPI, AvatarUrls, CategoriesAPI, CategoriesList, Category, CategoryParams, CurrentUser, EmbeddedPost, EmbeddedPostsList, Guid, HalLinkItem, HalLinks, ImageMeta, JwtErrorResponse, JwtLoginInput, JwtTokenAdapter, JwtTokenResponse, JwtValidateResponse, Media, MediaAPI, MediaDetails, MediaList, MediaSize, MediaSizes, PaginatedResponse, Pagination, PaginationMeta, PaginationParams, Post, PostParams, PostStatus, PostsAPI, PostsList, RenderedContent, Tag, TagsList, User, UsersAPI, UsersList, WordPressBase, WordPressClient, WordPressConfig } from '@atomic-solutions/wordpress-api-client';
|
|
5
|
+
import 'react';
|
|
6
|
+
import '@tanstack/react-query';
|
|
7
|
+
import 'zod';
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { W as WordPressContext, a as WordPressContextValue, b as WordPressProvider, c as WordPressProviderProps } from './index-CtTu7gRa.js';
|
|
2
|
+
export { useCategories, useCategory, useCurrentUser, useInfiniteCategories, useInfinitePosts, useLogin, useMediaItem, usePost, usePostBySlug, usePosts, useUser, useValidateToken, useWordPressClient, useWordPressQueryKeys } from './hooks/index.js';
|
|
3
|
+
export { Q as QueryKeys, c as createQueryKeys } from './queryKeys-ByTaglNR.js';
|
|
4
|
+
export { AuthAPI, AvatarUrls, CategoriesAPI, CategoriesList, Category, CategoryParams, CurrentUser, EmbeddedPost, EmbeddedPostsList, Guid, HalLinkItem, HalLinks, ImageMeta, JwtErrorResponse, JwtLoginInput, JwtTokenAdapter, JwtTokenResponse, JwtValidateResponse, Media, MediaAPI, MediaDetails, MediaList, MediaSize, MediaSizes, PaginatedResponse, Pagination, PaginationMeta, PaginationParams, Post, PostParams, PostStatus, PostsAPI, PostsList, RenderedContent, Tag, TagsList, User, UsersAPI, UsersList, WordPressBase, WordPressClient, WordPressConfig } from '@atomic-solutions/wordpress-api-client';
|
|
5
|
+
import 'react';
|
|
6
|
+
import '@tanstack/react-query';
|
|
7
|
+
import 'zod';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createQueryKeys,
|
|
3
|
+
useCategories,
|
|
4
|
+
useCategory,
|
|
5
|
+
useCurrentUser,
|
|
6
|
+
useInfiniteCategories,
|
|
7
|
+
useInfinitePosts,
|
|
8
|
+
useLogin,
|
|
9
|
+
useMediaItem,
|
|
10
|
+
usePost,
|
|
11
|
+
usePostBySlug,
|
|
12
|
+
usePosts,
|
|
13
|
+
useUser,
|
|
14
|
+
useValidateToken,
|
|
15
|
+
useWordPressClient,
|
|
16
|
+
useWordPressQueryKeys
|
|
17
|
+
} from "./chunk-3MTIYB4V.js";
|
|
18
|
+
import {
|
|
19
|
+
WordPressProvider
|
|
20
|
+
} from "./chunk-S5XNF5RD.js";
|
|
21
|
+
import {
|
|
22
|
+
WordPressContext
|
|
23
|
+
} from "./chunk-WEGZSYNS.js";
|
|
24
|
+
export {
|
|
25
|
+
WordPressContext,
|
|
26
|
+
WordPressProvider,
|
|
27
|
+
createQueryKeys,
|
|
28
|
+
useCategories,
|
|
29
|
+
useCategory,
|
|
30
|
+
useCurrentUser,
|
|
31
|
+
useInfiniteCategories,
|
|
32
|
+
useInfinitePosts,
|
|
33
|
+
useLogin,
|
|
34
|
+
useMediaItem,
|
|
35
|
+
usePost,
|
|
36
|
+
usePostBySlug,
|
|
37
|
+
usePosts,
|
|
38
|
+
useUser,
|
|
39
|
+
useValidateToken,
|
|
40
|
+
useWordPressClient,
|
|
41
|
+
useWordPressQueryKeys
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/provider/index.ts
|
|
21
|
+
var provider_exports = {};
|
|
22
|
+
__export(provider_exports, {
|
|
23
|
+
WordPressContext: () => WordPressContext,
|
|
24
|
+
WordPressProvider: () => WordPressProvider
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(provider_exports);
|
|
27
|
+
|
|
28
|
+
// src/provider/WordPressContext.ts
|
|
29
|
+
var import_react = require("react");
|
|
30
|
+
var WordPressContext = (0, import_react.createContext)(null);
|
|
31
|
+
|
|
32
|
+
// src/provider/WordPressProvider.tsx
|
|
33
|
+
var import_react2 = require("react");
|
|
34
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
35
|
+
var WordPressProvider = ({
|
|
36
|
+
queryKeys,
|
|
37
|
+
children,
|
|
38
|
+
client
|
|
39
|
+
}) => {
|
|
40
|
+
const contextValue = (0, import_react2.useMemo)(() => ({ client, queryKeys }), [client, queryKeys]);
|
|
41
|
+
if (!contextValue.client && !contextValue.queryKeys) {
|
|
42
|
+
return children;
|
|
43
|
+
}
|
|
44
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(WordPressContext.Provider, { value: contextValue, children });
|
|
45
|
+
};
|
|
46
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
47
|
+
0 && (module.exports = {
|
|
48
|
+
WordPressContext,
|
|
49
|
+
WordPressProvider
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/provider/index.ts","../../src/provider/WordPressContext.ts","../../src/provider/WordPressProvider.tsx"],"sourcesContent":["/**\n * Provider exports\n */\n\nexport { WordPressContext } from './WordPressContext';\nexport { WordPressProvider } from './WordPressProvider';\nexport type { WordPressProviderProps } from './WordPressProvider';\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 * WordPress client provider\n */\n\nimport React, { useMemo, type ReactNode } from 'react';\nimport { type WordPressClient } from '@atomic-solutions/wordpress-api-client';\n\nimport type { QueryKeys } from '../hooks/queryKeys';\nimport { WordPressContext } from './WordPressContext';\n\n/**\n * Base props shared by both provider modes\n */\ninterface WordPressProviderBaseProps {\n /** Query keys instance created with createQueryKeys() */\n queryKeys: QueryKeys;\n\n /** Child components */\n children: ReactNode;\n}\n\n/**\n * Provider props when using config (provider creates client)\n */\ninterface WordPressProviderWithConfig extends WordPressProviderBaseProps {\n client: WordPressClient;\n}\n\n/**\n * WordPress provider props - either config OR client (mutually exclusive)\n */\nexport type WordPressProviderProps = WordPressProviderWithConfig;\n\n/**\n * Provider component for WordPress client and query keys\n *\n * @example\n * ```tsx\n * import { WordPressProvider, createQueryKeys } from '@atomic-solutions/react-wordpress';\n *\n * const queryKeys = createQueryKeys(['my-app']);\n * const client = createClient({ baseURL: '...' });\n * ```\n */\nexport const WordPressProvider: React.FC<WordPressProviderProps> = ({\n queryKeys,\n children,\n client,\n}) => {\n const contextValue = useMemo(() => ({ client, queryKeys }), [client, queryKeys]);\n\n if (!contextValue.client && !contextValue.queryKeys) {\n return children;\n }\n\n return <WordPressContext.Provider value={contextValue}>{children}</WordPressContext.Provider>;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACIA,mBAA8B;AAgBvB,IAAM,uBAAmB,4BAA4C,IAAI;;;AChBhF,IAAAA,gBAA+C;AAmDtC;AAXF,IAAM,oBAAsD,CAAC;AAAA,EAClE;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,mBAAe,uBAAQ,OAAO,EAAE,QAAQ,UAAU,IAAI,CAAC,QAAQ,SAAS,CAAC;AAE/E,MAAI,CAAC,aAAa,UAAU,CAAC,aAAa,WAAW;AACnD,WAAO;AAAA,EACT;AAEA,SAAO,4CAAC,iBAAiB,UAAjB,EAA0B,OAAO,cAAe,UAAS;AACnE;","names":["import_react"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|