@utilsy/cms-nextjs 0.4.0 → 0.5.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/README.md +53 -2
- package/dist/{client-I3rZOjS6.d.cts → client-awWyf-VL.d.cts} +9 -0
- package/dist/{client-I3rZOjS6.d.ts → client-awWyf-VL.d.ts} +9 -0
- package/dist/index.cjs +107 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +109 -3
- package/dist/index.d.ts +109 -3
- package/dist/index.js +96 -2
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +26 -0
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +12 -2
- package/dist/react.d.ts +12 -2
- package/dist/react.js +26 -1
- package/dist/react.js.map +1 -1
- package/package.json +2 -1
package/dist/react.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
|
-
import { l as CmsClient, e as BlogEngagement, c as BlogComment, v as CreateBlogCommentInput, z as ListContentEntriesQuery, s as ContentEntry, L as LeadSubmissionData, S as SubmitLeadOptions, E as SubmitLeadResult, q as ConfirmNewsletterResult, G as SubscribeNewsletterInput, N as NewsletterActionResult, U as UnsubscribeNewsletterInput, H as UpdateNewsletterPreferencesInput } from './client-
|
|
3
|
+
import { l as CmsClient, e as BlogEngagement, c as BlogComment, v as CreateBlogCommentInput, z as ListContentEntriesQuery, s as ContentEntry, L as LeadSubmissionData, S as SubmitLeadOptions, E as SubmitLeadResult, q as ConfirmNewsletterResult, G as SubscribeNewsletterInput, N as NewsletterActionResult, U as UnsubscribeNewsletterInput, H as UpdateNewsletterPreferencesInput } from './client-awWyf-VL.js';
|
|
4
4
|
|
|
5
5
|
type CmsProviderProps = {
|
|
6
6
|
client: CmsClient;
|
|
@@ -74,6 +74,16 @@ declare function useContentEntry(contentTypeApiId: string, idOrSlug: string, opt
|
|
|
74
74
|
refetch: () => Promise<void>;
|
|
75
75
|
};
|
|
76
76
|
|
|
77
|
+
type UseSingleContentEntryOptions = {
|
|
78
|
+
enabled?: boolean;
|
|
79
|
+
};
|
|
80
|
+
declare function useSingleContentEntry(contentTypeApiId: string, options?: UseSingleContentEntryOptions): {
|
|
81
|
+
entry: ContentEntry | null;
|
|
82
|
+
loading: boolean;
|
|
83
|
+
error: Error | null;
|
|
84
|
+
refetch: () => Promise<void>;
|
|
85
|
+
};
|
|
86
|
+
|
|
77
87
|
declare function useSubmitLead(contentTypeApiId: string): {
|
|
78
88
|
submit: (data: LeadSubmissionData, options?: SubmitLeadOptions) => Promise<SubmitLeadResult | null>;
|
|
79
89
|
submitting: boolean;
|
|
@@ -101,4 +111,4 @@ declare function useNewsletterConfirm(): {
|
|
|
101
111
|
error: Error | null;
|
|
102
112
|
};
|
|
103
113
|
|
|
104
|
-
export { CmsProvider, type CmsProviderProps, type UseBlogEngagementOptions, type UseBlogLikeOptions, type UseContentEntriesOptions, type UseContentEntryOptions, type UseVisitorIdOptions, getVisitorId, useBlogComments, useBlogEngagement, useBlogLike, useCmsClient, useContentEntries, useContentEntry, useNewsletterConfirm, useNewsletterSubscribe, useNewsletterUnsubscribe, useNewsletterUpdatePreferences, useSubmitLead, useVisitorId };
|
|
114
|
+
export { CmsProvider, type CmsProviderProps, type UseBlogEngagementOptions, type UseBlogLikeOptions, type UseContentEntriesOptions, type UseContentEntryOptions, type UseSingleContentEntryOptions, type UseVisitorIdOptions, getVisitorId, useBlogComments, useBlogEngagement, useBlogLike, useCmsClient, useContentEntries, useContentEntry, useNewsletterConfirm, useNewsletterSubscribe, useNewsletterUnsubscribe, useNewsletterUpdatePreferences, useSingleContentEntry, useSubmitLead, useVisitorId };
|
package/dist/react.js
CHANGED
|
@@ -188,6 +188,31 @@ function useContentEntry(contentTypeApiId, idOrSlug, options) {
|
|
|
188
188
|
}, [refetch]);
|
|
189
189
|
return { entry, loading, error, refetch };
|
|
190
190
|
}
|
|
191
|
+
function useSingleContentEntry(contentTypeApiId, options) {
|
|
192
|
+
const client = useCmsClient();
|
|
193
|
+
const [entry, setEntry] = useState(null);
|
|
194
|
+
const [loading, setLoading] = useState(true);
|
|
195
|
+
const [error, setError] = useState(null);
|
|
196
|
+
const enabled = options?.enabled !== false && !!contentTypeApiId;
|
|
197
|
+
const refetch = useCallback(async () => {
|
|
198
|
+
if (!enabled) return;
|
|
199
|
+
setLoading(true);
|
|
200
|
+
setError(null);
|
|
201
|
+
try {
|
|
202
|
+
const data = await client.content.getSingleMappedEntry(contentTypeApiId);
|
|
203
|
+
setEntry(data);
|
|
204
|
+
} catch (e) {
|
|
205
|
+
setError(e instanceof Error ? e : new Error(String(e)));
|
|
206
|
+
setEntry(null);
|
|
207
|
+
} finally {
|
|
208
|
+
setLoading(false);
|
|
209
|
+
}
|
|
210
|
+
}, [client, contentTypeApiId, enabled]);
|
|
211
|
+
useEffect(() => {
|
|
212
|
+
refetch();
|
|
213
|
+
}, [refetch]);
|
|
214
|
+
return { entry, loading, error, refetch };
|
|
215
|
+
}
|
|
191
216
|
function useSubmitLead(contentTypeApiId) {
|
|
192
217
|
const client = useCmsClient();
|
|
193
218
|
const [submitting, setSubmitting] = useState(false);
|
|
@@ -301,6 +326,6 @@ function useNewsletterConfirm() {
|
|
|
301
326
|
return { confirm, loading, error };
|
|
302
327
|
}
|
|
303
328
|
|
|
304
|
-
export { CmsProvider, getVisitorId, useBlogComments, useBlogEngagement, useBlogLike, useCmsClient, useContentEntries, useContentEntry, useNewsletterConfirm, useNewsletterSubscribe, useNewsletterUnsubscribe, useNewsletterUpdatePreferences, useSubmitLead, useVisitorId };
|
|
329
|
+
export { CmsProvider, getVisitorId, useBlogComments, useBlogEngagement, useBlogLike, useCmsClient, useContentEntries, useContentEntry, useNewsletterConfirm, useNewsletterSubscribe, useNewsletterUnsubscribe, useNewsletterUpdatePreferences, useSingleContentEntry, useSubmitLead, useVisitorId };
|
|
305
330
|
//# sourceMappingURL=react.js.map
|
|
306
331
|
//# sourceMappingURL=react.js.map
|
package/dist/react.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/react/context.ts","../src/react/provider.tsx","../src/react/use-cms-client.ts","../src/react/use-visitor-id.ts","../src/react/use-blog-engagement.ts","../src/react/use-blog-like.ts","../src/react/use-blog-comments.ts","../src/react/use-content-entries.ts","../src/react/use-content-entry.ts","../src/react/use-submit-lead.ts","../src/react/use-newsletter.ts"],"names":["useState","useEffect","useCallback"],"mappings":"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","file":"react.js","sourcesContent":["import { createContext } from \"react\";\nimport type { CmsClient } from \"../client.js\";\n\nexport const CmsClientContext = createContext<CmsClient | null>(null);\n","\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport type { CmsClient } from \"../client.js\";\nimport { CmsClientContext } from \"./context.js\";\n\nexport type CmsProviderProps = {\n client: CmsClient;\n children: ReactNode;\n};\n\nexport function CmsProvider({ client, children }: CmsProviderProps) {\n return <CmsClientContext.Provider value={client}>{children}</CmsClientContext.Provider>;\n}\n","\"use client\";\n\nimport { useContext } from \"react\";\nimport type { CmsClient } from \"../client.js\";\nimport { CmsClientContext } from \"./context.js\";\n\nexport function useCmsClient(): CmsClient {\n const client = useContext(CmsClientContext);\n if (!client) {\n throw new Error(\"useCmsClient must be used within a <CmsProvider client={...}>\");\n }\n return client;\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\nconst DEFAULT_STORAGE_KEY = \"utilsy_cms_visitor_id\";\n\nexport type UseVisitorIdOptions = {\n storageKey?: string;\n};\n\nexport function useVisitorId(options?: UseVisitorIdOptions): string {\n const storageKey = options?.storageKey ?? DEFAULT_STORAGE_KEY;\n const [visitorId, setVisitorId] = useState(\"\");\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n let id = localStorage.getItem(storageKey);\n if (!id) {\n id =\n typeof crypto !== \"undefined\" && \"randomUUID\" in crypto\n ? crypto.randomUUID()\n : `v-${Date.now()}-${Math.random().toString(36).slice(2)}`;\n localStorage.setItem(storageKey, id);\n }\n setVisitorId(id);\n }, [storageKey]);\n\n return visitorId;\n}\n\n/** Non-hook helper for event handlers */\nexport function getVisitorId(storageKey = DEFAULT_STORAGE_KEY): string {\n if (typeof window === \"undefined\") return \"\";\n let id = localStorage.getItem(storageKey);\n if (!id) {\n id =\n typeof crypto !== \"undefined\" && \"randomUUID\" in crypto\n ? crypto.randomUUID()\n : `v-${Date.now()}-${Math.random().toString(36).slice(2)}`;\n localStorage.setItem(storageKey, id);\n }\n return id;\n}\n","\"use client\";\n\nimport { useCallback, useEffect, useState } from \"react\";\nimport type { BlogEngagement } from \"../blog/types.js\";\nimport { useCmsClient } from \"./use-cms-client.js\";\nimport { getVisitorId } from \"./use-visitor-id.js\";\n\nexport type UseBlogEngagementOptions = {\n visitorId?: string;\n storageKey?: string;\n};\n\nexport function useBlogEngagement(postId: string, options?: UseBlogEngagementOptions) {\n const client = useCmsClient();\n const [engagement, setEngagement] = useState<BlogEngagement | null>(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const refetch = useCallback(async () => {\n if (!postId) return;\n setLoading(true);\n setError(null);\n try {\n const visitorId =\n options?.visitorId ??\n (typeof window !== \"undefined\" ? getVisitorId(options?.storageKey) : undefined);\n const data = await client.blog.getEngagement(postId, { visitorId });\n setEngagement(data);\n } catch (e) {\n setError(e instanceof Error ? e : new Error(String(e)));\n } finally {\n setLoading(false);\n }\n }, [client, postId, options?.visitorId, options?.storageKey]);\n\n useEffect(() => {\n refetch();\n }, [refetch]);\n\n return { engagement, loading, error, refetch };\n}\n","\"use client\";\n\nimport { useCallback, useState } from \"react\";\nimport { useBlogEngagement } from \"./use-blog-engagement.js\";\nimport { useCmsClient } from \"./use-cms-client.js\";\nimport { getVisitorId } from \"./use-visitor-id.js\";\n\nexport type UseBlogLikeOptions = {\n visitorId?: string;\n storageKey?: string;\n};\n\nexport function useBlogLike(postId: string, options?: UseBlogLikeOptions) {\n const client = useCmsClient();\n const { engagement, loading: engagementLoading, refetch } = useBlogEngagement(postId, options);\n const [toggling, setToggling] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const toggle = useCallback(async () => {\n if (!postId) return;\n setToggling(true);\n setError(null);\n try {\n const visitorId =\n options?.visitorId ??\n (typeof window !== \"undefined\" ? getVisitorId(options?.storageKey) : undefined);\n await client.blog.toggleLike(postId, { visitorId });\n await refetch();\n } catch (e) {\n setError(e instanceof Error ? e : new Error(String(e)));\n } finally {\n setToggling(false);\n }\n }, [client, postId, options?.visitorId, options?.storageKey, refetch]);\n\n return {\n liked: engagement?.likedByMe ?? false,\n likeCount: engagement?.likeCount ?? 0,\n viewCount: engagement?.viewCount ?? 0,\n commentCount: engagement?.commentCount ?? 0,\n loading: engagementLoading,\n toggling,\n error,\n toggle,\n refetch,\n };\n}\n","\"use client\";\n\nimport { useCallback, useEffect, useState } from \"react\";\nimport type { BlogComment, CreateBlogCommentInput } from \"../blog/types.js\";\nimport { useCmsClient } from \"./use-cms-client.js\";\n\nexport function useBlogComments(postId: string) {\n const client = useCmsClient();\n const [comments, setComments] = useState<BlogComment[]>([]);\n const [loading, setLoading] = useState(true);\n const [submitting, setSubmitting] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const refetch = useCallback(async () => {\n if (!postId) return;\n setLoading(true);\n setError(null);\n try {\n const data = await client.blog.listMappedComments(postId);\n setComments(data ?? []);\n } catch (e) {\n setError(e instanceof Error ? e : new Error(String(e)));\n } finally {\n setLoading(false);\n }\n }, [client, postId]);\n\n useEffect(() => {\n refetch();\n }, [refetch]);\n\n const submitComment = useCallback(\n async (input: CreateBlogCommentInput) => {\n if (!postId) return;\n setSubmitting(true);\n setError(null);\n try {\n await client.blog.createComment(postId, input);\n await refetch();\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e));\n setError(err);\n throw err;\n } finally {\n setSubmitting(false);\n }\n },\n [client, postId, refetch],\n );\n\n return { comments, loading, submitting, error, refetch, submitComment };\n}\n","\"use client\";\n\nimport { useCallback, useEffect, useState } from \"react\";\nimport type { ContentEntry, ListContentEntriesQuery } from \"../content/types.js\";\nimport { useCmsClient } from \"./use-cms-client.js\";\n\nexport type UseContentEntriesOptions = {\n enabled?: boolean;\n};\n\nexport function useContentEntries(\n contentTypeApiId: string,\n query?: ListContentEntriesQuery,\n options?: UseContentEntriesOptions,\n) {\n const client = useCmsClient();\n const [entries, setEntries] = useState<ContentEntry[]>([]);\n const [totalDocs, setTotalDocs] = useState(0);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const enabled = options?.enabled !== false && !!contentTypeApiId;\n const queryKey = JSON.stringify(query ?? {});\n\n const refetch = useCallback(async () => {\n if (!enabled) return;\n setLoading(true);\n setError(null);\n try {\n const result = await client.content.listMappedEntries(contentTypeApiId, query);\n setEntries(result?.entries ?? []);\n setTotalDocs(result?.totalDocs ?? 0);\n } catch (e) {\n setError(e instanceof Error ? e : new Error(String(e)));\n setEntries([]);\n setTotalDocs(0);\n } finally {\n setLoading(false);\n }\n }, [client, contentTypeApiId, enabled, queryKey, query]);\n\n useEffect(() => {\n refetch();\n }, [refetch]);\n\n return { entries, totalDocs, loading, error, refetch };\n}\n","\"use client\";\n\nimport { useCallback, useEffect, useState } from \"react\";\nimport type { ContentEntry } from \"../content/types.js\";\nimport { useCmsClient } from \"./use-cms-client.js\";\n\nexport type UseContentEntryOptions = {\n enabled?: boolean;\n};\n\nexport function useContentEntry(\n contentTypeApiId: string,\n idOrSlug: string,\n options?: UseContentEntryOptions,\n) {\n const client = useCmsClient();\n const [entry, setEntry] = useState<ContentEntry | null>(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const enabled = options?.enabled !== false && !!contentTypeApiId && !!idOrSlug;\n\n const refetch = useCallback(async () => {\n if (!enabled) return;\n setLoading(true);\n setError(null);\n try {\n const data = await client.content.getMappedEntry(contentTypeApiId, idOrSlug);\n setEntry(data);\n } catch (e) {\n setError(e instanceof Error ? e : new Error(String(e)));\n setEntry(null);\n } finally {\n setLoading(false);\n }\n }, [client, contentTypeApiId, idOrSlug, enabled]);\n\n useEffect(() => {\n refetch();\n }, [refetch]);\n\n return { entry, loading, error, refetch };\n}\n","\"use client\";\n\nimport { useCallback, useState } from \"react\";\nimport type { LeadSubmissionData, SubmitLeadOptions, SubmitLeadResult } from \"../leads/types.js\";\nimport { useCmsClient } from \"./use-cms-client.js\";\n\nexport function useSubmitLead(contentTypeApiId: string) {\n const client = useCmsClient();\n const [submitting, setSubmitting] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const submit = useCallback(\n async (\n data: LeadSubmissionData,\n options?: SubmitLeadOptions,\n ): Promise<SubmitLeadResult | null> => {\n if (!contentTypeApiId) return null;\n setSubmitting(true);\n setError(null);\n try {\n return await client.leads.submit(contentTypeApiId, data, options);\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e));\n setError(err);\n return null;\n } finally {\n setSubmitting(false);\n }\n },\n [client, contentTypeApiId],\n );\n\n return { submit, submitting, error };\n}\n","\"use client\";\n\nimport { useCallback, useState } from \"react\";\nimport type {\n ConfirmNewsletterResult,\n NewsletterActionResult,\n SubscribeNewsletterInput,\n UnsubscribeNewsletterInput,\n UpdateNewsletterPreferencesInput,\n} from \"../newsletter/types.js\";\nimport { useCmsClient } from \"./use-cms-client.js\";\n\nexport function useNewsletterSubscribe() {\n const client = useCmsClient();\n const [submitting, setSubmitting] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const subscribe = useCallback(\n async (input: SubscribeNewsletterInput): Promise<NewsletterActionResult | null> => {\n setSubmitting(true);\n setError(null);\n try {\n return await client.newsletter.subscribe(input);\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e));\n setError(err);\n return null;\n } finally {\n setSubmitting(false);\n }\n },\n [client],\n );\n\n return { subscribe, submitting, error };\n}\n\nexport function useNewsletterUnsubscribe() {\n const client = useCmsClient();\n const [submitting, setSubmitting] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const unsubscribe = useCallback(\n async (input: UnsubscribeNewsletterInput): Promise<NewsletterActionResult | null> => {\n setSubmitting(true);\n setError(null);\n try {\n return await client.newsletter.unsubscribe(input);\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e));\n setError(err);\n return null;\n } finally {\n setSubmitting(false);\n }\n },\n [client],\n );\n\n return { unsubscribe, submitting, error };\n}\n\nexport function useNewsletterUpdatePreferences() {\n const client = useCmsClient();\n const [submitting, setSubmitting] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const updatePreferences = useCallback(\n async (\n input: UpdateNewsletterPreferencesInput,\n ): Promise<NewsletterActionResult | null> => {\n setSubmitting(true);\n setError(null);\n try {\n return await client.newsletter.updatePreferences(input);\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e));\n setError(err);\n return null;\n } finally {\n setSubmitting(false);\n }\n },\n [client],\n );\n\n return { updatePreferences, submitting, error };\n}\n\nexport function useNewsletterConfirm() {\n const client = useCmsClient();\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const confirm = useCallback(\n async (token: string): Promise<ConfirmNewsletterResult | null> => {\n if (!token) return null;\n setLoading(true);\n setError(null);\n try {\n return await client.newsletter.confirm(token);\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e));\n setError(err);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [client],\n );\n\n return { confirm, loading, error };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/react/context.ts","../src/react/provider.tsx","../src/react/use-cms-client.ts","../src/react/use-visitor-id.ts","../src/react/use-blog-engagement.ts","../src/react/use-blog-like.ts","../src/react/use-blog-comments.ts","../src/react/use-content-entries.ts","../src/react/use-content-entry.ts","../src/react/use-single-content-entry.ts","../src/react/use-submit-lead.ts","../src/react/use-newsletter.ts"],"names":["useState","useEffect","useCallback"],"mappings":"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","file":"react.js","sourcesContent":["import { createContext } from \"react\";\nimport type { CmsClient } from \"../client.js\";\n\nexport const CmsClientContext = createContext<CmsClient | null>(null);\n","\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport type { CmsClient } from \"../client.js\";\nimport { CmsClientContext } from \"./context.js\";\n\nexport type CmsProviderProps = {\n client: CmsClient;\n children: ReactNode;\n};\n\nexport function CmsProvider({ client, children }: CmsProviderProps) {\n return <CmsClientContext.Provider value={client}>{children}</CmsClientContext.Provider>;\n}\n","\"use client\";\n\nimport { useContext } from \"react\";\nimport type { CmsClient } from \"../client.js\";\nimport { CmsClientContext } from \"./context.js\";\n\nexport function useCmsClient(): CmsClient {\n const client = useContext(CmsClientContext);\n if (!client) {\n throw new Error(\"useCmsClient must be used within a <CmsProvider client={...}>\");\n }\n return client;\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\nconst DEFAULT_STORAGE_KEY = \"utilsy_cms_visitor_id\";\n\nexport type UseVisitorIdOptions = {\n storageKey?: string;\n};\n\nexport function useVisitorId(options?: UseVisitorIdOptions): string {\n const storageKey = options?.storageKey ?? DEFAULT_STORAGE_KEY;\n const [visitorId, setVisitorId] = useState(\"\");\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n let id = localStorage.getItem(storageKey);\n if (!id) {\n id =\n typeof crypto !== \"undefined\" && \"randomUUID\" in crypto\n ? crypto.randomUUID()\n : `v-${Date.now()}-${Math.random().toString(36).slice(2)}`;\n localStorage.setItem(storageKey, id);\n }\n setVisitorId(id);\n }, [storageKey]);\n\n return visitorId;\n}\n\n/** Non-hook helper for event handlers */\nexport function getVisitorId(storageKey = DEFAULT_STORAGE_KEY): string {\n if (typeof window === \"undefined\") return \"\";\n let id = localStorage.getItem(storageKey);\n if (!id) {\n id =\n typeof crypto !== \"undefined\" && \"randomUUID\" in crypto\n ? crypto.randomUUID()\n : `v-${Date.now()}-${Math.random().toString(36).slice(2)}`;\n localStorage.setItem(storageKey, id);\n }\n return id;\n}\n","\"use client\";\n\nimport { useCallback, useEffect, useState } from \"react\";\nimport type { BlogEngagement } from \"../blog/types.js\";\nimport { useCmsClient } from \"./use-cms-client.js\";\nimport { getVisitorId } from \"./use-visitor-id.js\";\n\nexport type UseBlogEngagementOptions = {\n visitorId?: string;\n storageKey?: string;\n};\n\nexport function useBlogEngagement(postId: string, options?: UseBlogEngagementOptions) {\n const client = useCmsClient();\n const [engagement, setEngagement] = useState<BlogEngagement | null>(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const refetch = useCallback(async () => {\n if (!postId) return;\n setLoading(true);\n setError(null);\n try {\n const visitorId =\n options?.visitorId ??\n (typeof window !== \"undefined\" ? getVisitorId(options?.storageKey) : undefined);\n const data = await client.blog.getEngagement(postId, { visitorId });\n setEngagement(data);\n } catch (e) {\n setError(e instanceof Error ? e : new Error(String(e)));\n } finally {\n setLoading(false);\n }\n }, [client, postId, options?.visitorId, options?.storageKey]);\n\n useEffect(() => {\n refetch();\n }, [refetch]);\n\n return { engagement, loading, error, refetch };\n}\n","\"use client\";\n\nimport { useCallback, useState } from \"react\";\nimport { useBlogEngagement } from \"./use-blog-engagement.js\";\nimport { useCmsClient } from \"./use-cms-client.js\";\nimport { getVisitorId } from \"./use-visitor-id.js\";\n\nexport type UseBlogLikeOptions = {\n visitorId?: string;\n storageKey?: string;\n};\n\nexport function useBlogLike(postId: string, options?: UseBlogLikeOptions) {\n const client = useCmsClient();\n const { engagement, loading: engagementLoading, refetch } = useBlogEngagement(postId, options);\n const [toggling, setToggling] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const toggle = useCallback(async () => {\n if (!postId) return;\n setToggling(true);\n setError(null);\n try {\n const visitorId =\n options?.visitorId ??\n (typeof window !== \"undefined\" ? getVisitorId(options?.storageKey) : undefined);\n await client.blog.toggleLike(postId, { visitorId });\n await refetch();\n } catch (e) {\n setError(e instanceof Error ? e : new Error(String(e)));\n } finally {\n setToggling(false);\n }\n }, [client, postId, options?.visitorId, options?.storageKey, refetch]);\n\n return {\n liked: engagement?.likedByMe ?? false,\n likeCount: engagement?.likeCount ?? 0,\n viewCount: engagement?.viewCount ?? 0,\n commentCount: engagement?.commentCount ?? 0,\n loading: engagementLoading,\n toggling,\n error,\n toggle,\n refetch,\n };\n}\n","\"use client\";\n\nimport { useCallback, useEffect, useState } from \"react\";\nimport type { BlogComment, CreateBlogCommentInput } from \"../blog/types.js\";\nimport { useCmsClient } from \"./use-cms-client.js\";\n\nexport function useBlogComments(postId: string) {\n const client = useCmsClient();\n const [comments, setComments] = useState<BlogComment[]>([]);\n const [loading, setLoading] = useState(true);\n const [submitting, setSubmitting] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const refetch = useCallback(async () => {\n if (!postId) return;\n setLoading(true);\n setError(null);\n try {\n const data = await client.blog.listMappedComments(postId);\n setComments(data ?? []);\n } catch (e) {\n setError(e instanceof Error ? e : new Error(String(e)));\n } finally {\n setLoading(false);\n }\n }, [client, postId]);\n\n useEffect(() => {\n refetch();\n }, [refetch]);\n\n const submitComment = useCallback(\n async (input: CreateBlogCommentInput) => {\n if (!postId) return;\n setSubmitting(true);\n setError(null);\n try {\n await client.blog.createComment(postId, input);\n await refetch();\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e));\n setError(err);\n throw err;\n } finally {\n setSubmitting(false);\n }\n },\n [client, postId, refetch],\n );\n\n return { comments, loading, submitting, error, refetch, submitComment };\n}\n","\"use client\";\n\nimport { useCallback, useEffect, useState } from \"react\";\nimport type { ContentEntry, ListContentEntriesQuery } from \"../content/types.js\";\nimport { useCmsClient } from \"./use-cms-client.js\";\n\nexport type UseContentEntriesOptions = {\n enabled?: boolean;\n};\n\nexport function useContentEntries(\n contentTypeApiId: string,\n query?: ListContentEntriesQuery,\n options?: UseContentEntriesOptions,\n) {\n const client = useCmsClient();\n const [entries, setEntries] = useState<ContentEntry[]>([]);\n const [totalDocs, setTotalDocs] = useState(0);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const enabled = options?.enabled !== false && !!contentTypeApiId;\n const queryKey = JSON.stringify(query ?? {});\n\n const refetch = useCallback(async () => {\n if (!enabled) return;\n setLoading(true);\n setError(null);\n try {\n const result = await client.content.listMappedEntries(contentTypeApiId, query);\n setEntries(result?.entries ?? []);\n setTotalDocs(result?.totalDocs ?? 0);\n } catch (e) {\n setError(e instanceof Error ? e : new Error(String(e)));\n setEntries([]);\n setTotalDocs(0);\n } finally {\n setLoading(false);\n }\n }, [client, contentTypeApiId, enabled, queryKey, query]);\n\n useEffect(() => {\n refetch();\n }, [refetch]);\n\n return { entries, totalDocs, loading, error, refetch };\n}\n","\"use client\";\n\nimport { useCallback, useEffect, useState } from \"react\";\nimport type { ContentEntry } from \"../content/types.js\";\nimport { useCmsClient } from \"./use-cms-client.js\";\n\nexport type UseContentEntryOptions = {\n enabled?: boolean;\n};\n\nexport function useContentEntry(\n contentTypeApiId: string,\n idOrSlug: string,\n options?: UseContentEntryOptions,\n) {\n const client = useCmsClient();\n const [entry, setEntry] = useState<ContentEntry | null>(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const enabled = options?.enabled !== false && !!contentTypeApiId && !!idOrSlug;\n\n const refetch = useCallback(async () => {\n if (!enabled) return;\n setLoading(true);\n setError(null);\n try {\n const data = await client.content.getMappedEntry(contentTypeApiId, idOrSlug);\n setEntry(data);\n } catch (e) {\n setError(e instanceof Error ? e : new Error(String(e)));\n setEntry(null);\n } finally {\n setLoading(false);\n }\n }, [client, contentTypeApiId, idOrSlug, enabled]);\n\n useEffect(() => {\n refetch();\n }, [refetch]);\n\n return { entry, loading, error, refetch };\n}\n","\"use client\";\n\nimport { useCallback, useEffect, useState } from \"react\";\nimport type { ContentEntry } from \"../content/types.js\";\nimport { useCmsClient } from \"./use-cms-client.js\";\n\nexport type UseSingleContentEntryOptions = {\n enabled?: boolean;\n};\n\nexport function useSingleContentEntry(\n contentTypeApiId: string,\n options?: UseSingleContentEntryOptions,\n) {\n const client = useCmsClient();\n const [entry, setEntry] = useState<ContentEntry | null>(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const enabled = options?.enabled !== false && !!contentTypeApiId;\n\n const refetch = useCallback(async () => {\n if (!enabled) return;\n setLoading(true);\n setError(null);\n try {\n const data = await client.content.getSingleMappedEntry(contentTypeApiId);\n setEntry(data);\n } catch (e) {\n setError(e instanceof Error ? e : new Error(String(e)));\n setEntry(null);\n } finally {\n setLoading(false);\n }\n }, [client, contentTypeApiId, enabled]);\n\n useEffect(() => {\n refetch();\n }, [refetch]);\n\n return { entry, loading, error, refetch };\n}\n","\"use client\";\n\nimport { useCallback, useState } from \"react\";\nimport type { LeadSubmissionData, SubmitLeadOptions, SubmitLeadResult } from \"../leads/types.js\";\nimport { useCmsClient } from \"./use-cms-client.js\";\n\nexport function useSubmitLead(contentTypeApiId: string) {\n const client = useCmsClient();\n const [submitting, setSubmitting] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const submit = useCallback(\n async (\n data: LeadSubmissionData,\n options?: SubmitLeadOptions,\n ): Promise<SubmitLeadResult | null> => {\n if (!contentTypeApiId) return null;\n setSubmitting(true);\n setError(null);\n try {\n return await client.leads.submit(contentTypeApiId, data, options);\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e));\n setError(err);\n return null;\n } finally {\n setSubmitting(false);\n }\n },\n [client, contentTypeApiId],\n );\n\n return { submit, submitting, error };\n}\n","\"use client\";\n\nimport { useCallback, useState } from \"react\";\nimport type {\n ConfirmNewsletterResult,\n NewsletterActionResult,\n SubscribeNewsletterInput,\n UnsubscribeNewsletterInput,\n UpdateNewsletterPreferencesInput,\n} from \"../newsletter/types.js\";\nimport { useCmsClient } from \"./use-cms-client.js\";\n\nexport function useNewsletterSubscribe() {\n const client = useCmsClient();\n const [submitting, setSubmitting] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const subscribe = useCallback(\n async (input: SubscribeNewsletterInput): Promise<NewsletterActionResult | null> => {\n setSubmitting(true);\n setError(null);\n try {\n return await client.newsletter.subscribe(input);\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e));\n setError(err);\n return null;\n } finally {\n setSubmitting(false);\n }\n },\n [client],\n );\n\n return { subscribe, submitting, error };\n}\n\nexport function useNewsletterUnsubscribe() {\n const client = useCmsClient();\n const [submitting, setSubmitting] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const unsubscribe = useCallback(\n async (input: UnsubscribeNewsletterInput): Promise<NewsletterActionResult | null> => {\n setSubmitting(true);\n setError(null);\n try {\n return await client.newsletter.unsubscribe(input);\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e));\n setError(err);\n return null;\n } finally {\n setSubmitting(false);\n }\n },\n [client],\n );\n\n return { unsubscribe, submitting, error };\n}\n\nexport function useNewsletterUpdatePreferences() {\n const client = useCmsClient();\n const [submitting, setSubmitting] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const updatePreferences = useCallback(\n async (\n input: UpdateNewsletterPreferencesInput,\n ): Promise<NewsletterActionResult | null> => {\n setSubmitting(true);\n setError(null);\n try {\n return await client.newsletter.updatePreferences(input);\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e));\n setError(err);\n return null;\n } finally {\n setSubmitting(false);\n }\n },\n [client],\n );\n\n return { updatePreferences, submitting, error };\n}\n\nexport function useNewsletterConfirm() {\n const client = useCmsClient();\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const confirm = useCallback(\n async (token: string): Promise<ConfirmNewsletterResult | null> => {\n if (!token) return null;\n setLoading(true);\n setError(null);\n try {\n return await client.newsletter.confirm(token);\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e));\n setError(err);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [client],\n );\n\n return { confirm, loading, error };\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@utilsy/cms-nextjs",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Headless Next.js SDK for Utilsy gateway-cms public blog, content, leads, and newsletter APIs",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
],
|
|
37
37
|
"scripts": {
|
|
38
38
|
"build": "tsup",
|
|
39
|
+
"publish": "npm publish --access public",
|
|
39
40
|
"dev": "tsup --watch",
|
|
40
41
|
"test": "vitest run",
|
|
41
42
|
"test:watch": "vitest",
|