@kookee/sdk 0.0.33 → 0.0.35
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 +111 -41
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +11 -6
- package/dist/index.d.ts +11 -6
- package/dist/index.global.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -102,6 +102,9 @@ const postById = await kookee.blog.getById('post-uuid');
|
|
|
102
102
|
// Get all tags with post counts
|
|
103
103
|
const tags = await kookee.blog.getTags();
|
|
104
104
|
|
|
105
|
+
// Get comments on a post
|
|
106
|
+
const comments = await kookee.blog.getComments('post-id', { page: 1, limit: 20 });
|
|
107
|
+
|
|
105
108
|
// React to a post
|
|
106
109
|
await kookee.blog.react('post-id', { reactionType: 'heart', action: 'add' });
|
|
107
110
|
|
|
@@ -133,6 +136,12 @@ const articleById = await kookee.help.getById('article-uuid');
|
|
|
133
136
|
const translationsBySlug = await kookee.help.getTranslationsBySlug('getting-started');
|
|
134
137
|
const translationsById = await kookee.help.getTranslationsById('article-uuid');
|
|
135
138
|
|
|
139
|
+
// Get comments on an article
|
|
140
|
+
const comments = await kookee.help.getComments('article-id', { page: 1, limit: 20 });
|
|
141
|
+
|
|
142
|
+
// React to an article
|
|
143
|
+
await kookee.help.react('article-id', { reactionType: 'heart', action: 'add' });
|
|
144
|
+
|
|
136
145
|
// AI-powered chat
|
|
137
146
|
const response = await kookee.help.chat({
|
|
138
147
|
messages: [{ role: 'user', content: 'How do I reset my password?' }],
|
|
@@ -146,15 +155,6 @@ for await (const chunk of kookee.help.chatStream({ messages })) {
|
|
|
146
155
|
if (chunk.type === 'done') console.log('Stream finished');
|
|
147
156
|
if (chunk.type === 'error') console.error(chunk.message);
|
|
148
157
|
}
|
|
149
|
-
|
|
150
|
-
// Vote on article usefulness
|
|
151
|
-
await kookee.help.voteUsefulness('article-id', 'yes');
|
|
152
|
-
|
|
153
|
-
// Change a previous vote
|
|
154
|
-
await kookee.help.voteUsefulness('article-id', 'no', 'yes');
|
|
155
|
-
|
|
156
|
-
// Remove a vote
|
|
157
|
-
await kookee.help.voteUsefulness('article-id', null, 'yes');
|
|
158
158
|
```
|
|
159
159
|
|
|
160
160
|
## Changelog
|
|
@@ -163,15 +163,9 @@ await kookee.help.voteUsefulness('article-id', null, 'yes');
|
|
|
163
163
|
// List entries
|
|
164
164
|
const entries = await kookee.changelog.list({ page: 1, limit: 10 });
|
|
165
165
|
|
|
166
|
-
// Filter by type: 'feature' | 'fix' | 'improvement' | 'breaking' | 'security' | 'deprecated' | 'other'
|
|
167
|
-
const fixes = await kookee.changelog.list({ type: 'fix' });
|
|
168
|
-
|
|
169
166
|
// Search entries
|
|
170
167
|
const results = await kookee.changelog.list({ search: 'authentication' });
|
|
171
168
|
|
|
172
|
-
// Order by version or date
|
|
173
|
-
const sorted = await kookee.changelog.list({ orderBy: 'version', order: 'desc' });
|
|
174
|
-
|
|
175
169
|
// Get single entry
|
|
176
170
|
const entry = await kookee.changelog.getBySlug('v1-0-0');
|
|
177
171
|
const entryById = await kookee.changelog.getById('entry-uuid');
|
|
@@ -180,6 +174,9 @@ const entryById = await kookee.changelog.getById('entry-uuid');
|
|
|
180
174
|
const translationsBySlug = await kookee.changelog.getTranslationsBySlug('v1-0-0');
|
|
181
175
|
const translationsById = await kookee.changelog.getTranslationsById('entry-uuid');
|
|
182
176
|
|
|
177
|
+
// Get comments on an entry
|
|
178
|
+
const comments = await kookee.changelog.getComments('entry-id', { page: 1, limit: 20 });
|
|
179
|
+
|
|
183
180
|
// React to an entry
|
|
184
181
|
await kookee.changelog.react('entry-id', { reactionType: 'fire', action: 'add' });
|
|
185
182
|
```
|
|
@@ -190,20 +187,14 @@ await kookee.changelog.react('entry-id', { reactionType: 'fire', action: 'add' }
|
|
|
190
187
|
// List announcements
|
|
191
188
|
const announcements = await kookee.announcements.list({ page: 1, limit: 10 });
|
|
192
189
|
|
|
193
|
-
// Filter by type: 'info' | 'warning' | 'critical' | 'promotion' | 'maintenance' | 'newFeature'
|
|
194
|
-
const critical = await kookee.announcements.list({ type: 'critical' });
|
|
195
|
-
|
|
196
|
-
// Order announcements
|
|
197
|
-
const sorted = await kookee.announcements.list({ orderBy: 'publishedAt', order: 'desc' });
|
|
198
|
-
|
|
199
|
-
// Exclude already-seen announcements
|
|
200
|
-
const unseen = await kookee.announcements.list({ excludeIds: ['id1', 'id2'] });
|
|
201
|
-
|
|
202
190
|
// Get single announcement
|
|
203
191
|
const announcement = await kookee.announcements.getById('announcement-uuid');
|
|
204
192
|
|
|
205
193
|
// Get translations
|
|
206
194
|
const translations = await kookee.announcements.getTranslationsById('announcement-uuid');
|
|
195
|
+
|
|
196
|
+
// Get comments on an announcement
|
|
197
|
+
const comments = await kookee.announcements.getComments('announcement-id', { page: 1, limit: 20 });
|
|
207
198
|
```
|
|
208
199
|
|
|
209
200
|
## Pages
|
|
@@ -222,6 +213,37 @@ const pageById = await kookee.pages.getById('page-uuid');
|
|
|
222
213
|
// Get translations
|
|
223
214
|
const translationsBySlug = await kookee.pages.getTranslationsBySlug('privacy-policy');
|
|
224
215
|
const translationsById = await kookee.pages.getTranslationsById('page-uuid');
|
|
216
|
+
|
|
217
|
+
// Get comments on a page
|
|
218
|
+
const comments = await kookee.pages.getComments('page-id', { page: 1, limit: 20 });
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
## Entries (Generic)
|
|
222
|
+
|
|
223
|
+
The `entries` module provides low-level access to all entry types through a unified API:
|
|
224
|
+
|
|
225
|
+
```typescript
|
|
226
|
+
// List entries by type
|
|
227
|
+
const blogPosts = await kookee.entries.list({ type: 'blog', page: 1, limit: 10 });
|
|
228
|
+
const articles = await kookee.entries.list({ type: 'help_article', category: 'getting-started' });
|
|
229
|
+
|
|
230
|
+
// Get entry by slug or ID
|
|
231
|
+
const entry = await kookee.entries.getBySlug('my-post', { type: 'blog' });
|
|
232
|
+
const entryById = await kookee.entries.getById('entry-uuid');
|
|
233
|
+
|
|
234
|
+
// Get translations
|
|
235
|
+
const translationsBySlug = await kookee.entries.getTranslationsBySlug('my-post');
|
|
236
|
+
const translationsById = await kookee.entries.getTranslationsById('entry-uuid');
|
|
237
|
+
|
|
238
|
+
// Get comments
|
|
239
|
+
const comments = await kookee.entries.getComments('entry-id', { page: 1, limit: 20 });
|
|
240
|
+
|
|
241
|
+
// React to any entry
|
|
242
|
+
await kookee.entries.react('entry-id', { reactionType: 'heart', action: 'add' });
|
|
243
|
+
|
|
244
|
+
// Get tags or categories for a type
|
|
245
|
+
const tags = await kookee.entries.getTags('blog');
|
|
246
|
+
const categories = await kookee.entries.getCategories('help_article');
|
|
225
247
|
```
|
|
226
248
|
|
|
227
249
|
## Feedback
|
|
@@ -232,8 +254,11 @@ const translationsById = await kookee.pages.getTranslationsById('page-uuid');
|
|
|
232
254
|
// List feedback posts
|
|
233
255
|
const posts = await kookee.feedback.list({ page: 1, limit: 10 });
|
|
234
256
|
|
|
235
|
-
// Filter by
|
|
236
|
-
const
|
|
257
|
+
// Filter by column type: 'open' | 'closed'
|
|
258
|
+
const openPosts = await kookee.feedback.list({ columnType: 'open' });
|
|
259
|
+
|
|
260
|
+
// Filter by specific column
|
|
261
|
+
const planned = await kookee.feedback.list({ columnId: 'column-uuid' });
|
|
237
262
|
|
|
238
263
|
// Filter by category: 'feature' | 'improvement' | 'bug' | 'other'
|
|
239
264
|
const bugs = await kookee.feedback.list({ category: 'bug' });
|
|
@@ -310,7 +335,7 @@ const health = await kookee.health();
|
|
|
310
335
|
|
|
311
336
|
## Reactions
|
|
312
337
|
|
|
313
|
-
Blog posts and changelog entries support reactions:
|
|
338
|
+
Blog posts, help articles, and changelog entries support reactions:
|
|
314
339
|
|
|
315
340
|
```typescript
|
|
316
341
|
// Available reaction types: 'fire' | 'heart' | 'rocket' | 'eyes' | 'mindblown'
|
|
@@ -336,7 +361,7 @@ Translation endpoints return a `Record<string, T>` keyed by locale code:
|
|
|
336
361
|
|
|
337
362
|
```typescript
|
|
338
363
|
const translations = await kookee.blog.getTranslationsBySlug('hello-world');
|
|
339
|
-
// { en:
|
|
364
|
+
// { en: BlogEntry, de: BlogEntry, fr: BlogEntry, ... }
|
|
340
365
|
```
|
|
341
366
|
|
|
342
367
|
## Paginated Response
|
|
@@ -395,31 +420,76 @@ The SDK is written in TypeScript and provides full type definitions:
|
|
|
395
420
|
|
|
396
421
|
```typescript
|
|
397
422
|
import type {
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
423
|
+
// Entry types
|
|
424
|
+
BaseEntry,
|
|
425
|
+
GenericEntry,
|
|
426
|
+
BlogEntry,
|
|
427
|
+
PageEntry,
|
|
428
|
+
HelpArticleEntry,
|
|
429
|
+
ChangelogEntry,
|
|
430
|
+
AnnouncementEntry,
|
|
431
|
+
TypedEntry,
|
|
432
|
+
AnyEntry,
|
|
433
|
+
EntryType,
|
|
434
|
+
EntryStatus,
|
|
435
|
+
EntryAuthor,
|
|
436
|
+
EntryTag,
|
|
437
|
+
EntryTagWithCount,
|
|
438
|
+
EntryCategory,
|
|
439
|
+
EntryComment,
|
|
440
|
+
|
|
441
|
+
// Changelog & Announcement specific
|
|
442
|
+
ChangelogType,
|
|
443
|
+
AnnouncementType,
|
|
444
|
+
|
|
445
|
+
// Help Center
|
|
407
446
|
HelpSearchResult,
|
|
447
|
+
HelpArticleVisibility,
|
|
448
|
+
HelpChatMessage,
|
|
449
|
+
HelpChatParams,
|
|
408
450
|
HelpChatResponse,
|
|
451
|
+
HelpChatSource,
|
|
452
|
+
HelpChatSourceCategory,
|
|
409
453
|
HelpChatStreamChunk,
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
Announcement,
|
|
413
|
-
AnnouncementListItem,
|
|
454
|
+
|
|
455
|
+
// Feedback
|
|
414
456
|
FeedbackPost,
|
|
415
457
|
FeedbackPostListItem,
|
|
458
|
+
FeedbackColumnType,
|
|
459
|
+
FeedbackPostCategory,
|
|
460
|
+
FeedbackSortOption,
|
|
461
|
+
FeedbackAuthor,
|
|
462
|
+
FeedbackAssignee,
|
|
416
463
|
FeedbackComment,
|
|
417
464
|
FeedbackTopContributor,
|
|
465
|
+
FeedbackVoteResponse,
|
|
466
|
+
CreateFeedbackPostParams,
|
|
467
|
+
CreateFeedbackCommentParams,
|
|
468
|
+
CreatedFeedbackPost,
|
|
469
|
+
CreatedFeedbackComment,
|
|
470
|
+
ListMyFeedbackPostsParams,
|
|
471
|
+
DeleteFeedbackPostParams,
|
|
472
|
+
DeleteFeedbackPostResponse,
|
|
473
|
+
DeleteFeedbackCommentParams,
|
|
474
|
+
DeleteFeedbackCommentResponse,
|
|
475
|
+
|
|
476
|
+
// User & Identity
|
|
418
477
|
KookeeUser,
|
|
419
478
|
ExternalUser,
|
|
479
|
+
|
|
480
|
+
// Reactions
|
|
481
|
+
ReactionType,
|
|
482
|
+
ReactParams,
|
|
483
|
+
ReactResponse,
|
|
484
|
+
|
|
485
|
+
// Common
|
|
420
486
|
PublicConfig,
|
|
421
487
|
PaginatedResponse,
|
|
488
|
+
PaginationParams,
|
|
489
|
+
LocaleOptions,
|
|
490
|
+
OrderDirection,
|
|
422
491
|
KookeeConfig,
|
|
492
|
+
HealthCheckResponse,
|
|
423
493
|
} from '@kookee/sdk';
|
|
424
494
|
```
|
|
425
495
|
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var
|
|
1
|
+
'use strict';var B="https://api.kookee.dev",k="Kookee-API-Key",I="Kookee-Project-Id",i=class s extends Error{constructor(t,r,o){super(r);this.code=t;this.status=o;this.name="KookeeApiError",Object.setPrototypeOf(this,s.prototype);}},C=class{baseUrl;apiKey;projectId;constructor(e){this.apiKey=e.apiKey,this.projectId=e.projectId,this.baseUrl=e.baseUrl??B;}getHeaders(){let e={"Content-Type":"application/json"};return this.apiKey&&(e[k]=this.apiKey),this.projectId&&(e[I]=this.projectId),e}async get(e,t){let r=new URL(`${this.baseUrl}${e}`);if(t){for(let[h,n]of Object.entries(t))if(n!=null)if(Array.isArray(n))for(let a of n)r.searchParams.append(h,String(a));else r.searchParams.set(h,String(n));}let o=await fetch(r.toString(),{method:"GET",headers:this.getHeaders()});return this.handleResponse(o)}async post(e,t){let r=await fetch(`${this.baseUrl}${e}`,{method:"POST",headers:this.getHeaders(),body:t?JSON.stringify(t):void 0});return this.handleResponse(r)}async delete(e,t){let r=await fetch(`${this.baseUrl}${e}`,{method:"DELETE",headers:this.getHeaders(),body:t?JSON.stringify(t):void 0});return this.handleResponse(r)}async*streamPost(e,t){let r=await fetch(`${this.baseUrl}${e}`,{method:"POST",headers:{...this.getHeaders(),Accept:"text/event-stream"},body:t?JSON.stringify(t):void 0});if(!r.ok){let a=null;try{a=await r.json();}catch{}throw new i(a?.code??"UNKNOWN_ERROR",a?.message??`Request failed with status ${r.status}`,r.status)}if(!r.body)return;let o=r.body.getReader(),h=new TextDecoder,n="";try{for(;;){let{done:a,value:b}=await o.read();if(a)break;n+=h.decode(b,{stream:!0});let E=n.split(`
|
|
2
2
|
`);n=E.pop()??"";for(let x of E){let u=x.trim();if(!(!u||u.startsWith(":"))&&u.startsWith("data: ")){let R=u.slice(6);if(R==="[DONE]")return;yield JSON.parse(R);}}}}finally{o.releaseLock();}}async handleResponse(e){if(!e.ok){let t=null;try{t=await e.json();}catch{}throw new i(t?.code??"UNKNOWN_ERROR",t?.message??`Request failed with status ${e.status}`,e.status)}return e.json()}};var m=class{constructor(e){this.entries=e;}async list(e){return this.entries.list({type:"announcement",...e})}async getById(e,t){return this.entries.getById(e,t)}async getTranslationsById(e){return this.entries.getTranslationsById(e)}async getComments(e,t){return this.entries.getComments(e,t)}};var p=class{constructor(e){this.entries=e;}async list(e){return this.entries.list({type:"blog",...e})}async getBySlug(e,t){return this.entries.getBySlug(e,{type:"blog",...t})}async getById(e,t){return this.entries.getById(e,t)}async getTags(){return this.entries.getTags("blog")}async getTranslationsById(e){return this.entries.getTranslationsById(e)}async getTranslationsBySlug(e){return this.entries.getTranslationsBySlug(e)}async getComments(e,t){return this.entries.getComments(e,t)}async react(e,t){return this.entries.react(e,t)}};var c=class{constructor(e){this.entries=e;}async list(e){return this.entries.list({type:"changelog",...e})}async getBySlug(e,t){return this.entries.getBySlug(e,{type:"changelog",...t})}async getById(e,t){return this.entries.getById(e,t)}async getTranslationsById(e){return this.entries.getTranslationsById(e)}async getTranslationsBySlug(e){return this.entries.getTranslationsBySlug(e)}async getComments(e,t){return this.entries.getComments(e,t)}async react(e,t){return this.entries.react(e,t)}};var g=class{constructor(e){this.http=e;}async getByKey(e){return this.http.get(`/v1/config/${encodeURIComponent(e)}`)}async list(e){return this.http.get("/v1/config",e)}};var l=class{constructor(e){this.http=e;}async list(e){return this.http.get("/v1/entries",e)}async getById(e,t){return this.http.get(`/v1/entries/by-id/${encodeURIComponent(e)}`,t)}async getBySlug(e,t){return this.http.get(`/v1/entries/${encodeURIComponent(e)}`,t)}async getTranslationsById(e){return this.http.get(`/v1/entries/by-id/${encodeURIComponent(e)}/translations`)}async getTranslationsBySlug(e){return this.http.get(`/v1/entries/${encodeURIComponent(e)}/translations`)}async getComments(e,t){return this.http.get(`/v1/entries/${encodeURIComponent(e)}/comments`,t)}async react(e,t){return this.http.post(`/v1/entries/${encodeURIComponent(e)}/reactions`,t)}async getTags(e){return this.http.get("/v1/tags",{type:e})}async getCategories(e,t){return this.http.get("/v1/categories",{type:e,...t})}};var y=class{constructor(e,t){this.http=e;this.getUserContext=t;}async list(e){return this.http.get("/v1/feedback",e)}async getById(e){return this.http.get(`/v1/feedback/by-id/${encodeURIComponent(e)}`)}async vote(e,t){return this.http.post(`/v1/feedback/${encodeURIComponent(e)}/vote`,t)}async getTopContributors(e){return this.http.get("/v1/feedback/top-contributors",e)}async createPost(e){let t=e.externalUser??this.getUserContext();if(!t)throw new Error("No user identified. Call kookee.identify() first or pass externalUser in params.");return this.http.post("/v1/feedback",{...e,externalUser:t})}async createComment(e,t){let r=t.externalUser??this.getUserContext();if(!r)throw new Error("No user identified. Call kookee.identify() first or pass externalUser in params.");return this.http.post(`/v1/feedback/${encodeURIComponent(e)}/comments`,{...t,externalUser:r})}async listMyPosts(e){let t=e?.externalId??this.getUserContext()?.externalId;if(!t)throw new Error("No user identified. Call kookee.identify() first or pass externalId in params.");return this.http.get("/v1/feedback/mine",{...e,externalId:t})}async deletePost(e,t){let r=t?.externalId??this.getUserContext()?.externalId;if(!r)throw new Error("No user identified. Call kookee.identify() first or pass externalId in params.");return this.http.delete(`/v1/feedback/${encodeURIComponent(e)}`,{externalId:r})}async deleteComment(e,t){let r=t?.externalId??this.getUserContext()?.externalId;if(!r)throw new Error("No user identified. Call kookee.identify() first or pass externalId in params.");return this.http.delete(`/v1/feedback/comments/${encodeURIComponent(e)}`,{externalId:r})}};var d=class{http;entries;constructor(e,t){this.http=e,this.entries=t;}async categories(e){return this.entries.getCategories("help_article",e)}async list(e){return this.entries.list({type:"help_article",...e})}async getBySlug(e,t){return this.entries.getBySlug(e,{type:"help_article",...t})}async getById(e,t){return this.entries.getById(e,t)}async search(e){return this.http.get("/v1/help/search",e)}async getTranslationsById(e){return this.entries.getTranslationsById(e)}async getTranslationsBySlug(e){return this.entries.getTranslationsBySlug(e)}async getComments(e,t){return this.entries.getComments(e,t)}async react(e,t){return this.entries.react(e,t)}async chat(e){return this.http.post("/v1/help/chat",e)}chatStream(e){return this.http.streamPost("/v1/help/chat/stream",e)}};var P=class{constructor(e){this.entries=e;}async list(e){return this.entries.list({type:"page",...e})}async getBySlug(e,t){return this.entries.getBySlug(e,{type:"page",...t})}async getById(e,t){return this.entries.getById(e,t)}async getTranslationsById(e){return this.entries.getTranslationsById(e)}async getTranslationsBySlug(e){return this.entries.getTranslationsBySlug(e)}async getComments(e,t){return this.entries.getComments(e,t)}};var f=class{http;user=null;entries;announcements;blog;changelog;config;feedback;help;pages;constructor(e){if(!e.apiKey&&!e.projectId)throw new Error("Either apiKey or projectId is required");this.http=new C({apiKey:e.apiKey,projectId:e.projectId,baseUrl:e.baseUrl}),this.entries=new l(this.http),this.announcements=new m(this.entries),this.blog=new p(this.entries),this.changelog=new c(this.entries),this.config=new g(this.http),this.feedback=new y(this.http,()=>this.user),this.help=new d(this.http,this.entries),this.pages=new P(this.entries);}identify(e){this.user=e;}reset(){this.user=null;}getUser(){return this.user}async health(){return this.http.get("/v1/health")}};exports.AnnouncementModule=m;exports.BlogModule=p;exports.ChangelogModule=c;exports.ConfigModule=g;exports.EntriesModule=l;exports.FeedbackModule=y;exports.HelpModule=d;exports.Kookee=f;exports.KookeeApiError=i;exports.PagesModule=P;
|
package/dist/index.d.cts
CHANGED
|
@@ -91,7 +91,7 @@ interface HelpSearchResult {
|
|
|
91
91
|
locale: string;
|
|
92
92
|
matchedChunk?: string;
|
|
93
93
|
}
|
|
94
|
-
type
|
|
94
|
+
type FeedbackColumnType = 'open' | 'closed';
|
|
95
95
|
type FeedbackPostCategory = 'feature' | 'improvement' | 'bug' | 'other';
|
|
96
96
|
type FeedbackSortOption = 'newest' | 'top' | 'trending';
|
|
97
97
|
interface FeedbackAuthor {
|
|
@@ -118,7 +118,10 @@ interface FeedbackPostListItem {
|
|
|
118
118
|
id: string;
|
|
119
119
|
title: string;
|
|
120
120
|
contentText: string | null;
|
|
121
|
-
|
|
121
|
+
columnId: string | null;
|
|
122
|
+
columnName: string | null;
|
|
123
|
+
columnColor: string | null;
|
|
124
|
+
columnType: FeedbackColumnType | null;
|
|
122
125
|
category: FeedbackPostCategory;
|
|
123
126
|
voteCount: number;
|
|
124
127
|
commentCount: number;
|
|
@@ -162,7 +165,7 @@ interface CreatedFeedbackPost {
|
|
|
162
165
|
title: string;
|
|
163
166
|
contentHtml: string | null;
|
|
164
167
|
contentText: string | null;
|
|
165
|
-
|
|
168
|
+
columnId: string | null;
|
|
166
169
|
category: FeedbackPostCategory;
|
|
167
170
|
voteCount: number;
|
|
168
171
|
commentCount: number;
|
|
@@ -181,7 +184,8 @@ interface ListMyFeedbackPostsParams {
|
|
|
181
184
|
externalId?: string;
|
|
182
185
|
page?: number;
|
|
183
186
|
limit?: number;
|
|
184
|
-
|
|
187
|
+
columnId?: string;
|
|
188
|
+
columnType?: FeedbackColumnType;
|
|
185
189
|
category?: FeedbackPostCategory;
|
|
186
190
|
search?: string;
|
|
187
191
|
sort?: FeedbackSortOption;
|
|
@@ -424,7 +428,8 @@ declare class ConfigModule {
|
|
|
424
428
|
}
|
|
425
429
|
|
|
426
430
|
interface FeedbackListParams extends PaginationParams {
|
|
427
|
-
|
|
431
|
+
columnId?: string;
|
|
432
|
+
columnType?: 'open' | 'closed';
|
|
428
433
|
category?: FeedbackPostCategory;
|
|
429
434
|
search?: string;
|
|
430
435
|
sort?: FeedbackSortOption;
|
|
@@ -521,4 +526,4 @@ declare class Kookee {
|
|
|
521
526
|
health(): Promise<HealthCheckResponse>;
|
|
522
527
|
}
|
|
523
528
|
|
|
524
|
-
export { type AnnouncementEntry, type AnnouncementGetByIdParams, type AnnouncementGetCommentsParams, type AnnouncementListParams, AnnouncementModule, type AnnouncementType, type AnnouncementTypeSpecific, type AnyEntry, type ApiError, type BaseEntry, type BlogEntry, type BlogGetByIdParams, type BlogGetBySlugParams, type BlogGetCommentsParams, type BlogListParams, BlogModule, type BlogTypeSpecific, type ChangelogEntry, type ChangelogGetByIdParams, type ChangelogGetBySlugParams, type ChangelogGetCommentsParams, type ChangelogListParams, ChangelogModule, type ChangelogType, type ChangelogTypeSpecific, type ConfigListParams, ConfigModule, type CreateFeedbackCommentParams, type CreateFeedbackPostParams, type CreatedFeedbackComment, type CreatedFeedbackPost, type DeleteFeedbackCommentParams, type DeleteFeedbackCommentResponse, type DeleteFeedbackPostParams, type DeleteFeedbackPostResponse, type EntriesGetByIdParams, type EntriesGetBySlugParams, type EntriesGetCategoriesParams, type EntriesGetCommentsParams, type EntriesListParams, EntriesModule, type EntryAuthor, type EntryCategory, type EntryComment, type EntryStatus, type EntryTag, type EntryTagWithCount, type EntryType, type ExternalUser, type FeedbackAssignee, type FeedbackAuthor, type FeedbackComment, type FeedbackListParams, FeedbackModule, type FeedbackPost, type FeedbackPostCategory, type FeedbackPostListItem, type
|
|
529
|
+
export { type AnnouncementEntry, type AnnouncementGetByIdParams, type AnnouncementGetCommentsParams, type AnnouncementListParams, AnnouncementModule, type AnnouncementType, type AnnouncementTypeSpecific, type AnyEntry, type ApiError, type BaseEntry, type BlogEntry, type BlogGetByIdParams, type BlogGetBySlugParams, type BlogGetCommentsParams, type BlogListParams, BlogModule, type BlogTypeSpecific, type ChangelogEntry, type ChangelogGetByIdParams, type ChangelogGetBySlugParams, type ChangelogGetCommentsParams, type ChangelogListParams, ChangelogModule, type ChangelogType, type ChangelogTypeSpecific, type ConfigListParams, ConfigModule, type CreateFeedbackCommentParams, type CreateFeedbackPostParams, type CreatedFeedbackComment, type CreatedFeedbackPost, type DeleteFeedbackCommentParams, type DeleteFeedbackCommentResponse, type DeleteFeedbackPostParams, type DeleteFeedbackPostResponse, type EntriesGetByIdParams, type EntriesGetBySlugParams, type EntriesGetCategoriesParams, type EntriesGetCommentsParams, type EntriesListParams, EntriesModule, type EntryAuthor, type EntryCategory, type EntryComment, type EntryStatus, type EntryTag, type EntryTagWithCount, type EntryType, type ExternalUser, type FeedbackAssignee, type FeedbackAuthor, type FeedbackColumnType, type FeedbackComment, type FeedbackListParams, FeedbackModule, type FeedbackPost, type FeedbackPostCategory, type FeedbackPostListItem, type FeedbackSortOption, type FeedbackTopContributor, type FeedbackTopContributorsParams, type FeedbackVoteParams, type FeedbackVoteResponse, type GenericEntry, type HealthCheckResponse, type HelpArticleEntry, type HelpArticleTypeSpecific, type HelpArticleVisibility, type HelpCategoriesParams, type HelpChatMessage, type HelpChatParams, type HelpChatResponse, type HelpChatSource, type HelpChatSourceCategory, type HelpChatStreamChunk, type HelpGetByIdParams, type HelpGetBySlugParams, type HelpGetCommentsParams, type HelpListParams, HelpModule, type HelpSearchParams, type HelpSearchResult, Kookee, KookeeApiError, type KookeeConfig, type KookeeUser, type ListMyFeedbackPostsParams, type LocaleOptions, type OrderDirection, type PageEntry, type PageTypeSpecific, type PagesGetByIdParams, type PagesGetBySlugParams, type PagesGetCommentsParams, type PagesListParams, PagesModule, type PaginatedResponse, type PaginationParams, type PublicConfig, type ReactParams, type ReactResponse, type ReactionType, type TypeSpecific, type TypedEntry };
|
package/dist/index.d.ts
CHANGED
|
@@ -91,7 +91,7 @@ interface HelpSearchResult {
|
|
|
91
91
|
locale: string;
|
|
92
92
|
matchedChunk?: string;
|
|
93
93
|
}
|
|
94
|
-
type
|
|
94
|
+
type FeedbackColumnType = 'open' | 'closed';
|
|
95
95
|
type FeedbackPostCategory = 'feature' | 'improvement' | 'bug' | 'other';
|
|
96
96
|
type FeedbackSortOption = 'newest' | 'top' | 'trending';
|
|
97
97
|
interface FeedbackAuthor {
|
|
@@ -118,7 +118,10 @@ interface FeedbackPostListItem {
|
|
|
118
118
|
id: string;
|
|
119
119
|
title: string;
|
|
120
120
|
contentText: string | null;
|
|
121
|
-
|
|
121
|
+
columnId: string | null;
|
|
122
|
+
columnName: string | null;
|
|
123
|
+
columnColor: string | null;
|
|
124
|
+
columnType: FeedbackColumnType | null;
|
|
122
125
|
category: FeedbackPostCategory;
|
|
123
126
|
voteCount: number;
|
|
124
127
|
commentCount: number;
|
|
@@ -162,7 +165,7 @@ interface CreatedFeedbackPost {
|
|
|
162
165
|
title: string;
|
|
163
166
|
contentHtml: string | null;
|
|
164
167
|
contentText: string | null;
|
|
165
|
-
|
|
168
|
+
columnId: string | null;
|
|
166
169
|
category: FeedbackPostCategory;
|
|
167
170
|
voteCount: number;
|
|
168
171
|
commentCount: number;
|
|
@@ -181,7 +184,8 @@ interface ListMyFeedbackPostsParams {
|
|
|
181
184
|
externalId?: string;
|
|
182
185
|
page?: number;
|
|
183
186
|
limit?: number;
|
|
184
|
-
|
|
187
|
+
columnId?: string;
|
|
188
|
+
columnType?: FeedbackColumnType;
|
|
185
189
|
category?: FeedbackPostCategory;
|
|
186
190
|
search?: string;
|
|
187
191
|
sort?: FeedbackSortOption;
|
|
@@ -424,7 +428,8 @@ declare class ConfigModule {
|
|
|
424
428
|
}
|
|
425
429
|
|
|
426
430
|
interface FeedbackListParams extends PaginationParams {
|
|
427
|
-
|
|
431
|
+
columnId?: string;
|
|
432
|
+
columnType?: 'open' | 'closed';
|
|
428
433
|
category?: FeedbackPostCategory;
|
|
429
434
|
search?: string;
|
|
430
435
|
sort?: FeedbackSortOption;
|
|
@@ -521,4 +526,4 @@ declare class Kookee {
|
|
|
521
526
|
health(): Promise<HealthCheckResponse>;
|
|
522
527
|
}
|
|
523
528
|
|
|
524
|
-
export { type AnnouncementEntry, type AnnouncementGetByIdParams, type AnnouncementGetCommentsParams, type AnnouncementListParams, AnnouncementModule, type AnnouncementType, type AnnouncementTypeSpecific, type AnyEntry, type ApiError, type BaseEntry, type BlogEntry, type BlogGetByIdParams, type BlogGetBySlugParams, type BlogGetCommentsParams, type BlogListParams, BlogModule, type BlogTypeSpecific, type ChangelogEntry, type ChangelogGetByIdParams, type ChangelogGetBySlugParams, type ChangelogGetCommentsParams, type ChangelogListParams, ChangelogModule, type ChangelogType, type ChangelogTypeSpecific, type ConfigListParams, ConfigModule, type CreateFeedbackCommentParams, type CreateFeedbackPostParams, type CreatedFeedbackComment, type CreatedFeedbackPost, type DeleteFeedbackCommentParams, type DeleteFeedbackCommentResponse, type DeleteFeedbackPostParams, type DeleteFeedbackPostResponse, type EntriesGetByIdParams, type EntriesGetBySlugParams, type EntriesGetCategoriesParams, type EntriesGetCommentsParams, type EntriesListParams, EntriesModule, type EntryAuthor, type EntryCategory, type EntryComment, type EntryStatus, type EntryTag, type EntryTagWithCount, type EntryType, type ExternalUser, type FeedbackAssignee, type FeedbackAuthor, type FeedbackComment, type FeedbackListParams, FeedbackModule, type FeedbackPost, type FeedbackPostCategory, type FeedbackPostListItem, type
|
|
529
|
+
export { type AnnouncementEntry, type AnnouncementGetByIdParams, type AnnouncementGetCommentsParams, type AnnouncementListParams, AnnouncementModule, type AnnouncementType, type AnnouncementTypeSpecific, type AnyEntry, type ApiError, type BaseEntry, type BlogEntry, type BlogGetByIdParams, type BlogGetBySlugParams, type BlogGetCommentsParams, type BlogListParams, BlogModule, type BlogTypeSpecific, type ChangelogEntry, type ChangelogGetByIdParams, type ChangelogGetBySlugParams, type ChangelogGetCommentsParams, type ChangelogListParams, ChangelogModule, type ChangelogType, type ChangelogTypeSpecific, type ConfigListParams, ConfigModule, type CreateFeedbackCommentParams, type CreateFeedbackPostParams, type CreatedFeedbackComment, type CreatedFeedbackPost, type DeleteFeedbackCommentParams, type DeleteFeedbackCommentResponse, type DeleteFeedbackPostParams, type DeleteFeedbackPostResponse, type EntriesGetByIdParams, type EntriesGetBySlugParams, type EntriesGetCategoriesParams, type EntriesGetCommentsParams, type EntriesListParams, EntriesModule, type EntryAuthor, type EntryCategory, type EntryComment, type EntryStatus, type EntryTag, type EntryTagWithCount, type EntryType, type ExternalUser, type FeedbackAssignee, type FeedbackAuthor, type FeedbackColumnType, type FeedbackComment, type FeedbackListParams, FeedbackModule, type FeedbackPost, type FeedbackPostCategory, type FeedbackPostListItem, type FeedbackSortOption, type FeedbackTopContributor, type FeedbackTopContributorsParams, type FeedbackVoteParams, type FeedbackVoteResponse, type GenericEntry, type HealthCheckResponse, type HelpArticleEntry, type HelpArticleTypeSpecific, type HelpArticleVisibility, type HelpCategoriesParams, type HelpChatMessage, type HelpChatParams, type HelpChatResponse, type HelpChatSource, type HelpChatSourceCategory, type HelpChatStreamChunk, type HelpGetByIdParams, type HelpGetBySlugParams, type HelpGetCommentsParams, type HelpListParams, HelpModule, type HelpSearchParams, type HelpSearchResult, Kookee, KookeeApiError, type KookeeConfig, type KookeeUser, type ListMyFeedbackPostsParams, type LocaleOptions, type OrderDirection, type PageEntry, type PageTypeSpecific, type PagesGetByIdParams, type PagesGetBySlugParams, type PagesGetCommentsParams, type PagesListParams, PagesModule, type PaginatedResponse, type PaginationParams, type PublicConfig, type ReactParams, type ReactResponse, type ReactionType, type TypeSpecific, type TypedEntry };
|
package/dist/index.global.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(exports){'use strict';var
|
|
1
|
+
(function(exports){'use strict';var B="https://api.kookee.dev",k="Kookee-API-Key",I="Kookee-Project-Id",i=class s extends Error{constructor(t,r,o){super(r);this.code=t;this.status=o;this.name="KookeeApiError",Object.setPrototypeOf(this,s.prototype);}},C=class{baseUrl;apiKey;projectId;constructor(e){this.apiKey=e.apiKey,this.projectId=e.projectId,this.baseUrl=e.baseUrl??B;}getHeaders(){let e={"Content-Type":"application/json"};return this.apiKey&&(e[k]=this.apiKey),this.projectId&&(e[I]=this.projectId),e}async get(e,t){let r=new URL(`${this.baseUrl}${e}`);if(t){for(let[h,n]of Object.entries(t))if(n!=null)if(Array.isArray(n))for(let a of n)r.searchParams.append(h,String(a));else r.searchParams.set(h,String(n));}let o=await fetch(r.toString(),{method:"GET",headers:this.getHeaders()});return this.handleResponse(o)}async post(e,t){let r=await fetch(`${this.baseUrl}${e}`,{method:"POST",headers:this.getHeaders(),body:t?JSON.stringify(t):void 0});return this.handleResponse(r)}async delete(e,t){let r=await fetch(`${this.baseUrl}${e}`,{method:"DELETE",headers:this.getHeaders(),body:t?JSON.stringify(t):void 0});return this.handleResponse(r)}async*streamPost(e,t){let r=await fetch(`${this.baseUrl}${e}`,{method:"POST",headers:{...this.getHeaders(),Accept:"text/event-stream"},body:t?JSON.stringify(t):void 0});if(!r.ok){let a=null;try{a=await r.json();}catch{}throw new i(a?.code??"UNKNOWN_ERROR",a?.message??`Request failed with status ${r.status}`,r.status)}if(!r.body)return;let o=r.body.getReader(),h=new TextDecoder,n="";try{for(;;){let{done:a,value:b}=await o.read();if(a)break;n+=h.decode(b,{stream:!0});let E=n.split(`
|
|
2
2
|
`);n=E.pop()??"";for(let x of E){let u=x.trim();if(!(!u||u.startsWith(":"))&&u.startsWith("data: ")){let R=u.slice(6);if(R==="[DONE]")return;yield JSON.parse(R);}}}}finally{o.releaseLock();}}async handleResponse(e){if(!e.ok){let t=null;try{t=await e.json();}catch{}throw new i(t?.code??"UNKNOWN_ERROR",t?.message??`Request failed with status ${e.status}`,e.status)}return e.json()}};var m=class{constructor(e){this.entries=e;}async list(e){return this.entries.list({type:"announcement",...e})}async getById(e,t){return this.entries.getById(e,t)}async getTranslationsById(e){return this.entries.getTranslationsById(e)}async getComments(e,t){return this.entries.getComments(e,t)}};var p=class{constructor(e){this.entries=e;}async list(e){return this.entries.list({type:"blog",...e})}async getBySlug(e,t){return this.entries.getBySlug(e,{type:"blog",...t})}async getById(e,t){return this.entries.getById(e,t)}async getTags(){return this.entries.getTags("blog")}async getTranslationsById(e){return this.entries.getTranslationsById(e)}async getTranslationsBySlug(e){return this.entries.getTranslationsBySlug(e)}async getComments(e,t){return this.entries.getComments(e,t)}async react(e,t){return this.entries.react(e,t)}};var c=class{constructor(e){this.entries=e;}async list(e){return this.entries.list({type:"changelog",...e})}async getBySlug(e,t){return this.entries.getBySlug(e,{type:"changelog",...t})}async getById(e,t){return this.entries.getById(e,t)}async getTranslationsById(e){return this.entries.getTranslationsById(e)}async getTranslationsBySlug(e){return this.entries.getTranslationsBySlug(e)}async getComments(e,t){return this.entries.getComments(e,t)}async react(e,t){return this.entries.react(e,t)}};var g=class{constructor(e){this.http=e;}async getByKey(e){return this.http.get(`/v1/config/${encodeURIComponent(e)}`)}async list(e){return this.http.get("/v1/config",e)}};var l=class{constructor(e){this.http=e;}async list(e){return this.http.get("/v1/entries",e)}async getById(e,t){return this.http.get(`/v1/entries/by-id/${encodeURIComponent(e)}`,t)}async getBySlug(e,t){return this.http.get(`/v1/entries/${encodeURIComponent(e)}`,t)}async getTranslationsById(e){return this.http.get(`/v1/entries/by-id/${encodeURIComponent(e)}/translations`)}async getTranslationsBySlug(e){return this.http.get(`/v1/entries/${encodeURIComponent(e)}/translations`)}async getComments(e,t){return this.http.get(`/v1/entries/${encodeURIComponent(e)}/comments`,t)}async react(e,t){return this.http.post(`/v1/entries/${encodeURIComponent(e)}/reactions`,t)}async getTags(e){return this.http.get("/v1/tags",{type:e})}async getCategories(e,t){return this.http.get("/v1/categories",{type:e,...t})}};var y=class{constructor(e,t){this.http=e;this.getUserContext=t;}async list(e){return this.http.get("/v1/feedback",e)}async getById(e){return this.http.get(`/v1/feedback/by-id/${encodeURIComponent(e)}`)}async vote(e,t){return this.http.post(`/v1/feedback/${encodeURIComponent(e)}/vote`,t)}async getTopContributors(e){return this.http.get("/v1/feedback/top-contributors",e)}async createPost(e){let t=e.externalUser??this.getUserContext();if(!t)throw new Error("No user identified. Call kookee.identify() first or pass externalUser in params.");return this.http.post("/v1/feedback",{...e,externalUser:t})}async createComment(e,t){let r=t.externalUser??this.getUserContext();if(!r)throw new Error("No user identified. Call kookee.identify() first or pass externalUser in params.");return this.http.post(`/v1/feedback/${encodeURIComponent(e)}/comments`,{...t,externalUser:r})}async listMyPosts(e){let t=e?.externalId??this.getUserContext()?.externalId;if(!t)throw new Error("No user identified. Call kookee.identify() first or pass externalId in params.");return this.http.get("/v1/feedback/mine",{...e,externalId:t})}async deletePost(e,t){let r=t?.externalId??this.getUserContext()?.externalId;if(!r)throw new Error("No user identified. Call kookee.identify() first or pass externalId in params.");return this.http.delete(`/v1/feedback/${encodeURIComponent(e)}`,{externalId:r})}async deleteComment(e,t){let r=t?.externalId??this.getUserContext()?.externalId;if(!r)throw new Error("No user identified. Call kookee.identify() first or pass externalId in params.");return this.http.delete(`/v1/feedback/comments/${encodeURIComponent(e)}`,{externalId:r})}};var d=class{http;entries;constructor(e,t){this.http=e,this.entries=t;}async categories(e){return this.entries.getCategories("help_article",e)}async list(e){return this.entries.list({type:"help_article",...e})}async getBySlug(e,t){return this.entries.getBySlug(e,{type:"help_article",...t})}async getById(e,t){return this.entries.getById(e,t)}async search(e){return this.http.get("/v1/help/search",e)}async getTranslationsById(e){return this.entries.getTranslationsById(e)}async getTranslationsBySlug(e){return this.entries.getTranslationsBySlug(e)}async getComments(e,t){return this.entries.getComments(e,t)}async react(e,t){return this.entries.react(e,t)}async chat(e){return this.http.post("/v1/help/chat",e)}chatStream(e){return this.http.streamPost("/v1/help/chat/stream",e)}};var P=class{constructor(e){this.entries=e;}async list(e){return this.entries.list({type:"page",...e})}async getBySlug(e,t){return this.entries.getBySlug(e,{type:"page",...t})}async getById(e,t){return this.entries.getById(e,t)}async getTranslationsById(e){return this.entries.getTranslationsById(e)}async getTranslationsBySlug(e){return this.entries.getTranslationsBySlug(e)}async getComments(e,t){return this.entries.getComments(e,t)}};var f=class{http;user=null;entries;announcements;blog;changelog;config;feedback;help;pages;constructor(e){if(!e.apiKey&&!e.projectId)throw new Error("Either apiKey or projectId is required");this.http=new C({apiKey:e.apiKey,projectId:e.projectId,baseUrl:e.baseUrl}),this.entries=new l(this.http),this.announcements=new m(this.entries),this.blog=new p(this.entries),this.changelog=new c(this.entries),this.config=new g(this.http),this.feedback=new y(this.http,()=>this.user),this.help=new d(this.http,this.entries),this.pages=new P(this.entries);}identify(e){this.user=e;}reset(){this.user=null;}getUser(){return this.user}async health(){return this.http.get("/v1/health")}};exports.AnnouncementModule=m;exports.BlogModule=p;exports.ChangelogModule=c;exports.ConfigModule=g;exports.EntriesModule=l;exports.FeedbackModule=y;exports.HelpModule=d;exports.Kookee=f;exports.KookeeApiError=i;exports.PagesModule=P;return exports;})({});
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var
|
|
1
|
+
var B="https://api.kookee.dev",k="Kookee-API-Key",I="Kookee-Project-Id",i=class s extends Error{constructor(t,r,o){super(r);this.code=t;this.status=o;this.name="KookeeApiError",Object.setPrototypeOf(this,s.prototype);}},C=class{baseUrl;apiKey;projectId;constructor(e){this.apiKey=e.apiKey,this.projectId=e.projectId,this.baseUrl=e.baseUrl??B;}getHeaders(){let e={"Content-Type":"application/json"};return this.apiKey&&(e[k]=this.apiKey),this.projectId&&(e[I]=this.projectId),e}async get(e,t){let r=new URL(`${this.baseUrl}${e}`);if(t){for(let[h,n]of Object.entries(t))if(n!=null)if(Array.isArray(n))for(let a of n)r.searchParams.append(h,String(a));else r.searchParams.set(h,String(n));}let o=await fetch(r.toString(),{method:"GET",headers:this.getHeaders()});return this.handleResponse(o)}async post(e,t){let r=await fetch(`${this.baseUrl}${e}`,{method:"POST",headers:this.getHeaders(),body:t?JSON.stringify(t):void 0});return this.handleResponse(r)}async delete(e,t){let r=await fetch(`${this.baseUrl}${e}`,{method:"DELETE",headers:this.getHeaders(),body:t?JSON.stringify(t):void 0});return this.handleResponse(r)}async*streamPost(e,t){let r=await fetch(`${this.baseUrl}${e}`,{method:"POST",headers:{...this.getHeaders(),Accept:"text/event-stream"},body:t?JSON.stringify(t):void 0});if(!r.ok){let a=null;try{a=await r.json();}catch{}throw new i(a?.code??"UNKNOWN_ERROR",a?.message??`Request failed with status ${r.status}`,r.status)}if(!r.body)return;let o=r.body.getReader(),h=new TextDecoder,n="";try{for(;;){let{done:a,value:b}=await o.read();if(a)break;n+=h.decode(b,{stream:!0});let E=n.split(`
|
|
2
2
|
`);n=E.pop()??"";for(let x of E){let u=x.trim();if(!(!u||u.startsWith(":"))&&u.startsWith("data: ")){let R=u.slice(6);if(R==="[DONE]")return;yield JSON.parse(R);}}}}finally{o.releaseLock();}}async handleResponse(e){if(!e.ok){let t=null;try{t=await e.json();}catch{}throw new i(t?.code??"UNKNOWN_ERROR",t?.message??`Request failed with status ${e.status}`,e.status)}return e.json()}};var m=class{constructor(e){this.entries=e;}async list(e){return this.entries.list({type:"announcement",...e})}async getById(e,t){return this.entries.getById(e,t)}async getTranslationsById(e){return this.entries.getTranslationsById(e)}async getComments(e,t){return this.entries.getComments(e,t)}};var p=class{constructor(e){this.entries=e;}async list(e){return this.entries.list({type:"blog",...e})}async getBySlug(e,t){return this.entries.getBySlug(e,{type:"blog",...t})}async getById(e,t){return this.entries.getById(e,t)}async getTags(){return this.entries.getTags("blog")}async getTranslationsById(e){return this.entries.getTranslationsById(e)}async getTranslationsBySlug(e){return this.entries.getTranslationsBySlug(e)}async getComments(e,t){return this.entries.getComments(e,t)}async react(e,t){return this.entries.react(e,t)}};var c=class{constructor(e){this.entries=e;}async list(e){return this.entries.list({type:"changelog",...e})}async getBySlug(e,t){return this.entries.getBySlug(e,{type:"changelog",...t})}async getById(e,t){return this.entries.getById(e,t)}async getTranslationsById(e){return this.entries.getTranslationsById(e)}async getTranslationsBySlug(e){return this.entries.getTranslationsBySlug(e)}async getComments(e,t){return this.entries.getComments(e,t)}async react(e,t){return this.entries.react(e,t)}};var g=class{constructor(e){this.http=e;}async getByKey(e){return this.http.get(`/v1/config/${encodeURIComponent(e)}`)}async list(e){return this.http.get("/v1/config",e)}};var l=class{constructor(e){this.http=e;}async list(e){return this.http.get("/v1/entries",e)}async getById(e,t){return this.http.get(`/v1/entries/by-id/${encodeURIComponent(e)}`,t)}async getBySlug(e,t){return this.http.get(`/v1/entries/${encodeURIComponent(e)}`,t)}async getTranslationsById(e){return this.http.get(`/v1/entries/by-id/${encodeURIComponent(e)}/translations`)}async getTranslationsBySlug(e){return this.http.get(`/v1/entries/${encodeURIComponent(e)}/translations`)}async getComments(e,t){return this.http.get(`/v1/entries/${encodeURIComponent(e)}/comments`,t)}async react(e,t){return this.http.post(`/v1/entries/${encodeURIComponent(e)}/reactions`,t)}async getTags(e){return this.http.get("/v1/tags",{type:e})}async getCategories(e,t){return this.http.get("/v1/categories",{type:e,...t})}};var y=class{constructor(e,t){this.http=e;this.getUserContext=t;}async list(e){return this.http.get("/v1/feedback",e)}async getById(e){return this.http.get(`/v1/feedback/by-id/${encodeURIComponent(e)}`)}async vote(e,t){return this.http.post(`/v1/feedback/${encodeURIComponent(e)}/vote`,t)}async getTopContributors(e){return this.http.get("/v1/feedback/top-contributors",e)}async createPost(e){let t=e.externalUser??this.getUserContext();if(!t)throw new Error("No user identified. Call kookee.identify() first or pass externalUser in params.");return this.http.post("/v1/feedback",{...e,externalUser:t})}async createComment(e,t){let r=t.externalUser??this.getUserContext();if(!r)throw new Error("No user identified. Call kookee.identify() first or pass externalUser in params.");return this.http.post(`/v1/feedback/${encodeURIComponent(e)}/comments`,{...t,externalUser:r})}async listMyPosts(e){let t=e?.externalId??this.getUserContext()?.externalId;if(!t)throw new Error("No user identified. Call kookee.identify() first or pass externalId in params.");return this.http.get("/v1/feedback/mine",{...e,externalId:t})}async deletePost(e,t){let r=t?.externalId??this.getUserContext()?.externalId;if(!r)throw new Error("No user identified. Call kookee.identify() first or pass externalId in params.");return this.http.delete(`/v1/feedback/${encodeURIComponent(e)}`,{externalId:r})}async deleteComment(e,t){let r=t?.externalId??this.getUserContext()?.externalId;if(!r)throw new Error("No user identified. Call kookee.identify() first or pass externalId in params.");return this.http.delete(`/v1/feedback/comments/${encodeURIComponent(e)}`,{externalId:r})}};var d=class{http;entries;constructor(e,t){this.http=e,this.entries=t;}async categories(e){return this.entries.getCategories("help_article",e)}async list(e){return this.entries.list({type:"help_article",...e})}async getBySlug(e,t){return this.entries.getBySlug(e,{type:"help_article",...t})}async getById(e,t){return this.entries.getById(e,t)}async search(e){return this.http.get("/v1/help/search",e)}async getTranslationsById(e){return this.entries.getTranslationsById(e)}async getTranslationsBySlug(e){return this.entries.getTranslationsBySlug(e)}async getComments(e,t){return this.entries.getComments(e,t)}async react(e,t){return this.entries.react(e,t)}async chat(e){return this.http.post("/v1/help/chat",e)}chatStream(e){return this.http.streamPost("/v1/help/chat/stream",e)}};var P=class{constructor(e){this.entries=e;}async list(e){return this.entries.list({type:"page",...e})}async getBySlug(e,t){return this.entries.getBySlug(e,{type:"page",...t})}async getById(e,t){return this.entries.getById(e,t)}async getTranslationsById(e){return this.entries.getTranslationsById(e)}async getTranslationsBySlug(e){return this.entries.getTranslationsBySlug(e)}async getComments(e,t){return this.entries.getComments(e,t)}};var f=class{http;user=null;entries;announcements;blog;changelog;config;feedback;help;pages;constructor(e){if(!e.apiKey&&!e.projectId)throw new Error("Either apiKey or projectId is required");this.http=new C({apiKey:e.apiKey,projectId:e.projectId,baseUrl:e.baseUrl}),this.entries=new l(this.http),this.announcements=new m(this.entries),this.blog=new p(this.entries),this.changelog=new c(this.entries),this.config=new g(this.http),this.feedback=new y(this.http,()=>this.user),this.help=new d(this.http,this.entries),this.pages=new P(this.entries);}identify(e){this.user=e;}reset(){this.user=null;}getUser(){return this.user}async health(){return this.http.get("/v1/health")}};export{m as AnnouncementModule,p as BlogModule,c as ChangelogModule,g as ConfigModule,l as EntriesModule,y as FeedbackModule,d as HelpModule,f as Kookee,i as KookeeApiError,P as PagesModule};
|