@kywi-software/sdk 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.
Files changed (155) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +172 -0
  3. package/dist/__tests__/auth-client.test.d.ts +2 -0
  4. package/dist/__tests__/auth-client.test.d.ts.map +1 -0
  5. package/dist/__tests__/auth-client.test.js +97 -0
  6. package/dist/__tests__/auth-client.test.js.map +1 -0
  7. package/dist/__tests__/content-client.test.d.ts +2 -0
  8. package/dist/__tests__/content-client.test.d.ts.map +1 -0
  9. package/dist/__tests__/content-client.test.js +178 -0
  10. package/dist/__tests__/content-client.test.js.map +1 -0
  11. package/dist/__tests__/create-sdk.test.d.ts +2 -0
  12. package/dist/__tests__/create-sdk.test.d.ts.map +1 -0
  13. package/dist/__tests__/create-sdk.test.js +86 -0
  14. package/dist/__tests__/create-sdk.test.js.map +1 -0
  15. package/dist/__tests__/feed-client.test.d.ts +2 -0
  16. package/dist/__tests__/feed-client.test.d.ts.map +1 -0
  17. package/dist/__tests__/feed-client.test.js +81 -0
  18. package/dist/__tests__/feed-client.test.js.map +1 -0
  19. package/dist/__tests__/hooks.test.d.ts +2 -0
  20. package/dist/__tests__/hooks.test.d.ts.map +1 -0
  21. package/dist/__tests__/hooks.test.js +123 -0
  22. package/dist/__tests__/hooks.test.js.map +1 -0
  23. package/dist/__tests__/http-client.test.d.ts +2 -0
  24. package/dist/__tests__/http-client.test.d.ts.map +1 -0
  25. package/dist/__tests__/http-client.test.js +164 -0
  26. package/dist/__tests__/http-client.test.js.map +1 -0
  27. package/dist/__tests__/i18n-client.test.d.ts +2 -0
  28. package/dist/__tests__/i18n-client.test.d.ts.map +1 -0
  29. package/dist/__tests__/i18n-client.test.js +73 -0
  30. package/dist/__tests__/i18n-client.test.js.map +1 -0
  31. package/dist/__tests__/media-client.test.d.ts +2 -0
  32. package/dist/__tests__/media-client.test.d.ts.map +1 -0
  33. package/dist/__tests__/media-client.test.js +115 -0
  34. package/dist/__tests__/media-client.test.js.map +1 -0
  35. package/dist/__tests__/nav-client.test.d.ts +2 -0
  36. package/dist/__tests__/nav-client.test.d.ts.map +1 -0
  37. package/dist/__tests__/nav-client.test.js +81 -0
  38. package/dist/__tests__/nav-client.test.js.map +1 -0
  39. package/dist/__tests__/sdk-scope-additions.test.d.ts +2 -0
  40. package/dist/__tests__/sdk-scope-additions.test.d.ts.map +1 -0
  41. package/dist/__tests__/sdk-scope-additions.test.js +420 -0
  42. package/dist/__tests__/sdk-scope-additions.test.js.map +1 -0
  43. package/dist/__tests__/site-client.test.d.ts +2 -0
  44. package/dist/__tests__/site-client.test.d.ts.map +1 -0
  45. package/dist/__tests__/site-client.test.js +52 -0
  46. package/dist/__tests__/site-client.test.js.map +1 -0
  47. package/dist/__tests__/user-client.test.d.ts +2 -0
  48. package/dist/__tests__/user-client.test.d.ts.map +1 -0
  49. package/dist/__tests__/user-client.test.js +51 -0
  50. package/dist/__tests__/user-client.test.js.map +1 -0
  51. package/dist/auth-client.d.ts +10 -0
  52. package/dist/auth-client.d.ts.map +1 -0
  53. package/dist/auth-client.js +34 -0
  54. package/dist/auth-client.js.map +1 -0
  55. package/dist/category-client.d.ts +4 -0
  56. package/dist/category-client.d.ts.map +1 -0
  57. package/dist/category-client.js +36 -0
  58. package/dist/category-client.js.map +1 -0
  59. package/dist/content-client.d.ts +4 -0
  60. package/dist/content-client.d.ts.map +1 -0
  61. package/dist/content-client.js +89 -0
  62. package/dist/content-client.js.map +1 -0
  63. package/dist/create-sdk.d.ts +3 -0
  64. package/dist/create-sdk.d.ts.map +1 -0
  65. package/dist/create-sdk.js +43 -0
  66. package/dist/create-sdk.js.map +1 -0
  67. package/dist/feed-client.d.ts +4 -0
  68. package/dist/feed-client.d.ts.map +1 -0
  69. package/dist/feed-client.js +64 -0
  70. package/dist/feed-client.js.map +1 -0
  71. package/dist/form-client.d.ts +4 -0
  72. package/dist/form-client.d.ts.map +1 -0
  73. package/dist/form-client.js +17 -0
  74. package/dist/form-client.js.map +1 -0
  75. package/dist/hooks/context.d.ts +8 -0
  76. package/dist/hooks/context.d.ts.map +1 -0
  77. package/dist/hooks/context.js +15 -0
  78. package/dist/hooks/context.js.map +1 -0
  79. package/dist/hooks/index.d.ts +8 -0
  80. package/dist/hooks/index.d.ts.map +1 -0
  81. package/dist/hooks/index.js +7 -0
  82. package/dist/hooks/index.js.map +1 -0
  83. package/dist/hooks/use-content.d.ts +13 -0
  84. package/dist/hooks/use-content.d.ts.map +1 -0
  85. package/dist/hooks/use-content.js +16 -0
  86. package/dist/hooks/use-content.js.map +1 -0
  87. package/dist/hooks/use-feed.d.ts +5 -0
  88. package/dist/hooks/use-feed.d.ts.map +1 -0
  89. package/dist/hooks/use-feed.js +13 -0
  90. package/dist/hooks/use-feed.js.map +1 -0
  91. package/dist/hooks/use-nav.d.ts +5 -0
  92. package/dist/hooks/use-nav.d.ts.map +1 -0
  93. package/dist/hooks/use-nav.js +12 -0
  94. package/dist/hooks/use-nav.js.map +1 -0
  95. package/dist/hooks/use-sdk-query.d.ts +8 -0
  96. package/dist/hooks/use-sdk-query.d.ts.map +1 -0
  97. package/dist/hooks/use-sdk-query.js +32 -0
  98. package/dist/hooks/use-sdk-query.js.map +1 -0
  99. package/dist/hooks-client.d.ts +4 -0
  100. package/dist/hooks-client.d.ts.map +1 -0
  101. package/dist/hooks-client.js +20 -0
  102. package/dist/hooks-client.js.map +1 -0
  103. package/dist/http-client.d.ts +14 -0
  104. package/dist/http-client.d.ts.map +1 -0
  105. package/dist/http-client.js +78 -0
  106. package/dist/http-client.js.map +1 -0
  107. package/dist/i18n-client.d.ts +3 -0
  108. package/dist/i18n-client.d.ts.map +1 -0
  109. package/dist/i18n-client.js +26 -0
  110. package/dist/i18n-client.js.map +1 -0
  111. package/dist/index.d.ts +20 -0
  112. package/dist/index.d.ts.map +1 -0
  113. package/dist/index.js +21 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/layout-client.d.ts +4 -0
  116. package/dist/layout-client.d.ts.map +1 -0
  117. package/dist/layout-client.js +17 -0
  118. package/dist/layout-client.js.map +1 -0
  119. package/dist/media-client.d.ts +4 -0
  120. package/dist/media-client.d.ts.map +1 -0
  121. package/dist/media-client.js +36 -0
  122. package/dist/media-client.js.map +1 -0
  123. package/dist/nav-client.d.ts +4 -0
  124. package/dist/nav-client.d.ts.map +1 -0
  125. package/dist/nav-client.js +36 -0
  126. package/dist/nav-client.js.map +1 -0
  127. package/dist/search-client.d.ts +4 -0
  128. package/dist/search-client.d.ts.map +1 -0
  129. package/dist/search-client.js +17 -0
  130. package/dist/search-client.js.map +1 -0
  131. package/dist/site-client.d.ts +4 -0
  132. package/dist/site-client.d.ts.map +1 -0
  133. package/dist/site-client.js +25 -0
  134. package/dist/site-client.js.map +1 -0
  135. package/dist/tree-client.d.ts +4 -0
  136. package/dist/tree-client.d.ts.map +1 -0
  137. package/dist/tree-client.js +22 -0
  138. package/dist/tree-client.js.map +1 -0
  139. package/dist/types.d.ts +367 -0
  140. package/dist/types.d.ts.map +1 -0
  141. package/dist/types.js +13 -0
  142. package/dist/types.js.map +1 -0
  143. package/dist/user-client.d.ts +4 -0
  144. package/dist/user-client.d.ts.map +1 -0
  145. package/dist/user-client.js +49 -0
  146. package/dist/user-client.js.map +1 -0
  147. package/dist/version-client.d.ts +4 -0
  148. package/dist/version-client.d.ts.map +1 -0
  149. package/dist/version-client.js +16 -0
  150. package/dist/version-client.js.map +1 -0
  151. package/dist/workflow-client.d.ts +4 -0
  152. package/dist/workflow-client.d.ts.map +1 -0
  153. package/dist/workflow-client.js +17 -0
  154. package/dist/workflow-client.js.map +1 -0
  155. package/package.json +65 -0
@@ -0,0 +1,367 @@
1
+ export interface KywiSdkConfig {
2
+ /** API base URL, e.g. 'https://example.com/api/v1' */
3
+ baseUrl: string;
4
+ /** API key for authentication */
5
+ apiKey?: string | undefined;
6
+ /** JWT token for authenticated requests */
7
+ token?: string | undefined;
8
+ /** Default site ID used when siteId is not passed to scope methods */
9
+ defaultSiteId?: string | undefined;
10
+ /** Default locale for i18n */
11
+ locale?: string | undefined;
12
+ /** i18n resource bundles: Map<locale, Map<key, value>> */
13
+ bundles?: Map<string, Map<string, string>> | undefined;
14
+ /** Additional headers sent with every request */
15
+ headers?: Record<string, string> | undefined;
16
+ }
17
+ export declare class KywiSdkError extends Error {
18
+ readonly status: number;
19
+ readonly body: string;
20
+ constructor(status: number, body: string);
21
+ }
22
+ export type ContentItem = Record<string, unknown>;
23
+ export interface ContentListResult {
24
+ rows: ContentItem[];
25
+ total: number;
26
+ }
27
+ export interface NavNode {
28
+ id: string;
29
+ title: string;
30
+ href: string;
31
+ slug: string;
32
+ depth: number;
33
+ hasChildren: boolean;
34
+ isActive: boolean;
35
+ isAncestor: boolean;
36
+ children: NavNode[];
37
+ }
38
+ export interface FeedQuery {
39
+ contentType: string;
40
+ siteId?: string;
41
+ filters?: Record<string, unknown>;
42
+ search?: string;
43
+ status?: string | string[];
44
+ locale?: string;
45
+ parentId?: string;
46
+ sort?: {
47
+ field: string;
48
+ direction: 'asc' | 'desc';
49
+ };
50
+ limit?: number;
51
+ page?: number;
52
+ }
53
+ export interface FeedResult {
54
+ items: Record<string, unknown>[];
55
+ total: number;
56
+ page: number;
57
+ pageSize: number;
58
+ totalPages: number;
59
+ }
60
+ export interface ApiDataResponse<T> {
61
+ data: T;
62
+ }
63
+ export interface ApiPaginatedResponse<T> {
64
+ data: T[];
65
+ meta: {
66
+ total: number;
67
+ page: number;
68
+ pageSize: number;
69
+ totalPages: number;
70
+ };
71
+ }
72
+ export interface ApiErrorResponse {
73
+ error: {
74
+ code: string;
75
+ message: string;
76
+ details?: unknown;
77
+ };
78
+ }
79
+ export interface AuthResult {
80
+ accessToken: string;
81
+ refreshToken: string;
82
+ user: {
83
+ id: string;
84
+ role: string;
85
+ groups: string[];
86
+ };
87
+ }
88
+ export interface KywiSdkAuthScope {
89
+ login(email: string, password: string): Promise<AuthResult>;
90
+ register(data: {
91
+ email: string;
92
+ password: string;
93
+ firstName?: string;
94
+ lastName?: string;
95
+ }): Promise<AuthResult>;
96
+ refresh(refreshToken: string): Promise<{
97
+ accessToken: string;
98
+ }>;
99
+ forgotPassword(email: string): Promise<{
100
+ message: string;
101
+ }>;
102
+ resetPassword(token: string, email: string, newPassword: string): Promise<{
103
+ message: string;
104
+ }>;
105
+ logout(): Promise<void>;
106
+ }
107
+ export interface KywiSdkContentScope {
108
+ getBySlug(slug: string, siteId?: string): Promise<ContentItem | null>;
109
+ getById(id: string): Promise<ContentItem | null>;
110
+ getChildren(parentId: string): Promise<ContentItem[]>;
111
+ list(contentTypeName: string, siteId?: string, opts?: {
112
+ page?: number | undefined;
113
+ limit?: number | undefined;
114
+ sort?: string | undefined;
115
+ dir?: 'asc' | 'desc' | undefined;
116
+ status?: string | undefined;
117
+ search?: string | undefined;
118
+ parentId?: string | undefined;
119
+ }): Promise<ContentListResult>;
120
+ create(contentTypeName: string, data: Record<string, unknown>, siteId?: string): Promise<ContentItem>;
121
+ update(contentTypeName: string, id: string, data: Record<string, unknown>): Promise<ContentItem | null>;
122
+ delete(id: string): Promise<boolean>;
123
+ publish(id: string): Promise<ContentItem | null>;
124
+ unpublish(id: string): Promise<ContentItem | null>;
125
+ }
126
+ export interface KywiSdkNavScope {
127
+ getTree(siteId?: string, currentPath?: string): Promise<NavNode[]>;
128
+ getBreadcrumbs(nodeId: string, siteId?: string): Promise<NavNode[]>;
129
+ getChildren(parentId: string): Promise<NavNode[]>;
130
+ }
131
+ export interface KywiSdkSiteScope {
132
+ getConfig(siteId?: string): Promise<Record<string, unknown> | null>;
133
+ list(): Promise<Record<string, unknown>[]>;
134
+ /** Bulk-update a site's key/value settings; resolves to the full updated set. */
135
+ updateSettings(siteId: string, settings: Record<string, unknown>): Promise<Record<string, unknown>>;
136
+ }
137
+ export interface KywiSdkUserScope {
138
+ getCurrent(): Promise<Record<string, unknown> | null>;
139
+ getById(id: string): Promise<Record<string, unknown> | null>;
140
+ list(opts?: {
141
+ siteId?: string | undefined;
142
+ role?: string | undefined;
143
+ page?: number | undefined;
144
+ limit?: number | undefined;
145
+ }): Promise<{
146
+ users: Record<string, unknown>[];
147
+ total: number;
148
+ }>;
149
+ create(data: {
150
+ email: string;
151
+ password: string;
152
+ name?: string | undefined;
153
+ role?: string | undefined;
154
+ siteId?: string | undefined;
155
+ }): Promise<Record<string, unknown>>;
156
+ }
157
+ export interface FeedDefinition {
158
+ id: string;
159
+ siteId: string;
160
+ name: string;
161
+ slug: string;
162
+ query: FeedQuery;
163
+ cacheTtl?: number | null;
164
+ createdAt: string;
165
+ updatedAt: string;
166
+ }
167
+ export interface KywiSdkFeedScope {
168
+ query(feedQuery: FeedQuery): Promise<FeedResult>;
169
+ get(slug: string): Promise<FeedResult>;
170
+ list(opts?: {
171
+ siteId?: string | undefined;
172
+ }): Promise<FeedDefinition[]>;
173
+ create(data: {
174
+ name: string;
175
+ slug: string;
176
+ siteId?: string | undefined;
177
+ query: FeedQuery;
178
+ cacheTtl?: number | undefined;
179
+ }): Promise<FeedDefinition>;
180
+ update(slug: string, data: {
181
+ name?: string | undefined;
182
+ query?: FeedQuery | undefined;
183
+ cacheTtl?: number | undefined;
184
+ siteId?: string | undefined;
185
+ }): Promise<FeedDefinition>;
186
+ delete(slug: string, opts?: {
187
+ siteId?: string | undefined;
188
+ }): Promise<void>;
189
+ }
190
+ export interface KywiSdkI18nScope {
191
+ get(key: string, locale?: string, vars?: Record<string, string>): string;
192
+ getLocale(): string;
193
+ }
194
+ export interface MediaItem {
195
+ id: string;
196
+ filename: string;
197
+ originalFilename: string;
198
+ mimeType: string;
199
+ fileSize: number;
200
+ width?: number;
201
+ height?: number;
202
+ altText?: string;
203
+ caption?: string;
204
+ storageKey: string;
205
+ createdAt: string;
206
+ }
207
+ export interface KywiSdkMediaScope {
208
+ upload(file: File | Buffer, filename: string, opts?: {
209
+ alt?: string | undefined;
210
+ caption?: string | undefined;
211
+ }): Promise<MediaItem>;
212
+ list(opts?: {
213
+ page?: number | undefined;
214
+ limit?: number | undefined;
215
+ mimeType?: string | undefined;
216
+ }): Promise<ApiPaginatedResponse<MediaItem>>;
217
+ getById(id: string): Promise<MediaItem>;
218
+ delete(id: string): Promise<void>;
219
+ }
220
+ export interface LayoutSection {
221
+ id: string;
222
+ component: string;
223
+ props?: Record<string, unknown>;
224
+ }
225
+ export interface LayoutDocument {
226
+ regions: Record<string, LayoutSection[]>;
227
+ }
228
+ export interface KywiSdkLayoutScope {
229
+ get(contentId: string): Promise<LayoutDocument | null>;
230
+ update(contentId: string, layout: LayoutDocument): Promise<void>;
231
+ updateRegion(contentId: string, regionName: string, sections: LayoutSection[]): Promise<void>;
232
+ }
233
+ export interface SearchResult {
234
+ id: string;
235
+ contentType: string;
236
+ title: string;
237
+ slug: string;
238
+ excerpt?: string;
239
+ score?: number;
240
+ }
241
+ export interface KywiSdkSearchScope {
242
+ search(query: string, opts?: {
243
+ contentType?: string;
244
+ status?: string;
245
+ limit?: number;
246
+ offset?: number;
247
+ }): Promise<{
248
+ results: SearchResult[];
249
+ total: number;
250
+ }>;
251
+ }
252
+ export interface ContentVersion {
253
+ id: string;
254
+ contentId: string;
255
+ contentType: string;
256
+ snapshot: Record<string, unknown>;
257
+ createdAt: string;
258
+ createdBy?: string;
259
+ }
260
+ export interface KywiSdkVersionScope {
261
+ list(contentType: string, contentId: string): Promise<ContentVersion[]>;
262
+ get(contentType: string, contentId: string, versionId: string): Promise<ContentVersion>;
263
+ restore(contentType: string, contentId: string, versionId: string): Promise<void>;
264
+ }
265
+ export interface KywiSdkWorkflowScope {
266
+ publish(contentId: string): Promise<void>;
267
+ unpublish(contentId: string): Promise<void>;
268
+ restore(contentId: string): Promise<void>;
269
+ permanentDelete(contentId: string): Promise<void>;
270
+ }
271
+ export interface Category {
272
+ id: string;
273
+ name: string;
274
+ slug: string;
275
+ siteId?: string;
276
+ parentId?: string;
277
+ createdAt: string;
278
+ updatedAt: string;
279
+ }
280
+ export interface CategoryTreeNode extends Category {
281
+ children: CategoryTreeNode[];
282
+ }
283
+ export interface KywiSdkCategoryScope {
284
+ list(opts?: {
285
+ siteId?: string;
286
+ parentId?: string;
287
+ }): Promise<Category[]>;
288
+ getById(id: string): Promise<Category>;
289
+ create(data: {
290
+ name: string;
291
+ slug: string;
292
+ siteId?: string;
293
+ parentId?: string;
294
+ }): Promise<Category>;
295
+ update(id: string, data: Partial<{
296
+ name: string;
297
+ slug: string;
298
+ }>): Promise<Category>;
299
+ delete(id: string): Promise<void>;
300
+ tree(siteId?: string): Promise<CategoryTreeNode[]>;
301
+ }
302
+ export interface FormSubmission {
303
+ id: string;
304
+ formSlug: string;
305
+ data: Record<string, unknown>;
306
+ submittedAt: string;
307
+ }
308
+ export interface KywiSdkFormScope {
309
+ submit(slug: string, data: Record<string, unknown>): Promise<{
310
+ id: string;
311
+ }>;
312
+ listSubmissions(slug: string): Promise<FormSubmission[]>;
313
+ getCsrfToken(slug: string): Promise<{
314
+ token: string;
315
+ }>;
316
+ }
317
+ export interface KywiSdkTreeScope {
318
+ getChildren(parentId: string): Promise<NavNode[]>;
319
+ getBreadcrumbs(nodeId: string): Promise<NavNode[]>;
320
+ move(nodeId: string, newParentId: string, sortOrder?: number): Promise<void>;
321
+ reorder(items: Array<{
322
+ id: string;
323
+ sortOrder: number;
324
+ }>): Promise<void>;
325
+ }
326
+ export interface WebhookEndpoint {
327
+ id: string;
328
+ url: string;
329
+ secret: string;
330
+ events: string[];
331
+ isActive: boolean;
332
+ createdAt: string;
333
+ updatedAt: string;
334
+ }
335
+ export interface KywiSdkHooksScope {
336
+ listWebhooks(): Promise<WebhookEndpoint[]>;
337
+ createWebhook(data: {
338
+ url: string;
339
+ secret: string;
340
+ events: string[];
341
+ }): Promise<WebhookEndpoint>;
342
+ updateWebhook(id: string, data: Partial<{
343
+ url: string;
344
+ events: string[];
345
+ isActive: boolean;
346
+ }>): Promise<WebhookEndpoint>;
347
+ deleteWebhook(id: string): Promise<void>;
348
+ }
349
+ export interface KywiSdkScope {
350
+ auth: KywiSdkAuthScope;
351
+ content: KywiSdkContentScope;
352
+ nav: KywiSdkNavScope;
353
+ site: KywiSdkSiteScope;
354
+ user: KywiSdkUserScope;
355
+ feeds: KywiSdkFeedScope;
356
+ i18n?: KywiSdkI18nScope;
357
+ media: KywiSdkMediaScope;
358
+ layout: KywiSdkLayoutScope;
359
+ search: KywiSdkSearchScope;
360
+ versions: KywiSdkVersionScope;
361
+ workflow: KywiSdkWorkflowScope;
362
+ categories: KywiSdkCategoryScope;
363
+ forms: KywiSdkFormScope;
364
+ tree: KywiSdkTreeScope;
365
+ hooks: KywiSdkHooksScope;
366
+ }
367
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,13 @@
1
+ // ─── SDK Configuration ───────────────────────────────────────────────────────
2
+ // ─── Error ───────────────────────────────────────────────────────────────────
3
+ export class KywiSdkError extends Error {
4
+ status;
5
+ body;
6
+ constructor(status, body) {
7
+ super(`Kywi SDK error (${status}): ${body}`);
8
+ this.status = status;
9
+ this.body = body;
10
+ this.name = 'KywiSdkError';
11
+ }
12
+ }
13
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAmBhF,gFAAgF;AAEhF,MAAM,OAAO,YAAa,SAAQ,KAAK;IAEnB;IACA;IAFlB,YACkB,MAAc,EACd,IAAY;QAE5B,KAAK,CAAC,mBAAmB,MAAM,MAAM,IAAI,EAAE,CAAC,CAAA;QAH5B,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAQ;QAG5B,IAAI,CAAC,IAAI,GAAG,cAAc,CAAA;IAC5B,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ import type { KywiHttpClient } from './http-client.js';
2
+ import type { KywiSdkUserScope } from './types.js';
3
+ export declare function createUserClient(http: KywiHttpClient): KywiSdkUserScope;
4
+ //# sourceMappingURL=user-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-client.d.ts","sourceRoot":"","sources":["../src/user-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAGV,gBAAgB,EACjB,MAAM,YAAY,CAAA;AAQnB,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,cAAc,GACnB,gBAAgB,CAyClB"}
@@ -0,0 +1,49 @@
1
+ function isError(res) {
2
+ return typeof res === 'object' && res !== null && 'error' in res;
3
+ }
4
+ export function createUserClient(http) {
5
+ return {
6
+ async getCurrent() {
7
+ const res = await http.get('/users/me');
8
+ if (isError(res))
9
+ return null;
10
+ return res.data;
11
+ },
12
+ async getById(id) {
13
+ const res = await http.get(`/users/${id}`);
14
+ if (isError(res))
15
+ return null;
16
+ return res.data;
17
+ },
18
+ async list(opts) {
19
+ const params = {};
20
+ if (opts?.siteId)
21
+ params.siteId = opts.siteId;
22
+ if (opts?.role)
23
+ params.role = opts.role;
24
+ if (opts?.page !== undefined)
25
+ params.page = String(opts.page);
26
+ if (opts?.limit !== undefined)
27
+ params.limit = String(opts.limit);
28
+ const res = await http.get('/users', params);
29
+ if (isError(res))
30
+ return { users: [], total: 0 };
31
+ return { users: res.data, total: res.data.length };
32
+ },
33
+ async create(data) {
34
+ const body = {
35
+ email: data.email,
36
+ password: data.password,
37
+ };
38
+ if (data.name)
39
+ body.name = data.name;
40
+ if (data.role)
41
+ body.role = data.role;
42
+ if (data.siteId)
43
+ body.siteId = data.siteId;
44
+ const res = await http.post('/users', body);
45
+ return res.data;
46
+ },
47
+ };
48
+ }
49
+ //# sourceMappingURL=user-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-client.js","sourceRoot":"","sources":["../src/user-client.ts"],"names":[],"mappings":"AASA,SAAS,OAAO,CAAC,GAAY;IAC3B,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,IAAI,GAAG,CAAA;AAClE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,IAAoB;IAEpB,OAAO;QACL,KAAK,CAAC,UAAU;YACd,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CACxB,WAAW,CACZ,CAAA;YACD,IAAI,OAAO,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAA;YAC7B,OAAO,GAAG,CAAC,IAAI,CAAA;QACjB,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,EAAE;YACd,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CACxB,UAAU,EAAE,EAAE,CACf,CAAA;YACD,IAAI,OAAO,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAA;YAC7B,OAAO,GAAG,CAAC,IAAI,CAAA;QACjB,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,IAAI;YACb,MAAM,MAAM,GAA2B,EAAE,CAAA;YACzC,IAAI,IAAI,EAAE,MAAM;gBAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;YAC7C,IAAI,IAAI,EAAE,IAAI;gBAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;YACvC,IAAI,IAAI,EAAE,IAAI,KAAK,SAAS;gBAAE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC7D,IAAI,IAAI,EAAE,KAAK,KAAK,SAAS;gBAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAChE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAyC,QAAQ,EAAE,MAAM,CAAC,CAAA;YACpF,IAAI,OAAO,CAAC,GAAG,CAAC;gBAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;YAChD,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAA;QACpD,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,IAAI;YACf,MAAM,IAAI,GAA4B;gBACpC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAA;YACD,IAAI,IAAI,CAAC,IAAI;gBAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;YACpC,IAAI,IAAI,CAAC,IAAI;gBAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;YACpC,IAAI,IAAI,CAAC,MAAM;gBAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;YAC1C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAA2C,QAAQ,EAAE,IAAI,CAAC,CAAA;YACrF,OAAO,GAAG,CAAC,IAAI,CAAA;QACjB,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { KywiHttpClient } from './http-client.js';
2
+ import type { KywiSdkVersionScope } from './types.js';
3
+ export declare function createVersionClient(http: KywiHttpClient): KywiSdkVersionScope;
4
+ //# sourceMappingURL=version-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-client.d.ts","sourceRoot":"","sources":["../src/version-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAmC,MAAM,YAAY,CAAA;AAEtF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,mBAAmB,CAsB7E"}
@@ -0,0 +1,16 @@
1
+ export function createVersionClient(http) {
2
+ return {
3
+ async list(contentType, contentId) {
4
+ const res = await http.get(`/content/${contentType}/${contentId}/versions`);
5
+ return res.data;
6
+ },
7
+ async get(contentType, contentId, versionId) {
8
+ const res = await http.get(`/content/${contentType}/${contentId}/versions/${versionId}`);
9
+ return res.data;
10
+ },
11
+ async restore(contentType, contentId, versionId) {
12
+ await http.post(`/content/${contentType}/${contentId}/versions/${versionId}/restore`);
13
+ },
14
+ };
15
+ }
16
+ //# sourceMappingURL=version-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-client.js","sourceRoot":"","sources":["../src/version-client.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,mBAAmB,CAAC,IAAoB;IACtD,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS;YAC/B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CACxB,YAAY,WAAW,IAAI,SAAS,WAAW,CAChD,CAAA;YACD,OAAO,GAAG,CAAC,IAAI,CAAA;QACjB,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS;YACzC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CACxB,YAAY,WAAW,IAAI,SAAS,aAAa,SAAS,EAAE,CAC7D,CAAA;YACD,OAAO,GAAG,CAAC,IAAI,CAAA;QACjB,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS;YAC7C,MAAM,IAAI,CAAC,IAAI,CACb,YAAY,WAAW,IAAI,SAAS,aAAa,SAAS,UAAU,CACrE,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { KywiHttpClient } from './http-client.js';
2
+ import type { KywiSdkWorkflowScope } from './types.js';
3
+ export declare function createWorkflowClient(http: KywiHttpClient): KywiSdkWorkflowScope;
4
+ //# sourceMappingURL=workflow-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-client.d.ts","sourceRoot":"","sources":["../src/workflow-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEtD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,GAAG,oBAAoB,CAkB/E"}
@@ -0,0 +1,17 @@
1
+ export function createWorkflowClient(http) {
2
+ return {
3
+ async publish(contentId) {
4
+ await http.post(`/content/by-id/${contentId}/publish`);
5
+ },
6
+ async unpublish(contentId) {
7
+ await http.post(`/content/by-id/${contentId}/unpublish`);
8
+ },
9
+ async restore(contentId) {
10
+ await http.post(`/content/by-id/${contentId}/restore`);
11
+ },
12
+ async permanentDelete(contentId) {
13
+ await http.delete(`/content/by-id/${contentId}/permanent`);
14
+ },
15
+ };
16
+ }
17
+ //# sourceMappingURL=workflow-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-client.js","sourceRoot":"","sources":["../src/workflow-client.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,oBAAoB,CAAC,IAAoB;IACvD,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,SAAS;YACrB,MAAM,IAAI,CAAC,IAAI,CAAU,kBAAkB,SAAS,UAAU,CAAC,CAAA;QACjE,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,SAAS;YACvB,MAAM,IAAI,CAAC,IAAI,CAAU,kBAAkB,SAAS,YAAY,CAAC,CAAA;QACnE,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,SAAS;YACrB,MAAM,IAAI,CAAC,IAAI,CAAU,kBAAkB,SAAS,UAAU,CAAC,CAAA;QACjE,CAAC;QAED,KAAK,CAAC,eAAe,CAAC,SAAS;YAC7B,MAAM,IAAI,CAAC,MAAM,CAAU,kBAAkB,SAAS,YAAY,CAAC,CAAA;QACrE,CAAC;KACF,CAAA;AACH,CAAC"}
package/package.json ADDED
@@ -0,0 +1,65 @@
1
+ {
2
+ "name": "@kywi-software/sdk",
3
+ "version": "0.1.0",
4
+ "description": "Standalone HTTP client for the Kywi CMS REST API — headless/decoupled frontends, no dependency on @kywi-software/core.",
5
+ "type": "module",
6
+ "license": "AGPL-3.0-only",
7
+ "homepage": "https://github.com/Kywi-Software/kywi-cms#readme",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/Kywi-Software/kywi-cms.git",
11
+ "directory": "packages/sdk"
12
+ },
13
+ "keywords": [
14
+ "kywi",
15
+ "cms",
16
+ "sdk",
17
+ "headless-cms",
18
+ "http-client"
19
+ ],
20
+ "publishConfig": {
21
+ "access": "public"
22
+ },
23
+ "files": [
24
+ "dist",
25
+ "README.md",
26
+ "LICENSE"
27
+ ],
28
+ "exports": {
29
+ ".": {
30
+ "types": "./dist/index.d.ts",
31
+ "import": "./dist/index.js"
32
+ },
33
+ "./hooks": {
34
+ "types": "./dist/hooks/index.d.ts",
35
+ "import": "./dist/hooks/index.js"
36
+ }
37
+ },
38
+ "peerDependencies": {
39
+ "react": ">=19.0.0",
40
+ "react-dom": ">=19.0.0"
41
+ },
42
+ "peerDependenciesMeta": {
43
+ "react": {
44
+ "optional": true
45
+ },
46
+ "react-dom": {
47
+ "optional": true
48
+ }
49
+ },
50
+ "devDependencies": {
51
+ "@types/node": "^20.0.0",
52
+ "@types/react": "^19.0.0",
53
+ "@types/react-dom": "^19.0.0",
54
+ "happy-dom": "^20.8.9",
55
+ "react": "^19.0.0",
56
+ "react-dom": "^19.0.0",
57
+ "typescript": "^5.5.0",
58
+ "vitest": "^1.6.0"
59
+ },
60
+ "scripts": {
61
+ "build": "tsc",
62
+ "test": "vitest run",
63
+ "test:watch": "vitest"
64
+ }
65
+ }