@drodil/backstage-plugin-qeta-common 3.4.0 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -105,6 +105,37 @@ class QetaClient {
105
105
  }
106
106
  return data;
107
107
  }
108
+ async getAIAnswerForQuestion(questionId, requestOptions) {
109
+ const response = await this.fetch(`/ai/question/${questionId}`, {
110
+ requestOptions
111
+ });
112
+ if (!response.ok) {
113
+ return null;
114
+ }
115
+ return await response.json();
116
+ }
117
+ async getAIAnswerForDraft(title, content, requestOptions) {
118
+ const response = await this.fetch("/ai/question", {
119
+ requestOptions,
120
+ reqInit: {
121
+ method: "POST",
122
+ body: JSON.stringify({ title, content }),
123
+ headers: { "Content-Type": "application/json" }
124
+ }
125
+ });
126
+ if (!response.ok) {
127
+ return null;
128
+ }
129
+ return await response.json();
130
+ }
131
+ async isAIEnabled() {
132
+ const response = await this.fetch("/ai/status");
133
+ if (!response.ok) {
134
+ return false;
135
+ }
136
+ const data = await response.json();
137
+ return Boolean(data.enabled);
138
+ }
108
139
  async getTags(options, requestOptions) {
109
140
  const response = await this.fetch("/tags", {
110
141
  queryParams: options,
@@ -182,6 +213,20 @@ class QetaClient {
182
213
  }
183
214
  return data;
184
215
  }
216
+ async deletePostVote(id, requestOptions) {
217
+ if (!id) {
218
+ throw new QetaError("Invalid id provided", void 0);
219
+ }
220
+ const response = await this.fetch(`/posts/${id}/vote`, {
221
+ reqInit: { method: "DELETE" },
222
+ requestOptions
223
+ });
224
+ const data = await response.json();
225
+ if ("errors" in data) {
226
+ throw new QetaError("Failed to fetch", data.errors);
227
+ }
228
+ return data;
229
+ }
185
230
  async favoritePost(id, requestOptions) {
186
231
  if (!id) {
187
232
  throw new QetaError("Invalid id provided", void 0);
@@ -289,6 +334,20 @@ class QetaClient {
289
334
  }
290
335
  return data;
291
336
  }
337
+ async deleteAnswerVote(postId, id, requestOptions) {
338
+ if (!postId || !id) {
339
+ throw new QetaError("Invalid id provided", void 0);
340
+ }
341
+ const response = await this.fetch(`/posts/${postId}/answers/${id}/vote`, {
342
+ reqInit: { method: "DELETE" },
343
+ requestOptions
344
+ });
345
+ const data = await response.json();
346
+ if ("errors" in data) {
347
+ throw new QetaError("Failed to fetch", data.errors);
348
+ }
349
+ return data;
350
+ }
292
351
  async markAnswerCorrect(questionId, id, requestOptions) {
293
352
  if (!id || !questionId) {
294
353
  throw new QetaError("Invalid id provided", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"QetaClient.cjs.js","sources":["../../src/api/QetaClient.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport {\n AnswersQuery,\n CollectionsQuery,\n EntitiesQuery,\n PostsQuery,\n QetaApi,\n RequestOptions,\n TagsQuery,\n UsersQuery,\n} from './QetaApi';\nimport { CustomErrorBase } from '@backstage/errors';\nimport {\n Answer,\n AnswerRequest,\n AnswerResponseBody,\n AnswersResponse,\n AnswersResponseBody,\n AttachmentResponseBody,\n CollectionRequest,\n CollectionResponse,\n CollectionResponseBody,\n CollectionsResponse,\n CollectionsResponseBody,\n EntitiesResponse,\n EntityResponse,\n GlobalStat,\n ImpactResponse,\n Post,\n PostRequest,\n PostResponseBody,\n PostsResponse,\n PostsResponseBody,\n StatisticResponse,\n StatisticsRequestParameters,\n StatisticsResponse,\n TagResponse,\n TagsResponse,\n TemplateRequest,\n TemplateResponse,\n TemplatesResponse,\n UserCollectionsResponse,\n UserEntitiesResponse,\n UsersResponse,\n UserStat,\n UserTagsResponse,\n UserUsersResponse,\n} from '@drodil/backstage-plugin-qeta-common';\nimport omitBy from 'lodash/omitBy';\nimport crossFetch from 'cross-fetch';\nimport qs from 'qs';\n\nexport class QetaError extends CustomErrorBase {\n public errors: null | undefined | any[];\n\n constructor(message: string, errors: null | undefined | any[]) {\n super(message);\n\n this.errors = errors;\n }\n}\n\nexport class QetaClient implements QetaApi {\n private readonly fetchApi: { fetch: typeof fetch };\n private readonly discoveryApi: {\n getBaseUrl(pluginId: string): Promise<string>;\n };\n\n constructor(options: {\n discoveryApi: { getBaseUrl(pluginId: string): Promise<string> };\n fetchApi?: { fetch: typeof fetch };\n }) {\n this.fetchApi = options.fetchApi ?? { fetch: crossFetch };\n this.discoveryApi = options.discoveryApi;\n }\n\n async getPosts(\n options: PostsQuery,\n requestOptions?: RequestOptions,\n ): Promise<PostsResponse> {\n const response = await this.fetch('/posts', {\n requestOptions,\n queryParams: options,\n });\n\n if (response.status === 403) {\n return { posts: [], total: 0 };\n }\n const data = (await response.json()) as PostsResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getPostsList(\n type: string,\n options?: PostsQuery,\n requestOptions?: RequestOptions,\n ): Promise<PostsResponse> {\n const response = await this.fetch(`/posts/list/${type}`, {\n requestOptions,\n queryParams: options,\n });\n\n if (response.status === 403) {\n return { posts: [], total: 0 };\n }\n\n const data = (await response.json()) as PostsResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async createPost(\n question: PostRequest,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n const response = await this.fetch(`/posts`, {\n requestOptions,\n reqInit: {\n method: 'POST',\n body: JSON.stringify(question),\n headers: { 'Content-Type': 'application/json' },\n },\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async commentPost(\n id: number,\n content: string,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n const response = await this.fetch(`/posts/${id}/comments`, {\n requestOptions,\n reqInit: {\n method: 'POST',\n body: JSON.stringify({ content }),\n headers: { 'Content-Type': 'application/json' },\n },\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async deletePostComment(\n questionId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n const response = await this.fetch(`/posts/${questionId}/comments/${id}`, {\n reqInit: { method: 'DELETE' },\n requestOptions,\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getPost(id?: string, requestOptions?: RequestOptions): Promise<Post> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n\n const response = await this.fetch(`/posts/${id}`, { requestOptions });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getTags(\n options?: TagsQuery,\n requestOptions?: RequestOptions,\n ): Promise<TagsResponse> {\n const response = await this.fetch('/tags', {\n queryParams: options,\n requestOptions,\n });\n return (await response.json()) as TagsResponse;\n }\n\n async getTag(\n tag: string,\n requestOptions?: RequestOptions,\n ): Promise<TagResponse | null> {\n const response = await this.fetch(`/tags/${tag}`, { requestOptions });\n if (!response.ok) {\n return null;\n }\n return (await response.json()) as TagResponse;\n }\n\n async updateTag(\n tag: string,\n description?: string,\n requestOptions?: RequestOptions,\n ): Promise<TagResponse | null> {\n const response = await this.fetch(`/tags/${tag}`, {\n requestOptions,\n reqInit: {\n method: 'POST',\n body: JSON.stringify({ description }),\n headers: { 'Content-Type': 'application/json' },\n },\n });\n if (!response.ok) {\n return null;\n }\n return (await response.json()) as TagResponse;\n }\n\n async getUsers(\n options?: UsersQuery,\n requestOptions?: RequestOptions,\n ): Promise<UsersResponse> {\n const response = await this.fetch('/users', {\n requestOptions,\n queryParams: options,\n });\n return (await response.json()) as UsersResponse;\n }\n\n async getEntities(\n options?: EntitiesQuery,\n requestOptions?: RequestOptions,\n ): Promise<EntitiesResponse> {\n const response = await this.fetch('/entities', {\n requestOptions,\n queryParams: options,\n });\n return (await response.json()) as EntitiesResponse;\n }\n\n async getEntity(\n entityRef: string,\n requestOptions?: RequestOptions,\n ): Promise<EntityResponse | null> {\n const response = await this.fetch(`/entities/${entityRef}`, {\n requestOptions,\n });\n if (!response.ok) {\n return null;\n }\n\n return (await response.json()) as EntityResponse;\n }\n\n async votePostUp(id: number, requestOptions?: RequestOptions): Promise<Post> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${id}/upvote`, {\n requestOptions,\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async votePostDown(\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${id}/downvote`, {\n requestOptions,\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async favoritePost(\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${id}/favorite`, {\n requestOptions,\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async unfavoritePost(\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${id}/unfavorite`, {\n requestOptions,\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async postAnswer(\n answer: AnswerRequest,\n requestOptions?: RequestOptions,\n ): Promise<AnswerResponseBody> {\n const response = await this.fetch(`/posts/${answer.postId}/answers`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify({\n answer: answer.answer,\n images: answer.images,\n anonymous: answer.anonymous,\n }),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async commentAnswer(\n questionId: number,\n id: number,\n content: string,\n requestOptions?: RequestOptions,\n ): Promise<Answer> {\n const response = await this.fetch(\n `/posts/${questionId}/answers/${id}/comments`,\n {\n reqInit: {\n method: 'POST',\n body: JSON.stringify({ content }),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n },\n );\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async deleteAnswerComment(\n questionId: number,\n answerId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Answer> {\n const response = await this.fetch(\n `/posts/${questionId}/answers/${answerId}/comments/${id}`,\n {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n },\n );\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async voteAnswerUp(\n questionId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Answer> {\n if (!id || !questionId) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(\n `/posts/${questionId}/answers/${id}/upvote`,\n { requestOptions },\n );\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async voteAnswerDown(\n questionId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Answer> {\n if (!id || !questionId) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(\n `/posts/${questionId}/answers/${id}/downvote`,\n { requestOptions },\n );\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async markAnswerCorrect(\n questionId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n if (!id || !questionId) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(\n `/posts/${questionId}/answers/${id}/correct`,\n { requestOptions },\n );\n const data = await response;\n return data.ok;\n }\n\n async markAnswerIncorrect(\n questionId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n if (!id || !questionId) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(\n `/posts/${questionId}/answers/${id}/incorrect`,\n { requestOptions },\n );\n const data = await response;\n return data.ok;\n }\n\n async deletePost(\n questionId: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n if (!questionId) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${questionId}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n const data = await response;\n return data.ok;\n }\n\n async deleteAnswer(\n questionId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n if (!questionId || !id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${questionId}/answers/${id}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n const data = await response;\n return data.ok;\n }\n\n async updatePost(\n id: string,\n question: PostRequest,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n const response = await this.fetch(`/posts/${id}`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify(question),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to update', data.errors);\n }\n\n return data;\n }\n\n async updateAnswer(\n id: number,\n answer: AnswerRequest,\n requestOptions?: RequestOptions,\n ): Promise<AnswerResponseBody> {\n const response = await this.fetch(`/posts/${answer.postId}/answers/${id}`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify({ answer: answer.answer, images: answer.images }),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getAnswers(\n options: AnswersQuery,\n requestOptions?: RequestOptions,\n ): Promise<AnswersResponse> {\n const response = await this.fetch('/answers', {\n queryParams: options,\n requestOptions,\n });\n if (response.status === 403) {\n return { answers: [], total: 0 };\n }\n const data = (await response.json()) as AnswersResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getAnswer(\n questionId: string | number | undefined,\n id: string | number | undefined,\n requestOptions?: RequestOptions,\n ): Promise<AnswerResponseBody> {\n if (!questionId || !id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${questionId}/answers/${id}`, {\n requestOptions,\n });\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getFollowedCollections(\n requestOptions?: RequestOptions,\n ): Promise<UserCollectionsResponse> {\n const response = await this.fetch(`/collections/followed`, {\n requestOptions,\n });\n return (await response.json()) as UserCollectionsResponse;\n }\n\n async followCollection(\n collectionId: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/collections/follow/${collectionId}`, {\n reqInit: {\n method: 'PUT',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async unfollowCollection(\n collectionId: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/collections/follow/${collectionId}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async getFollowedTags(\n requestOptions?: RequestOptions,\n ): Promise<UserTagsResponse> {\n const response = await this.fetch(`/tags/followed`, { requestOptions });\n return (await response.json()) as UserTagsResponse;\n }\n\n async followTag(\n tag: string,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/tags/follow/${tag}`, {\n reqInit: {\n method: 'PUT',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async unfollowTag(\n tag: string,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/tags/follow/${tag}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async getFollowedEntities(\n requestOptions?: RequestOptions,\n ): Promise<UserEntitiesResponse> {\n const response = await this.fetch(`/entities/followed`, { requestOptions });\n return (await response.json()) as UserEntitiesResponse;\n }\n\n async followEntity(\n entityRef: string,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/entities/follow/${entityRef}`, {\n reqInit: {\n method: 'PUT',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async unfollowEntity(\n entityRef: string,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/entities/follow/${entityRef}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async getFollowedUsers(\n requestOptions?: RequestOptions,\n ): Promise<UserUsersResponse> {\n const response = await this.fetch(`/users/followed`, { requestOptions });\n return (await response.json()) as UserUsersResponse;\n }\n\n async followUser(\n userRef: string,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/users/follow/${userRef}`, {\n reqInit: {\n method: 'PUT',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async unfollowUser(\n userRef: string,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/users/follow/${userRef}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async postAttachment(\n file: Blob,\n options?: { postId?: number; answerId?: number; collectionId?: number },\n requestOptions?: RequestOptions,\n ): Promise<AttachmentResponseBody> {\n const formData = new FormData();\n formData.append('image', file);\n\n const response = await this.fetch('/attachments', {\n queryParams: options,\n reqInit: { method: 'POST', body: formData },\n requestOptions,\n });\n return (await response.json()) as AttachmentResponseBody;\n }\n\n async getMostUpvotedAnswers(\n options: StatisticsRequestParameters,\n ): Promise<StatisticResponse> {\n const response = await this.fetch('/statistics/answers/top-upvoted-users', {\n queryParams: options.options,\n requestOptions: options.requestOptions,\n });\n return (await response.json()) as StatisticResponse;\n }\n\n async getMostUpvotedCorrectAnswers(\n options: StatisticsRequestParameters,\n ): Promise<StatisticResponse> {\n const response = await this.fetch(\n '/statistics/answers/top-correct-upvoted-users',\n {\n queryParams: options.options,\n requestOptions: options.requestOptions,\n },\n );\n\n return (await response.json()) as StatisticResponse;\n }\n\n async getMostUpvotedPosts(\n options: StatisticsRequestParameters,\n ): Promise<StatisticResponse> {\n const response = await this.fetch('/statistics/posts/top-upvoted-users', {\n queryParams: options.options,\n requestOptions: options.requestOptions,\n });\n\n return (await response.json()) as StatisticResponse;\n }\n\n async getMostPosts(\n options: StatisticsRequestParameters,\n ): Promise<StatisticResponse> {\n const response = await this.fetch('/statistics/posts/most-questions', {\n queryParams: options.options,\n requestOptions: options.requestOptions,\n });\n\n return (await response.json()) as StatisticResponse;\n }\n\n async getMostAnswers(\n options: StatisticsRequestParameters,\n ): Promise<StatisticResponse> {\n const response = await this.fetch('/statistics/answers/most-answers', {\n queryParams: options.options,\n requestOptions: options.requestOptions,\n });\n\n return (await response.json()) as StatisticResponse;\n }\n\n async getTopStatisticsHomepage(\n options: StatisticsRequestParameters,\n ): Promise<StatisticResponse[]> {\n return await Promise.all([\n this.getMostPosts(options),\n this.getMostAnswers(options),\n this.getMostUpvotedPosts(options),\n this.getMostUpvotedAnswers(options),\n this.getMostUpvotedCorrectAnswers(options),\n ]);\n }\n\n async getUserImpact(\n requestOptions?: RequestOptions,\n ): Promise<ImpactResponse> {\n const response = await this.fetch(`/statistics/user/impact`, {\n requestOptions,\n });\n\n return (await response.json()) as ImpactResponse;\n }\n\n async getGlobalStats(\n requestOptions?: RequestOptions,\n ): Promise<StatisticsResponse<GlobalStat>> {\n const response = await this.fetch(`/statistics/global`, { requestOptions });\n return (await response.json()) as StatisticsResponse<GlobalStat>;\n }\n\n async getUserStats(\n userRef: string,\n requestOptions?: RequestOptions,\n ): Promise<StatisticsResponse<UserStat>> {\n const response = await this.fetch(`/statistics/user/${userRef}`, {\n requestOptions,\n });\n return (await response.json()) as StatisticsResponse<UserStat>;\n }\n\n async getCollections(\n options?: CollectionsQuery,\n requestOptions?: RequestOptions,\n ): Promise<CollectionsResponse> {\n const response = await this.fetch('/collections', {\n queryParams: options,\n requestOptions,\n });\n if (response.status === 403) {\n return { collections: [], total: 0 };\n }\n const data = (await response.json()) as CollectionsResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getCollection(\n id?: string | number,\n requestOptions?: RequestOptions,\n ): Promise<CollectionResponse> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/collections/${id}`, { requestOptions });\n\n const data = (await response.json()) as CollectionResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async createCollection(\n collection: CollectionRequest,\n requestOptions?: RequestOptions,\n ): Promise<CollectionResponse> {\n const response = await this.fetch(`/collections`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify(collection),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as CollectionResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async updateCollection(\n id: number,\n collection: CollectionRequest,\n requestOptions?: RequestOptions,\n ): Promise<CollectionResponse> {\n const response = await this.fetch(`/collections/${id}`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify(collection),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as CollectionResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to update', data.errors);\n }\n\n return data;\n }\n\n async deleteCollection(\n id?: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/collections/${id}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n const data = await response;\n return data.ok;\n }\n\n async addPostToCollection(\n collectionId: number,\n postId: number,\n requestOptions?: RequestOptions,\n ): Promise<CollectionResponse> {\n const response = await this.fetch(`/collections/${collectionId}/posts`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify({ postId }),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as CollectionResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to update', data.errors);\n }\n\n return data;\n }\n\n async removePostFromCollection(\n collectionId: number,\n postId: number,\n requestOptions?: RequestOptions,\n ): Promise<CollectionResponse> {\n const response = await this.fetch(`/collections/${collectionId}/posts`, {\n reqInit: {\n method: 'DELETE',\n body: JSON.stringify({ postId }),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as CollectionResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to update', data.errors);\n }\n\n return data;\n }\n\n async getTemplates(\n requestOptions?: RequestOptions,\n ): Promise<TemplatesResponse> {\n const response = await this.fetch('/templates', { requestOptions });\n return (await response.json()) as TemplatesResponse;\n }\n\n async getTemplate(\n id: string | number,\n requestOptions?: RequestOptions,\n ): Promise<TemplateResponse> {\n const response = await this.fetch(`/templates/${id}`, { requestOptions });\n return (await response.json()) as TemplateResponse;\n }\n\n async createTemplate(\n template: TemplateRequest,\n requestOptions?: RequestOptions,\n ): Promise<TemplateResponse> {\n const response = await this.fetch(`/templates`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify(template),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n return (await response.json()) as TemplateResponse;\n }\n\n async updateTemplate(\n id: string | number,\n template: TemplateRequest,\n requestOptions?: RequestOptions,\n ): Promise<TemplateResponse> {\n const response = await this.fetch(`/templates/${id}`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify(template),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n return (await response.json()) as TemplateResponse;\n }\n\n async deleteTemplate(\n templateId: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/templates/${templateId}`, {\n reqInit: { method: 'DELETE' },\n requestOptions,\n });\n return response.ok;\n }\n\n private async getBaseUrl(): Promise<string> {\n return this.discoveryApi.getBaseUrl('qeta');\n }\n\n private fetch = async (\n path: string,\n opts?: {\n queryParams?: any;\n reqInit?: RequestInit;\n requestOptions?: RequestOptions;\n },\n ) => {\n const { queryParams, reqInit = {}, requestOptions } = opts ?? {};\n const query = this.getQueryParameters(queryParams);\n let url = `${await this.getBaseUrl()}${\n path.startsWith('/') ? path : `/${path}`\n }`;\n if (query) {\n url += `?${query}`;\n }\n\n return this.fetchApi.fetch(url, {\n method: 'GET',\n ...(requestOptions?.token\n ? { headers: { Authorization: `Bearer ${requestOptions.token}` } }\n : undefined),\n ...reqInit,\n });\n };\n\n private getQueryParameters(params?: any) {\n if (!params) {\n return '';\n }\n const cleaned = omitBy(params, v => !Boolean(v));\n return qs.stringify(cleaned);\n }\n}\n"],"names":["CustomErrorBase","crossFetch","omitBy","qs"],"mappings":"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"}
1
+ {"version":3,"file":"QetaClient.cjs.js","sources":["../../src/api/QetaClient.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport {\n AnswersQuery,\n CollectionsQuery,\n EntitiesQuery,\n PostsQuery,\n QetaApi,\n RequestOptions,\n TagsQuery,\n UsersQuery,\n} from './QetaApi';\nimport { CustomErrorBase } from '@backstage/errors';\nimport {\n AIResponse,\n Answer,\n AnswerRequest,\n AnswerResponse,\n AnswerResponseBody,\n AnswersResponse,\n AnswersResponseBody,\n AttachmentResponseBody,\n CollectionRequest,\n CollectionResponse,\n CollectionResponseBody,\n CollectionsResponse,\n CollectionsResponseBody,\n EntitiesResponse,\n EntityResponse,\n GlobalStat,\n ImpactResponse,\n Post,\n PostRequest,\n PostResponse,\n PostResponseBody,\n PostsResponse,\n PostsResponseBody,\n StatisticResponse,\n StatisticsRequestParameters,\n StatisticsResponse,\n TagResponse,\n TagsResponse,\n TemplateRequest,\n TemplateResponse,\n TemplatesResponse,\n UserCollectionsResponse,\n UserEntitiesResponse,\n UsersResponse,\n UserStat,\n UserTagsResponse,\n UserUsersResponse,\n} from '@drodil/backstage-plugin-qeta-common';\nimport omitBy from 'lodash/omitBy';\nimport crossFetch from 'cross-fetch';\nimport qs from 'qs';\n\nexport class QetaError extends CustomErrorBase {\n public errors: null | undefined | any[];\n\n constructor(message: string, errors: null | undefined | any[]) {\n super(message);\n\n this.errors = errors;\n }\n}\n\nexport class QetaClient implements QetaApi {\n private readonly fetchApi: { fetch: typeof fetch };\n private readonly discoveryApi: {\n getBaseUrl(pluginId: string): Promise<string>;\n };\n\n constructor(options: {\n discoveryApi: { getBaseUrl(pluginId: string): Promise<string> };\n fetchApi?: { fetch: typeof fetch };\n }) {\n this.fetchApi = options.fetchApi ?? { fetch: crossFetch };\n this.discoveryApi = options.discoveryApi;\n }\n\n async getPosts(\n options: PostsQuery,\n requestOptions?: RequestOptions,\n ): Promise<PostsResponse> {\n const response = await this.fetch('/posts', {\n requestOptions,\n queryParams: options,\n });\n\n if (response.status === 403) {\n return { posts: [], total: 0 };\n }\n const data = (await response.json()) as PostsResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getPostsList(\n type: string,\n options?: PostsQuery,\n requestOptions?: RequestOptions,\n ): Promise<PostsResponse> {\n const response = await this.fetch(`/posts/list/${type}`, {\n requestOptions,\n queryParams: options,\n });\n\n if (response.status === 403) {\n return { posts: [], total: 0 };\n }\n\n const data = (await response.json()) as PostsResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async createPost(\n question: PostRequest,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n const response = await this.fetch(`/posts`, {\n requestOptions,\n reqInit: {\n method: 'POST',\n body: JSON.stringify(question),\n headers: { 'Content-Type': 'application/json' },\n },\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async commentPost(\n id: number,\n content: string,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n const response = await this.fetch(`/posts/${id}/comments`, {\n requestOptions,\n reqInit: {\n method: 'POST',\n body: JSON.stringify({ content }),\n headers: { 'Content-Type': 'application/json' },\n },\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async deletePostComment(\n questionId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n const response = await this.fetch(`/posts/${questionId}/comments/${id}`, {\n reqInit: { method: 'DELETE' },\n requestOptions,\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getPost(id?: string, requestOptions?: RequestOptions): Promise<Post> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n\n const response = await this.fetch(`/posts/${id}`, { requestOptions });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getAIAnswerForQuestion(\n questionId: string | number,\n requestOptions?: RequestOptions,\n ): Promise<AIResponse | null> {\n const response = await this.fetch(`/ai/question/${questionId}`, {\n requestOptions,\n });\n if (!response.ok) {\n return null;\n }\n return (await response.json()) as AIResponse;\n }\n\n async getAIAnswerForDraft(\n title: string,\n content: string,\n requestOptions?: RequestOptions,\n ): Promise<AIResponse | null> {\n const response = await this.fetch('/ai/question', {\n requestOptions,\n reqInit: {\n method: 'POST',\n body: JSON.stringify({ title, content }),\n headers: { 'Content-Type': 'application/json' },\n },\n });\n if (!response.ok) {\n return null;\n }\n return (await response.json()) as AIResponse;\n }\n\n async isAIEnabled(): Promise<boolean> {\n const response = await this.fetch('/ai/status');\n if (!response.ok) {\n return false;\n }\n const data = await response.json();\n return Boolean(data.enabled);\n }\n\n async getTags(\n options?: TagsQuery,\n requestOptions?: RequestOptions,\n ): Promise<TagsResponse> {\n const response = await this.fetch('/tags', {\n queryParams: options,\n requestOptions,\n });\n return (await response.json()) as TagsResponse;\n }\n\n async getTag(\n tag: string,\n requestOptions?: RequestOptions,\n ): Promise<TagResponse | null> {\n const response = await this.fetch(`/tags/${tag}`, { requestOptions });\n if (!response.ok) {\n return null;\n }\n return (await response.json()) as TagResponse;\n }\n\n async updateTag(\n tag: string,\n description?: string,\n requestOptions?: RequestOptions,\n ): Promise<TagResponse | null> {\n const response = await this.fetch(`/tags/${tag}`, {\n requestOptions,\n reqInit: {\n method: 'POST',\n body: JSON.stringify({ description }),\n headers: { 'Content-Type': 'application/json' },\n },\n });\n if (!response.ok) {\n return null;\n }\n return (await response.json()) as TagResponse;\n }\n\n async getUsers(\n options?: UsersQuery,\n requestOptions?: RequestOptions,\n ): Promise<UsersResponse> {\n const response = await this.fetch('/users', {\n requestOptions,\n queryParams: options,\n });\n return (await response.json()) as UsersResponse;\n }\n\n async getEntities(\n options?: EntitiesQuery,\n requestOptions?: RequestOptions,\n ): Promise<EntitiesResponse> {\n const response = await this.fetch('/entities', {\n requestOptions,\n queryParams: options,\n });\n return (await response.json()) as EntitiesResponse;\n }\n\n async getEntity(\n entityRef: string,\n requestOptions?: RequestOptions,\n ): Promise<EntityResponse | null> {\n const response = await this.fetch(`/entities/${entityRef}`, {\n requestOptions,\n });\n if (!response.ok) {\n return null;\n }\n\n return (await response.json()) as EntityResponse;\n }\n\n async votePostUp(id: number, requestOptions?: RequestOptions): Promise<Post> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${id}/upvote`, {\n requestOptions,\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async votePostDown(\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${id}/downvote`, {\n requestOptions,\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async deletePostVote(\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<PostResponse> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${id}/vote`, {\n reqInit: { method: 'DELETE' },\n requestOptions,\n });\n const data = (await response.json()) as PostResponseBody;\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n return data;\n }\n\n async favoritePost(\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${id}/favorite`, {\n requestOptions,\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async unfavoritePost(\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${id}/unfavorite`, {\n requestOptions,\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async postAnswer(\n answer: AnswerRequest,\n requestOptions?: RequestOptions,\n ): Promise<AnswerResponseBody> {\n const response = await this.fetch(`/posts/${answer.postId}/answers`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify({\n answer: answer.answer,\n images: answer.images,\n anonymous: answer.anonymous,\n }),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async commentAnswer(\n questionId: number,\n id: number,\n content: string,\n requestOptions?: RequestOptions,\n ): Promise<Answer> {\n const response = await this.fetch(\n `/posts/${questionId}/answers/${id}/comments`,\n {\n reqInit: {\n method: 'POST',\n body: JSON.stringify({ content }),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n },\n );\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async deleteAnswerComment(\n questionId: number,\n answerId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Answer> {\n const response = await this.fetch(\n `/posts/${questionId}/answers/${answerId}/comments/${id}`,\n {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n },\n );\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async voteAnswerUp(\n questionId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Answer> {\n if (!id || !questionId) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(\n `/posts/${questionId}/answers/${id}/upvote`,\n { requestOptions },\n );\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async voteAnswerDown(\n questionId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Answer> {\n if (!id || !questionId) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(\n `/posts/${questionId}/answers/${id}/downvote`,\n { requestOptions },\n );\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async deleteAnswerVote(\n postId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<AnswerResponse> {\n if (!postId || !id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${postId}/answers/${id}/vote`, {\n reqInit: { method: 'DELETE' },\n requestOptions,\n });\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async markAnswerCorrect(\n questionId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n if (!id || !questionId) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(\n `/posts/${questionId}/answers/${id}/correct`,\n { requestOptions },\n );\n const data = await response;\n return data.ok;\n }\n\n async markAnswerIncorrect(\n questionId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n if (!id || !questionId) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(\n `/posts/${questionId}/answers/${id}/incorrect`,\n { requestOptions },\n );\n const data = await response;\n return data.ok;\n }\n\n async deletePost(\n questionId: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n if (!questionId) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${questionId}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n const data = await response;\n return data.ok;\n }\n\n async deleteAnswer(\n questionId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n if (!questionId || !id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${questionId}/answers/${id}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n const data = await response;\n return data.ok;\n }\n\n async updatePost(\n id: string,\n question: PostRequest,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n const response = await this.fetch(`/posts/${id}`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify(question),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to update', data.errors);\n }\n\n return data;\n }\n\n async updateAnswer(\n id: number,\n answer: AnswerRequest,\n requestOptions?: RequestOptions,\n ): Promise<AnswerResponseBody> {\n const response = await this.fetch(`/posts/${answer.postId}/answers/${id}`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify({ answer: answer.answer, images: answer.images }),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getAnswers(\n options: AnswersQuery,\n requestOptions?: RequestOptions,\n ): Promise<AnswersResponse> {\n const response = await this.fetch('/answers', {\n queryParams: options,\n requestOptions,\n });\n if (response.status === 403) {\n return { answers: [], total: 0 };\n }\n const data = (await response.json()) as AnswersResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getAnswer(\n questionId: string | number | undefined,\n id: string | number | undefined,\n requestOptions?: RequestOptions,\n ): Promise<AnswerResponseBody> {\n if (!questionId || !id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${questionId}/answers/${id}`, {\n requestOptions,\n });\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getFollowedCollections(\n requestOptions?: RequestOptions,\n ): Promise<UserCollectionsResponse> {\n const response = await this.fetch(`/collections/followed`, {\n requestOptions,\n });\n return (await response.json()) as UserCollectionsResponse;\n }\n\n async followCollection(\n collectionId: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/collections/follow/${collectionId}`, {\n reqInit: {\n method: 'PUT',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async unfollowCollection(\n collectionId: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/collections/follow/${collectionId}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async getFollowedTags(\n requestOptions?: RequestOptions,\n ): Promise<UserTagsResponse> {\n const response = await this.fetch(`/tags/followed`, { requestOptions });\n return (await response.json()) as UserTagsResponse;\n }\n\n async followTag(\n tag: string,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/tags/follow/${tag}`, {\n reqInit: {\n method: 'PUT',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async unfollowTag(\n tag: string,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/tags/follow/${tag}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async getFollowedEntities(\n requestOptions?: RequestOptions,\n ): Promise<UserEntitiesResponse> {\n const response = await this.fetch(`/entities/followed`, { requestOptions });\n return (await response.json()) as UserEntitiesResponse;\n }\n\n async followEntity(\n entityRef: string,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/entities/follow/${entityRef}`, {\n reqInit: {\n method: 'PUT',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async unfollowEntity(\n entityRef: string,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/entities/follow/${entityRef}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async getFollowedUsers(\n requestOptions?: RequestOptions,\n ): Promise<UserUsersResponse> {\n const response = await this.fetch(`/users/followed`, { requestOptions });\n return (await response.json()) as UserUsersResponse;\n }\n\n async followUser(\n userRef: string,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/users/follow/${userRef}`, {\n reqInit: {\n method: 'PUT',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async unfollowUser(\n userRef: string,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/users/follow/${userRef}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async postAttachment(\n file: Blob,\n options?: { postId?: number; answerId?: number; collectionId?: number },\n requestOptions?: RequestOptions,\n ): Promise<AttachmentResponseBody> {\n const formData = new FormData();\n formData.append('image', file);\n\n const response = await this.fetch('/attachments', {\n queryParams: options,\n reqInit: { method: 'POST', body: formData },\n requestOptions,\n });\n return (await response.json()) as AttachmentResponseBody;\n }\n\n async getMostUpvotedAnswers(\n options: StatisticsRequestParameters,\n ): Promise<StatisticResponse> {\n const response = await this.fetch('/statistics/answers/top-upvoted-users', {\n queryParams: options.options,\n requestOptions: options.requestOptions,\n });\n return (await response.json()) as StatisticResponse;\n }\n\n async getMostUpvotedCorrectAnswers(\n options: StatisticsRequestParameters,\n ): Promise<StatisticResponse> {\n const response = await this.fetch(\n '/statistics/answers/top-correct-upvoted-users',\n {\n queryParams: options.options,\n requestOptions: options.requestOptions,\n },\n );\n\n return (await response.json()) as StatisticResponse;\n }\n\n async getMostUpvotedPosts(\n options: StatisticsRequestParameters,\n ): Promise<StatisticResponse> {\n const response = await this.fetch('/statistics/posts/top-upvoted-users', {\n queryParams: options.options,\n requestOptions: options.requestOptions,\n });\n\n return (await response.json()) as StatisticResponse;\n }\n\n async getMostPosts(\n options: StatisticsRequestParameters,\n ): Promise<StatisticResponse> {\n const response = await this.fetch('/statistics/posts/most-questions', {\n queryParams: options.options,\n requestOptions: options.requestOptions,\n });\n\n return (await response.json()) as StatisticResponse;\n }\n\n async getMostAnswers(\n options: StatisticsRequestParameters,\n ): Promise<StatisticResponse> {\n const response = await this.fetch('/statistics/answers/most-answers', {\n queryParams: options.options,\n requestOptions: options.requestOptions,\n });\n\n return (await response.json()) as StatisticResponse;\n }\n\n async getTopStatisticsHomepage(\n options: StatisticsRequestParameters,\n ): Promise<StatisticResponse[]> {\n return await Promise.all([\n this.getMostPosts(options),\n this.getMostAnswers(options),\n this.getMostUpvotedPosts(options),\n this.getMostUpvotedAnswers(options),\n this.getMostUpvotedCorrectAnswers(options),\n ]);\n }\n\n async getUserImpact(\n requestOptions?: RequestOptions,\n ): Promise<ImpactResponse> {\n const response = await this.fetch(`/statistics/user/impact`, {\n requestOptions,\n });\n\n return (await response.json()) as ImpactResponse;\n }\n\n async getGlobalStats(\n requestOptions?: RequestOptions,\n ): Promise<StatisticsResponse<GlobalStat>> {\n const response = await this.fetch(`/statistics/global`, { requestOptions });\n return (await response.json()) as StatisticsResponse<GlobalStat>;\n }\n\n async getUserStats(\n userRef: string,\n requestOptions?: RequestOptions,\n ): Promise<StatisticsResponse<UserStat>> {\n const response = await this.fetch(`/statistics/user/${userRef}`, {\n requestOptions,\n });\n return (await response.json()) as StatisticsResponse<UserStat>;\n }\n\n async getCollections(\n options?: CollectionsQuery,\n requestOptions?: RequestOptions,\n ): Promise<CollectionsResponse> {\n const response = await this.fetch('/collections', {\n queryParams: options,\n requestOptions,\n });\n if (response.status === 403) {\n return { collections: [], total: 0 };\n }\n const data = (await response.json()) as CollectionsResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getCollection(\n id?: string | number,\n requestOptions?: RequestOptions,\n ): Promise<CollectionResponse> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/collections/${id}`, { requestOptions });\n\n const data = (await response.json()) as CollectionResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async createCollection(\n collection: CollectionRequest,\n requestOptions?: RequestOptions,\n ): Promise<CollectionResponse> {\n const response = await this.fetch(`/collections`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify(collection),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as CollectionResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async updateCollection(\n id: number,\n collection: CollectionRequest,\n requestOptions?: RequestOptions,\n ): Promise<CollectionResponse> {\n const response = await this.fetch(`/collections/${id}`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify(collection),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as CollectionResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to update', data.errors);\n }\n\n return data;\n }\n\n async deleteCollection(\n id?: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/collections/${id}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n const data = await response;\n return data.ok;\n }\n\n async addPostToCollection(\n collectionId: number,\n postId: number,\n requestOptions?: RequestOptions,\n ): Promise<CollectionResponse> {\n const response = await this.fetch(`/collections/${collectionId}/posts`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify({ postId }),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as CollectionResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to update', data.errors);\n }\n\n return data;\n }\n\n async removePostFromCollection(\n collectionId: number,\n postId: number,\n requestOptions?: RequestOptions,\n ): Promise<CollectionResponse> {\n const response = await this.fetch(`/collections/${collectionId}/posts`, {\n reqInit: {\n method: 'DELETE',\n body: JSON.stringify({ postId }),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as CollectionResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to update', data.errors);\n }\n\n return data;\n }\n\n async getTemplates(\n requestOptions?: RequestOptions,\n ): Promise<TemplatesResponse> {\n const response = await this.fetch('/templates', { requestOptions });\n return (await response.json()) as TemplatesResponse;\n }\n\n async getTemplate(\n id: string | number,\n requestOptions?: RequestOptions,\n ): Promise<TemplateResponse> {\n const response = await this.fetch(`/templates/${id}`, { requestOptions });\n return (await response.json()) as TemplateResponse;\n }\n\n async createTemplate(\n template: TemplateRequest,\n requestOptions?: RequestOptions,\n ): Promise<TemplateResponse> {\n const response = await this.fetch(`/templates`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify(template),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n return (await response.json()) as TemplateResponse;\n }\n\n async updateTemplate(\n id: string | number,\n template: TemplateRequest,\n requestOptions?: RequestOptions,\n ): Promise<TemplateResponse> {\n const response = await this.fetch(`/templates/${id}`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify(template),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n return (await response.json()) as TemplateResponse;\n }\n\n async deleteTemplate(\n templateId: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/templates/${templateId}`, {\n reqInit: { method: 'DELETE' },\n requestOptions,\n });\n return response.ok;\n }\n\n private async getBaseUrl(): Promise<string> {\n return this.discoveryApi.getBaseUrl('qeta');\n }\n\n private fetch = async (\n path: string,\n opts?: {\n queryParams?: any;\n reqInit?: RequestInit;\n requestOptions?: RequestOptions;\n },\n ) => {\n const { queryParams, reqInit = {}, requestOptions } = opts ?? {};\n const query = this.getQueryParameters(queryParams);\n let url = `${await this.getBaseUrl()}${\n path.startsWith('/') ? path : `/${path}`\n }`;\n if (query) {\n url += `?${query}`;\n }\n\n return this.fetchApi.fetch(url, {\n method: 'GET',\n ...(requestOptions?.token\n ? { headers: { Authorization: `Bearer ${requestOptions.token}` } }\n : undefined),\n ...reqInit,\n });\n };\n\n private getQueryParameters(params?: any) {\n if (!params) {\n return '';\n }\n const cleaned = omitBy(params, v => !Boolean(v));\n return qs.stringify(cleaned);\n }\n}\n"],"names":["CustomErrorBase","crossFetch","omitBy","qs"],"mappings":"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"}
@@ -97,6 +97,37 @@ class QetaClient {
97
97
  }
98
98
  return data;
99
99
  }
100
+ async getAIAnswerForQuestion(questionId, requestOptions) {
101
+ const response = await this.fetch(`/ai/question/${questionId}`, {
102
+ requestOptions
103
+ });
104
+ if (!response.ok) {
105
+ return null;
106
+ }
107
+ return await response.json();
108
+ }
109
+ async getAIAnswerForDraft(title, content, requestOptions) {
110
+ const response = await this.fetch("/ai/question", {
111
+ requestOptions,
112
+ reqInit: {
113
+ method: "POST",
114
+ body: JSON.stringify({ title, content }),
115
+ headers: { "Content-Type": "application/json" }
116
+ }
117
+ });
118
+ if (!response.ok) {
119
+ return null;
120
+ }
121
+ return await response.json();
122
+ }
123
+ async isAIEnabled() {
124
+ const response = await this.fetch("/ai/status");
125
+ if (!response.ok) {
126
+ return false;
127
+ }
128
+ const data = await response.json();
129
+ return Boolean(data.enabled);
130
+ }
100
131
  async getTags(options, requestOptions) {
101
132
  const response = await this.fetch("/tags", {
102
133
  queryParams: options,
@@ -174,6 +205,20 @@ class QetaClient {
174
205
  }
175
206
  return data;
176
207
  }
208
+ async deletePostVote(id, requestOptions) {
209
+ if (!id) {
210
+ throw new QetaError("Invalid id provided", void 0);
211
+ }
212
+ const response = await this.fetch(`/posts/${id}/vote`, {
213
+ reqInit: { method: "DELETE" },
214
+ requestOptions
215
+ });
216
+ const data = await response.json();
217
+ if ("errors" in data) {
218
+ throw new QetaError("Failed to fetch", data.errors);
219
+ }
220
+ return data;
221
+ }
177
222
  async favoritePost(id, requestOptions) {
178
223
  if (!id) {
179
224
  throw new QetaError("Invalid id provided", void 0);
@@ -281,6 +326,20 @@ class QetaClient {
281
326
  }
282
327
  return data;
283
328
  }
329
+ async deleteAnswerVote(postId, id, requestOptions) {
330
+ if (!postId || !id) {
331
+ throw new QetaError("Invalid id provided", void 0);
332
+ }
333
+ const response = await this.fetch(`/posts/${postId}/answers/${id}/vote`, {
334
+ reqInit: { method: "DELETE" },
335
+ requestOptions
336
+ });
337
+ const data = await response.json();
338
+ if ("errors" in data) {
339
+ throw new QetaError("Failed to fetch", data.errors);
340
+ }
341
+ return data;
342
+ }
284
343
  async markAnswerCorrect(questionId, id, requestOptions) {
285
344
  if (!id || !questionId) {
286
345
  throw new QetaError("Invalid id provided", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"QetaClient.esm.js","sources":["../../src/api/QetaClient.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport {\n AnswersQuery,\n CollectionsQuery,\n EntitiesQuery,\n PostsQuery,\n QetaApi,\n RequestOptions,\n TagsQuery,\n UsersQuery,\n} from './QetaApi';\nimport { CustomErrorBase } from '@backstage/errors';\nimport {\n Answer,\n AnswerRequest,\n AnswerResponseBody,\n AnswersResponse,\n AnswersResponseBody,\n AttachmentResponseBody,\n CollectionRequest,\n CollectionResponse,\n CollectionResponseBody,\n CollectionsResponse,\n CollectionsResponseBody,\n EntitiesResponse,\n EntityResponse,\n GlobalStat,\n ImpactResponse,\n Post,\n PostRequest,\n PostResponseBody,\n PostsResponse,\n PostsResponseBody,\n StatisticResponse,\n StatisticsRequestParameters,\n StatisticsResponse,\n TagResponse,\n TagsResponse,\n TemplateRequest,\n TemplateResponse,\n TemplatesResponse,\n UserCollectionsResponse,\n UserEntitiesResponse,\n UsersResponse,\n UserStat,\n UserTagsResponse,\n UserUsersResponse,\n} from '@drodil/backstage-plugin-qeta-common';\nimport omitBy from 'lodash/omitBy';\nimport crossFetch from 'cross-fetch';\nimport qs from 'qs';\n\nexport class QetaError extends CustomErrorBase {\n public errors: null | undefined | any[];\n\n constructor(message: string, errors: null | undefined | any[]) {\n super(message);\n\n this.errors = errors;\n }\n}\n\nexport class QetaClient implements QetaApi {\n private readonly fetchApi: { fetch: typeof fetch };\n private readonly discoveryApi: {\n getBaseUrl(pluginId: string): Promise<string>;\n };\n\n constructor(options: {\n discoveryApi: { getBaseUrl(pluginId: string): Promise<string> };\n fetchApi?: { fetch: typeof fetch };\n }) {\n this.fetchApi = options.fetchApi ?? { fetch: crossFetch };\n this.discoveryApi = options.discoveryApi;\n }\n\n async getPosts(\n options: PostsQuery,\n requestOptions?: RequestOptions,\n ): Promise<PostsResponse> {\n const response = await this.fetch('/posts', {\n requestOptions,\n queryParams: options,\n });\n\n if (response.status === 403) {\n return { posts: [], total: 0 };\n }\n const data = (await response.json()) as PostsResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getPostsList(\n type: string,\n options?: PostsQuery,\n requestOptions?: RequestOptions,\n ): Promise<PostsResponse> {\n const response = await this.fetch(`/posts/list/${type}`, {\n requestOptions,\n queryParams: options,\n });\n\n if (response.status === 403) {\n return { posts: [], total: 0 };\n }\n\n const data = (await response.json()) as PostsResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async createPost(\n question: PostRequest,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n const response = await this.fetch(`/posts`, {\n requestOptions,\n reqInit: {\n method: 'POST',\n body: JSON.stringify(question),\n headers: { 'Content-Type': 'application/json' },\n },\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async commentPost(\n id: number,\n content: string,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n const response = await this.fetch(`/posts/${id}/comments`, {\n requestOptions,\n reqInit: {\n method: 'POST',\n body: JSON.stringify({ content }),\n headers: { 'Content-Type': 'application/json' },\n },\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async deletePostComment(\n questionId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n const response = await this.fetch(`/posts/${questionId}/comments/${id}`, {\n reqInit: { method: 'DELETE' },\n requestOptions,\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getPost(id?: string, requestOptions?: RequestOptions): Promise<Post> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n\n const response = await this.fetch(`/posts/${id}`, { requestOptions });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getTags(\n options?: TagsQuery,\n requestOptions?: RequestOptions,\n ): Promise<TagsResponse> {\n const response = await this.fetch('/tags', {\n queryParams: options,\n requestOptions,\n });\n return (await response.json()) as TagsResponse;\n }\n\n async getTag(\n tag: string,\n requestOptions?: RequestOptions,\n ): Promise<TagResponse | null> {\n const response = await this.fetch(`/tags/${tag}`, { requestOptions });\n if (!response.ok) {\n return null;\n }\n return (await response.json()) as TagResponse;\n }\n\n async updateTag(\n tag: string,\n description?: string,\n requestOptions?: RequestOptions,\n ): Promise<TagResponse | null> {\n const response = await this.fetch(`/tags/${tag}`, {\n requestOptions,\n reqInit: {\n method: 'POST',\n body: JSON.stringify({ description }),\n headers: { 'Content-Type': 'application/json' },\n },\n });\n if (!response.ok) {\n return null;\n }\n return (await response.json()) as TagResponse;\n }\n\n async getUsers(\n options?: UsersQuery,\n requestOptions?: RequestOptions,\n ): Promise<UsersResponse> {\n const response = await this.fetch('/users', {\n requestOptions,\n queryParams: options,\n });\n return (await response.json()) as UsersResponse;\n }\n\n async getEntities(\n options?: EntitiesQuery,\n requestOptions?: RequestOptions,\n ): Promise<EntitiesResponse> {\n const response = await this.fetch('/entities', {\n requestOptions,\n queryParams: options,\n });\n return (await response.json()) as EntitiesResponse;\n }\n\n async getEntity(\n entityRef: string,\n requestOptions?: RequestOptions,\n ): Promise<EntityResponse | null> {\n const response = await this.fetch(`/entities/${entityRef}`, {\n requestOptions,\n });\n if (!response.ok) {\n return null;\n }\n\n return (await response.json()) as EntityResponse;\n }\n\n async votePostUp(id: number, requestOptions?: RequestOptions): Promise<Post> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${id}/upvote`, {\n requestOptions,\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async votePostDown(\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${id}/downvote`, {\n requestOptions,\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async favoritePost(\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${id}/favorite`, {\n requestOptions,\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async unfavoritePost(\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${id}/unfavorite`, {\n requestOptions,\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async postAnswer(\n answer: AnswerRequest,\n requestOptions?: RequestOptions,\n ): Promise<AnswerResponseBody> {\n const response = await this.fetch(`/posts/${answer.postId}/answers`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify({\n answer: answer.answer,\n images: answer.images,\n anonymous: answer.anonymous,\n }),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async commentAnswer(\n questionId: number,\n id: number,\n content: string,\n requestOptions?: RequestOptions,\n ): Promise<Answer> {\n const response = await this.fetch(\n `/posts/${questionId}/answers/${id}/comments`,\n {\n reqInit: {\n method: 'POST',\n body: JSON.stringify({ content }),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n },\n );\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async deleteAnswerComment(\n questionId: number,\n answerId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Answer> {\n const response = await this.fetch(\n `/posts/${questionId}/answers/${answerId}/comments/${id}`,\n {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n },\n );\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async voteAnswerUp(\n questionId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Answer> {\n if (!id || !questionId) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(\n `/posts/${questionId}/answers/${id}/upvote`,\n { requestOptions },\n );\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async voteAnswerDown(\n questionId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Answer> {\n if (!id || !questionId) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(\n `/posts/${questionId}/answers/${id}/downvote`,\n { requestOptions },\n );\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async markAnswerCorrect(\n questionId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n if (!id || !questionId) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(\n `/posts/${questionId}/answers/${id}/correct`,\n { requestOptions },\n );\n const data = await response;\n return data.ok;\n }\n\n async markAnswerIncorrect(\n questionId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n if (!id || !questionId) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(\n `/posts/${questionId}/answers/${id}/incorrect`,\n { requestOptions },\n );\n const data = await response;\n return data.ok;\n }\n\n async deletePost(\n questionId: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n if (!questionId) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${questionId}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n const data = await response;\n return data.ok;\n }\n\n async deleteAnswer(\n questionId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n if (!questionId || !id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${questionId}/answers/${id}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n const data = await response;\n return data.ok;\n }\n\n async updatePost(\n id: string,\n question: PostRequest,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n const response = await this.fetch(`/posts/${id}`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify(question),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to update', data.errors);\n }\n\n return data;\n }\n\n async updateAnswer(\n id: number,\n answer: AnswerRequest,\n requestOptions?: RequestOptions,\n ): Promise<AnswerResponseBody> {\n const response = await this.fetch(`/posts/${answer.postId}/answers/${id}`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify({ answer: answer.answer, images: answer.images }),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getAnswers(\n options: AnswersQuery,\n requestOptions?: RequestOptions,\n ): Promise<AnswersResponse> {\n const response = await this.fetch('/answers', {\n queryParams: options,\n requestOptions,\n });\n if (response.status === 403) {\n return { answers: [], total: 0 };\n }\n const data = (await response.json()) as AnswersResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getAnswer(\n questionId: string | number | undefined,\n id: string | number | undefined,\n requestOptions?: RequestOptions,\n ): Promise<AnswerResponseBody> {\n if (!questionId || !id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${questionId}/answers/${id}`, {\n requestOptions,\n });\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getFollowedCollections(\n requestOptions?: RequestOptions,\n ): Promise<UserCollectionsResponse> {\n const response = await this.fetch(`/collections/followed`, {\n requestOptions,\n });\n return (await response.json()) as UserCollectionsResponse;\n }\n\n async followCollection(\n collectionId: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/collections/follow/${collectionId}`, {\n reqInit: {\n method: 'PUT',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async unfollowCollection(\n collectionId: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/collections/follow/${collectionId}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async getFollowedTags(\n requestOptions?: RequestOptions,\n ): Promise<UserTagsResponse> {\n const response = await this.fetch(`/tags/followed`, { requestOptions });\n return (await response.json()) as UserTagsResponse;\n }\n\n async followTag(\n tag: string,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/tags/follow/${tag}`, {\n reqInit: {\n method: 'PUT',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async unfollowTag(\n tag: string,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/tags/follow/${tag}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async getFollowedEntities(\n requestOptions?: RequestOptions,\n ): Promise<UserEntitiesResponse> {\n const response = await this.fetch(`/entities/followed`, { requestOptions });\n return (await response.json()) as UserEntitiesResponse;\n }\n\n async followEntity(\n entityRef: string,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/entities/follow/${entityRef}`, {\n reqInit: {\n method: 'PUT',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async unfollowEntity(\n entityRef: string,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/entities/follow/${entityRef}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async getFollowedUsers(\n requestOptions?: RequestOptions,\n ): Promise<UserUsersResponse> {\n const response = await this.fetch(`/users/followed`, { requestOptions });\n return (await response.json()) as UserUsersResponse;\n }\n\n async followUser(\n userRef: string,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/users/follow/${userRef}`, {\n reqInit: {\n method: 'PUT',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async unfollowUser(\n userRef: string,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/users/follow/${userRef}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async postAttachment(\n file: Blob,\n options?: { postId?: number; answerId?: number; collectionId?: number },\n requestOptions?: RequestOptions,\n ): Promise<AttachmentResponseBody> {\n const formData = new FormData();\n formData.append('image', file);\n\n const response = await this.fetch('/attachments', {\n queryParams: options,\n reqInit: { method: 'POST', body: formData },\n requestOptions,\n });\n return (await response.json()) as AttachmentResponseBody;\n }\n\n async getMostUpvotedAnswers(\n options: StatisticsRequestParameters,\n ): Promise<StatisticResponse> {\n const response = await this.fetch('/statistics/answers/top-upvoted-users', {\n queryParams: options.options,\n requestOptions: options.requestOptions,\n });\n return (await response.json()) as StatisticResponse;\n }\n\n async getMostUpvotedCorrectAnswers(\n options: StatisticsRequestParameters,\n ): Promise<StatisticResponse> {\n const response = await this.fetch(\n '/statistics/answers/top-correct-upvoted-users',\n {\n queryParams: options.options,\n requestOptions: options.requestOptions,\n },\n );\n\n return (await response.json()) as StatisticResponse;\n }\n\n async getMostUpvotedPosts(\n options: StatisticsRequestParameters,\n ): Promise<StatisticResponse> {\n const response = await this.fetch('/statistics/posts/top-upvoted-users', {\n queryParams: options.options,\n requestOptions: options.requestOptions,\n });\n\n return (await response.json()) as StatisticResponse;\n }\n\n async getMostPosts(\n options: StatisticsRequestParameters,\n ): Promise<StatisticResponse> {\n const response = await this.fetch('/statistics/posts/most-questions', {\n queryParams: options.options,\n requestOptions: options.requestOptions,\n });\n\n return (await response.json()) as StatisticResponse;\n }\n\n async getMostAnswers(\n options: StatisticsRequestParameters,\n ): Promise<StatisticResponse> {\n const response = await this.fetch('/statistics/answers/most-answers', {\n queryParams: options.options,\n requestOptions: options.requestOptions,\n });\n\n return (await response.json()) as StatisticResponse;\n }\n\n async getTopStatisticsHomepage(\n options: StatisticsRequestParameters,\n ): Promise<StatisticResponse[]> {\n return await Promise.all([\n this.getMostPosts(options),\n this.getMostAnswers(options),\n this.getMostUpvotedPosts(options),\n this.getMostUpvotedAnswers(options),\n this.getMostUpvotedCorrectAnswers(options),\n ]);\n }\n\n async getUserImpact(\n requestOptions?: RequestOptions,\n ): Promise<ImpactResponse> {\n const response = await this.fetch(`/statistics/user/impact`, {\n requestOptions,\n });\n\n return (await response.json()) as ImpactResponse;\n }\n\n async getGlobalStats(\n requestOptions?: RequestOptions,\n ): Promise<StatisticsResponse<GlobalStat>> {\n const response = await this.fetch(`/statistics/global`, { requestOptions });\n return (await response.json()) as StatisticsResponse<GlobalStat>;\n }\n\n async getUserStats(\n userRef: string,\n requestOptions?: RequestOptions,\n ): Promise<StatisticsResponse<UserStat>> {\n const response = await this.fetch(`/statistics/user/${userRef}`, {\n requestOptions,\n });\n return (await response.json()) as StatisticsResponse<UserStat>;\n }\n\n async getCollections(\n options?: CollectionsQuery,\n requestOptions?: RequestOptions,\n ): Promise<CollectionsResponse> {\n const response = await this.fetch('/collections', {\n queryParams: options,\n requestOptions,\n });\n if (response.status === 403) {\n return { collections: [], total: 0 };\n }\n const data = (await response.json()) as CollectionsResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getCollection(\n id?: string | number,\n requestOptions?: RequestOptions,\n ): Promise<CollectionResponse> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/collections/${id}`, { requestOptions });\n\n const data = (await response.json()) as CollectionResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async createCollection(\n collection: CollectionRequest,\n requestOptions?: RequestOptions,\n ): Promise<CollectionResponse> {\n const response = await this.fetch(`/collections`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify(collection),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as CollectionResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async updateCollection(\n id: number,\n collection: CollectionRequest,\n requestOptions?: RequestOptions,\n ): Promise<CollectionResponse> {\n const response = await this.fetch(`/collections/${id}`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify(collection),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as CollectionResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to update', data.errors);\n }\n\n return data;\n }\n\n async deleteCollection(\n id?: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/collections/${id}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n const data = await response;\n return data.ok;\n }\n\n async addPostToCollection(\n collectionId: number,\n postId: number,\n requestOptions?: RequestOptions,\n ): Promise<CollectionResponse> {\n const response = await this.fetch(`/collections/${collectionId}/posts`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify({ postId }),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as CollectionResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to update', data.errors);\n }\n\n return data;\n }\n\n async removePostFromCollection(\n collectionId: number,\n postId: number,\n requestOptions?: RequestOptions,\n ): Promise<CollectionResponse> {\n const response = await this.fetch(`/collections/${collectionId}/posts`, {\n reqInit: {\n method: 'DELETE',\n body: JSON.stringify({ postId }),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as CollectionResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to update', data.errors);\n }\n\n return data;\n }\n\n async getTemplates(\n requestOptions?: RequestOptions,\n ): Promise<TemplatesResponse> {\n const response = await this.fetch('/templates', { requestOptions });\n return (await response.json()) as TemplatesResponse;\n }\n\n async getTemplate(\n id: string | number,\n requestOptions?: RequestOptions,\n ): Promise<TemplateResponse> {\n const response = await this.fetch(`/templates/${id}`, { requestOptions });\n return (await response.json()) as TemplateResponse;\n }\n\n async createTemplate(\n template: TemplateRequest,\n requestOptions?: RequestOptions,\n ): Promise<TemplateResponse> {\n const response = await this.fetch(`/templates`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify(template),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n return (await response.json()) as TemplateResponse;\n }\n\n async updateTemplate(\n id: string | number,\n template: TemplateRequest,\n requestOptions?: RequestOptions,\n ): Promise<TemplateResponse> {\n const response = await this.fetch(`/templates/${id}`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify(template),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n return (await response.json()) as TemplateResponse;\n }\n\n async deleteTemplate(\n templateId: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/templates/${templateId}`, {\n reqInit: { method: 'DELETE' },\n requestOptions,\n });\n return response.ok;\n }\n\n private async getBaseUrl(): Promise<string> {\n return this.discoveryApi.getBaseUrl('qeta');\n }\n\n private fetch = async (\n path: string,\n opts?: {\n queryParams?: any;\n reqInit?: RequestInit;\n requestOptions?: RequestOptions;\n },\n ) => {\n const { queryParams, reqInit = {}, requestOptions } = opts ?? {};\n const query = this.getQueryParameters(queryParams);\n let url = `${await this.getBaseUrl()}${\n path.startsWith('/') ? path : `/${path}`\n }`;\n if (query) {\n url += `?${query}`;\n }\n\n return this.fetchApi.fetch(url, {\n method: 'GET',\n ...(requestOptions?.token\n ? { headers: { Authorization: `Bearer ${requestOptions.token}` } }\n : undefined),\n ...reqInit,\n });\n };\n\n private getQueryParameters(params?: any) {\n if (!params) {\n return '';\n }\n const cleaned = omitBy(params, v => !Boolean(v));\n return qs.stringify(cleaned);\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QetaClient.esm.js","sources":["../../src/api/QetaClient.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport {\n AnswersQuery,\n CollectionsQuery,\n EntitiesQuery,\n PostsQuery,\n QetaApi,\n RequestOptions,\n TagsQuery,\n UsersQuery,\n} from './QetaApi';\nimport { CustomErrorBase } from '@backstage/errors';\nimport {\n AIResponse,\n Answer,\n AnswerRequest,\n AnswerResponse,\n AnswerResponseBody,\n AnswersResponse,\n AnswersResponseBody,\n AttachmentResponseBody,\n CollectionRequest,\n CollectionResponse,\n CollectionResponseBody,\n CollectionsResponse,\n CollectionsResponseBody,\n EntitiesResponse,\n EntityResponse,\n GlobalStat,\n ImpactResponse,\n Post,\n PostRequest,\n PostResponse,\n PostResponseBody,\n PostsResponse,\n PostsResponseBody,\n StatisticResponse,\n StatisticsRequestParameters,\n StatisticsResponse,\n TagResponse,\n TagsResponse,\n TemplateRequest,\n TemplateResponse,\n TemplatesResponse,\n UserCollectionsResponse,\n UserEntitiesResponse,\n UsersResponse,\n UserStat,\n UserTagsResponse,\n UserUsersResponse,\n} from '@drodil/backstage-plugin-qeta-common';\nimport omitBy from 'lodash/omitBy';\nimport crossFetch from 'cross-fetch';\nimport qs from 'qs';\n\nexport class QetaError extends CustomErrorBase {\n public errors: null | undefined | any[];\n\n constructor(message: string, errors: null | undefined | any[]) {\n super(message);\n\n this.errors = errors;\n }\n}\n\nexport class QetaClient implements QetaApi {\n private readonly fetchApi: { fetch: typeof fetch };\n private readonly discoveryApi: {\n getBaseUrl(pluginId: string): Promise<string>;\n };\n\n constructor(options: {\n discoveryApi: { getBaseUrl(pluginId: string): Promise<string> };\n fetchApi?: { fetch: typeof fetch };\n }) {\n this.fetchApi = options.fetchApi ?? { fetch: crossFetch };\n this.discoveryApi = options.discoveryApi;\n }\n\n async getPosts(\n options: PostsQuery,\n requestOptions?: RequestOptions,\n ): Promise<PostsResponse> {\n const response = await this.fetch('/posts', {\n requestOptions,\n queryParams: options,\n });\n\n if (response.status === 403) {\n return { posts: [], total: 0 };\n }\n const data = (await response.json()) as PostsResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getPostsList(\n type: string,\n options?: PostsQuery,\n requestOptions?: RequestOptions,\n ): Promise<PostsResponse> {\n const response = await this.fetch(`/posts/list/${type}`, {\n requestOptions,\n queryParams: options,\n });\n\n if (response.status === 403) {\n return { posts: [], total: 0 };\n }\n\n const data = (await response.json()) as PostsResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async createPost(\n question: PostRequest,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n const response = await this.fetch(`/posts`, {\n requestOptions,\n reqInit: {\n method: 'POST',\n body: JSON.stringify(question),\n headers: { 'Content-Type': 'application/json' },\n },\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async commentPost(\n id: number,\n content: string,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n const response = await this.fetch(`/posts/${id}/comments`, {\n requestOptions,\n reqInit: {\n method: 'POST',\n body: JSON.stringify({ content }),\n headers: { 'Content-Type': 'application/json' },\n },\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async deletePostComment(\n questionId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n const response = await this.fetch(`/posts/${questionId}/comments/${id}`, {\n reqInit: { method: 'DELETE' },\n requestOptions,\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getPost(id?: string, requestOptions?: RequestOptions): Promise<Post> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n\n const response = await this.fetch(`/posts/${id}`, { requestOptions });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getAIAnswerForQuestion(\n questionId: string | number,\n requestOptions?: RequestOptions,\n ): Promise<AIResponse | null> {\n const response = await this.fetch(`/ai/question/${questionId}`, {\n requestOptions,\n });\n if (!response.ok) {\n return null;\n }\n return (await response.json()) as AIResponse;\n }\n\n async getAIAnswerForDraft(\n title: string,\n content: string,\n requestOptions?: RequestOptions,\n ): Promise<AIResponse | null> {\n const response = await this.fetch('/ai/question', {\n requestOptions,\n reqInit: {\n method: 'POST',\n body: JSON.stringify({ title, content }),\n headers: { 'Content-Type': 'application/json' },\n },\n });\n if (!response.ok) {\n return null;\n }\n return (await response.json()) as AIResponse;\n }\n\n async isAIEnabled(): Promise<boolean> {\n const response = await this.fetch('/ai/status');\n if (!response.ok) {\n return false;\n }\n const data = await response.json();\n return Boolean(data.enabled);\n }\n\n async getTags(\n options?: TagsQuery,\n requestOptions?: RequestOptions,\n ): Promise<TagsResponse> {\n const response = await this.fetch('/tags', {\n queryParams: options,\n requestOptions,\n });\n return (await response.json()) as TagsResponse;\n }\n\n async getTag(\n tag: string,\n requestOptions?: RequestOptions,\n ): Promise<TagResponse | null> {\n const response = await this.fetch(`/tags/${tag}`, { requestOptions });\n if (!response.ok) {\n return null;\n }\n return (await response.json()) as TagResponse;\n }\n\n async updateTag(\n tag: string,\n description?: string,\n requestOptions?: RequestOptions,\n ): Promise<TagResponse | null> {\n const response = await this.fetch(`/tags/${tag}`, {\n requestOptions,\n reqInit: {\n method: 'POST',\n body: JSON.stringify({ description }),\n headers: { 'Content-Type': 'application/json' },\n },\n });\n if (!response.ok) {\n return null;\n }\n return (await response.json()) as TagResponse;\n }\n\n async getUsers(\n options?: UsersQuery,\n requestOptions?: RequestOptions,\n ): Promise<UsersResponse> {\n const response = await this.fetch('/users', {\n requestOptions,\n queryParams: options,\n });\n return (await response.json()) as UsersResponse;\n }\n\n async getEntities(\n options?: EntitiesQuery,\n requestOptions?: RequestOptions,\n ): Promise<EntitiesResponse> {\n const response = await this.fetch('/entities', {\n requestOptions,\n queryParams: options,\n });\n return (await response.json()) as EntitiesResponse;\n }\n\n async getEntity(\n entityRef: string,\n requestOptions?: RequestOptions,\n ): Promise<EntityResponse | null> {\n const response = await this.fetch(`/entities/${entityRef}`, {\n requestOptions,\n });\n if (!response.ok) {\n return null;\n }\n\n return (await response.json()) as EntityResponse;\n }\n\n async votePostUp(id: number, requestOptions?: RequestOptions): Promise<Post> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${id}/upvote`, {\n requestOptions,\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async votePostDown(\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${id}/downvote`, {\n requestOptions,\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async deletePostVote(\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<PostResponse> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${id}/vote`, {\n reqInit: { method: 'DELETE' },\n requestOptions,\n });\n const data = (await response.json()) as PostResponseBody;\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n return data;\n }\n\n async favoritePost(\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${id}/favorite`, {\n requestOptions,\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async unfavoritePost(\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${id}/unfavorite`, {\n requestOptions,\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async postAnswer(\n answer: AnswerRequest,\n requestOptions?: RequestOptions,\n ): Promise<AnswerResponseBody> {\n const response = await this.fetch(`/posts/${answer.postId}/answers`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify({\n answer: answer.answer,\n images: answer.images,\n anonymous: answer.anonymous,\n }),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async commentAnswer(\n questionId: number,\n id: number,\n content: string,\n requestOptions?: RequestOptions,\n ): Promise<Answer> {\n const response = await this.fetch(\n `/posts/${questionId}/answers/${id}/comments`,\n {\n reqInit: {\n method: 'POST',\n body: JSON.stringify({ content }),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n },\n );\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async deleteAnswerComment(\n questionId: number,\n answerId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Answer> {\n const response = await this.fetch(\n `/posts/${questionId}/answers/${answerId}/comments/${id}`,\n {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n },\n );\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async voteAnswerUp(\n questionId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Answer> {\n if (!id || !questionId) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(\n `/posts/${questionId}/answers/${id}/upvote`,\n { requestOptions },\n );\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async voteAnswerDown(\n questionId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<Answer> {\n if (!id || !questionId) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(\n `/posts/${questionId}/answers/${id}/downvote`,\n { requestOptions },\n );\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async deleteAnswerVote(\n postId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<AnswerResponse> {\n if (!postId || !id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${postId}/answers/${id}/vote`, {\n reqInit: { method: 'DELETE' },\n requestOptions,\n });\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async markAnswerCorrect(\n questionId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n if (!id || !questionId) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(\n `/posts/${questionId}/answers/${id}/correct`,\n { requestOptions },\n );\n const data = await response;\n return data.ok;\n }\n\n async markAnswerIncorrect(\n questionId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n if (!id || !questionId) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(\n `/posts/${questionId}/answers/${id}/incorrect`,\n { requestOptions },\n );\n const data = await response;\n return data.ok;\n }\n\n async deletePost(\n questionId: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n if (!questionId) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${questionId}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n const data = await response;\n return data.ok;\n }\n\n async deleteAnswer(\n questionId: number,\n id: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n if (!questionId || !id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${questionId}/answers/${id}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n const data = await response;\n return data.ok;\n }\n\n async updatePost(\n id: string,\n question: PostRequest,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n const response = await this.fetch(`/posts/${id}`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify(question),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as PostResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to update', data.errors);\n }\n\n return data;\n }\n\n async updateAnswer(\n id: number,\n answer: AnswerRequest,\n requestOptions?: RequestOptions,\n ): Promise<AnswerResponseBody> {\n const response = await this.fetch(`/posts/${answer.postId}/answers/${id}`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify({ answer: answer.answer, images: answer.images }),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getAnswers(\n options: AnswersQuery,\n requestOptions?: RequestOptions,\n ): Promise<AnswersResponse> {\n const response = await this.fetch('/answers', {\n queryParams: options,\n requestOptions,\n });\n if (response.status === 403) {\n return { answers: [], total: 0 };\n }\n const data = (await response.json()) as AnswersResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getAnswer(\n questionId: string | number | undefined,\n id: string | number | undefined,\n requestOptions?: RequestOptions,\n ): Promise<AnswerResponseBody> {\n if (!questionId || !id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/posts/${questionId}/answers/${id}`, {\n requestOptions,\n });\n const data = (await response.json()) as AnswerResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getFollowedCollections(\n requestOptions?: RequestOptions,\n ): Promise<UserCollectionsResponse> {\n const response = await this.fetch(`/collections/followed`, {\n requestOptions,\n });\n return (await response.json()) as UserCollectionsResponse;\n }\n\n async followCollection(\n collectionId: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/collections/follow/${collectionId}`, {\n reqInit: {\n method: 'PUT',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async unfollowCollection(\n collectionId: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/collections/follow/${collectionId}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async getFollowedTags(\n requestOptions?: RequestOptions,\n ): Promise<UserTagsResponse> {\n const response = await this.fetch(`/tags/followed`, { requestOptions });\n return (await response.json()) as UserTagsResponse;\n }\n\n async followTag(\n tag: string,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/tags/follow/${tag}`, {\n reqInit: {\n method: 'PUT',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async unfollowTag(\n tag: string,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/tags/follow/${tag}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async getFollowedEntities(\n requestOptions?: RequestOptions,\n ): Promise<UserEntitiesResponse> {\n const response = await this.fetch(`/entities/followed`, { requestOptions });\n return (await response.json()) as UserEntitiesResponse;\n }\n\n async followEntity(\n entityRef: string,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/entities/follow/${entityRef}`, {\n reqInit: {\n method: 'PUT',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async unfollowEntity(\n entityRef: string,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/entities/follow/${entityRef}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async getFollowedUsers(\n requestOptions?: RequestOptions,\n ): Promise<UserUsersResponse> {\n const response = await this.fetch(`/users/followed`, { requestOptions });\n return (await response.json()) as UserUsersResponse;\n }\n\n async followUser(\n userRef: string,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/users/follow/${userRef}`, {\n reqInit: {\n method: 'PUT',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async unfollowUser(\n userRef: string,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/users/follow/${userRef}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n return response.ok;\n }\n\n async postAttachment(\n file: Blob,\n options?: { postId?: number; answerId?: number; collectionId?: number },\n requestOptions?: RequestOptions,\n ): Promise<AttachmentResponseBody> {\n const formData = new FormData();\n formData.append('image', file);\n\n const response = await this.fetch('/attachments', {\n queryParams: options,\n reqInit: { method: 'POST', body: formData },\n requestOptions,\n });\n return (await response.json()) as AttachmentResponseBody;\n }\n\n async getMostUpvotedAnswers(\n options: StatisticsRequestParameters,\n ): Promise<StatisticResponse> {\n const response = await this.fetch('/statistics/answers/top-upvoted-users', {\n queryParams: options.options,\n requestOptions: options.requestOptions,\n });\n return (await response.json()) as StatisticResponse;\n }\n\n async getMostUpvotedCorrectAnswers(\n options: StatisticsRequestParameters,\n ): Promise<StatisticResponse> {\n const response = await this.fetch(\n '/statistics/answers/top-correct-upvoted-users',\n {\n queryParams: options.options,\n requestOptions: options.requestOptions,\n },\n );\n\n return (await response.json()) as StatisticResponse;\n }\n\n async getMostUpvotedPosts(\n options: StatisticsRequestParameters,\n ): Promise<StatisticResponse> {\n const response = await this.fetch('/statistics/posts/top-upvoted-users', {\n queryParams: options.options,\n requestOptions: options.requestOptions,\n });\n\n return (await response.json()) as StatisticResponse;\n }\n\n async getMostPosts(\n options: StatisticsRequestParameters,\n ): Promise<StatisticResponse> {\n const response = await this.fetch('/statistics/posts/most-questions', {\n queryParams: options.options,\n requestOptions: options.requestOptions,\n });\n\n return (await response.json()) as StatisticResponse;\n }\n\n async getMostAnswers(\n options: StatisticsRequestParameters,\n ): Promise<StatisticResponse> {\n const response = await this.fetch('/statistics/answers/most-answers', {\n queryParams: options.options,\n requestOptions: options.requestOptions,\n });\n\n return (await response.json()) as StatisticResponse;\n }\n\n async getTopStatisticsHomepage(\n options: StatisticsRequestParameters,\n ): Promise<StatisticResponse[]> {\n return await Promise.all([\n this.getMostPosts(options),\n this.getMostAnswers(options),\n this.getMostUpvotedPosts(options),\n this.getMostUpvotedAnswers(options),\n this.getMostUpvotedCorrectAnswers(options),\n ]);\n }\n\n async getUserImpact(\n requestOptions?: RequestOptions,\n ): Promise<ImpactResponse> {\n const response = await this.fetch(`/statistics/user/impact`, {\n requestOptions,\n });\n\n return (await response.json()) as ImpactResponse;\n }\n\n async getGlobalStats(\n requestOptions?: RequestOptions,\n ): Promise<StatisticsResponse<GlobalStat>> {\n const response = await this.fetch(`/statistics/global`, { requestOptions });\n return (await response.json()) as StatisticsResponse<GlobalStat>;\n }\n\n async getUserStats(\n userRef: string,\n requestOptions?: RequestOptions,\n ): Promise<StatisticsResponse<UserStat>> {\n const response = await this.fetch(`/statistics/user/${userRef}`, {\n requestOptions,\n });\n return (await response.json()) as StatisticsResponse<UserStat>;\n }\n\n async getCollections(\n options?: CollectionsQuery,\n requestOptions?: RequestOptions,\n ): Promise<CollectionsResponse> {\n const response = await this.fetch('/collections', {\n queryParams: options,\n requestOptions,\n });\n if (response.status === 403) {\n return { collections: [], total: 0 };\n }\n const data = (await response.json()) as CollectionsResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async getCollection(\n id?: string | number,\n requestOptions?: RequestOptions,\n ): Promise<CollectionResponse> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/collections/${id}`, { requestOptions });\n\n const data = (await response.json()) as CollectionResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async createCollection(\n collection: CollectionRequest,\n requestOptions?: RequestOptions,\n ): Promise<CollectionResponse> {\n const response = await this.fetch(`/collections`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify(collection),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as CollectionResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to fetch', data.errors);\n }\n\n return data;\n }\n\n async updateCollection(\n id: number,\n collection: CollectionRequest,\n requestOptions?: RequestOptions,\n ): Promise<CollectionResponse> {\n const response = await this.fetch(`/collections/${id}`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify(collection),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as CollectionResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to update', data.errors);\n }\n\n return data;\n }\n\n async deleteCollection(\n id?: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n if (!id) {\n throw new QetaError('Invalid id provided', undefined);\n }\n const response = await this.fetch(`/collections/${id}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n const data = await response;\n return data.ok;\n }\n\n async addPostToCollection(\n collectionId: number,\n postId: number,\n requestOptions?: RequestOptions,\n ): Promise<CollectionResponse> {\n const response = await this.fetch(`/collections/${collectionId}/posts`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify({ postId }),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as CollectionResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to update', data.errors);\n }\n\n return data;\n }\n\n async removePostFromCollection(\n collectionId: number,\n postId: number,\n requestOptions?: RequestOptions,\n ): Promise<CollectionResponse> {\n const response = await this.fetch(`/collections/${collectionId}/posts`, {\n reqInit: {\n method: 'DELETE',\n body: JSON.stringify({ postId }),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n const data = (await response.json()) as CollectionResponseBody;\n\n if ('errors' in data) {\n throw new QetaError('Failed to update', data.errors);\n }\n\n return data;\n }\n\n async getTemplates(\n requestOptions?: RequestOptions,\n ): Promise<TemplatesResponse> {\n const response = await this.fetch('/templates', { requestOptions });\n return (await response.json()) as TemplatesResponse;\n }\n\n async getTemplate(\n id: string | number,\n requestOptions?: RequestOptions,\n ): Promise<TemplateResponse> {\n const response = await this.fetch(`/templates/${id}`, { requestOptions });\n return (await response.json()) as TemplateResponse;\n }\n\n async createTemplate(\n template: TemplateRequest,\n requestOptions?: RequestOptions,\n ): Promise<TemplateResponse> {\n const response = await this.fetch(`/templates`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify(template),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n return (await response.json()) as TemplateResponse;\n }\n\n async updateTemplate(\n id: string | number,\n template: TemplateRequest,\n requestOptions?: RequestOptions,\n ): Promise<TemplateResponse> {\n const response = await this.fetch(`/templates/${id}`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify(template),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n return (await response.json()) as TemplateResponse;\n }\n\n async deleteTemplate(\n templateId: number,\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/templates/${templateId}`, {\n reqInit: { method: 'DELETE' },\n requestOptions,\n });\n return response.ok;\n }\n\n private async getBaseUrl(): Promise<string> {\n return this.discoveryApi.getBaseUrl('qeta');\n }\n\n private fetch = async (\n path: string,\n opts?: {\n queryParams?: any;\n reqInit?: RequestInit;\n requestOptions?: RequestOptions;\n },\n ) => {\n const { queryParams, reqInit = {}, requestOptions } = opts ?? {};\n const query = this.getQueryParameters(queryParams);\n let url = `${await this.getBaseUrl()}${\n path.startsWith('/') ? path : `/${path}`\n }`;\n if (query) {\n url += `?${query}`;\n }\n\n return this.fetchApi.fetch(url, {\n method: 'GET',\n ...(requestOptions?.token\n ? { headers: { Authorization: `Bearer ${requestOptions.token}` } }\n : undefined),\n ...reqInit,\n });\n };\n\n private getQueryParameters(params?: any) {\n if (!params) {\n return '';\n }\n const cleaned = omitBy(params, v => !Boolean(v));\n return qs.stringify(cleaned);\n }\n}\n"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { BasicPermission, ResourcePermission } from '@backstage/plugin-permission-common';
2
2
  import { IndexableDocument } from '@backstage/plugin-search-common';
3
3
  import { ErrorObject } from 'ajv';
4
- import { PostType as PostType$1, PostsResponse as PostsResponse$1, PostRequest as PostRequest$1, PostResponse as PostResponse$1, TagsResponse as TagsResponse$1, TagResponse as TagResponse$1, EntitiesResponse as EntitiesResponse$1, EntityResponse as EntityResponse$1, UsersResponse as UsersResponse$1, StatisticsRequestParameters as StatisticsRequestParameters$1, StatisticResponse as StatisticResponse$1, AnswerResponse as AnswerResponse$1, AnswerRequest as AnswerRequest$1, AnswerResponseBody as AnswerResponseBody$1, AttachmentResponseBody as AttachmentResponseBody$1, AnswersResponse as AnswersResponse$1, UserCollectionsResponse as UserCollectionsResponse$1, UserTagsResponse as UserTagsResponse$1, UserEntitiesResponse as UserEntitiesResponse$1, UserUsersResponse as UserUsersResponse$1, ImpactResponse as ImpactResponse$1, StatisticsResponse as StatisticsResponse$1, GlobalStat as GlobalStat$1, UserStat as UserStat$1, CollectionsResponse as CollectionsResponse$1, CollectionResponse as CollectionResponse$1, CollectionRequest as CollectionRequest$1, TemplatesResponse as TemplatesResponse$1, TemplateResponse as TemplateResponse$1, TemplateRequest as TemplateRequest$1, Post as Post$1, Answer as Answer$1 } from '@drodil/backstage-plugin-qeta-common';
4
+ import { PostType as PostType$1, PostsResponse as PostsResponse$1, PostRequest as PostRequest$1, PostResponse as PostResponse$1, AIResponse as AIResponse$1, TagsResponse as TagsResponse$1, TagResponse as TagResponse$1, EntitiesResponse as EntitiesResponse$1, EntityResponse as EntityResponse$1, UsersResponse as UsersResponse$1, StatisticsRequestParameters as StatisticsRequestParameters$1, StatisticResponse as StatisticResponse$1, AnswerResponse as AnswerResponse$1, AnswerRequest as AnswerRequest$1, AnswerResponseBody as AnswerResponseBody$1, AttachmentResponseBody as AttachmentResponseBody$1, AnswersResponse as AnswersResponse$1, UserCollectionsResponse as UserCollectionsResponse$1, UserTagsResponse as UserTagsResponse$1, UserEntitiesResponse as UserEntitiesResponse$1, UserUsersResponse as UserUsersResponse$1, ImpactResponse as ImpactResponse$1, StatisticsResponse as StatisticsResponse$1, GlobalStat as GlobalStat$1, UserStat as UserStat$1, CollectionsResponse as CollectionsResponse$1, CollectionResponse as CollectionResponse$1, CollectionRequest as CollectionRequest$1, TemplatesResponse as TemplatesResponse$1, TemplateResponse as TemplateResponse$1, TemplateRequest as TemplateRequest$1, Post as Post$1, Answer as Answer$1 } from '@drodil/backstage-plugin-qeta-common';
5
5
 
6
6
  declare const qetaCreatePostPermission: BasicPermission;
7
7
  declare const qetaCreateAnswerPermission: BasicPermission;
@@ -85,6 +85,9 @@ interface QetaApi {
85
85
  commentPost(id: number, content: string, requestOptions?: RequestOptions): Promise<PostResponse$1>;
86
86
  deletePostComment(postId: number, id: number, requestOptions?: RequestOptions): Promise<PostResponse$1>;
87
87
  getPost(id: string | number | undefined, requestOptions?: RequestOptions): Promise<PostResponse$1>;
88
+ getAIAnswerForQuestion(questionId: string | number, requestOptions?: RequestOptions): Promise<AIResponse$1 | null>;
89
+ getAIAnswerForDraft(title: string, content: string, requestOptions?: RequestOptions): Promise<AIResponse$1 | null>;
90
+ isAIEnabled(): Promise<boolean>;
88
91
  getTags(options?: TagsQuery, requestOptions?: RequestOptions): Promise<TagsResponse$1>;
89
92
  getTag(tag: string, requestOptions?: RequestOptions): Promise<TagResponse$1 | null>;
90
93
  updateTag(tag: string, description?: string, requestOptions?: RequestOptions): Promise<TagResponse$1 | null>;
@@ -99,8 +102,10 @@ interface QetaApi {
99
102
  getTopStatisticsHomepage({ author, options, }: StatisticsRequestParameters$1): Promise<StatisticResponse$1[]>;
100
103
  votePostUp(id: number, requestOptions?: RequestOptions): Promise<PostResponse$1>;
101
104
  votePostDown(id: number, requestOptions?: RequestOptions): Promise<PostResponse$1>;
105
+ deletePostVote(id: number, requestOptions?: RequestOptions): Promise<PostResponse$1>;
102
106
  voteAnswerUp(postId: number, id: number, requestOptions?: RequestOptions): Promise<AnswerResponse$1>;
103
107
  voteAnswerDown(postId: number, id: number, requestOptions?: RequestOptions): Promise<AnswerResponse$1>;
108
+ deleteAnswerVote(postId: number, id: number, requestOptions?: RequestOptions): Promise<AnswerResponse$1>;
104
109
  markAnswerCorrect(postId: number, id: number, requestOptions?: RequestOptions): Promise<boolean>;
105
110
  markAnswerIncorrect(postId: number, id: number, requestOptions?: RequestOptions): Promise<boolean>;
106
111
  favoritePost(id: number, requestOptions?: RequestOptions): Promise<PostResponse$1>;
@@ -165,6 +170,9 @@ declare class QetaClient implements QetaApi {
165
170
  commentPost(id: number, content: string, requestOptions?: RequestOptions): Promise<Post$1>;
166
171
  deletePostComment(questionId: number, id: number, requestOptions?: RequestOptions): Promise<Post$1>;
167
172
  getPost(id?: string, requestOptions?: RequestOptions): Promise<Post$1>;
173
+ getAIAnswerForQuestion(questionId: string | number, requestOptions?: RequestOptions): Promise<AIResponse$1 | null>;
174
+ getAIAnswerForDraft(title: string, content: string, requestOptions?: RequestOptions): Promise<AIResponse$1 | null>;
175
+ isAIEnabled(): Promise<boolean>;
168
176
  getTags(options?: TagsQuery, requestOptions?: RequestOptions): Promise<TagsResponse$1>;
169
177
  getTag(tag: string, requestOptions?: RequestOptions): Promise<TagResponse$1 | null>;
170
178
  updateTag(tag: string, description?: string, requestOptions?: RequestOptions): Promise<TagResponse$1 | null>;
@@ -173,6 +181,7 @@ declare class QetaClient implements QetaApi {
173
181
  getEntity(entityRef: string, requestOptions?: RequestOptions): Promise<EntityResponse$1 | null>;
174
182
  votePostUp(id: number, requestOptions?: RequestOptions): Promise<Post$1>;
175
183
  votePostDown(id: number, requestOptions?: RequestOptions): Promise<Post$1>;
184
+ deletePostVote(id: number, requestOptions?: RequestOptions): Promise<PostResponse$1>;
176
185
  favoritePost(id: number, requestOptions?: RequestOptions): Promise<Post$1>;
177
186
  unfavoritePost(id: number, requestOptions?: RequestOptions): Promise<Post$1>;
178
187
  postAnswer(answer: AnswerRequest$1, requestOptions?: RequestOptions): Promise<AnswerResponseBody$1>;
@@ -180,6 +189,7 @@ declare class QetaClient implements QetaApi {
180
189
  deleteAnswerComment(questionId: number, answerId: number, id: number, requestOptions?: RequestOptions): Promise<Answer$1>;
181
190
  voteAnswerUp(questionId: number, id: number, requestOptions?: RequestOptions): Promise<Answer$1>;
182
191
  voteAnswerDown(questionId: number, id: number, requestOptions?: RequestOptions): Promise<Answer$1>;
192
+ deleteAnswerVote(postId: number, id: number, requestOptions?: RequestOptions): Promise<AnswerResponse$1>;
183
193
  markAnswerCorrect(questionId: number, id: number, requestOptions?: RequestOptions): Promise<boolean>;
184
194
  markAnswerIncorrect(questionId: number, id: number, requestOptions?: RequestOptions): Promise<boolean>;
185
195
  deletePost(questionId: number, requestOptions?: RequestOptions): Promise<boolean>;
@@ -485,6 +495,9 @@ type PostResponse = Post;
485
495
  type AnswerResponse = Answer;
486
496
  type CollectionResponse = Collection;
487
497
  type TemplateResponse = Template;
498
+ type AIResponse = {
499
+ answer: string;
500
+ };
488
501
  type CollectionResponseBody = CollectionResponse | ErrorResponse;
489
502
  type QetaPostsStatsSignal = {
490
503
  type: 'post_stats';
@@ -531,4 +544,4 @@ declare const truncate: (str: string, n: number) => string;
531
544
  declare const findUserMentions: (text: string) => string[];
532
545
  declare const removeMarkdownFormatting: (text: string) => string;
533
546
 
534
- export { ANSWER_RESOURCE_TYPE, type Answer, type AnswerFilter, type AnswerRequest, type AnswerResponse, type AnswerResponseBody, type AnswersQuery, type AnswersResponse, type AnswersResponseBody, type Article, type Attachment, type AttachmentResponseBody, COMMENT_RESOURCE_TYPE, type Collection, type CollectionEntity, type CollectionRequest, type CollectionResponse, type CollectionResponseBody, type CollectionsQuery, type CollectionsResponse, type CollectionsResponseBody, type Comment, type CommentFilter, type EntitiesQuery, type EntitiesResponse, type EntityResponse, type GlobalStat, type ImpactResponse, POST_RESOURCE_TYPE, type PaginatedQuery, type Post, type PostAnswerEntity, type PostFilter, type PostRequest, type PostResponse, type PostResponseBody, type PostType, type PostsQuery, type PostsResponse, type PostsResponseBody, type QetaAnswerStatsSignal, type QetaApi, QetaClient, type QetaCollectionDocument, type QetaEntity, type QetaPostDocument, type QetaPostsStatsSignal, type QetaSignal, type Question, type RequestOptions, type Stat, type Statistic, type StatisticResponse, type StatisticsOptions, type StatisticsRequestParameters, type StatisticsResponse, TAGS_REGEX, type TagResponse, type TagsQuery, type TagsResponse, type Template, type TemplateRequest, type TemplateResponse, type TemplatesResponse, type UserCollectionsResponse, type UserEntitiesResponse, type UserResponse, type UserStat, type UserTagsResponse, type UserUsersResponse, type UsersQuery, type UsersResponse, type Vote, filterTags, findUserMentions, isQetaPermission, qetaCreateAnswerPermission, qetaCreateCommentPermission, qetaCreatePostPermission, qetaDeleteAnswerPermission, qetaDeleteCommentPermission, qetaDeletePostPermission, qetaEditAnswerPermission, qetaEditCommentPermission, qetaEditPostPermission, qetaPermissions, qetaReadAnswerPermission, qetaReadCommentPermission, qetaReadPostPermission, removeMarkdownFormatting, truncate };
547
+ export { type AIResponse, ANSWER_RESOURCE_TYPE, type Answer, type AnswerFilter, type AnswerRequest, type AnswerResponse, type AnswerResponseBody, type AnswersQuery, type AnswersResponse, type AnswersResponseBody, type Article, type Attachment, type AttachmentResponseBody, COMMENT_RESOURCE_TYPE, type Collection, type CollectionEntity, type CollectionRequest, type CollectionResponse, type CollectionResponseBody, type CollectionsQuery, type CollectionsResponse, type CollectionsResponseBody, type Comment, type CommentFilter, type EntitiesQuery, type EntitiesResponse, type EntityResponse, type GlobalStat, type ImpactResponse, POST_RESOURCE_TYPE, type PaginatedQuery, type Post, type PostAnswerEntity, type PostFilter, type PostRequest, type PostResponse, type PostResponseBody, type PostType, type PostsQuery, type PostsResponse, type PostsResponseBody, type QetaAnswerStatsSignal, type QetaApi, QetaClient, type QetaCollectionDocument, type QetaEntity, type QetaPostDocument, type QetaPostsStatsSignal, type QetaSignal, type Question, type RequestOptions, type Stat, type Statistic, type StatisticResponse, type StatisticsOptions, type StatisticsRequestParameters, type StatisticsResponse, TAGS_REGEX, type TagResponse, type TagsQuery, type TagsResponse, type Template, type TemplateRequest, type TemplateResponse, type TemplatesResponse, type UserCollectionsResponse, type UserEntitiesResponse, type UserResponse, type UserStat, type UserTagsResponse, type UserUsersResponse, type UsersQuery, type UsersResponse, type Vote, filterTags, findUserMentions, isQetaPermission, qetaCreateAnswerPermission, qetaCreateCommentPermission, qetaCreatePostPermission, qetaDeleteAnswerPermission, qetaDeleteCommentPermission, qetaDeletePostPermission, qetaEditAnswerPermission, qetaEditCommentPermission, qetaEditPostPermission, qetaPermissions, qetaReadAnswerPermission, qetaReadCommentPermission, qetaReadPostPermission, removeMarkdownFormatting, truncate };
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "frontend",
8
8
  "backstage.io"
9
9
  ],
10
- "version": "3.4.0",
10
+ "version": "3.5.0",
11
11
  "main": "dist/index.cjs.js",
12
12
  "types": "dist/index.d.ts",
13
13
  "prepublishOnly": "yarn tsc && yarn build",
@@ -32,6 +32,7 @@
32
32
  "@drodil/backstage-plugin-qeta",
33
33
  "@drodil/backstage-plugin-qeta-backend",
34
34
  "@drodil/backstage-plugin-qeta-common",
35
+ "@drodil/backstage-plugin-qeta-node",
35
36
  "@drodil/backstage-plugin-qeta-react"
36
37
  ]
37
38
  },