@drodil/backstage-plugin-qeta-common 3.9.1 → 3.9.2

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.
@@ -26,9 +26,13 @@ class QetaClient {
26
26
  this.discoveryApi = options.discoveryApi;
27
27
  }
28
28
  async getPosts(options, requestOptions) {
29
- const response = await this.fetch("/posts", {
30
- requestOptions,
31
- queryParams: options
29
+ const response = await this.fetch("/posts/query", {
30
+ reqInit: {
31
+ method: "POST",
32
+ body: JSON.stringify(options),
33
+ headers: { "Content-Type": "application/json" }
34
+ },
35
+ requestOptions
32
36
  });
33
37
  if (response.status === 403) {
34
38
  return { posts: [], total: 0 };
@@ -442,8 +446,12 @@ class QetaClient {
442
446
  return data;
443
447
  }
444
448
  async getAnswers(options, requestOptions) {
445
- const response = await this.fetch("/answers", {
446
- queryParams: options,
449
+ const response = await this.fetch("/answers/query", {
450
+ reqInit: {
451
+ method: "POST",
452
+ body: JSON.stringify(options),
453
+ headers: { "Content-Type": "application/json" }
454
+ },
447
455
  requestOptions
448
456
  });
449
457
  if (response.status === 403) {
@@ -632,8 +640,12 @@ class QetaClient {
632
640
  return await response.json();
633
641
  }
634
642
  async getCollections(options, requestOptions) {
635
- const response = await this.fetch("/collections", {
636
- queryParams: options,
643
+ const response = await this.fetch("/collections/query", {
644
+ reqInit: {
645
+ method: "POST",
646
+ body: JSON.stringify(options),
647
+ headers: { "Content-Type": "application/json" }
648
+ },
637
649
  requestOptions
638
650
  });
639
651
  if (response.status === 403) {
@@ -789,8 +801,13 @@ class QetaClient {
789
801
  }
790
802
  return this.fetchApi.fetch(url, {
791
803
  method: "GET",
792
- ...requestOptions?.token ? { headers: { Authorization: `Bearer ${requestOptions.token}` } } : void 0,
793
- ...reqInit
804
+ ...reqInit,
805
+ ...requestOptions?.token ? {
806
+ headers: {
807
+ Authorization: `Bearer ${requestOptions.token}`,
808
+ ...reqInit.headers
809
+ }
810
+ } : void 0
794
811
  });
795
812
  };
796
813
  getQueryParameters(params) {
@@ -1 +1 @@
1
- {"version":3,"file":"QetaClient.cjs.js","sources":["../../src/api/QetaClient.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport {\n AIQuery,\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 AIStatusResponse,\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 options?: AIQuery,\n requestOptions?: RequestOptions,\n ): Promise<AIResponse | null> {\n const response = await this.fetch(`/ai/question/${questionId}`, {\n queryParams: options,\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 getAISummaryForArticle(\n articleId: string | number,\n options?: AIQuery,\n requestOptions?: RequestOptions,\n ): Promise<AIResponse | null> {\n const response = await this.fetch(`/ai/article/${articleId}`, {\n queryParams: options,\n requestOptions,\n });\n if (!response.ok) {\n return null;\n }\n return (await response.json()) as AIResponse;\n }\n\n async isAIEnabled(): Promise<AIStatusResponse> {\n const response = await this.fetch('/ai/status');\n if (!response.ok) {\n return {\n enabled: false,\n articleSummaries: false,\n existingQuestions: false,\n newQuestions: false,\n };\n }\n return (await response.json()) as AIStatusResponse;\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 rankPostInCollection(\n collectionId: number,\n postId: number,\n rank: 'top' | 'bottom' | 'up' | 'down',\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/collections/${collectionId}/rank`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify({ postId, rank }),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n return response.ok;\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 AIQuery,\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 AIStatusResponse,\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/query', {\n reqInit: {\n method: 'POST',\n body: JSON.stringify(options),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\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 options?: AIQuery,\n requestOptions?: RequestOptions,\n ): Promise<AIResponse | null> {\n const response = await this.fetch(`/ai/question/${questionId}`, {\n queryParams: options,\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 getAISummaryForArticle(\n articleId: string | number,\n options?: AIQuery,\n requestOptions?: RequestOptions,\n ): Promise<AIResponse | null> {\n const response = await this.fetch(`/ai/article/${articleId}`, {\n queryParams: options,\n requestOptions,\n });\n if (!response.ok) {\n return null;\n }\n return (await response.json()) as AIResponse;\n }\n\n async isAIEnabled(): Promise<AIStatusResponse> {\n const response = await this.fetch('/ai/status');\n if (!response.ok) {\n return {\n enabled: false,\n articleSummaries: false,\n existingQuestions: false,\n newQuestions: false,\n };\n }\n return (await response.json()) as AIStatusResponse;\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/query', {\n reqInit: {\n method: 'POST',\n body: JSON.stringify(options),\n headers: { 'Content-Type': 'application/json' },\n },\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/query', {\n reqInit: {\n method: 'POST',\n body: JSON.stringify(options),\n headers: { 'Content-Type': 'application/json' },\n },\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 rankPostInCollection(\n collectionId: number,\n postId: number,\n rank: 'top' | 'bottom' | 'up' | 'down',\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/collections/${collectionId}/rank`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify({ postId, rank }),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n return response.ok;\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 ...reqInit,\n ...(requestOptions?.token\n ? {\n headers: {\n Authorization: `Bearer ${requestOptions.token}`,\n ...reqInit.headers,\n },\n }\n : undefined),\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":";;;;;;;;;;;;;AAyDO,MAAM,kBAAkBA,sBAAgB,CAAA;AAAA,EACtC,MAAA,CAAA;AAAA,EAEP,WAAA,CAAY,SAAiB,MAAkC,EAAA;AAC7D,IAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AAEb,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA,CAAA;AAAA,GAChB;AACF,CAAA;AAEO,MAAM,UAA8B,CAAA;AAAA,EACxB,QAAA,CAAA;AAAA,EACA,YAAA,CAAA;AAAA,EAIjB,YAAY,OAGT,EAAA;AACD,IAAA,IAAA,CAAK,QAAW,GAAA,OAAA,CAAQ,QAAY,IAAA,EAAE,OAAOC,2BAAW,EAAA,CAAA;AACxD,IAAA,IAAA,CAAK,eAAe,OAAQ,CAAA,YAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,QACJ,CAAA,OAAA,EACA,cACwB,EAAA;AACxB,IAAA,MAAM,QAAW,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,cAAgB,EAAA;AAAA,MAChD,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,MAAA;AAAA,QACR,IAAA,EAAM,IAAK,CAAA,SAAA,CAAU,OAAO,CAAA;AAAA,QAC5B,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAmB,EAAA;AAAA,OAChD;AAAA,MACA,cAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAI,IAAA,QAAA,CAAS,WAAW,GAAK,EAAA;AAC3B,MAAA,OAAO,EAAE,KAAA,EAAO,EAAC,EAAG,OAAO,CAAE,EAAA,CAAA;AAAA,KAC/B;AACA,IAAM,MAAA,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAElC,IAAA,IAAI,YAAY,IAAM,EAAA;AACpB,MAAA,MAAM,IAAI,SAAA,CAAU,iBAAmB,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACpD;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,YAAA,CACJ,IACA,EAAA,OAAA,EACA,cACwB,EAAA;AACxB,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,YAAA,EAAe,IAAI,CAAI,CAAA,EAAA;AAAA,MACvD,cAAA;AAAA,MACA,WAAa,EAAA,OAAA;AAAA,KACd,CAAA,CAAA;AAED,IAAI,IAAA,QAAA,CAAS,WAAW,GAAK,EAAA;AAC3B,MAAA,OAAO,EAAE,KAAA,EAAO,EAAC,EAAG,OAAO,CAAE,EAAA,CAAA;AAAA,KAC/B;AAEA,IAAM,MAAA,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAElC,IAAA,IAAI,YAAY,IAAM,EAAA;AACpB,MAAA,MAAM,IAAI,SAAA,CAAU,iBAAmB,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACpD;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,UACJ,CAAA,QAAA,EACA,cACe,EAAA;AACf,IAAA,MAAM,QAAW,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,CAAU,MAAA,CAAA,EAAA;AAAA,MAC1C,cAAA;AAAA,MACA,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,MAAA;AAAA,QACR,IAAA,EAAM,IAAK,CAAA,SAAA,CAAU,QAAQ,CAAA;AAAA,QAC7B,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAmB,EAAA;AAAA,OAChD;AAAA,KACD,CAAA,CAAA;AACD,IAAM,MAAA,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAElC,IAAA,IAAI,YAAY,IAAM,EAAA;AACpB,MAAA,MAAM,IAAI,SAAA,CAAU,iBAAmB,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACpD;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,WAAA,CACJ,EACA,EAAA,OAAA,EACA,cACe,EAAA;AACf,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,OAAA,EAAU,EAAE,CAAa,SAAA,CAAA,EAAA;AAAA,MACzD,cAAA;AAAA,MACA,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,MAAA;AAAA,QACR,IAAM,EAAA,IAAA,CAAK,SAAU,CAAA,EAAE,SAAS,CAAA;AAAA,QAChC,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAmB,EAAA;AAAA,OAChD;AAAA,KACD,CAAA,CAAA;AACD,IAAM,MAAA,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAElC,IAAA,IAAI,YAAY,IAAM,EAAA;AACpB,MAAA,MAAM,IAAI,SAAA,CAAU,iBAAmB,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACpD;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,iBAAA,CACJ,UACA,EAAA,EAAA,EACA,cACe,EAAA;AACf,IAAM,MAAA,QAAA,GAAW,MAAM,IAAK,CAAA,KAAA,CAAM,UAAU,UAAU,CAAA,UAAA,EAAa,EAAE,CAAI,CAAA,EAAA;AAAA,MACvE,OAAA,EAAS,EAAE,MAAA,EAAQ,QAAS,EAAA;AAAA,MAC5B,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAM,MAAA,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAElC,IAAA,IAAI,YAAY,IAAM,EAAA;AACpB,MAAA,MAAM,IAAI,SAAA,CAAU,iBAAmB,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACpD;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,OAAQ,CAAA,EAAA,EAAa,cAAgD,EAAA;AACzE,IAAA,IAAI,CAAC,EAAI,EAAA;AACP,MAAM,MAAA,IAAI,SAAU,CAAA,qBAAA,EAAuB,KAAS,CAAA,CAAA,CAAA;AAAA,KACtD;AAEA,IAAM,MAAA,QAAA,GAAW,MAAM,IAAK,CAAA,KAAA,CAAM,UAAU,EAAE,CAAA,CAAA,EAAI,EAAE,cAAA,EAAgB,CAAA,CAAA;AACpE,IAAM,MAAA,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAElC,IAAA,IAAI,YAAY,IAAM,EAAA;AACpB,MAAA,MAAM,IAAI,SAAA,CAAU,iBAAmB,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACpD;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,sBAAA,CACJ,UACA,EAAA,OAAA,EACA,cAC4B,EAAA;AAC5B,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,aAAA,EAAgB,UAAU,CAAI,CAAA,EAAA;AAAA,MAC9D,WAAa,EAAA,OAAA;AAAA,MACb,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAI,IAAA,CAAC,SAAS,EAAI,EAAA;AAChB,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAQ,OAAA,MAAM,SAAS,IAAK,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,mBAAA,CACJ,KACA,EAAA,OAAA,EACA,cAC4B,EAAA;AAC5B,IAAA,MAAM,QAAW,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,cAAgB,EAAA;AAAA,MAChD,cAAA;AAAA,MACA,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,MAAA;AAAA,QACR,MAAM,IAAK,CAAA,SAAA,CAAU,EAAE,KAAA,EAAO,SAAS,CAAA;AAAA,QACvC,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAmB,EAAA;AAAA,OAChD;AAAA,KACD,CAAA,CAAA;AACD,IAAI,IAAA,CAAC,SAAS,EAAI,EAAA;AAChB,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAQ,OAAA,MAAM,SAAS,IAAK,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,sBAAA,CACJ,SACA,EAAA,OAAA,EACA,cAC4B,EAAA;AAC5B,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,YAAA,EAAe,SAAS,CAAI,CAAA,EAAA;AAAA,MAC5D,WAAa,EAAA,OAAA;AAAA,MACb,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAI,IAAA,CAAC,SAAS,EAAI,EAAA;AAChB,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAQ,OAAA,MAAM,SAAS,IAAK,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,WAAyC,GAAA;AAC7C,IAAA,MAAM,QAAW,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,YAAY,CAAA,CAAA;AAC9C,IAAI,IAAA,CAAC,SAAS,EAAI,EAAA;AAChB,MAAO,OAAA;AAAA,QACL,OAAS,EAAA,KAAA;AAAA,QACT,gBAAkB,EAAA,KAAA;AAAA,QAClB,iBAAmB,EAAA,KAAA;AAAA,QACnB,YAAc,EAAA,KAAA;AAAA,OAChB,CAAA;AAAA,KACF;AACA,IAAQ,OAAA,MAAM,SAAS,IAAK,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,OACJ,CAAA,OAAA,EACA,cACuB,EAAA;AACvB,IAAA,MAAM,QAAW,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,OAAS,EAAA;AAAA,MACzC,WAAa,EAAA,OAAA;AAAA,MACb,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAQ,OAAA,MAAM,SAAS,IAAK,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,MACJ,CAAA,GAAA,EACA,cAC6B,EAAA;AAC7B,IAAM,MAAA,QAAA,GAAW,MAAM,IAAK,CAAA,KAAA,CAAM,SAAS,GAAG,CAAA,CAAA,EAAI,EAAE,cAAA,EAAgB,CAAA,CAAA;AACpE,IAAI,IAAA,CAAC,SAAS,EAAI,EAAA;AAChB,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAQ,OAAA,MAAM,SAAS,IAAK,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,SAAA,CACJ,GACA,EAAA,WAAA,EACA,cAC6B,EAAA;AAC7B,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,MAAA,EAAS,GAAG,CAAI,CAAA,EAAA;AAAA,MAChD,cAAA;AAAA,MACA,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,MAAA;AAAA,QACR,IAAM,EAAA,IAAA,CAAK,SAAU,CAAA,EAAE,aAAa,CAAA;AAAA,QACpC,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAmB,EAAA;AAAA,OAChD;AAAA,KACD,CAAA,CAAA;AACD,IAAI,IAAA,CAAC,SAAS,EAAI,EAAA;AAChB,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAQ,OAAA,MAAM,SAAS,IAAK,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,QACJ,CAAA,OAAA,EACA,cACwB,EAAA;AACxB,IAAA,MAAM,QAAW,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,QAAU,EAAA;AAAA,MAC1C,cAAA;AAAA,MACA,WAAa,EAAA,OAAA;AAAA,KACd,CAAA,CAAA;AACD,IAAQ,OAAA,MAAM,SAAS,IAAK,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,WACJ,CAAA,OAAA,EACA,cAC2B,EAAA;AAC3B,IAAA,MAAM,QAAW,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,WAAa,EAAA;AAAA,MAC7C,cAAA;AAAA,MACA,WAAa,EAAA,OAAA;AAAA,KACd,CAAA,CAAA;AACD,IAAQ,OAAA,MAAM,SAAS,IAAK,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,SACJ,CAAA,SAAA,EACA,cACgC,EAAA;AAChC,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,UAAA,EAAa,SAAS,CAAI,CAAA,EAAA;AAAA,MAC1D,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAI,IAAA,CAAC,SAAS,EAAI,EAAA;AAChB,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAEA,IAAQ,OAAA,MAAM,SAAS,IAAK,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,UAAW,CAAA,EAAA,EAAY,cAAgD,EAAA;AAC3E,IAAA,IAAI,CAAC,EAAI,EAAA;AACP,MAAM,MAAA,IAAI,SAAU,CAAA,qBAAA,EAAuB,KAAS,CAAA,CAAA,CAAA;AAAA,KACtD;AACA,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,OAAA,EAAU,EAAE,CAAW,OAAA,CAAA,EAAA;AAAA,MACvD,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAM,MAAA,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAElC,IAAA,IAAI,YAAY,IAAM,EAAA;AACpB,MAAA,MAAM,IAAI,SAAA,CAAU,iBAAmB,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACpD;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,YACJ,CAAA,EAAA,EACA,cACe,EAAA;AACf,IAAA,IAAI,CAAC,EAAI,EAAA;AACP,MAAM,MAAA,IAAI,SAAU,CAAA,qBAAA,EAAuB,KAAS,CAAA,CAAA,CAAA;AAAA,KACtD;AACA,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,OAAA,EAAU,EAAE,CAAa,SAAA,CAAA,EAAA;AAAA,MACzD,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAM,MAAA,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAElC,IAAA,IAAI,YAAY,IAAM,EAAA;AACpB,MAAA,MAAM,IAAI,SAAA,CAAU,iBAAmB,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACpD;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,cACJ,CAAA,EAAA,EACA,cACuB,EAAA;AACvB,IAAA,IAAI,CAAC,EAAI,EAAA;AACP,MAAM,MAAA,IAAI,SAAU,CAAA,qBAAA,EAAuB,KAAS,CAAA,CAAA,CAAA;AAAA,KACtD;AACA,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,OAAA,EAAU,EAAE,CAAS,KAAA,CAAA,EAAA;AAAA,MACrD,OAAA,EAAS,EAAE,MAAA,EAAQ,QAAS,EAAA;AAAA,MAC5B,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAM,MAAA,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAClC,IAAA,IAAI,YAAY,IAAM,EAAA;AACpB,MAAA,MAAM,IAAI,SAAA,CAAU,iBAAmB,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACpD;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,YACJ,CAAA,EAAA,EACA,cACe,EAAA;AACf,IAAA,IAAI,CAAC,EAAI,EAAA;AACP,MAAM,MAAA,IAAI,SAAU,CAAA,qBAAA,EAAuB,KAAS,CAAA,CAAA,CAAA;AAAA,KACtD;AACA,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,OAAA,EAAU,EAAE,CAAa,SAAA,CAAA,EAAA;AAAA,MACzD,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAM,MAAA,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAElC,IAAA,IAAI,YAAY,IAAM,EAAA;AACpB,MAAA,MAAM,IAAI,SAAA,CAAU,iBAAmB,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACpD;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,cACJ,CAAA,EAAA,EACA,cACe,EAAA;AACf,IAAA,IAAI,CAAC,EAAI,EAAA;AACP,MAAM,MAAA,IAAI,SAAU,CAAA,qBAAA,EAAuB,KAAS,CAAA,CAAA,CAAA;AAAA,KACtD;AACA,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,OAAA,EAAU,EAAE,CAAe,WAAA,CAAA,EAAA;AAAA,MAC3D,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAM,MAAA,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAElC,IAAA,IAAI,YAAY,IAAM,EAAA;AACpB,MAAA,MAAM,IAAI,SAAA,CAAU,iBAAmB,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACpD;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,UACJ,CAAA,MAAA,EACA,cAC6B,EAAA;AAC7B,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,MAAM,CAAU,OAAA,EAAA,MAAA,CAAO,MAAM,CAAY,QAAA,CAAA,EAAA;AAAA,MACnE,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,MAAA;AAAA,QACR,IAAA,EAAM,KAAK,SAAU,CAAA;AAAA,UACnB,QAAQ,MAAO,CAAA,MAAA;AAAA,UACf,QAAQ,MAAO,CAAA,MAAA;AAAA,UACf,WAAW,MAAO,CAAA,SAAA;AAAA,SACnB,CAAA;AAAA,QACD,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAmB,EAAA;AAAA,OAChD;AAAA,MACA,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAM,MAAA,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAElC,IAAA,IAAI,YAAY,IAAM,EAAA;AACpB,MAAA,MAAM,IAAI,SAAA,CAAU,iBAAmB,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACpD;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,aAAA,CACJ,UACA,EAAA,EAAA,EACA,SACA,cACiB,EAAA;AACjB,IAAM,MAAA,QAAA,GAAW,MAAM,IAAK,CAAA,KAAA;AAAA,MAC1B,CAAA,OAAA,EAAU,UAAU,CAAA,SAAA,EAAY,EAAE,CAAA,SAAA,CAAA;AAAA,MAClC;AAAA,QACE,OAAS,EAAA;AAAA,UACP,MAAQ,EAAA,MAAA;AAAA,UACR,IAAM,EAAA,IAAA,CAAK,SAAU,CAAA,EAAE,SAAS,CAAA;AAAA,UAChC,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAmB,EAAA;AAAA,SAChD;AAAA,QACA,cAAA;AAAA,OACF;AAAA,KACF,CAAA;AACA,IAAM,MAAA,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAElC,IAAA,IAAI,YAAY,IAAM,EAAA;AACpB,MAAA,MAAM,IAAI,SAAA,CAAU,iBAAmB,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACpD;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,mBAAA,CACJ,UACA,EAAA,QAAA,EACA,IACA,cACiB,EAAA;AACjB,IAAM,MAAA,QAAA,GAAW,MAAM,IAAK,CAAA,KAAA;AAAA,MAC1B,CAAU,OAAA,EAAA,UAAU,CAAY,SAAA,EAAA,QAAQ,aAAa,EAAE,CAAA,CAAA;AAAA,MACvD;AAAA,QACE,OAAS,EAAA;AAAA,UACP,MAAQ,EAAA,QAAA;AAAA,SACV;AAAA,QACA,cAAA;AAAA,OACF;AAAA,KACF,CAAA;AACA,IAAM,MAAA,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAElC,IAAA,IAAI,YAAY,IAAM,EAAA;AACpB,MAAA,MAAM,IAAI,SAAA,CAAU,iBAAmB,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACpD;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,YAAA,CACJ,UACA,EAAA,EAAA,EACA,cACiB,EAAA;AACjB,IAAI,IAAA,CAAC,EAAM,IAAA,CAAC,UAAY,EAAA;AACtB,MAAM,MAAA,IAAI,SAAU,CAAA,qBAAA,EAAuB,KAAS,CAAA,CAAA,CAAA;AAAA,KACtD;AACA,IAAM,MAAA,QAAA,GAAW,MAAM,IAAK,CAAA,KAAA;AAAA,MAC1B,CAAA,OAAA,EAAU,UAAU,CAAA,SAAA,EAAY,EAAE,CAAA,OAAA,CAAA;AAAA,MAClC,EAAE,cAAe,EAAA;AAAA,KACnB,CAAA;AACA,IAAM,MAAA,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAElC,IAAA,IAAI,YAAY,IAAM,EAAA;AACpB,MAAA,MAAM,IAAI,SAAA,CAAU,iBAAmB,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACpD;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,cAAA,CACJ,UACA,EAAA,EAAA,EACA,cACiB,EAAA;AACjB,IAAI,IAAA,CAAC,EAAM,IAAA,CAAC,UAAY,EAAA;AACtB,MAAM,MAAA,IAAI,SAAU,CAAA,qBAAA,EAAuB,KAAS,CAAA,CAAA,CAAA;AAAA,KACtD;AACA,IAAM,MAAA,QAAA,GAAW,MAAM,IAAK,CAAA,KAAA;AAAA,MAC1B,CAAA,OAAA,EAAU,UAAU,CAAA,SAAA,EAAY,EAAE,CAAA,SAAA,CAAA;AAAA,MAClC,EAAE,cAAe,EAAA;AAAA,KACnB,CAAA;AACA,IAAM,MAAA,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAElC,IAAA,IAAI,YAAY,IAAM,EAAA;AACpB,MAAA,MAAM,IAAI,SAAA,CAAU,iBAAmB,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACpD;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,gBAAA,CACJ,MACA,EAAA,EAAA,EACA,cACyB,EAAA;AACzB,IAAI,IAAA,CAAC,MAAU,IAAA,CAAC,EAAI,EAAA;AAClB,MAAM,MAAA,IAAI,SAAU,CAAA,qBAAA,EAAuB,KAAS,CAAA,CAAA,CAAA;AAAA,KACtD;AACA,IAAM,MAAA,QAAA,GAAW,MAAM,IAAK,CAAA,KAAA,CAAM,UAAU,MAAM,CAAA,SAAA,EAAY,EAAE,CAAS,KAAA,CAAA,EAAA;AAAA,MACvE,OAAA,EAAS,EAAE,MAAA,EAAQ,QAAS,EAAA;AAAA,MAC5B,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAM,MAAA,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAElC,IAAA,IAAI,YAAY,IAAM,EAAA;AACpB,MAAA,MAAM,IAAI,SAAA,CAAU,iBAAmB,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACpD;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,iBAAA,CACJ,UACA,EAAA,EAAA,EACA,cACkB,EAAA;AAClB,IAAI,IAAA,CAAC,EAAM,IAAA,CAAC,UAAY,EAAA;AACtB,MAAM,MAAA,IAAI,SAAU,CAAA,qBAAA,EAAuB,KAAS,CAAA,CAAA,CAAA;AAAA,KACtD;AACA,IAAM,MAAA,QAAA,GAAW,MAAM,IAAK,CAAA,KAAA;AAAA,MAC1B,CAAA,OAAA,EAAU,UAAU,CAAA,SAAA,EAAY,EAAE,CAAA,QAAA,CAAA;AAAA,MAClC,EAAE,cAAe,EAAA;AAAA,KACnB,CAAA;AACA,IAAA,MAAM,OAAO,MAAM,QAAA,CAAA;AACnB,IAAA,OAAO,IAAK,CAAA,EAAA,CAAA;AAAA,GACd;AAAA,EAEA,MAAM,mBAAA,CACJ,UACA,EAAA,EAAA,EACA,cACkB,EAAA;AAClB,IAAI,IAAA,CAAC,EAAM,IAAA,CAAC,UAAY,EAAA;AACtB,MAAM,MAAA,IAAI,SAAU,CAAA,qBAAA,EAAuB,KAAS,CAAA,CAAA,CAAA;AAAA,KACtD;AACA,IAAM,MAAA,QAAA,GAAW,MAAM,IAAK,CAAA,KAAA;AAAA,MAC1B,CAAA,OAAA,EAAU,UAAU,CAAA,SAAA,EAAY,EAAE,CAAA,UAAA,CAAA;AAAA,MAClC,EAAE,cAAe,EAAA;AAAA,KACnB,CAAA;AACA,IAAA,MAAM,OAAO,MAAM,QAAA,CAAA;AACnB,IAAA,OAAO,IAAK,CAAA,EAAA,CAAA;AAAA,GACd;AAAA,EAEA,MAAM,UACJ,CAAA,UAAA,EACA,cACkB,EAAA;AAClB,IAAA,IAAI,CAAC,UAAY,EAAA;AACf,MAAM,MAAA,IAAI,SAAU,CAAA,qBAAA,EAAuB,KAAS,CAAA,CAAA,CAAA;AAAA,KACtD;AACA,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,OAAA,EAAU,UAAU,CAAI,CAAA,EAAA;AAAA,MACxD,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,QAAA;AAAA,OACV;AAAA,MACA,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAA,MAAM,OAAO,MAAM,QAAA,CAAA;AACnB,IAAA,OAAO,IAAK,CAAA,EAAA,CAAA;AAAA,GACd;AAAA,EAEA,MAAM,YAAA,CACJ,UACA,EAAA,EAAA,EACA,cACkB,EAAA;AAClB,IAAI,IAAA,CAAC,UAAc,IAAA,CAAC,EAAI,EAAA;AACtB,MAAM,MAAA,IAAI,SAAU,CAAA,qBAAA,EAAuB,KAAS,CAAA,CAAA,CAAA;AAAA,KACtD;AACA,IAAM,MAAA,QAAA,GAAW,MAAM,IAAK,CAAA,KAAA,CAAM,UAAU,UAAU,CAAA,SAAA,EAAY,EAAE,CAAI,CAAA,EAAA;AAAA,MACtE,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,QAAA;AAAA,OACV;AAAA,MACA,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAA,MAAM,OAAO,MAAM,QAAA,CAAA;AACnB,IAAA,OAAO,IAAK,CAAA,EAAA,CAAA;AAAA,GACd;AAAA,EAEA,MAAM,UAAA,CACJ,EACA,EAAA,QAAA,EACA,cACe,EAAA;AACf,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,OAAA,EAAU,EAAE,CAAI,CAAA,EAAA;AAAA,MAChD,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,MAAA;AAAA,QACR,IAAA,EAAM,IAAK,CAAA,SAAA,CAAU,QAAQ,CAAA;AAAA,QAC7B,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAmB,EAAA;AAAA,OAChD;AAAA,MACA,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAM,MAAA,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAElC,IAAA,IAAI,YAAY,IAAM,EAAA;AACpB,MAAA,MAAM,IAAI,SAAA,CAAU,kBAAoB,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACrD;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,YAAA,CACJ,EACA,EAAA,MAAA,EACA,cAC6B,EAAA;AAC7B,IAAM,MAAA,QAAA,GAAW,MAAM,IAAK,CAAA,KAAA,CAAM,UAAU,MAAO,CAAA,MAAM,CAAY,SAAA,EAAA,EAAE,CAAI,CAAA,EAAA;AAAA,MACzE,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,MAAA;AAAA,QACR,IAAA,EAAM,IAAK,CAAA,SAAA,CAAU,EAAE,MAAA,EAAQ,OAAO,MAAQ,EAAA,MAAA,EAAQ,MAAO,CAAA,MAAA,EAAQ,CAAA;AAAA,QACrE,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAmB,EAAA;AAAA,OAChD;AAAA,MACA,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAM,MAAA,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAElC,IAAA,IAAI,YAAY,IAAM,EAAA;AACpB,MAAA,MAAM,IAAI,SAAA,CAAU,iBAAmB,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACpD;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,UACJ,CAAA,OAAA,EACA,cAC0B,EAAA;AAC1B,IAAA,MAAM,QAAW,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,gBAAkB,EAAA;AAAA,MAClD,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,MAAA;AAAA,QACR,IAAA,EAAM,IAAK,CAAA,SAAA,CAAU,OAAO,CAAA;AAAA,QAC5B,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAmB,EAAA;AAAA,OAChD;AAAA,MACA,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAI,IAAA,QAAA,CAAS,WAAW,GAAK,EAAA;AAC3B,MAAA,OAAO,EAAE,OAAA,EAAS,EAAC,EAAG,OAAO,CAAE,EAAA,CAAA;AAAA,KACjC;AACA,IAAM,MAAA,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAElC,IAAA,IAAI,YAAY,IAAM,EAAA;AACpB,MAAA,MAAM,IAAI,SAAA,CAAU,iBAAmB,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACpD;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,SAAA,CACJ,UACA,EAAA,EAAA,EACA,cAC6B,EAAA;AAC7B,IAAI,IAAA,CAAC,UAAc,IAAA,CAAC,EAAI,EAAA;AACtB,MAAM,MAAA,IAAI,SAAU,CAAA,qBAAA,EAAuB,KAAS,CAAA,CAAA,CAAA;AAAA,KACtD;AACA,IAAM,MAAA,QAAA,GAAW,MAAM,IAAK,CAAA,KAAA,CAAM,UAAU,UAAU,CAAA,SAAA,EAAY,EAAE,CAAI,CAAA,EAAA;AAAA,MACtE,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAM,MAAA,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAElC,IAAA,IAAI,YAAY,IAAM,EAAA;AACpB,MAAA,MAAM,IAAI,SAAA,CAAU,iBAAmB,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACpD;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,uBACJ,cACkC,EAAA;AAClC,IAAA,MAAM,QAAW,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,CAAyB,qBAAA,CAAA,EAAA;AAAA,MACzD,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAQ,OAAA,MAAM,SAAS,IAAK,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,gBACJ,CAAA,YAAA,EACA,cACkB,EAAA;AAClB,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,oBAAA,EAAuB,YAAY,CAAI,CAAA,EAAA;AAAA,MACvE,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,KAAA;AAAA,OACV;AAAA,MACA,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAA,OAAO,QAAS,CAAA,EAAA,CAAA;AAAA,GAClB;AAAA,EAEA,MAAM,kBACJ,CAAA,YAAA,EACA,cACkB,EAAA;AAClB,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,oBAAA,EAAuB,YAAY,CAAI,CAAA,EAAA;AAAA,MACvE,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,QAAA;AAAA,OACV;AAAA,MACA,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAA,OAAO,QAAS,CAAA,EAAA,CAAA;AAAA,GAClB;AAAA,EAEA,MAAM,gBACJ,cAC2B,EAAA;AAC3B,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,MAAM,CAAkB,cAAA,CAAA,EAAA,EAAE,gBAAgB,CAAA,CAAA;AACtE,IAAQ,OAAA,MAAM,SAAS,IAAK,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,SACJ,CAAA,GAAA,EACA,cACkB,EAAA;AAClB,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,aAAA,EAAgB,GAAG,CAAI,CAAA,EAAA;AAAA,MACvD,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,KAAA;AAAA,OACV;AAAA,MACA,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAA,OAAO,QAAS,CAAA,EAAA,CAAA;AAAA,GAClB;AAAA,EAEA,MAAM,WACJ,CAAA,GAAA,EACA,cACkB,EAAA;AAClB,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,aAAA,EAAgB,GAAG,CAAI,CAAA,EAAA;AAAA,MACvD,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,QAAA;AAAA,OACV;AAAA,MACA,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAA,OAAO,QAAS,CAAA,EAAA,CAAA;AAAA,GAClB;AAAA,EAEA,MAAM,oBACJ,cAC+B,EAAA;AAC/B,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,MAAM,CAAsB,kBAAA,CAAA,EAAA,EAAE,gBAAgB,CAAA,CAAA;AAC1E,IAAQ,OAAA,MAAM,SAAS,IAAK,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,YACJ,CAAA,SAAA,EACA,cACkB,EAAA;AAClB,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,iBAAA,EAAoB,SAAS,CAAI,CAAA,EAAA;AAAA,MACjE,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,KAAA;AAAA,OACV;AAAA,MACA,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAA,OAAO,QAAS,CAAA,EAAA,CAAA;AAAA,GAClB;AAAA,EAEA,MAAM,cACJ,CAAA,SAAA,EACA,cACkB,EAAA;AAClB,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,iBAAA,EAAoB,SAAS,CAAI,CAAA,EAAA;AAAA,MACjE,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,QAAA;AAAA,OACV;AAAA,MACA,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAA,OAAO,QAAS,CAAA,EAAA,CAAA;AAAA,GAClB;AAAA,EAEA,MAAM,iBACJ,cAC4B,EAAA;AAC5B,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,MAAM,CAAmB,eAAA,CAAA,EAAA,EAAE,gBAAgB,CAAA,CAAA;AACvE,IAAQ,OAAA,MAAM,SAAS,IAAK,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,UACJ,CAAA,OAAA,EACA,cACkB,EAAA;AAClB,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,cAAA,EAAiB,OAAO,CAAI,CAAA,EAAA;AAAA,MAC5D,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,KAAA;AAAA,OACV;AAAA,MACA,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAA,OAAO,QAAS,CAAA,EAAA,CAAA;AAAA,GAClB;AAAA,EAEA,MAAM,YACJ,CAAA,OAAA,EACA,cACkB,EAAA;AAClB,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,cAAA,EAAiB,OAAO,CAAI,CAAA,EAAA;AAAA,MAC5D,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,QAAA;AAAA,OACV;AAAA,MACA,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAA,OAAO,QAAS,CAAA,EAAA,CAAA;AAAA,GAClB;AAAA,EAEA,MAAM,cAAA,CACJ,IACA,EAAA,OAAA,EACA,cACiC,EAAA;AACjC,IAAM,MAAA,QAAA,GAAW,IAAI,QAAS,EAAA,CAAA;AAC9B,IAAS,QAAA,CAAA,MAAA,CAAO,SAAS,IAAI,CAAA,CAAA;AAE7B,IAAA,MAAM,QAAW,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,cAAgB,EAAA;AAAA,MAChD,WAAa,EAAA,OAAA;AAAA,MACb,OAAS,EAAA,EAAE,MAAQ,EAAA,MAAA,EAAQ,MAAM,QAAS,EAAA;AAAA,MAC1C,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAQ,OAAA,MAAM,SAAS,IAAK,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,sBACJ,OAC4B,EAAA;AAC5B,IAAA,MAAM,QAAW,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,uCAAyC,EAAA;AAAA,MACzE,aAAa,OAAQ,CAAA,OAAA;AAAA,MACrB,gBAAgB,OAAQ,CAAA,cAAA;AAAA,KACzB,CAAA,CAAA;AACD,IAAQ,OAAA,MAAM,SAAS,IAAK,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,6BACJ,OAC4B,EAAA;AAC5B,IAAM,MAAA,QAAA,GAAW,MAAM,IAAK,CAAA,KAAA;AAAA,MAC1B,+CAAA;AAAA,MACA;AAAA,QACE,aAAa,OAAQ,CAAA,OAAA;AAAA,QACrB,gBAAgB,OAAQ,CAAA,cAAA;AAAA,OAC1B;AAAA,KACF,CAAA;AAEA,IAAQ,OAAA,MAAM,SAAS,IAAK,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,oBACJ,OAC4B,EAAA;AAC5B,IAAA,MAAM,QAAW,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,qCAAuC,EAAA;AAAA,MACvE,aAAa,OAAQ,CAAA,OAAA;AAAA,MACrB,gBAAgB,OAAQ,CAAA,cAAA;AAAA,KACzB,CAAA,CAAA;AAED,IAAQ,OAAA,MAAM,SAAS,IAAK,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,aACJ,OAC4B,EAAA;AAC5B,IAAA,MAAM,QAAW,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,kCAAoC,EAAA;AAAA,MACpE,aAAa,OAAQ,CAAA,OAAA;AAAA,MACrB,gBAAgB,OAAQ,CAAA,cAAA;AAAA,KACzB,CAAA,CAAA;AAED,IAAQ,OAAA,MAAM,SAAS,IAAK,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,eACJ,OAC4B,EAAA;AAC5B,IAAA,MAAM,QAAW,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,kCAAoC,EAAA;AAAA,MACpE,aAAa,OAAQ,CAAA,OAAA;AAAA,MACrB,gBAAgB,OAAQ,CAAA,cAAA;AAAA,KACzB,CAAA,CAAA;AAED,IAAQ,OAAA,MAAM,SAAS,IAAK,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,yBACJ,OAC8B,EAAA;AAC9B,IAAO,OAAA,MAAM,QAAQ,GAAI,CAAA;AAAA,MACvB,IAAA,CAAK,aAAa,OAAO,CAAA;AAAA,MACzB,IAAA,CAAK,eAAe,OAAO,CAAA;AAAA,MAC3B,IAAA,CAAK,oBAAoB,OAAO,CAAA;AAAA,MAChC,IAAA,CAAK,sBAAsB,OAAO,CAAA;AAAA,MAClC,IAAA,CAAK,6BAA6B,OAAO,CAAA;AAAA,KAC1C,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,MAAM,cACJ,cACyB,EAAA;AACzB,IAAA,MAAM,QAAW,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,CAA2B,uBAAA,CAAA,EAAA;AAAA,MAC3D,cAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAQ,OAAA,MAAM,SAAS,IAAK,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,eACJ,cACyC,EAAA;AACzC,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,MAAM,CAAsB,kBAAA,CAAA,EAAA,EAAE,gBAAgB,CAAA,CAAA;AAC1E,IAAQ,OAAA,MAAM,SAAS,IAAK,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,YACJ,CAAA,OAAA,EACA,cACuC,EAAA;AACvC,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,iBAAA,EAAoB,OAAO,CAAI,CAAA,EAAA;AAAA,MAC/D,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAQ,OAAA,MAAM,SAAS,IAAK,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,cACJ,CAAA,OAAA,EACA,cAC8B,EAAA;AAC9B,IAAA,MAAM,QAAW,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,oBAAsB,EAAA;AAAA,MACtD,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,MAAA;AAAA,QACR,IAAA,EAAM,IAAK,CAAA,SAAA,CAAU,OAAO,CAAA;AAAA,QAC5B,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAmB,EAAA;AAAA,OAChD;AAAA,MACA,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAI,IAAA,QAAA,CAAS,WAAW,GAAK,EAAA;AAC3B,MAAA,OAAO,EAAE,WAAA,EAAa,EAAC,EAAG,OAAO,CAAE,EAAA,CAAA;AAAA,KACrC;AACA,IAAM,MAAA,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAElC,IAAA,IAAI,YAAY,IAAM,EAAA;AACpB,MAAA,MAAM,IAAI,SAAA,CAAU,iBAAmB,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACpD;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,aACJ,CAAA,EAAA,EACA,cAC6B,EAAA;AAC7B,IAAA,IAAI,CAAC,EAAI,EAAA;AACP,MAAM,MAAA,IAAI,SAAU,CAAA,qBAAA,EAAuB,KAAS,CAAA,CAAA,CAAA;AAAA,KACtD;AACA,IAAM,MAAA,QAAA,GAAW,MAAM,IAAK,CAAA,KAAA,CAAM,gBAAgB,EAAE,CAAA,CAAA,EAAI,EAAE,cAAA,EAAgB,CAAA,CAAA;AAE1E,IAAM,MAAA,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAElC,IAAA,IAAI,YAAY,IAAM,EAAA;AACpB,MAAA,MAAM,IAAI,SAAA,CAAU,iBAAmB,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACpD;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,gBACJ,CAAA,UAAA,EACA,cAC6B,EAAA;AAC7B,IAAA,MAAM,QAAW,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,CAAgB,YAAA,CAAA,EAAA;AAAA,MAChD,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,MAAA;AAAA,QACR,IAAA,EAAM,IAAK,CAAA,SAAA,CAAU,UAAU,CAAA;AAAA,QAC/B,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAmB,EAAA;AAAA,OAChD;AAAA,MACA,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAM,MAAA,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAElC,IAAA,IAAI,YAAY,IAAM,EAAA;AACpB,MAAA,MAAM,IAAI,SAAA,CAAU,iBAAmB,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACpD;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,gBAAA,CACJ,EACA,EAAA,UAAA,EACA,cAC6B,EAAA;AAC7B,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,aAAA,EAAgB,EAAE,CAAI,CAAA,EAAA;AAAA,MACtD,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,MAAA;AAAA,QACR,IAAA,EAAM,IAAK,CAAA,SAAA,CAAU,UAAU,CAAA;AAAA,QAC/B,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAmB,EAAA;AAAA,OAChD;AAAA,MACA,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAM,MAAA,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAElC,IAAA,IAAI,YAAY,IAAM,EAAA;AACpB,MAAA,MAAM,IAAI,SAAA,CAAU,kBAAoB,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACrD;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,gBACJ,CAAA,EAAA,EACA,cACkB,EAAA;AAClB,IAAA,IAAI,CAAC,EAAI,EAAA;AACP,MAAM,MAAA,IAAI,SAAU,CAAA,qBAAA,EAAuB,KAAS,CAAA,CAAA,CAAA;AAAA,KACtD;AACA,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,aAAA,EAAgB,EAAE,CAAI,CAAA,EAAA;AAAA,MACtD,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,QAAA;AAAA,OACV;AAAA,MACA,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAA,MAAM,OAAO,MAAM,QAAA,CAAA;AACnB,IAAA,OAAO,IAAK,CAAA,EAAA,CAAA;AAAA,GACd;AAAA,EAEA,MAAM,mBAAA,CACJ,YACA,EAAA,MAAA,EACA,cAC6B,EAAA;AAC7B,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,aAAA,EAAgB,YAAY,CAAU,MAAA,CAAA,EAAA;AAAA,MACtE,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,MAAA;AAAA,QACR,IAAM,EAAA,IAAA,CAAK,SAAU,CAAA,EAAE,QAAQ,CAAA;AAAA,QAC/B,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAmB,EAAA;AAAA,OAChD;AAAA,MACA,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAM,MAAA,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAElC,IAAA,IAAI,YAAY,IAAM,EAAA;AACpB,MAAA,MAAM,IAAI,SAAA,CAAU,kBAAoB,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACrD;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,wBAAA,CACJ,YACA,EAAA,MAAA,EACA,cAC6B,EAAA;AAC7B,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,aAAA,EAAgB,YAAY,CAAU,MAAA,CAAA,EAAA;AAAA,MACtE,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,QAAA;AAAA,QACR,IAAM,EAAA,IAAA,CAAK,SAAU,CAAA,EAAE,QAAQ,CAAA;AAAA,QAC/B,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAmB,EAAA;AAAA,OAChD;AAAA,MACA,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAM,MAAA,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAElC,IAAA,IAAI,YAAY,IAAM,EAAA;AACpB,MAAA,MAAM,IAAI,SAAA,CAAU,kBAAoB,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACrD;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,oBAAA,CACJ,YACA,EAAA,MAAA,EACA,MACA,cACkB,EAAA;AAClB,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,aAAA,EAAgB,YAAY,CAAS,KAAA,CAAA,EAAA;AAAA,MACrE,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,MAAA;AAAA,QACR,MAAM,IAAK,CAAA,SAAA,CAAU,EAAE,MAAA,EAAQ,MAAM,CAAA;AAAA,QACrC,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAmB,EAAA;AAAA,OAChD;AAAA,MACA,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAA,OAAO,QAAS,CAAA,EAAA,CAAA;AAAA,GAClB;AAAA,EAEA,MAAM,aACJ,cAC4B,EAAA;AAC5B,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,MAAM,YAAc,EAAA,EAAE,gBAAgB,CAAA,CAAA;AAClE,IAAQ,OAAA,MAAM,SAAS,IAAK,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,WACJ,CAAA,EAAA,EACA,cAC2B,EAAA;AAC3B,IAAM,MAAA,QAAA,GAAW,MAAM,IAAK,CAAA,KAAA,CAAM,cAAc,EAAE,CAAA,CAAA,EAAI,EAAE,cAAA,EAAgB,CAAA,CAAA;AACxE,IAAQ,OAAA,MAAM,SAAS,IAAK,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,cACJ,CAAA,QAAA,EACA,cAC2B,EAAA;AAC3B,IAAA,MAAM,QAAW,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,CAAc,UAAA,CAAA,EAAA;AAAA,MAC9C,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,MAAA;AAAA,QACR,IAAA,EAAM,IAAK,CAAA,SAAA,CAAU,QAAQ,CAAA;AAAA,QAC7B,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAmB,EAAA;AAAA,OAChD;AAAA,MACA,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAQ,OAAA,MAAM,SAAS,IAAK,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,cAAA,CACJ,EACA,EAAA,QAAA,EACA,cAC2B,EAAA;AAC3B,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,WAAA,EAAc,EAAE,CAAI,CAAA,EAAA;AAAA,MACpD,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,MAAA;AAAA,QACR,IAAA,EAAM,IAAK,CAAA,SAAA,CAAU,QAAQ,CAAA;AAAA,QAC7B,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAmB,EAAA;AAAA,OAChD;AAAA,MACA,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAQ,OAAA,MAAM,SAAS,IAAK,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,MAAM,cACJ,CAAA,UAAA,EACA,cACkB,EAAA;AAClB,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,KAAM,CAAA,CAAA,WAAA,EAAc,UAAU,CAAI,CAAA,EAAA;AAAA,MAC5D,OAAA,EAAS,EAAE,MAAA,EAAQ,QAAS,EAAA;AAAA,MAC5B,cAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAA,OAAO,QAAS,CAAA,EAAA,CAAA;AAAA,GAClB;AAAA,EAEA,MAAc,UAA8B,GAAA;AAC1C,IAAO,OAAA,IAAA,CAAK,YAAa,CAAA,UAAA,CAAW,MAAM,CAAA,CAAA;AAAA,GAC5C;AAAA,EAEQ,KAAA,GAAQ,OACd,IAAA,EACA,IAKG,KAAA;AACH,IAAM,MAAA,EAAE,aAAa,OAAU,GAAA,IAAI,cAAe,EAAA,GAAI,QAAQ,EAAC,CAAA;AAC/D,IAAM,MAAA,KAAA,GAAQ,IAAK,CAAA,kBAAA,CAAmB,WAAW,CAAA,CAAA;AACjD,IAAA,IAAI,GAAM,GAAA,CAAA,EAAG,MAAM,IAAA,CAAK,YAAY,CAAA,EAClC,IAAK,CAAA,UAAA,CAAW,GAAG,CAAA,GAAI,IAAO,GAAA,CAAA,CAAA,EAAI,IAAI,CACxC,CAAA,CAAA,CAAA,CAAA;AACA,IAAA,IAAI,KAAO,EAAA;AACT,MAAA,GAAA,IAAO,IAAI,KAAK,CAAA,CAAA,CAAA;AAAA,KAClB;AAEA,IAAO,OAAA,IAAA,CAAK,QAAS,CAAA,KAAA,CAAM,GAAK,EAAA;AAAA,MAC9B,MAAQ,EAAA,KAAA;AAAA,MACR,GAAG,OAAA;AAAA,MACH,GAAI,gBAAgB,KAChB,GAAA;AAAA,QACE,OAAS,EAAA;AAAA,UACP,aAAA,EAAe,CAAU,OAAA,EAAA,cAAA,CAAe,KAAK,CAAA,CAAA;AAAA,UAC7C,GAAG,OAAQ,CAAA,OAAA;AAAA,SACb;AAAA,OAEF,GAAA,KAAA,CAAA;AAAA,KACL,CAAA,CAAA;AAAA,GACH,CAAA;AAAA,EAEQ,mBAAmB,MAAc,EAAA;AACvC,IAAA,IAAI,CAAC,MAAQ,EAAA;AACX,MAAO,OAAA,EAAA,CAAA;AAAA,KACT;AACA,IAAA,MAAM,UAAUC,uBAAO,CAAA,MAAA,EAAQ,OAAK,CAAC,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA;AAC/C,IAAO,OAAAC,mBAAA,CAAG,UAAU,OAAO,CAAA,CAAA;AAAA,GAC7B;AACF;;;;;"}
@@ -18,9 +18,13 @@ class QetaClient {
18
18
  this.discoveryApi = options.discoveryApi;
19
19
  }
20
20
  async getPosts(options, requestOptions) {
21
- const response = await this.fetch("/posts", {
22
- requestOptions,
23
- queryParams: options
21
+ const response = await this.fetch("/posts/query", {
22
+ reqInit: {
23
+ method: "POST",
24
+ body: JSON.stringify(options),
25
+ headers: { "Content-Type": "application/json" }
26
+ },
27
+ requestOptions
24
28
  });
25
29
  if (response.status === 403) {
26
30
  return { posts: [], total: 0 };
@@ -434,8 +438,12 @@ class QetaClient {
434
438
  return data;
435
439
  }
436
440
  async getAnswers(options, requestOptions) {
437
- const response = await this.fetch("/answers", {
438
- queryParams: options,
441
+ const response = await this.fetch("/answers/query", {
442
+ reqInit: {
443
+ method: "POST",
444
+ body: JSON.stringify(options),
445
+ headers: { "Content-Type": "application/json" }
446
+ },
439
447
  requestOptions
440
448
  });
441
449
  if (response.status === 403) {
@@ -624,8 +632,12 @@ class QetaClient {
624
632
  return await response.json();
625
633
  }
626
634
  async getCollections(options, requestOptions) {
627
- const response = await this.fetch("/collections", {
628
- queryParams: options,
635
+ const response = await this.fetch("/collections/query", {
636
+ reqInit: {
637
+ method: "POST",
638
+ body: JSON.stringify(options),
639
+ headers: { "Content-Type": "application/json" }
640
+ },
629
641
  requestOptions
630
642
  });
631
643
  if (response.status === 403) {
@@ -781,8 +793,13 @@ class QetaClient {
781
793
  }
782
794
  return this.fetchApi.fetch(url, {
783
795
  method: "GET",
784
- ...requestOptions?.token ? { headers: { Authorization: `Bearer ${requestOptions.token}` } } : void 0,
785
- ...reqInit
796
+ ...reqInit,
797
+ ...requestOptions?.token ? {
798
+ headers: {
799
+ Authorization: `Bearer ${requestOptions.token}`,
800
+ ...reqInit.headers
801
+ }
802
+ } : void 0
786
803
  });
787
804
  };
788
805
  getQueryParameters(params) {
@@ -1 +1 @@
1
- {"version":3,"file":"QetaClient.esm.js","sources":["../../src/api/QetaClient.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport {\n AIQuery,\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 AIStatusResponse,\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 options?: AIQuery,\n requestOptions?: RequestOptions,\n ): Promise<AIResponse | null> {\n const response = await this.fetch(`/ai/question/${questionId}`, {\n queryParams: options,\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 getAISummaryForArticle(\n articleId: string | number,\n options?: AIQuery,\n requestOptions?: RequestOptions,\n ): Promise<AIResponse | null> {\n const response = await this.fetch(`/ai/article/${articleId}`, {\n queryParams: options,\n requestOptions,\n });\n if (!response.ok) {\n return null;\n }\n return (await response.json()) as AIResponse;\n }\n\n async isAIEnabled(): Promise<AIStatusResponse> {\n const response = await this.fetch('/ai/status');\n if (!response.ok) {\n return {\n enabled: false,\n articleSummaries: false,\n existingQuestions: false,\n newQuestions: false,\n };\n }\n return (await response.json()) as AIStatusResponse;\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 rankPostInCollection(\n collectionId: number,\n postId: number,\n rank: 'top' | 'bottom' | 'up' | 'down',\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/collections/${collectionId}/rank`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify({ postId, rank }),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n return response.ok;\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 AIQuery,\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 AIStatusResponse,\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/query', {\n reqInit: {\n method: 'POST',\n body: JSON.stringify(options),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\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 options?: AIQuery,\n requestOptions?: RequestOptions,\n ): Promise<AIResponse | null> {\n const response = await this.fetch(`/ai/question/${questionId}`, {\n queryParams: options,\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 getAISummaryForArticle(\n articleId: string | number,\n options?: AIQuery,\n requestOptions?: RequestOptions,\n ): Promise<AIResponse | null> {\n const response = await this.fetch(`/ai/article/${articleId}`, {\n queryParams: options,\n requestOptions,\n });\n if (!response.ok) {\n return null;\n }\n return (await response.json()) as AIResponse;\n }\n\n async isAIEnabled(): Promise<AIStatusResponse> {\n const response = await this.fetch('/ai/status');\n if (!response.ok) {\n return {\n enabled: false,\n articleSummaries: false,\n existingQuestions: false,\n newQuestions: false,\n };\n }\n return (await response.json()) as AIStatusResponse;\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/query', {\n reqInit: {\n method: 'POST',\n body: JSON.stringify(options),\n headers: { 'Content-Type': 'application/json' },\n },\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/query', {\n reqInit: {\n method: 'POST',\n body: JSON.stringify(options),\n headers: { 'Content-Type': 'application/json' },\n },\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 rankPostInCollection(\n collectionId: number,\n postId: number,\n rank: 'top' | 'bottom' | 'up' | 'down',\n requestOptions?: RequestOptions,\n ): Promise<boolean> {\n const response = await this.fetch(`/collections/${collectionId}/rank`, {\n reqInit: {\n method: 'POST',\n body: JSON.stringify({ postId, rank }),\n headers: { 'Content-Type': 'application/json' },\n },\n requestOptions,\n });\n return response.ok;\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 ...reqInit,\n ...(requestOptions?.token\n ? {\n headers: {\n Authorization: `Bearer ${requestOptions.token}`,\n ...reqInit.headers,\n },\n }\n : undefined),\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/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "frontend",
8
8
  "backstage.io"
9
9
  ],
10
- "version": "3.9.1",
10
+ "version": "3.9.2",
11
11
  "main": "dist/index.cjs.js",
12
12
  "types": "dist/index.d.ts",
13
13
  "prepublishOnly": "yarn tsc && yarn build",