@djangocfg/ext-newsletter 1.0.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.
Files changed (91) hide show
  1. package/README.md +140 -0
  2. package/dist/chunk-LQLPNWHR.js +2075 -0
  3. package/dist/hooks.cjs +2539 -0
  4. package/dist/hooks.d.cts +267 -0
  5. package/dist/hooks.d.ts +267 -0
  6. package/dist/hooks.js +370 -0
  7. package/dist/index.cjs +2153 -0
  8. package/dist/index.d.cts +2084 -0
  9. package/dist/index.d.ts +2084 -0
  10. package/dist/index.js +1 -0
  11. package/package.json +80 -0
  12. package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter.ts +210 -0
  13. package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter__bulk_email.ts +93 -0
  14. package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter__campaigns.ts +338 -0
  15. package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter__logs.ts +92 -0
  16. package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter__newsletters.ts +150 -0
  17. package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter__subscriptions.ts +210 -0
  18. package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter__testing.ts +93 -0
  19. package/src/api/generated/ext_newsletter/_utils/fetchers/index.ts +34 -0
  20. package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter.ts +81 -0
  21. package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter__bulk_email.ts +42 -0
  22. package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter__campaigns.ts +130 -0
  23. package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter__logs.ts +37 -0
  24. package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter__newsletters.ts +52 -0
  25. package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter__subscriptions.ts +78 -0
  26. package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter__testing.ts +42 -0
  27. package/src/api/generated/ext_newsletter/_utils/hooks/index.ts +34 -0
  28. package/src/api/generated/ext_newsletter/_utils/schemas/BulkEmailRequest.schema.ts +26 -0
  29. package/src/api/generated/ext_newsletter/_utils/schemas/BulkEmailResponse.schema.ts +23 -0
  30. package/src/api/generated/ext_newsletter/_utils/schemas/EmailLog.schema.ts +31 -0
  31. package/src/api/generated/ext_newsletter/_utils/schemas/ErrorResponse.schema.ts +20 -0
  32. package/src/api/generated/ext_newsletter/_utils/schemas/Newsletter.schema.ts +26 -0
  33. package/src/api/generated/ext_newsletter/_utils/schemas/NewsletterCampaign.schema.ts +33 -0
  34. package/src/api/generated/ext_newsletter/_utils/schemas/NewsletterCampaignRequest.schema.ts +26 -0
  35. package/src/api/generated/ext_newsletter/_utils/schemas/NewsletterSubscription.schema.ts +27 -0
  36. package/src/api/generated/ext_newsletter/_utils/schemas/PaginatedEmailLogList.schema.ts +24 -0
  37. package/src/api/generated/ext_newsletter/_utils/schemas/PaginatedNewsletterCampaignList.schema.ts +24 -0
  38. package/src/api/generated/ext_newsletter/_utils/schemas/PaginatedNewsletterList.schema.ts +24 -0
  39. package/src/api/generated/ext_newsletter/_utils/schemas/PaginatedNewsletterSubscriptionList.schema.ts +24 -0
  40. package/src/api/generated/ext_newsletter/_utils/schemas/PatchedNewsletterCampaignRequest.schema.ts +26 -0
  41. package/src/api/generated/ext_newsletter/_utils/schemas/PatchedUnsubscribeRequest.schema.ts +19 -0
  42. package/src/api/generated/ext_newsletter/_utils/schemas/SendCampaignRequest.schema.ts +19 -0
  43. package/src/api/generated/ext_newsletter/_utils/schemas/SendCampaignResponse.schema.ts +22 -0
  44. package/src/api/generated/ext_newsletter/_utils/schemas/SubscribeRequest.schema.ts +20 -0
  45. package/src/api/generated/ext_newsletter/_utils/schemas/SubscribeResponse.schema.ts +21 -0
  46. package/src/api/generated/ext_newsletter/_utils/schemas/SuccessResponse.schema.ts +20 -0
  47. package/src/api/generated/ext_newsletter/_utils/schemas/TestEmailRequest.schema.ts +21 -0
  48. package/src/api/generated/ext_newsletter/_utils/schemas/Unsubscribe.schema.ts +19 -0
  49. package/src/api/generated/ext_newsletter/_utils/schemas/UnsubscribeRequest.schema.ts +19 -0
  50. package/src/api/generated/ext_newsletter/_utils/schemas/index.ts +40 -0
  51. package/src/api/generated/ext_newsletter/api-instance.ts +131 -0
  52. package/src/api/generated/ext_newsletter/client.ts +319 -0
  53. package/src/api/generated/ext_newsletter/enums.ts +24 -0
  54. package/src/api/generated/ext_newsletter/errors.ts +116 -0
  55. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter/client.ts +38 -0
  56. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter/index.ts +2 -0
  57. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter/models.ts +71 -0
  58. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__bulk_email/client.ts +24 -0
  59. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__bulk_email/index.ts +2 -0
  60. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__bulk_email/models.ts +29 -0
  61. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__campaigns/client.ts +85 -0
  62. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__campaigns/index.ts +2 -0
  63. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__campaigns/models.ts +100 -0
  64. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__logs/client.ts +35 -0
  65. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__logs/index.ts +2 -0
  66. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__logs/models.ts +51 -0
  67. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__newsletters/client.ts +45 -0
  68. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__newsletters/index.ts +2 -0
  69. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__newsletters/models.ts +42 -0
  70. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__subscriptions/client.ts +55 -0
  71. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__subscriptions/index.ts +2 -0
  72. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__subscriptions/models.ts +92 -0
  73. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__testing/client.ts +24 -0
  74. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__testing/index.ts +2 -0
  75. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__testing/models.ts +24 -0
  76. package/src/api/generated/ext_newsletter/http.ts +103 -0
  77. package/src/api/generated/ext_newsletter/index.ts +315 -0
  78. package/src/api/generated/ext_newsletter/logger.ts +259 -0
  79. package/src/api/generated/ext_newsletter/retry.ts +175 -0
  80. package/src/api/generated/ext_newsletter/schema.json +1739 -0
  81. package/src/api/generated/ext_newsletter/storage.ts +161 -0
  82. package/src/api/generated/ext_newsletter/validation-events.ts +133 -0
  83. package/src/api/index.ts +9 -0
  84. package/src/components/Hero/index.tsx +160 -0
  85. package/src/components/Hero/types.ts +37 -0
  86. package/src/config.ts +20 -0
  87. package/src/contexts/newsletter/NewsletterContext.tsx +264 -0
  88. package/src/contexts/newsletter/types.ts +32 -0
  89. package/src/hooks/index.ts +21 -0
  90. package/src/index.ts +14 -0
  91. package/src/utils/logger.ts +9 -0
@@ -0,0 +1,210 @@
1
+ /**
2
+ * Typed fetchers for Subscriptions
3
+ *
4
+ * Universal functions that work in any environment:
5
+ * - Next.js (App Router / Pages Router / Server Components)
6
+ * - React Native
7
+ * - Node.js backend
8
+ *
9
+ * These fetchers use Zod schemas for runtime validation.
10
+ *
11
+ * Usage:
12
+ * ```typescript
13
+ * // Configure API once (in your app entry point)
14
+ * import { configureAPI } from '../../api-instance'
15
+ * configureAPI({ baseUrl: 'https://api.example.com' })
16
+ *
17
+ * // Then use fetchers anywhere
18
+ * const users = await getUsers({ page: 1 })
19
+ *
20
+ * // With SWR
21
+ * const { data } = useSWR(['users', params], () => getUsers(params))
22
+ *
23
+ * // With React Query
24
+ * const { data } = useQuery(['users', params], () => getUsers(params))
25
+ *
26
+ * // In Server Component or SSR (pass custom client)
27
+ * import { API } from '../../index'
28
+ * const api = new API('https://api.example.com')
29
+ * const users = await getUsers({ page: 1 }, api)
30
+ * ```
31
+ */
32
+ import { consola } from 'consola'
33
+ import { PaginatedNewsletterSubscriptionListSchema, type PaginatedNewsletterSubscriptionList } from '../schemas/PaginatedNewsletterSubscriptionList.schema'
34
+ import { SubscribeRequestSchema, type SubscribeRequest } from '../schemas/SubscribeRequest.schema'
35
+ import { SubscribeResponseSchema, type SubscribeResponse } from '../schemas/SubscribeResponse.schema'
36
+ import { SuccessResponseSchema, type SuccessResponse } from '../schemas/SuccessResponse.schema'
37
+ import { UnsubscribeRequestSchema, type UnsubscribeRequest } from '../schemas/UnsubscribeRequest.schema'
38
+ import { getAPIInstance } from '../../api-instance'
39
+
40
+ /**
41
+ * Subscribe to Newsletter
42
+ *
43
+ * @method POST
44
+ * @path /cfg/newsletter/subscribe/
45
+ */
46
+ export async function createNewsletterSubscribeCreate( data: SubscribeRequest, client?: any
47
+ ): Promise<SubscribeResponse> {
48
+ const api = client || getAPIInstance()
49
+ const response = await api.ext_newsletter_subscriptions.newsletterSubscribeCreate(data)
50
+ try {
51
+ return SubscribeResponseSchema.parse(response)
52
+ } catch (error) {
53
+ // Zod validation error - log detailed information
54
+ consola.error('❌ Zod Validation Failed');
55
+ consola.box(`createNewsletterSubscribeCreate\nPath: /cfg/newsletter/subscribe/\nMethod: POST`);
56
+
57
+ if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {
58
+ consola.error('Validation Issues:');
59
+ (error as any).issues.forEach((issue: any, index: number) => {
60
+ consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);
61
+ consola.error(` ├─ Message: ${issue.message}`);
62
+ if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);
63
+ if (issue.received) consola.error(` └─ Received: ${issue.received}`);
64
+ });
65
+ }
66
+
67
+ consola.error('Response data:', response);
68
+
69
+ // Dispatch browser CustomEvent (only if window is defined)
70
+ if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {
71
+ try {
72
+ const event = new CustomEvent('zod-validation-error', {
73
+ detail: {
74
+ operation: 'createNewsletterSubscribeCreate',
75
+ path: '/cfg/newsletter/subscribe/',
76
+ method: 'POST',
77
+ error: error,
78
+ response: response,
79
+ timestamp: new Date(),
80
+ },
81
+ bubbles: true,
82
+ cancelable: false,
83
+ });
84
+ window.dispatchEvent(event);
85
+ } catch (eventError) {
86
+ // Silently fail - event dispatch should never crash the app
87
+ consola.warn('Failed to dispatch validation error event:', eventError);
88
+ }
89
+ }
90
+
91
+ // Re-throw the error
92
+ throw error;
93
+ }
94
+ }
95
+
96
+
97
+ /**
98
+ * List User Subscriptions
99
+ *
100
+ * @method GET
101
+ * @path /cfg/newsletter/subscriptions/
102
+ */
103
+ export async function getNewsletterSubscriptionsList( params?: { page?: number; page_size?: number }, client?: any
104
+ ): Promise<PaginatedNewsletterSubscriptionList> {
105
+ const api = client || getAPIInstance()
106
+ const response = await api.ext_newsletter_subscriptions.newsletterSubscriptionsList(params?.page, params?.page_size)
107
+ try {
108
+ return PaginatedNewsletterSubscriptionListSchema.parse(response)
109
+ } catch (error) {
110
+ // Zod validation error - log detailed information
111
+ consola.error('❌ Zod Validation Failed');
112
+ consola.box(`getNewsletterSubscriptionsList\nPath: /cfg/newsletter/subscriptions/\nMethod: GET`);
113
+
114
+ if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {
115
+ consola.error('Validation Issues:');
116
+ (error as any).issues.forEach((issue: any, index: number) => {
117
+ consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);
118
+ consola.error(` ├─ Message: ${issue.message}`);
119
+ if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);
120
+ if (issue.received) consola.error(` └─ Received: ${issue.received}`);
121
+ });
122
+ }
123
+
124
+ consola.error('Response data:', response);
125
+
126
+ // Dispatch browser CustomEvent (only if window is defined)
127
+ if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {
128
+ try {
129
+ const event = new CustomEvent('zod-validation-error', {
130
+ detail: {
131
+ operation: 'getNewsletterSubscriptionsList',
132
+ path: '/cfg/newsletter/subscriptions/',
133
+ method: 'GET',
134
+ error: error,
135
+ response: response,
136
+ timestamp: new Date(),
137
+ },
138
+ bubbles: true,
139
+ cancelable: false,
140
+ });
141
+ window.dispatchEvent(event);
142
+ } catch (eventError) {
143
+ // Silently fail - event dispatch should never crash the app
144
+ consola.warn('Failed to dispatch validation error event:', eventError);
145
+ }
146
+ }
147
+
148
+ // Re-throw the error
149
+ throw error;
150
+ }
151
+ }
152
+
153
+
154
+ /**
155
+ * Unsubscribe from Newsletter
156
+ *
157
+ * @method POST
158
+ * @path /cfg/newsletter/unsubscribe/
159
+ */
160
+ export async function createNewsletterUnsubscribeCreate( data: UnsubscribeRequest, client?: any
161
+ ): Promise<SuccessResponse> {
162
+ const api = client || getAPIInstance()
163
+ const response = await api.ext_newsletter_subscriptions.newsletterUnsubscribeCreate(data)
164
+ try {
165
+ return SuccessResponseSchema.parse(response)
166
+ } catch (error) {
167
+ // Zod validation error - log detailed information
168
+ consola.error('❌ Zod Validation Failed');
169
+ consola.box(`createNewsletterUnsubscribeCreate\nPath: /cfg/newsletter/unsubscribe/\nMethod: POST`);
170
+
171
+ if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {
172
+ consola.error('Validation Issues:');
173
+ (error as any).issues.forEach((issue: any, index: number) => {
174
+ consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);
175
+ consola.error(` ├─ Message: ${issue.message}`);
176
+ if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);
177
+ if (issue.received) consola.error(` └─ Received: ${issue.received}`);
178
+ });
179
+ }
180
+
181
+ consola.error('Response data:', response);
182
+
183
+ // Dispatch browser CustomEvent (only if window is defined)
184
+ if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {
185
+ try {
186
+ const event = new CustomEvent('zod-validation-error', {
187
+ detail: {
188
+ operation: 'createNewsletterUnsubscribeCreate',
189
+ path: '/cfg/newsletter/unsubscribe/',
190
+ method: 'POST',
191
+ error: error,
192
+ response: response,
193
+ timestamp: new Date(),
194
+ },
195
+ bubbles: true,
196
+ cancelable: false,
197
+ });
198
+ window.dispatchEvent(event);
199
+ } catch (eventError) {
200
+ // Silently fail - event dispatch should never crash the app
201
+ consola.warn('Failed to dispatch validation error event:', eventError);
202
+ }
203
+ }
204
+
205
+ // Re-throw the error
206
+ throw error;
207
+ }
208
+ }
209
+
210
+
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Typed fetchers for Testing
3
+ *
4
+ * Universal functions that work in any environment:
5
+ * - Next.js (App Router / Pages Router / Server Components)
6
+ * - React Native
7
+ * - Node.js backend
8
+ *
9
+ * These fetchers use Zod schemas for runtime validation.
10
+ *
11
+ * Usage:
12
+ * ```typescript
13
+ * // Configure API once (in your app entry point)
14
+ * import { configureAPI } from '../../api-instance'
15
+ * configureAPI({ baseUrl: 'https://api.example.com' })
16
+ *
17
+ * // Then use fetchers anywhere
18
+ * const users = await getUsers({ page: 1 })
19
+ *
20
+ * // With SWR
21
+ * const { data } = useSWR(['users', params], () => getUsers(params))
22
+ *
23
+ * // With React Query
24
+ * const { data } = useQuery(['users', params], () => getUsers(params))
25
+ *
26
+ * // In Server Component or SSR (pass custom client)
27
+ * import { API } from '../../index'
28
+ * const api = new API('https://api.example.com')
29
+ * const users = await getUsers({ page: 1 }, api)
30
+ * ```
31
+ */
32
+ import { consola } from 'consola'
33
+ import { BulkEmailResponseSchema, type BulkEmailResponse } from '../schemas/BulkEmailResponse.schema'
34
+ import { TestEmailRequestSchema, type TestEmailRequest } from '../schemas/TestEmailRequest.schema'
35
+ import { getAPIInstance } from '../../api-instance'
36
+
37
+ /**
38
+ * Test Email Sending
39
+ *
40
+ * @method POST
41
+ * @path /cfg/newsletter/test/
42
+ */
43
+ export async function createNewsletterTestCreate( data: TestEmailRequest, client?: any
44
+ ): Promise<BulkEmailResponse> {
45
+ const api = client || getAPIInstance()
46
+ const response = await api.ext_newsletter_testing.newsletterTestCreate(data)
47
+ try {
48
+ return BulkEmailResponseSchema.parse(response)
49
+ } catch (error) {
50
+ // Zod validation error - log detailed information
51
+ consola.error('❌ Zod Validation Failed');
52
+ consola.box(`createNewsletterTestCreate\nPath: /cfg/newsletter/test/\nMethod: POST`);
53
+
54
+ if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {
55
+ consola.error('Validation Issues:');
56
+ (error as any).issues.forEach((issue: any, index: number) => {
57
+ consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);
58
+ consola.error(` ├─ Message: ${issue.message}`);
59
+ if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);
60
+ if (issue.received) consola.error(` └─ Received: ${issue.received}`);
61
+ });
62
+ }
63
+
64
+ consola.error('Response data:', response);
65
+
66
+ // Dispatch browser CustomEvent (only if window is defined)
67
+ if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {
68
+ try {
69
+ const event = new CustomEvent('zod-validation-error', {
70
+ detail: {
71
+ operation: 'createNewsletterTestCreate',
72
+ path: '/cfg/newsletter/test/',
73
+ method: 'POST',
74
+ error: error,
75
+ response: response,
76
+ timestamp: new Date(),
77
+ },
78
+ bubbles: true,
79
+ cancelable: false,
80
+ });
81
+ window.dispatchEvent(event);
82
+ } catch (eventError) {
83
+ // Silently fail - event dispatch should never crash the app
84
+ consola.warn('Failed to dispatch validation error event:', eventError);
85
+ }
86
+ }
87
+
88
+ // Re-throw the error
89
+ throw error;
90
+ }
91
+ }
92
+
93
+
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Typed Fetchers - Universal API functions
3
+ *
4
+ * Auto-generated from OpenAPI specification.
5
+ * These functions work in any JavaScript environment.
6
+ *
7
+ * Features:
8
+ * - Runtime validation with Zod
9
+ * - Type-safe parameters and responses
10
+ * - Works with any data-fetching library (SWR, React Query, etc)
11
+ * - Server Component compatible
12
+ *
13
+ * Usage:
14
+ * ```typescript
15
+ * import * as fetchers from './fetchers'
16
+ *
17
+ * // Direct usage
18
+ * const user = await fetchers.getUser(1)
19
+ *
20
+ * // With SWR
21
+ * const { data } = useSWR('user-1', () => fetchers.getUser(1))
22
+ *
23
+ * // With React Query
24
+ * const { data } = useQuery(['user', 1], () => fetchers.getUser(1))
25
+ * ```
26
+ */
27
+
28
+ export * from './ext_newsletter__newsletter'
29
+ export * from './ext_newsletter__newsletter__bulk_email'
30
+ export * from './ext_newsletter__newsletter__campaigns'
31
+ export * from './ext_newsletter__newsletter__logs'
32
+ export * from './ext_newsletter__newsletter__newsletters'
33
+ export * from './ext_newsletter__newsletter__subscriptions'
34
+ export * from './ext_newsletter__newsletter__testing'
@@ -0,0 +1,81 @@
1
+ 'use client';
2
+
3
+ /**
4
+ * SWR Hooks for Newsletter
5
+ *
6
+ * React hooks powered by SWR for data fetching with automatic caching,
7
+ * revalidation, and optimistic updates.
8
+ *
9
+ * Usage:
10
+ * ```typescript
11
+ * // Query hooks (GET)
12
+ * const { data, error, isLoading } = useUsers({ page: 1 })
13
+ *
14
+ * // Mutation hooks (POST/PUT/PATCH/DELETE)
15
+ * const createUser = useCreateUser()
16
+ * await createUser({ name: 'John', email: 'john@example.com' })
17
+ * ```
18
+ */
19
+ import { useSWRConfig } from 'swr'
20
+ import * as Fetchers from '../fetchers/ext_newsletter__newsletter'
21
+ import type { API } from '../../index'
22
+ import type { NewsletterCampaign } from '../schemas/NewsletterCampaign.schema'
23
+ import type { PatchedNewsletterCampaignRequest } from '../schemas/PatchedNewsletterCampaignRequest.schema'
24
+ import type { PatchedUnsubscribeRequest } from '../schemas/PatchedUnsubscribeRequest.schema'
25
+ import type { Unsubscribe } from '../schemas/Unsubscribe.schema'
26
+ import type { UnsubscribeRequest } from '../schemas/UnsubscribeRequest.schema'
27
+
28
+ /**
29
+ * API operation
30
+ *
31
+ * @method PATCH
32
+ * @path /cfg/newsletter/campaigns/{id}/
33
+ */
34
+ export function usePartialUpdateNewsletterCampaignsPartialUpdate() {
35
+ const { mutate } = useSWRConfig()
36
+
37
+ return async (id: number, data?: PatchedNewsletterCampaignRequest, client?: API): Promise<NewsletterCampaign> => {
38
+ const result = await Fetchers.partialUpdateNewsletterCampaignsPartialUpdate(id, data, client)
39
+ // Revalidate related queries
40
+ mutate('cfg-newsletter-campaigns-partial')
41
+ return result
42
+ }
43
+ }
44
+
45
+
46
+ /**
47
+ * API operation
48
+ *
49
+ * @method PUT
50
+ * @path /cfg/newsletter/unsubscribe/
51
+ */
52
+ export function useUpdateNewsletterUnsubscribeUpdate() {
53
+ const { mutate } = useSWRConfig()
54
+
55
+ return async (data: UnsubscribeRequest, client?: API): Promise<Unsubscribe> => {
56
+ const result = await Fetchers.updateNewsletterUnsubscribeUpdate(data, client)
57
+ // Revalidate related queries
58
+ mutate('cfg-newsletter-unsubscribe')
59
+ return result
60
+ }
61
+ }
62
+
63
+
64
+ /**
65
+ * API operation
66
+ *
67
+ * @method PATCH
68
+ * @path /cfg/newsletter/unsubscribe/
69
+ */
70
+ export function usePartialUpdateNewsletterUnsubscribePartialUpdate() {
71
+ const { mutate } = useSWRConfig()
72
+
73
+ return async (data?: PatchedUnsubscribeRequest, client?: API): Promise<Unsubscribe> => {
74
+ const result = await Fetchers.partialUpdateNewsletterUnsubscribePartialUpdate(data, client)
75
+ // Revalidate related queries
76
+ mutate('cfg-newsletter-unsubscribe-partial')
77
+ return result
78
+ }
79
+ }
80
+
81
+
@@ -0,0 +1,42 @@
1
+ 'use client';
2
+
3
+ /**
4
+ * SWR Hooks for Bulk Email
5
+ *
6
+ * React hooks powered by SWR for data fetching with automatic caching,
7
+ * revalidation, and optimistic updates.
8
+ *
9
+ * Usage:
10
+ * ```typescript
11
+ * // Query hooks (GET)
12
+ * const { data, error, isLoading } = useUsers({ page: 1 })
13
+ *
14
+ * // Mutation hooks (POST/PUT/PATCH/DELETE)
15
+ * const createUser = useCreateUser()
16
+ * await createUser({ name: 'John', email: 'john@example.com' })
17
+ * ```
18
+ */
19
+ import { useSWRConfig } from 'swr'
20
+ import * as Fetchers from '../fetchers/ext_newsletter__newsletter__bulk_email'
21
+ import type { API } from '../../index'
22
+ import type { BulkEmailRequest } from '../schemas/BulkEmailRequest.schema'
23
+ import type { BulkEmailResponse } from '../schemas/BulkEmailResponse.schema'
24
+
25
+ /**
26
+ * Send Bulk Email
27
+ *
28
+ * @method POST
29
+ * @path /cfg/newsletter/bulk/
30
+ */
31
+ export function useCreateNewsletterBulkCreate() {
32
+ const { mutate } = useSWRConfig()
33
+
34
+ return async (data: BulkEmailRequest, client?: API): Promise<BulkEmailResponse> => {
35
+ const result = await Fetchers.createNewsletterBulkCreate(data, client)
36
+ // Revalidate related queries
37
+ mutate('cfg-newsletter-bulk')
38
+ return result
39
+ }
40
+ }
41
+
42
+
@@ -0,0 +1,130 @@
1
+ 'use client';
2
+
3
+ /**
4
+ * SWR Hooks for Campaigns
5
+ *
6
+ * React hooks powered by SWR for data fetching with automatic caching,
7
+ * revalidation, and optimistic updates.
8
+ *
9
+ * Usage:
10
+ * ```typescript
11
+ * // Query hooks (GET)
12
+ * const { data, error, isLoading } = useUsers({ page: 1 })
13
+ *
14
+ * // Mutation hooks (POST/PUT/PATCH/DELETE)
15
+ * const createUser = useCreateUser()
16
+ * await createUser({ name: 'John', email: 'john@example.com' })
17
+ * ```
18
+ */
19
+ import useSWR from 'swr'
20
+ import { useSWRConfig } from 'swr'
21
+ import * as Fetchers from '../fetchers/ext_newsletter__newsletter__campaigns'
22
+ import type { API } from '../../index'
23
+ import type { NewsletterCampaign } from '../schemas/NewsletterCampaign.schema'
24
+ import type { NewsletterCampaignRequest } from '../schemas/NewsletterCampaignRequest.schema'
25
+ import type { PaginatedNewsletterCampaignList } from '../schemas/PaginatedNewsletterCampaignList.schema'
26
+ import type { SendCampaignRequest } from '../schemas/SendCampaignRequest.schema'
27
+ import type { SendCampaignResponse } from '../schemas/SendCampaignResponse.schema'
28
+
29
+ /**
30
+ * List Newsletter Campaigns
31
+ *
32
+ * @method GET
33
+ * @path /cfg/newsletter/campaigns/
34
+ */
35
+ export function useNewsletterCampaignsList(params?: { page?: number; page_size?: number }, client?: API): ReturnType<typeof useSWR<PaginatedNewsletterCampaignList>> {
36
+ return useSWR<PaginatedNewsletterCampaignList>(
37
+ params ? ['cfg-newsletter-campaigns', params] : 'cfg-newsletter-campaigns',
38
+ () => Fetchers.getNewsletterCampaignsList(params, client)
39
+ )
40
+ }
41
+
42
+
43
+ /**
44
+ * Create Newsletter Campaign
45
+ *
46
+ * @method POST
47
+ * @path /cfg/newsletter/campaigns/
48
+ */
49
+ export function useCreateNewsletterCampaignsCreate() {
50
+ const { mutate } = useSWRConfig()
51
+
52
+ return async (data: NewsletterCampaignRequest, client?: API): Promise<NewsletterCampaign> => {
53
+ const result = await Fetchers.createNewsletterCampaignsCreate(data, client)
54
+ // Revalidate related queries
55
+ mutate('cfg-newsletter-campaigns')
56
+ return result
57
+ }
58
+ }
59
+
60
+
61
+ /**
62
+ * Get Campaign Details
63
+ *
64
+ * @method GET
65
+ * @path /cfg/newsletter/campaigns/{id}/
66
+ */
67
+ export function useNewsletterCampaignsRetrieve(id: number, client?: API): ReturnType<typeof useSWR<NewsletterCampaign>> {
68
+ return useSWR<NewsletterCampaign>(
69
+ ['cfg-newsletter-campaign', id],
70
+ () => Fetchers.getNewsletterCampaignsRetrieve(id, client)
71
+ )
72
+ }
73
+
74
+
75
+ /**
76
+ * Update Campaign
77
+ *
78
+ * @method PUT
79
+ * @path /cfg/newsletter/campaigns/{id}/
80
+ */
81
+ export function useUpdateNewsletterCampaignsUpdate() {
82
+ const { mutate } = useSWRConfig()
83
+
84
+ return async (id: number, data: NewsletterCampaignRequest, client?: API): Promise<NewsletterCampaign> => {
85
+ const result = await Fetchers.updateNewsletterCampaignsUpdate(id, data, client)
86
+ // Revalidate related queries
87
+ mutate('cfg-newsletter-campaigns')
88
+ mutate('cfg-newsletter-campaign')
89
+ return result
90
+ }
91
+ }
92
+
93
+
94
+ /**
95
+ * Delete Campaign
96
+ *
97
+ * @method DELETE
98
+ * @path /cfg/newsletter/campaigns/{id}/
99
+ */
100
+ export function useDeleteNewsletterCampaignsDestroy() {
101
+ const { mutate } = useSWRConfig()
102
+
103
+ return async (id: number, client?: API): Promise<void> => {
104
+ const result = await Fetchers.deleteNewsletterCampaignsDestroy(id, client)
105
+ // Revalidate related queries
106
+ mutate('cfg-newsletter-campaigns')
107
+ mutate('cfg-newsletter-campaign')
108
+ return result
109
+ }
110
+ }
111
+
112
+
113
+ /**
114
+ * Send Newsletter Campaign
115
+ *
116
+ * @method POST
117
+ * @path /cfg/newsletter/campaigns/send/
118
+ */
119
+ export function useCreateNewsletterCampaignsSendCreate() {
120
+ const { mutate } = useSWRConfig()
121
+
122
+ return async (data: SendCampaignRequest, client?: API): Promise<SendCampaignResponse> => {
123
+ const result = await Fetchers.createNewsletterCampaignsSendCreate(data, client)
124
+ // Revalidate related queries
125
+ mutate('cfg-newsletter-campaigns-send')
126
+ return result
127
+ }
128
+ }
129
+
130
+
@@ -0,0 +1,37 @@
1
+ 'use client';
2
+
3
+ /**
4
+ * SWR Hooks for Logs
5
+ *
6
+ * React hooks powered by SWR for data fetching with automatic caching,
7
+ * revalidation, and optimistic updates.
8
+ *
9
+ * Usage:
10
+ * ```typescript
11
+ * // Query hooks (GET)
12
+ * const { data, error, isLoading } = useUsers({ page: 1 })
13
+ *
14
+ * // Mutation hooks (POST/PUT/PATCH/DELETE)
15
+ * const createUser = useCreateUser()
16
+ * await createUser({ name: 'John', email: 'john@example.com' })
17
+ * ```
18
+ */
19
+ import useSWR from 'swr'
20
+ import * as Fetchers from '../fetchers/ext_newsletter__newsletter__logs'
21
+ import type { API } from '../../index'
22
+ import type { PaginatedEmailLogList } from '../schemas/PaginatedEmailLogList.schema'
23
+
24
+ /**
25
+ * List Email Logs
26
+ *
27
+ * @method GET
28
+ * @path /cfg/newsletter/logs/
29
+ */
30
+ export function useNewsletterLogsList(params?: { page?: number; page_size?: number }, client?: API): ReturnType<typeof useSWR<PaginatedEmailLogList>> {
31
+ return useSWR<PaginatedEmailLogList>(
32
+ params ? ['cfg-newsletter-logs', params] : 'cfg-newsletter-logs',
33
+ () => Fetchers.getNewsletterLogsList(params, client)
34
+ )
35
+ }
36
+
37
+
@@ -0,0 +1,52 @@
1
+ 'use client';
2
+
3
+ /**
4
+ * SWR Hooks for Newsletters
5
+ *
6
+ * React hooks powered by SWR for data fetching with automatic caching,
7
+ * revalidation, and optimistic updates.
8
+ *
9
+ * Usage:
10
+ * ```typescript
11
+ * // Query hooks (GET)
12
+ * const { data, error, isLoading } = useUsers({ page: 1 })
13
+ *
14
+ * // Mutation hooks (POST/PUT/PATCH/DELETE)
15
+ * const createUser = useCreateUser()
16
+ * await createUser({ name: 'John', email: 'john@example.com' })
17
+ * ```
18
+ */
19
+ import useSWR from 'swr'
20
+ import * as Fetchers from '../fetchers/ext_newsletter__newsletter__newsletters'
21
+ import type { API } from '../../index'
22
+ import type { Newsletter } from '../schemas/Newsletter.schema'
23
+ import type { PaginatedNewsletterList } from '../schemas/PaginatedNewsletterList.schema'
24
+
25
+ /**
26
+ * List Active Newsletters
27
+ *
28
+ * @method GET
29
+ * @path /cfg/newsletter/newsletters/
30
+ */
31
+ export function useNewsletterNewslettersList(params?: { page?: number; page_size?: number }, client?: API): ReturnType<typeof useSWR<PaginatedNewsletterList>> {
32
+ return useSWR<PaginatedNewsletterList>(
33
+ params ? ['cfg-newsletter-newsletters', params] : 'cfg-newsletter-newsletters',
34
+ () => Fetchers.getNewsletterNewslettersList(params, client)
35
+ )
36
+ }
37
+
38
+
39
+ /**
40
+ * Get Newsletter Details
41
+ *
42
+ * @method GET
43
+ * @path /cfg/newsletter/newsletters/{id}/
44
+ */
45
+ export function useNewsletterNewslettersRetrieve(id: number, client?: API): ReturnType<typeof useSWR<Newsletter>> {
46
+ return useSWR<Newsletter>(
47
+ ['cfg-newsletter-newsletter', id],
48
+ () => Fetchers.getNewsletterNewslettersRetrieve(id, client)
49
+ )
50
+ }
51
+
52
+