@drodil/backstage-plugin-qeta-common 3.24.3 → 3.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/QetaClient.cjs.js +4 -4
- package/dist/api/QetaClient.cjs.js.map +1 -1
- package/dist/api/QetaClient.esm.js +4 -4
- package/dist/api/QetaClient.esm.js.map +1 -1
- package/dist/index.cjs.js +1 -0
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.esm.js +1 -1
- package/dist/permissions.cjs.js +6 -0
- package/dist/permissions.cjs.js.map +1 -1
- package/dist/permissions.esm.js +6 -1
- package/dist/permissions.esm.js.map +1 -1
- package/package.json +9 -2
|
@@ -187,8 +187,8 @@ class QetaClient {
|
|
|
187
187
|
}
|
|
188
188
|
return await response.json();
|
|
189
189
|
}
|
|
190
|
-
async updateTag(
|
|
191
|
-
const response = await this.fetch(`/tags/${
|
|
190
|
+
async updateTag(id, description, requestOptions) {
|
|
191
|
+
const response = await this.fetch(`/tags/${id}`, {
|
|
192
192
|
requestOptions,
|
|
193
193
|
reqInit: {
|
|
194
194
|
method: "POST",
|
|
@@ -202,11 +202,11 @@ class QetaClient {
|
|
|
202
202
|
return await response.json();
|
|
203
203
|
}
|
|
204
204
|
async createTag(tag, description, requestOptions) {
|
|
205
|
-
const response = await this.fetch(`/tags
|
|
205
|
+
const response = await this.fetch(`/tags`, {
|
|
206
206
|
requestOptions,
|
|
207
207
|
reqInit: {
|
|
208
208
|
method: "PUT",
|
|
209
|
-
body: JSON.stringify({ description }),
|
|
209
|
+
body: JSON.stringify({ tag, description }),
|
|
210
210
|
headers: { "Content-Type": "application/json" }
|
|
211
211
|
}
|
|
212
212
|
});
|
|
@@ -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 SuggestionsQuery,\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 SuggestionsResponse,\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 posts', 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 post list', 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 create post', 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 comment post', data.errors);\n }\n\n return data;\n }\n\n async updatePostComment(\n questionId: number,\n id: number,\n content: string,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n const response = await this.fetch(`/posts/${questionId}/comments/${id}`, {\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 update post comment', 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 delete post comment', 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 post', 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\n if (response.status === 403) {\n return { tags: [], total: 0 };\n }\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 createTag(\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: 'PUT',\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 deleteTag(\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(`/tags/${id}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n const data = await response;\n return data.ok;\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\n if (response.status === 403) {\n return { users: [], total: 0 };\n }\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\n if (response.status === 403) {\n return { entities: [], total: 0 };\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 vote post', 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 vote post', 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 delete post vote', 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 favorite', 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 unfavorite', 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 post answer', 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 comment answer', data.errors);\n }\n\n return data;\n }\n\n async updateAnswerComment(\n questionId: number,\n answerId: number,\n id: number,\n content: string,\n requestOptions?: RequestOptions,\n ): Promise<Answer> {\n const response = await this.fetch(\n `/posts/${questionId}/answers/${answerId}/comments/${id}`,\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 update comment', 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 delete comment', 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 vote', 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 vote', 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 delete vote', 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 post', 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 update answer', 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 get answers', 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 get answer', 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\n if (response.status === 403) {\n return { collections: [], count: 0 };\n }\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 if (response.status === 403) {\n return { tags: [], count: 0 };\n }\n\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 if (response.status === 403) {\n return { entityRefs: [], count: 0 };\n }\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 if (response.status === 403) {\n return { followedUserRefs: [], count: 0 };\n }\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\n if (response.status === 403) {\n return { ranking: [] };\n }\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 if (response.status === 403) {\n return { ranking: [] };\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 if (response.status === 403) {\n return { ranking: [] };\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 if (response.status === 403) {\n return { ranking: [] };\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 if (response.status === 403) {\n return { ranking: [] };\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 if (response.status === 403) {\n return { impact: 0, lastWeekImpact: 0 };\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 if (response.status === 403) {\n return {\n statistics: [],\n summary: {\n totalAnswers: 0,\n totalArticles: 0,\n totalComments: 0,\n totalQuestions: 0,\n totalTags: 0,\n totalViews: 0,\n totalVotes: 0,\n totalUsers: 0,\n date: new Date(),\n },\n };\n }\n\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 if (response.status === 403) {\n return {\n statistics: [],\n summary: {\n totalAnswers: 0,\n totalArticles: 0,\n totalComments: 0,\n totalQuestions: 0,\n totalViews: 0,\n totalVotes: 0,\n totalFollowers: 0,\n date: new Date(),\n },\n };\n }\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 create collection', 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 collection', 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 add post to collection', 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 remove post from collection', 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 if (response.status === 403) {\n return { templates: [], total: 0 };\n }\n\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 async getSuggestions(\n options?: SuggestionsQuery,\n requestOptions?: RequestOptions,\n ): Promise<SuggestionsResponse> {\n const response = await this.fetch('/suggestions', {\n queryParams: options,\n requestOptions,\n });\n return (await response.json()) as SuggestionsResponse;\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":"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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 SuggestionsQuery,\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 SuggestionsResponse,\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 posts', 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 post list', 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 create post', 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 comment post', data.errors);\n }\n\n return data;\n }\n\n async updatePostComment(\n questionId: number,\n id: number,\n content: string,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n const response = await this.fetch(`/posts/${questionId}/comments/${id}`, {\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 update post comment', 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 delete post comment', 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 post', 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\n if (response.status === 403) {\n return { tags: [], total: 0 };\n }\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 id: number,\n description?: string,\n requestOptions?: RequestOptions,\n ): Promise<TagResponse | null> {\n const response = await this.fetch(`/tags/${id}`, {\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 createTag(\n tag: string,\n description?: string,\n requestOptions?: RequestOptions,\n ): Promise<TagResponse | null> {\n const response = await this.fetch(`/tags`, {\n requestOptions,\n reqInit: {\n method: 'PUT',\n body: JSON.stringify({ tag, 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 deleteTag(\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(`/tags/${id}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n const data = await response;\n return data.ok;\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\n if (response.status === 403) {\n return { users: [], total: 0 };\n }\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\n if (response.status === 403) {\n return { entities: [], total: 0 };\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 vote post', 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 vote post', 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 delete post vote', 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 favorite', 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 unfavorite', 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 post answer', 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 comment answer', data.errors);\n }\n\n return data;\n }\n\n async updateAnswerComment(\n questionId: number,\n answerId: number,\n id: number,\n content: string,\n requestOptions?: RequestOptions,\n ): Promise<Answer> {\n const response = await this.fetch(\n `/posts/${questionId}/answers/${answerId}/comments/${id}`,\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 update comment', 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 delete comment', 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 vote', 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 vote', 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 delete vote', 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 post', 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 update answer', 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 get answers', 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 get answer', 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\n if (response.status === 403) {\n return { collections: [], count: 0 };\n }\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 if (response.status === 403) {\n return { tags: [], count: 0 };\n }\n\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 if (response.status === 403) {\n return { entityRefs: [], count: 0 };\n }\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 if (response.status === 403) {\n return { followedUserRefs: [], count: 0 };\n }\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\n if (response.status === 403) {\n return { ranking: [] };\n }\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 if (response.status === 403) {\n return { ranking: [] };\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 if (response.status === 403) {\n return { ranking: [] };\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 if (response.status === 403) {\n return { ranking: [] };\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 if (response.status === 403) {\n return { ranking: [] };\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 if (response.status === 403) {\n return { impact: 0, lastWeekImpact: 0 };\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 if (response.status === 403) {\n return {\n statistics: [],\n summary: {\n totalAnswers: 0,\n totalArticles: 0,\n totalComments: 0,\n totalQuestions: 0,\n totalTags: 0,\n totalViews: 0,\n totalVotes: 0,\n totalUsers: 0,\n date: new Date(),\n },\n };\n }\n\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 if (response.status === 403) {\n return {\n statistics: [],\n summary: {\n totalAnswers: 0,\n totalArticles: 0,\n totalComments: 0,\n totalQuestions: 0,\n totalViews: 0,\n totalVotes: 0,\n totalFollowers: 0,\n date: new Date(),\n },\n };\n }\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 create collection', 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 collection', 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 add post to collection', 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 remove post from collection', 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 if (response.status === 403) {\n return { templates: [], total: 0 };\n }\n\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 async getSuggestions(\n options?: SuggestionsQuery,\n requestOptions?: RequestOptions,\n ): Promise<SuggestionsResponse> {\n const response = await this.fetch('/suggestions', {\n queryParams: options,\n requestOptions,\n });\n return (await response.json()) as SuggestionsResponse;\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":"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"}
|
|
@@ -179,8 +179,8 @@ class QetaClient {
|
|
|
179
179
|
}
|
|
180
180
|
return await response.json();
|
|
181
181
|
}
|
|
182
|
-
async updateTag(
|
|
183
|
-
const response = await this.fetch(`/tags/${
|
|
182
|
+
async updateTag(id, description, requestOptions) {
|
|
183
|
+
const response = await this.fetch(`/tags/${id}`, {
|
|
184
184
|
requestOptions,
|
|
185
185
|
reqInit: {
|
|
186
186
|
method: "POST",
|
|
@@ -194,11 +194,11 @@ class QetaClient {
|
|
|
194
194
|
return await response.json();
|
|
195
195
|
}
|
|
196
196
|
async createTag(tag, description, requestOptions) {
|
|
197
|
-
const response = await this.fetch(`/tags
|
|
197
|
+
const response = await this.fetch(`/tags`, {
|
|
198
198
|
requestOptions,
|
|
199
199
|
reqInit: {
|
|
200
200
|
method: "PUT",
|
|
201
|
-
body: JSON.stringify({ description }),
|
|
201
|
+
body: JSON.stringify({ tag, description }),
|
|
202
202
|
headers: { "Content-Type": "application/json" }
|
|
203
203
|
}
|
|
204
204
|
});
|
|
@@ -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 SuggestionsQuery,\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 SuggestionsResponse,\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 posts', 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 post list', 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 create post', 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 comment post', data.errors);\n }\n\n return data;\n }\n\n async updatePostComment(\n questionId: number,\n id: number,\n content: string,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n const response = await this.fetch(`/posts/${questionId}/comments/${id}`, {\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 update post comment', 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 delete post comment', 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 post', 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\n if (response.status === 403) {\n return { tags: [], total: 0 };\n }\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 createTag(\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: 'PUT',\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 deleteTag(\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(`/tags/${id}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n const data = await response;\n return data.ok;\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\n if (response.status === 403) {\n return { users: [], total: 0 };\n }\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\n if (response.status === 403) {\n return { entities: [], total: 0 };\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 vote post', 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 vote post', 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 delete post vote', 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 favorite', 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 unfavorite', 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 post answer', 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 comment answer', data.errors);\n }\n\n return data;\n }\n\n async updateAnswerComment(\n questionId: number,\n answerId: number,\n id: number,\n content: string,\n requestOptions?: RequestOptions,\n ): Promise<Answer> {\n const response = await this.fetch(\n `/posts/${questionId}/answers/${answerId}/comments/${id}`,\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 update comment', 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 delete comment', 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 vote', 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 vote', 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 delete vote', 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 post', 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 update answer', 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 get answers', 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 get answer', 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\n if (response.status === 403) {\n return { collections: [], count: 0 };\n }\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 if (response.status === 403) {\n return { tags: [], count: 0 };\n }\n\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 if (response.status === 403) {\n return { entityRefs: [], count: 0 };\n }\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 if (response.status === 403) {\n return { followedUserRefs: [], count: 0 };\n }\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\n if (response.status === 403) {\n return { ranking: [] };\n }\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 if (response.status === 403) {\n return { ranking: [] };\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 if (response.status === 403) {\n return { ranking: [] };\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 if (response.status === 403) {\n return { ranking: [] };\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 if (response.status === 403) {\n return { ranking: [] };\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 if (response.status === 403) {\n return { impact: 0, lastWeekImpact: 0 };\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 if (response.status === 403) {\n return {\n statistics: [],\n summary: {\n totalAnswers: 0,\n totalArticles: 0,\n totalComments: 0,\n totalQuestions: 0,\n totalTags: 0,\n totalViews: 0,\n totalVotes: 0,\n totalUsers: 0,\n date: new Date(),\n },\n };\n }\n\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 if (response.status === 403) {\n return {\n statistics: [],\n summary: {\n totalAnswers: 0,\n totalArticles: 0,\n totalComments: 0,\n totalQuestions: 0,\n totalViews: 0,\n totalVotes: 0,\n totalFollowers: 0,\n date: new Date(),\n },\n };\n }\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 create collection', 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 collection', 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 add post to collection', 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 remove post from collection', 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 if (response.status === 403) {\n return { templates: [], total: 0 };\n }\n\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 async getSuggestions(\n options?: SuggestionsQuery,\n requestOptions?: RequestOptions,\n ): Promise<SuggestionsResponse> {\n const response = await this.fetch('/suggestions', {\n queryParams: options,\n requestOptions,\n });\n return (await response.json()) as SuggestionsResponse;\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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"}
|
|
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 SuggestionsQuery,\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 SuggestionsResponse,\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 posts', 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 post list', 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 create post', 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 comment post', data.errors);\n }\n\n return data;\n }\n\n async updatePostComment(\n questionId: number,\n id: number,\n content: string,\n requestOptions?: RequestOptions,\n ): Promise<Post> {\n const response = await this.fetch(`/posts/${questionId}/comments/${id}`, {\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 update post comment', 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 delete post comment', 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 post', 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\n if (response.status === 403) {\n return { tags: [], total: 0 };\n }\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 id: number,\n description?: string,\n requestOptions?: RequestOptions,\n ): Promise<TagResponse | null> {\n const response = await this.fetch(`/tags/${id}`, {\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 createTag(\n tag: string,\n description?: string,\n requestOptions?: RequestOptions,\n ): Promise<TagResponse | null> {\n const response = await this.fetch(`/tags`, {\n requestOptions,\n reqInit: {\n method: 'PUT',\n body: JSON.stringify({ tag, 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 deleteTag(\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(`/tags/${id}`, {\n reqInit: {\n method: 'DELETE',\n },\n requestOptions,\n });\n const data = await response;\n return data.ok;\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\n if (response.status === 403) {\n return { users: [], total: 0 };\n }\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\n if (response.status === 403) {\n return { entities: [], total: 0 };\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 vote post', 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 vote post', 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 delete post vote', 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 favorite', 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 unfavorite', 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 post answer', 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 comment answer', data.errors);\n }\n\n return data;\n }\n\n async updateAnswerComment(\n questionId: number,\n answerId: number,\n id: number,\n content: string,\n requestOptions?: RequestOptions,\n ): Promise<Answer> {\n const response = await this.fetch(\n `/posts/${questionId}/answers/${answerId}/comments/${id}`,\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 update comment', 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 delete comment', 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 vote', 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 vote', 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 delete vote', 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 post', 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 update answer', 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 get answers', 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 get answer', 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\n if (response.status === 403) {\n return { collections: [], count: 0 };\n }\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 if (response.status === 403) {\n return { tags: [], count: 0 };\n }\n\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 if (response.status === 403) {\n return { entityRefs: [], count: 0 };\n }\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 if (response.status === 403) {\n return { followedUserRefs: [], count: 0 };\n }\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\n if (response.status === 403) {\n return { ranking: [] };\n }\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 if (response.status === 403) {\n return { ranking: [] };\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 if (response.status === 403) {\n return { ranking: [] };\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 if (response.status === 403) {\n return { ranking: [] };\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 if (response.status === 403) {\n return { ranking: [] };\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 if (response.status === 403) {\n return { impact: 0, lastWeekImpact: 0 };\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 if (response.status === 403) {\n return {\n statistics: [],\n summary: {\n totalAnswers: 0,\n totalArticles: 0,\n totalComments: 0,\n totalQuestions: 0,\n totalTags: 0,\n totalViews: 0,\n totalVotes: 0,\n totalUsers: 0,\n date: new Date(),\n },\n };\n }\n\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 if (response.status === 403) {\n return {\n statistics: [],\n summary: {\n totalAnswers: 0,\n totalArticles: 0,\n totalComments: 0,\n totalQuestions: 0,\n totalViews: 0,\n totalVotes: 0,\n totalFollowers: 0,\n date: new Date(),\n },\n };\n }\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 create collection', 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 collection', 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 add post to collection', 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 remove post from collection', 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 if (response.status === 403) {\n return { templates: [], total: 0 };\n }\n\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 async getSuggestions(\n options?: SuggestionsQuery,\n requestOptions?: RequestOptions,\n ): Promise<SuggestionsResponse> {\n const response = await this.fetch('/suggestions', {\n queryParams: options,\n requestOptions,\n });\n return (await response.json()) as SuggestionsResponse;\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/dist/index.cjs.js
CHANGED
|
@@ -31,6 +31,7 @@ exports.qetaEditCollectionPermission = permissions.qetaEditCollectionPermission;
|
|
|
31
31
|
exports.qetaEditCommentPermission = permissions.qetaEditCommentPermission;
|
|
32
32
|
exports.qetaEditPostPermission = permissions.qetaEditPostPermission;
|
|
33
33
|
exports.qetaEditTagPermission = permissions.qetaEditTagPermission;
|
|
34
|
+
exports.qetaModeratePermission = permissions.qetaModeratePermission;
|
|
34
35
|
exports.qetaPermissions = permissions.qetaPermissions;
|
|
35
36
|
exports.qetaPostPermissions = permissions.qetaPostPermissions;
|
|
36
37
|
exports.qetaReadAnswerPermission = permissions.qetaReadAnswerPermission;
|
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { IndexableDocument } from '@backstage/plugin-search-common';
|
|
|
3
3
|
import { ErrorObject } from 'ajv';
|
|
4
4
|
import { PostType as PostType$1, PostsResponse as PostsResponse$1, PostRequest as PostRequest$1, PostResponse as PostResponse$1, AIResponse as AIResponse$1, AIStatusResponse as AIStatusResponse$1, TagsResponse as TagsResponse$1, TagResponse as TagResponse$1, EntitiesResponse as EntitiesResponse$1, EntityResponse as EntityResponse$1, UsersResponse as UsersResponse$1, StatisticsRequestParameters as StatisticsRequestParameters$1, StatisticResponse as StatisticResponse$1, AnswerResponse as AnswerResponse$1, AnswerRequest as AnswerRequest$1, AnswerResponseBody as AnswerResponseBody$1, AttachmentResponseBody as AttachmentResponseBody$1, AnswersResponse as AnswersResponse$1, UserCollectionsResponse as UserCollectionsResponse$1, UserTagsResponse as UserTagsResponse$1, UserEntitiesResponse as UserEntitiesResponse$1, UserUsersResponse as UserUsersResponse$1, ImpactResponse as ImpactResponse$1, StatisticsResponse as StatisticsResponse$1, GlobalStat as GlobalStat$1, UserStat as UserStat$1, CollectionsResponse as CollectionsResponse$1, CollectionResponse as CollectionResponse$1, CollectionRequest as CollectionRequest$1, TemplatesResponse as TemplatesResponse$1, TemplateResponse as TemplateResponse$1, TemplateRequest as TemplateRequest$1, SuggestionsResponse as SuggestionsResponse$1, Post as Post$1, Answer as Answer$1 } from '@drodil/backstage-plugin-qeta-common';
|
|
5
5
|
|
|
6
|
+
declare const qetaModeratePermission: BasicPermission;
|
|
6
7
|
declare const qetaCreatePostPermission: BasicPermission;
|
|
7
8
|
declare const qetaCreateAnswerPermission: BasicPermission;
|
|
8
9
|
declare const qetaCreateCommentPermission: BasicPermission;
|
|
@@ -101,6 +102,7 @@ interface AnswersQuery extends PaginatedQuery {
|
|
|
101
102
|
}
|
|
102
103
|
interface TagsQuery extends PaginatedQuery {
|
|
103
104
|
orderBy?: 'tag' | 'postsCount' | 'followersCount';
|
|
105
|
+
checkAccess?: boolean;
|
|
104
106
|
}
|
|
105
107
|
interface UsersQuery extends PaginatedQuery {
|
|
106
108
|
orderBy?: 'userRef';
|
|
@@ -132,7 +134,7 @@ interface QetaApi {
|
|
|
132
134
|
getTags(options?: TagsQuery, requestOptions?: RequestOptions): Promise<TagsResponse$1>;
|
|
133
135
|
getTag(tag: string, requestOptions?: RequestOptions): Promise<TagResponse$1 | null>;
|
|
134
136
|
createTag(tag: string, description?: string, requestOptions?: RequestOptions): Promise<TagResponse$1 | null>;
|
|
135
|
-
updateTag(
|
|
137
|
+
updateTag(id: number, description?: string, requestOptions?: RequestOptions): Promise<TagResponse$1 | null>;
|
|
136
138
|
getEntities(options?: EntitiesQuery, requestOptions?: RequestOptions): Promise<EntitiesResponse$1>;
|
|
137
139
|
getEntity(entityRef: string, requestOptions?: RequestOptions): Promise<EntityResponse$1 | null>;
|
|
138
140
|
getUsers(options?: UsersQuery, requestOptions?: RequestOptions): Promise<UsersResponse$1>;
|
|
@@ -223,7 +225,7 @@ declare class QetaClient implements QetaApi {
|
|
|
223
225
|
isAIEnabled(): Promise<AIStatusResponse$1>;
|
|
224
226
|
getTags(options?: TagsQuery, requestOptions?: RequestOptions): Promise<TagsResponse$1>;
|
|
225
227
|
getTag(tag: string, requestOptions?: RequestOptions): Promise<TagResponse$1 | null>;
|
|
226
|
-
updateTag(
|
|
228
|
+
updateTag(id: number, description?: string, requestOptions?: RequestOptions): Promise<TagResponse$1 | null>;
|
|
227
229
|
createTag(tag: string, description?: string, requestOptions?: RequestOptions): Promise<TagResponse$1 | null>;
|
|
228
230
|
deleteTag(id?: number, requestOptions?: RequestOptions): Promise<boolean>;
|
|
229
231
|
getUsers(options?: UsersQuery, requestOptions?: RequestOptions): Promise<UsersResponse$1>;
|
|
@@ -639,4 +641,4 @@ declare const findUserMentions: (text: string) => string[];
|
|
|
639
641
|
declare const findTagMentions: (text: string) => string[];
|
|
640
642
|
declare const removeMarkdownFormatting: (text: string) => string;
|
|
641
643
|
|
|
642
|
-
export { type AIQuery, type AIResponse, type AIStatusResponse, ANSWER_RESOURCE_TYPE, type Answer, type AnswerFilter, type AnswerRequest, type AnswerResponse, type AnswerResponseBody, type AnswersQuery, type AnswersResponse, type AnswersResponseBody, type Article, type Attachment, type AttachmentResponseBody, COLLECTION_RESOUCE_TYPE, COMMENT_RESOURCE_TYPE, type Collection, type CollectionEntity, type CollectionFilter, type CollectionRequest, type CollectionResponse, type CollectionResponseBody, type CollectionsQuery, type CollectionsResponse, type CollectionsResponseBody, type Comment, type CommentFilter, type EntitiesQuery, type EntitiesResponse, type EntityResponse, type GlobalStat, type ImpactResponse, type NewArticleSuggestion, type NewQuestionSuggestion, type NoCorrectAnswerSuggestion, POST_RESOURCE_TYPE, type PaginatedQuery, type Post, type PostAnswerEntity, type PostFilter, type PostRequest, type PostResponse, type PostResponseBody, type PostType, type PostsQuery, type PostsResponse, type PostsResponseBody, type QetaAnswerStatsSignal, type QetaApi, QetaClient, type QetaCollectionDocument, type QetaEntity, type QetaIdEntity, type QetaPostDocument, type QetaPostsStatsSignal, type QetaSearchDocument, type QetaSignal, type Question, type RequestOptions, type Stat, type Statistic, type StatisticResponse, type StatisticsOptions, type StatisticsRequestParameters, type StatisticsResponse, type Suggestion, type SuggestionType, type SuggestionsQuery, type SuggestionsResponse, TAGS_REGEX, TAG_RESOURCE_TYPE, type TagFilter, type TagResponse, type TagsQuery, type TagsResponse, type Template, type TemplateRequest, type TemplateResponse, type TemplatesResponse, type UserCollectionsResponse, type UserEntitiesResponse, type UserResponse, type UserStat, type UserTagsResponse, type UserUsersResponse, type UsersQuery, type UsersResponse, type Vote, filterTags, findTagMentions, findUserMentions, isQetaPermission, isValidTag, qetaAnswerPermissions, qetaCollectionPermissions, qetaCommentPermissions, qetaCreateAnswerPermission, qetaCreateCollectionPermission, qetaCreateCommentPermission, qetaCreatePostPermission, qetaCreateTagPermission, qetaDeleteAnswerPermission, qetaDeleteCollectionPermission, qetaDeleteCommentPermission, qetaDeletePostPermission, qetaDeleteTagPermission, qetaEditAnswerPermission, qetaEditCollectionPermission, qetaEditCommentPermission, qetaEditPostPermission, qetaEditTagPermission, qetaPermissions, qetaPostPermissions, qetaReadAnswerPermission, qetaReadCollectionPermission, qetaReadCommentPermission, qetaReadPostPermission, qetaReadTagPermission, qetaTagPermissions, removeMarkdownFormatting, truncate };
|
|
644
|
+
export { type AIQuery, type AIResponse, type AIStatusResponse, ANSWER_RESOURCE_TYPE, type Answer, type AnswerFilter, type AnswerRequest, type AnswerResponse, type AnswerResponseBody, type AnswersQuery, type AnswersResponse, type AnswersResponseBody, type Article, type Attachment, type AttachmentResponseBody, COLLECTION_RESOUCE_TYPE, COMMENT_RESOURCE_TYPE, type Collection, type CollectionEntity, type CollectionFilter, type CollectionRequest, type CollectionResponse, type CollectionResponseBody, type CollectionsQuery, type CollectionsResponse, type CollectionsResponseBody, type Comment, type CommentFilter, type EntitiesQuery, type EntitiesResponse, type EntityResponse, type GlobalStat, type ImpactResponse, type NewArticleSuggestion, type NewQuestionSuggestion, type NoCorrectAnswerSuggestion, POST_RESOURCE_TYPE, type PaginatedQuery, type Post, type PostAnswerEntity, type PostFilter, type PostRequest, type PostResponse, type PostResponseBody, type PostType, type PostsQuery, type PostsResponse, type PostsResponseBody, type QetaAnswerStatsSignal, type QetaApi, QetaClient, type QetaCollectionDocument, type QetaEntity, type QetaIdEntity, type QetaPostDocument, type QetaPostsStatsSignal, type QetaSearchDocument, type QetaSignal, type Question, type RequestOptions, type Stat, type Statistic, type StatisticResponse, type StatisticsOptions, type StatisticsRequestParameters, type StatisticsResponse, type Suggestion, type SuggestionType, type SuggestionsQuery, type SuggestionsResponse, TAGS_REGEX, TAG_RESOURCE_TYPE, type TagFilter, type TagResponse, type TagsQuery, type TagsResponse, type Template, type TemplateRequest, type TemplateResponse, type TemplatesResponse, type UserCollectionsResponse, type UserEntitiesResponse, type UserResponse, type UserStat, type UserTagsResponse, type UserUsersResponse, type UsersQuery, type UsersResponse, type Vote, filterTags, findTagMentions, findUserMentions, isQetaPermission, isValidTag, qetaAnswerPermissions, qetaCollectionPermissions, qetaCommentPermissions, qetaCreateAnswerPermission, qetaCreateCollectionPermission, qetaCreateCommentPermission, qetaCreatePostPermission, qetaCreateTagPermission, qetaDeleteAnswerPermission, qetaDeleteCollectionPermission, qetaDeleteCommentPermission, qetaDeletePostPermission, qetaDeleteTagPermission, qetaEditAnswerPermission, qetaEditCollectionPermission, qetaEditCommentPermission, qetaEditPostPermission, qetaEditTagPermission, qetaModeratePermission, qetaPermissions, qetaPostPermissions, qetaReadAnswerPermission, qetaReadCollectionPermission, qetaReadCommentPermission, qetaReadPostPermission, qetaReadTagPermission, qetaTagPermissions, removeMarkdownFormatting, truncate };
|
package/dist/index.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { ANSWER_RESOURCE_TYPE, COLLECTION_RESOUCE_TYPE, COMMENT_RESOURCE_TYPE, POST_RESOURCE_TYPE, TAG_RESOURCE_TYPE, isQetaPermission, qetaAnswerPermissions, qetaCollectionPermissions, qetaCommentPermissions, qetaCreateAnswerPermission, qetaCreateCollectionPermission, qetaCreateCommentPermission, qetaCreatePostPermission, qetaCreateTagPermission, qetaDeleteAnswerPermission, qetaDeleteCollectionPermission, qetaDeleteCommentPermission, qetaDeletePostPermission, qetaDeleteTagPermission, qetaEditAnswerPermission, qetaEditCollectionPermission, qetaEditCommentPermission, qetaEditPostPermission, qetaEditTagPermission, qetaPermissions, qetaPostPermissions, qetaReadAnswerPermission, qetaReadCollectionPermission, qetaReadCommentPermission, qetaReadPostPermission, qetaReadTagPermission, qetaTagPermissions } from './permissions.esm.js';
|
|
1
|
+
export { ANSWER_RESOURCE_TYPE, COLLECTION_RESOUCE_TYPE, COMMENT_RESOURCE_TYPE, POST_RESOURCE_TYPE, TAG_RESOURCE_TYPE, isQetaPermission, qetaAnswerPermissions, qetaCollectionPermissions, qetaCommentPermissions, qetaCreateAnswerPermission, qetaCreateCollectionPermission, qetaCreateCommentPermission, qetaCreatePostPermission, qetaCreateTagPermission, qetaDeleteAnswerPermission, qetaDeleteCollectionPermission, qetaDeleteCommentPermission, qetaDeletePostPermission, qetaDeleteTagPermission, qetaEditAnswerPermission, qetaEditCollectionPermission, qetaEditCommentPermission, qetaEditPostPermission, qetaEditTagPermission, qetaModeratePermission, qetaPermissions, qetaPostPermissions, qetaReadAnswerPermission, qetaReadCollectionPermission, qetaReadCommentPermission, qetaReadPostPermission, qetaReadTagPermission, qetaTagPermissions } from './permissions.esm.js';
|
|
2
2
|
export { TAGS_REGEX, filterTags, isValidTag } from './tags.esm.js';
|
|
3
3
|
export { findTagMentions, findUserMentions, removeMarkdownFormatting, truncate } from './utils.esm.js';
|
|
4
4
|
export { QetaClient } from './api/QetaClient.esm.js';
|
package/dist/permissions.cjs.js
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
var pluginPermissionCommon = require('@backstage/plugin-permission-common');
|
|
4
4
|
|
|
5
|
+
const qetaModeratePermission = pluginPermissionCommon.createPermission({
|
|
6
|
+
name: "qeta.moderate",
|
|
7
|
+
attributes: {}
|
|
8
|
+
});
|
|
5
9
|
const qetaCreatePostPermission = pluginPermissionCommon.createPermission({
|
|
6
10
|
name: "qeta.create.post",
|
|
7
11
|
attributes: { action: "create" }
|
|
@@ -103,6 +107,7 @@ const qetaDeleteCollectionPermission = pluginPermissionCommon.createPermission({
|
|
|
103
107
|
resourceType: COLLECTION_RESOUCE_TYPE
|
|
104
108
|
});
|
|
105
109
|
const qetaPermissions = [
|
|
110
|
+
qetaModeratePermission,
|
|
106
111
|
qetaReadPostPermission,
|
|
107
112
|
qetaCreatePostPermission,
|
|
108
113
|
qetaCreateAnswerPermission,
|
|
@@ -182,6 +187,7 @@ exports.qetaEditCollectionPermission = qetaEditCollectionPermission;
|
|
|
182
187
|
exports.qetaEditCommentPermission = qetaEditCommentPermission;
|
|
183
188
|
exports.qetaEditPostPermission = qetaEditPostPermission;
|
|
184
189
|
exports.qetaEditTagPermission = qetaEditTagPermission;
|
|
190
|
+
exports.qetaModeratePermission = qetaModeratePermission;
|
|
185
191
|
exports.qetaPermissions = qetaPermissions;
|
|
186
192
|
exports.qetaPostPermissions = qetaPostPermissions;
|
|
187
193
|
exports.qetaReadAnswerPermission = qetaReadAnswerPermission;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.cjs.js","sources":["../src/permissions.ts"],"sourcesContent":["import {\n BasicPermission,\n createPermission,\n isPermission,\n ResourcePermission,\n} from '@backstage/plugin-permission-common';\n\nexport const qetaCreatePostPermission = createPermission({\n name: 'qeta.create.post',\n attributes: { action: 'create' },\n});\n\nexport const qetaCreateAnswerPermission = createPermission({\n name: 'qeta.create.answer',\n attributes: { action: 'create' },\n});\n\nexport const qetaCreateCommentPermission = createPermission({\n name: 'qeta.create.comment',\n attributes: { action: 'create' },\n});\n\nexport const POST_RESOURCE_TYPE = 'post';\n\nexport const qetaReadPostPermission = createPermission({\n name: 'qeta.read.post',\n attributes: { action: 'read' },\n resourceType: POST_RESOURCE_TYPE,\n});\n\nexport const qetaEditPostPermission = createPermission({\n name: 'qeta.edit.post',\n attributes: { action: 'update' },\n resourceType: POST_RESOURCE_TYPE,\n});\n\nexport const qetaDeletePostPermission = createPermission({\n name: 'qeta.delete.post',\n attributes: { action: 'delete' },\n resourceType: POST_RESOURCE_TYPE,\n});\n\nexport const ANSWER_RESOURCE_TYPE = 'answer';\n\nexport const qetaReadAnswerPermission = createPermission({\n name: 'qeta.read.answer',\n attributes: { action: 'read' },\n resourceType: ANSWER_RESOURCE_TYPE,\n});\nexport const qetaEditAnswerPermission = createPermission({\n name: 'qeta.edit.answer',\n attributes: { action: 'update' },\n resourceType: ANSWER_RESOURCE_TYPE,\n});\n\nexport const qetaDeleteAnswerPermission = createPermission({\n name: 'qeta.delete.answer',\n attributes: { action: 'delete' },\n resourceType: ANSWER_RESOURCE_TYPE,\n});\n\nexport const COMMENT_RESOURCE_TYPE = 'comment';\n\nexport const qetaReadCommentPermission = createPermission({\n name: 'qeta.read.comment',\n attributes: { action: 'read' },\n resourceType: COMMENT_RESOURCE_TYPE,\n});\nexport const qetaEditCommentPermission = createPermission({\n name: 'qeta.edit.comment',\n attributes: { action: 'update' },\n resourceType: COMMENT_RESOURCE_TYPE,\n});\n\nexport const qetaDeleteCommentPermission = createPermission({\n name: 'qeta.delete.comment',\n attributes: { action: 'delete' },\n resourceType: COMMENT_RESOURCE_TYPE,\n});\n\nexport const TAG_RESOURCE_TYPE = 'tag';\n\nexport const qetaCreateTagPermission = createPermission({\n name: 'qeta.create.tag',\n attributes: { action: 'create' },\n});\nexport const qetaReadTagPermission = createPermission({\n name: 'qeta.read.tag',\n attributes: { action: 'read' },\n resourceType: TAG_RESOURCE_TYPE,\n});\nexport const qetaEditTagPermission = createPermission({\n name: 'qeta.edit.tag',\n attributes: { action: 'update' },\n resourceType: TAG_RESOURCE_TYPE,\n});\nexport const qetaDeleteTagPermission = createPermission({\n name: 'qeta.delete.tag',\n attributes: { action: 'delete' },\n resourceType: TAG_RESOURCE_TYPE,\n});\n\nexport const COLLECTION_RESOUCE_TYPE = 'collection';\n\nexport const qetaReadCollectionPermission = createPermission({\n name: 'qeta.read.collection',\n attributes: { action: 'read' },\n resourceType: COLLECTION_RESOUCE_TYPE,\n});\nexport const qetaCreateCollectionPermission = createPermission({\n name: 'qeta.create.collection',\n attributes: { action: 'create' },\n});\nexport const qetaEditCollectionPermission = createPermission({\n name: 'qeta.edit.collection',\n attributes: { action: 'update' },\n resourceType: COLLECTION_RESOUCE_TYPE,\n});\nexport const qetaDeleteCollectionPermission = createPermission({\n name: 'qeta.delete.collection',\n attributes: { action: 'delete' },\n resourceType: COLLECTION_RESOUCE_TYPE,\n});\n\nexport const qetaPermissions = [\n qetaReadPostPermission,\n qetaCreatePostPermission,\n qetaCreateAnswerPermission,\n qetaEditPostPermission,\n qetaDeletePostPermission,\n qetaReadAnswerPermission,\n qetaEditAnswerPermission,\n qetaDeleteAnswerPermission,\n qetaCreateCommentPermission,\n qetaReadCommentPermission,\n qetaEditCommentPermission,\n qetaDeleteCommentPermission,\n qetaCreateTagPermission,\n qetaReadTagPermission,\n qetaEditTagPermission,\n qetaDeleteTagPermission,\n qetaReadCollectionPermission,\n qetaCreateCollectionPermission,\n qetaEditCollectionPermission,\n qetaDeleteCollectionPermission,\n];\n\nexport const qetaPostPermissions = [\n qetaReadPostPermission,\n qetaCreatePostPermission,\n qetaEditPostPermission,\n qetaDeletePostPermission,\n];\n\nexport const qetaAnswerPermissions = [\n qetaReadAnswerPermission,\n qetaCreateAnswerPermission,\n qetaEditAnswerPermission,\n qetaDeleteAnswerPermission,\n];\n\nexport const qetaCommentPermissions = [\n qetaCreateCommentPermission,\n qetaReadCommentPermission,\n qetaEditCommentPermission,\n qetaDeleteCommentPermission,\n];\n\nexport const qetaTagPermissions = [\n qetaCreateTagPermission,\n qetaReadTagPermission,\n qetaEditTagPermission,\n qetaDeleteTagPermission,\n];\n\nexport const qetaCollectionPermissions = [\n qetaReadCollectionPermission,\n qetaCreateCollectionPermission,\n qetaEditCollectionPermission,\n qetaDeleteCollectionPermission,\n];\n\nexport const isQetaPermission = (\n permission: BasicPermission | ResourcePermission,\n) => {\n return qetaPermissions.some(p => isPermission(permission, p));\n};\n"],"names":["createPermission","isPermission"],"mappings":";;;;AAOO,MAAM,2BAA2BA,uCAAiB,CAAA;AAAA,EACvD,IAAM,EAAA,kBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAS;AACjC,CAAC;AAEM,MAAM,6BAA6BA,uCAAiB,CAAA;AAAA,EACzD,IAAM,EAAA,oBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAS;AACjC,CAAC;AAEM,MAAM,8BAA8BA,uCAAiB,CAAA;AAAA,EAC1D,IAAM,EAAA,qBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAS;AACjC,CAAC;AAEM,MAAM,kBAAqB,GAAA;AAE3B,MAAM,yBAAyBA,uCAAiB,CAAA;AAAA,EACrD,IAAM,EAAA,gBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,MAAO,EAAA;AAAA,EAC7B,YAAc,EAAA;AAChB,CAAC;AAEM,MAAM,yBAAyBA,uCAAiB,CAAA;AAAA,EACrD,IAAM,EAAA,gBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAS,EAAA;AAAA,EAC/B,YAAc,EAAA;AAChB,CAAC;AAEM,MAAM,2BAA2BA,uCAAiB,CAAA;AAAA,EACvD,IAAM,EAAA,kBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAS,EAAA;AAAA,EAC/B,YAAc,EAAA;AAChB,CAAC;AAEM,MAAM,oBAAuB,GAAA;AAE7B,MAAM,2BAA2BA,uCAAiB,CAAA;AAAA,EACvD,IAAM,EAAA,kBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,MAAO,EAAA;AAAA,EAC7B,YAAc,EAAA;AAChB,CAAC;AACM,MAAM,2BAA2BA,uCAAiB,CAAA;AAAA,EACvD,IAAM,EAAA,kBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAS,EAAA;AAAA,EAC/B,YAAc,EAAA;AAChB,CAAC;AAEM,MAAM,6BAA6BA,uCAAiB,CAAA;AAAA,EACzD,IAAM,EAAA,oBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAS,EAAA;AAAA,EAC/B,YAAc,EAAA;AAChB,CAAC;AAEM,MAAM,qBAAwB,GAAA;AAE9B,MAAM,4BAA4BA,uCAAiB,CAAA;AAAA,EACxD,IAAM,EAAA,mBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,MAAO,EAAA;AAAA,EAC7B,YAAc,EAAA;AAChB,CAAC;AACM,MAAM,4BAA4BA,uCAAiB,CAAA;AAAA,EACxD,IAAM,EAAA,mBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAS,EAAA;AAAA,EAC/B,YAAc,EAAA;AAChB,CAAC;AAEM,MAAM,8BAA8BA,uCAAiB,CAAA;AAAA,EAC1D,IAAM,EAAA,qBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAS,EAAA;AAAA,EAC/B,YAAc,EAAA;AAChB,CAAC;AAEM,MAAM,iBAAoB,GAAA;AAE1B,MAAM,0BAA0BA,uCAAiB,CAAA;AAAA,EACtD,IAAM,EAAA,iBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAS;AACjC,CAAC;AACM,MAAM,wBAAwBA,uCAAiB,CAAA;AAAA,EACpD,IAAM,EAAA,eAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,MAAO,EAAA;AAAA,EAC7B,YAAc,EAAA;AAChB,CAAC;AACM,MAAM,wBAAwBA,uCAAiB,CAAA;AAAA,EACpD,IAAM,EAAA,eAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAS,EAAA;AAAA,EAC/B,YAAc,EAAA;AAChB,CAAC;AACM,MAAM,0BAA0BA,uCAAiB,CAAA;AAAA,EACtD,IAAM,EAAA,iBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAS,EAAA;AAAA,EAC/B,YAAc,EAAA;AAChB,CAAC;AAEM,MAAM,uBAA0B,GAAA;AAEhC,MAAM,+BAA+BA,uCAAiB,CAAA;AAAA,EAC3D,IAAM,EAAA,sBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,MAAO,EAAA;AAAA,EAC7B,YAAc,EAAA;AAChB,CAAC;AACM,MAAM,iCAAiCA,uCAAiB,CAAA;AAAA,EAC7D,IAAM,EAAA,wBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAS;AACjC,CAAC;AACM,MAAM,+BAA+BA,uCAAiB,CAAA;AAAA,EAC3D,IAAM,EAAA,sBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAS,EAAA;AAAA,EAC/B,YAAc,EAAA;AAChB,CAAC;AACM,MAAM,iCAAiCA,uCAAiB,CAAA;AAAA,EAC7D,IAAM,EAAA,wBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAS,EAAA;AAAA,EAC/B,YAAc,EAAA;AAChB,CAAC;AAEM,MAAM,eAAkB,GAAA;AAAA,EAC7B,sBAAA;AAAA,EACA,wBAAA;AAAA,EACA,0BAAA;AAAA,EACA,sBAAA;AAAA,EACA,wBAAA;AAAA,EACA,wBAAA;AAAA,EACA,wBAAA;AAAA,EACA,0BAAA;AAAA,EACA,2BAAA;AAAA,EACA,yBAAA;AAAA,EACA,yBAAA;AAAA,EACA,2BAAA;AAAA,EACA,uBAAA;AAAA,EACA,qBAAA;AAAA,EACA,qBAAA;AAAA,EACA,uBAAA;AAAA,EACA,4BAAA;AAAA,EACA,8BAAA;AAAA,EACA,4BAAA;AAAA,EACA;AACF;AAEO,MAAM,mBAAsB,GAAA;AAAA,EACjC,sBAAA;AAAA,EACA,wBAAA;AAAA,EACA,sBAAA;AAAA,EACA;AACF;AAEO,MAAM,qBAAwB,GAAA;AAAA,EACnC,wBAAA;AAAA,EACA,0BAAA;AAAA,EACA,wBAAA;AAAA,EACA;AACF;AAEO,MAAM,sBAAyB,GAAA;AAAA,EACpC,2BAAA;AAAA,EACA,yBAAA;AAAA,EACA,yBAAA;AAAA,EACA;AACF;AAEO,MAAM,kBAAqB,GAAA;AAAA,EAChC,uBAAA;AAAA,EACA,qBAAA;AAAA,EACA,qBAAA;AAAA,EACA;AACF;AAEO,MAAM,yBAA4B,GAAA;AAAA,EACvC,4BAAA;AAAA,EACA,8BAAA;AAAA,EACA,4BAAA;AAAA,EACA;AACF;AAEa,MAAA,gBAAA,GAAmB,CAC9B,UACG,KAAA;AACH,EAAA,OAAO,gBAAgB,IAAK,CAAA,CAAA,CAAA,KAAKC,mCAAa,CAAA,UAAA,EAAY,CAAC,CAAC,CAAA;AAC9D
|
|
1
|
+
{"version":3,"file":"permissions.cjs.js","sources":["../src/permissions.ts"],"sourcesContent":["import {\n BasicPermission,\n createPermission,\n isPermission,\n ResourcePermission,\n} from '@backstage/plugin-permission-common';\n\nexport const qetaModeratePermission = createPermission({\n name: 'qeta.moderate',\n attributes: {},\n});\n\nexport const qetaCreatePostPermission = createPermission({\n name: 'qeta.create.post',\n attributes: { action: 'create' },\n});\n\nexport const qetaCreateAnswerPermission = createPermission({\n name: 'qeta.create.answer',\n attributes: { action: 'create' },\n});\n\nexport const qetaCreateCommentPermission = createPermission({\n name: 'qeta.create.comment',\n attributes: { action: 'create' },\n});\n\nexport const POST_RESOURCE_TYPE = 'post';\n\nexport const qetaReadPostPermission = createPermission({\n name: 'qeta.read.post',\n attributes: { action: 'read' },\n resourceType: POST_RESOURCE_TYPE,\n});\n\nexport const qetaEditPostPermission = createPermission({\n name: 'qeta.edit.post',\n attributes: { action: 'update' },\n resourceType: POST_RESOURCE_TYPE,\n});\n\nexport const qetaDeletePostPermission = createPermission({\n name: 'qeta.delete.post',\n attributes: { action: 'delete' },\n resourceType: POST_RESOURCE_TYPE,\n});\n\nexport const ANSWER_RESOURCE_TYPE = 'answer';\n\nexport const qetaReadAnswerPermission = createPermission({\n name: 'qeta.read.answer',\n attributes: { action: 'read' },\n resourceType: ANSWER_RESOURCE_TYPE,\n});\nexport const qetaEditAnswerPermission = createPermission({\n name: 'qeta.edit.answer',\n attributes: { action: 'update' },\n resourceType: ANSWER_RESOURCE_TYPE,\n});\n\nexport const qetaDeleteAnswerPermission = createPermission({\n name: 'qeta.delete.answer',\n attributes: { action: 'delete' },\n resourceType: ANSWER_RESOURCE_TYPE,\n});\n\nexport const COMMENT_RESOURCE_TYPE = 'comment';\n\nexport const qetaReadCommentPermission = createPermission({\n name: 'qeta.read.comment',\n attributes: { action: 'read' },\n resourceType: COMMENT_RESOURCE_TYPE,\n});\nexport const qetaEditCommentPermission = createPermission({\n name: 'qeta.edit.comment',\n attributes: { action: 'update' },\n resourceType: COMMENT_RESOURCE_TYPE,\n});\n\nexport const qetaDeleteCommentPermission = createPermission({\n name: 'qeta.delete.comment',\n attributes: { action: 'delete' },\n resourceType: COMMENT_RESOURCE_TYPE,\n});\n\nexport const TAG_RESOURCE_TYPE = 'tag';\n\nexport const qetaCreateTagPermission = createPermission({\n name: 'qeta.create.tag',\n attributes: { action: 'create' },\n});\nexport const qetaReadTagPermission = createPermission({\n name: 'qeta.read.tag',\n attributes: { action: 'read' },\n resourceType: TAG_RESOURCE_TYPE,\n});\nexport const qetaEditTagPermission = createPermission({\n name: 'qeta.edit.tag',\n attributes: { action: 'update' },\n resourceType: TAG_RESOURCE_TYPE,\n});\nexport const qetaDeleteTagPermission = createPermission({\n name: 'qeta.delete.tag',\n attributes: { action: 'delete' },\n resourceType: TAG_RESOURCE_TYPE,\n});\n\nexport const COLLECTION_RESOUCE_TYPE = 'collection';\n\nexport const qetaReadCollectionPermission = createPermission({\n name: 'qeta.read.collection',\n attributes: { action: 'read' },\n resourceType: COLLECTION_RESOUCE_TYPE,\n});\nexport const qetaCreateCollectionPermission = createPermission({\n name: 'qeta.create.collection',\n attributes: { action: 'create' },\n});\nexport const qetaEditCollectionPermission = createPermission({\n name: 'qeta.edit.collection',\n attributes: { action: 'update' },\n resourceType: COLLECTION_RESOUCE_TYPE,\n});\nexport const qetaDeleteCollectionPermission = createPermission({\n name: 'qeta.delete.collection',\n attributes: { action: 'delete' },\n resourceType: COLLECTION_RESOUCE_TYPE,\n});\n\nexport const qetaPermissions = [\n qetaModeratePermission,\n qetaReadPostPermission,\n qetaCreatePostPermission,\n qetaCreateAnswerPermission,\n qetaEditPostPermission,\n qetaDeletePostPermission,\n qetaReadAnswerPermission,\n qetaEditAnswerPermission,\n qetaDeleteAnswerPermission,\n qetaCreateCommentPermission,\n qetaReadCommentPermission,\n qetaEditCommentPermission,\n qetaDeleteCommentPermission,\n qetaCreateTagPermission,\n qetaReadTagPermission,\n qetaEditTagPermission,\n qetaDeleteTagPermission,\n qetaReadCollectionPermission,\n qetaCreateCollectionPermission,\n qetaEditCollectionPermission,\n qetaDeleteCollectionPermission,\n];\n\nexport const qetaPostPermissions = [\n qetaReadPostPermission,\n qetaCreatePostPermission,\n qetaEditPostPermission,\n qetaDeletePostPermission,\n];\n\nexport const qetaAnswerPermissions = [\n qetaReadAnswerPermission,\n qetaCreateAnswerPermission,\n qetaEditAnswerPermission,\n qetaDeleteAnswerPermission,\n];\n\nexport const qetaCommentPermissions = [\n qetaCreateCommentPermission,\n qetaReadCommentPermission,\n qetaEditCommentPermission,\n qetaDeleteCommentPermission,\n];\n\nexport const qetaTagPermissions = [\n qetaCreateTagPermission,\n qetaReadTagPermission,\n qetaEditTagPermission,\n qetaDeleteTagPermission,\n];\n\nexport const qetaCollectionPermissions = [\n qetaReadCollectionPermission,\n qetaCreateCollectionPermission,\n qetaEditCollectionPermission,\n qetaDeleteCollectionPermission,\n];\n\nexport const isQetaPermission = (\n permission: BasicPermission | ResourcePermission,\n) => {\n return qetaPermissions.some(p => isPermission(permission, p));\n};\n"],"names":["createPermission","isPermission"],"mappings":"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"}
|
package/dist/permissions.esm.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { createPermission, isPermission } from '@backstage/plugin-permission-common';
|
|
2
2
|
|
|
3
|
+
const qetaModeratePermission = createPermission({
|
|
4
|
+
name: "qeta.moderate",
|
|
5
|
+
attributes: {}
|
|
6
|
+
});
|
|
3
7
|
const qetaCreatePostPermission = createPermission({
|
|
4
8
|
name: "qeta.create.post",
|
|
5
9
|
attributes: { action: "create" }
|
|
@@ -101,6 +105,7 @@ const qetaDeleteCollectionPermission = createPermission({
|
|
|
101
105
|
resourceType: COLLECTION_RESOUCE_TYPE
|
|
102
106
|
});
|
|
103
107
|
const qetaPermissions = [
|
|
108
|
+
qetaModeratePermission,
|
|
104
109
|
qetaReadPostPermission,
|
|
105
110
|
qetaCreatePostPermission,
|
|
106
111
|
qetaCreateAnswerPermission,
|
|
@@ -156,5 +161,5 @@ const isQetaPermission = (permission) => {
|
|
|
156
161
|
return qetaPermissions.some((p) => isPermission(permission, p));
|
|
157
162
|
};
|
|
158
163
|
|
|
159
|
-
export { ANSWER_RESOURCE_TYPE, COLLECTION_RESOUCE_TYPE, COMMENT_RESOURCE_TYPE, POST_RESOURCE_TYPE, TAG_RESOURCE_TYPE, isQetaPermission, qetaAnswerPermissions, qetaCollectionPermissions, qetaCommentPermissions, qetaCreateAnswerPermission, qetaCreateCollectionPermission, qetaCreateCommentPermission, qetaCreatePostPermission, qetaCreateTagPermission, qetaDeleteAnswerPermission, qetaDeleteCollectionPermission, qetaDeleteCommentPermission, qetaDeletePostPermission, qetaDeleteTagPermission, qetaEditAnswerPermission, qetaEditCollectionPermission, qetaEditCommentPermission, qetaEditPostPermission, qetaEditTagPermission, qetaPermissions, qetaPostPermissions, qetaReadAnswerPermission, qetaReadCollectionPermission, qetaReadCommentPermission, qetaReadPostPermission, qetaReadTagPermission, qetaTagPermissions };
|
|
164
|
+
export { ANSWER_RESOURCE_TYPE, COLLECTION_RESOUCE_TYPE, COMMENT_RESOURCE_TYPE, POST_RESOURCE_TYPE, TAG_RESOURCE_TYPE, isQetaPermission, qetaAnswerPermissions, qetaCollectionPermissions, qetaCommentPermissions, qetaCreateAnswerPermission, qetaCreateCollectionPermission, qetaCreateCommentPermission, qetaCreatePostPermission, qetaCreateTagPermission, qetaDeleteAnswerPermission, qetaDeleteCollectionPermission, qetaDeleteCommentPermission, qetaDeletePostPermission, qetaDeleteTagPermission, qetaEditAnswerPermission, qetaEditCollectionPermission, qetaEditCommentPermission, qetaEditPostPermission, qetaEditTagPermission, qetaModeratePermission, qetaPermissions, qetaPostPermissions, qetaReadAnswerPermission, qetaReadCollectionPermission, qetaReadCommentPermission, qetaReadPostPermission, qetaReadTagPermission, qetaTagPermissions };
|
|
160
165
|
//# sourceMappingURL=permissions.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.esm.js","sources":["../src/permissions.ts"],"sourcesContent":["import {\n BasicPermission,\n createPermission,\n isPermission,\n ResourcePermission,\n} from '@backstage/plugin-permission-common';\n\nexport const qetaCreatePostPermission = createPermission({\n name: 'qeta.create.post',\n attributes: { action: 'create' },\n});\n\nexport const qetaCreateAnswerPermission = createPermission({\n name: 'qeta.create.answer',\n attributes: { action: 'create' },\n});\n\nexport const qetaCreateCommentPermission = createPermission({\n name: 'qeta.create.comment',\n attributes: { action: 'create' },\n});\n\nexport const POST_RESOURCE_TYPE = 'post';\n\nexport const qetaReadPostPermission = createPermission({\n name: 'qeta.read.post',\n attributes: { action: 'read' },\n resourceType: POST_RESOURCE_TYPE,\n});\n\nexport const qetaEditPostPermission = createPermission({\n name: 'qeta.edit.post',\n attributes: { action: 'update' },\n resourceType: POST_RESOURCE_TYPE,\n});\n\nexport const qetaDeletePostPermission = createPermission({\n name: 'qeta.delete.post',\n attributes: { action: 'delete' },\n resourceType: POST_RESOURCE_TYPE,\n});\n\nexport const ANSWER_RESOURCE_TYPE = 'answer';\n\nexport const qetaReadAnswerPermission = createPermission({\n name: 'qeta.read.answer',\n attributes: { action: 'read' },\n resourceType: ANSWER_RESOURCE_TYPE,\n});\nexport const qetaEditAnswerPermission = createPermission({\n name: 'qeta.edit.answer',\n attributes: { action: 'update' },\n resourceType: ANSWER_RESOURCE_TYPE,\n});\n\nexport const qetaDeleteAnswerPermission = createPermission({\n name: 'qeta.delete.answer',\n attributes: { action: 'delete' },\n resourceType: ANSWER_RESOURCE_TYPE,\n});\n\nexport const COMMENT_RESOURCE_TYPE = 'comment';\n\nexport const qetaReadCommentPermission = createPermission({\n name: 'qeta.read.comment',\n attributes: { action: 'read' },\n resourceType: COMMENT_RESOURCE_TYPE,\n});\nexport const qetaEditCommentPermission = createPermission({\n name: 'qeta.edit.comment',\n attributes: { action: 'update' },\n resourceType: COMMENT_RESOURCE_TYPE,\n});\n\nexport const qetaDeleteCommentPermission = createPermission({\n name: 'qeta.delete.comment',\n attributes: { action: 'delete' },\n resourceType: COMMENT_RESOURCE_TYPE,\n});\n\nexport const TAG_RESOURCE_TYPE = 'tag';\n\nexport const qetaCreateTagPermission = createPermission({\n name: 'qeta.create.tag',\n attributes: { action: 'create' },\n});\nexport const qetaReadTagPermission = createPermission({\n name: 'qeta.read.tag',\n attributes: { action: 'read' },\n resourceType: TAG_RESOURCE_TYPE,\n});\nexport const qetaEditTagPermission = createPermission({\n name: 'qeta.edit.tag',\n attributes: { action: 'update' },\n resourceType: TAG_RESOURCE_TYPE,\n});\nexport const qetaDeleteTagPermission = createPermission({\n name: 'qeta.delete.tag',\n attributes: { action: 'delete' },\n resourceType: TAG_RESOURCE_TYPE,\n});\n\nexport const COLLECTION_RESOUCE_TYPE = 'collection';\n\nexport const qetaReadCollectionPermission = createPermission({\n name: 'qeta.read.collection',\n attributes: { action: 'read' },\n resourceType: COLLECTION_RESOUCE_TYPE,\n});\nexport const qetaCreateCollectionPermission = createPermission({\n name: 'qeta.create.collection',\n attributes: { action: 'create' },\n});\nexport const qetaEditCollectionPermission = createPermission({\n name: 'qeta.edit.collection',\n attributes: { action: 'update' },\n resourceType: COLLECTION_RESOUCE_TYPE,\n});\nexport const qetaDeleteCollectionPermission = createPermission({\n name: 'qeta.delete.collection',\n attributes: { action: 'delete' },\n resourceType: COLLECTION_RESOUCE_TYPE,\n});\n\nexport const qetaPermissions = [\n qetaReadPostPermission,\n qetaCreatePostPermission,\n qetaCreateAnswerPermission,\n qetaEditPostPermission,\n qetaDeletePostPermission,\n qetaReadAnswerPermission,\n qetaEditAnswerPermission,\n qetaDeleteAnswerPermission,\n qetaCreateCommentPermission,\n qetaReadCommentPermission,\n qetaEditCommentPermission,\n qetaDeleteCommentPermission,\n qetaCreateTagPermission,\n qetaReadTagPermission,\n qetaEditTagPermission,\n qetaDeleteTagPermission,\n qetaReadCollectionPermission,\n qetaCreateCollectionPermission,\n qetaEditCollectionPermission,\n qetaDeleteCollectionPermission,\n];\n\nexport const qetaPostPermissions = [\n qetaReadPostPermission,\n qetaCreatePostPermission,\n qetaEditPostPermission,\n qetaDeletePostPermission,\n];\n\nexport const qetaAnswerPermissions = [\n qetaReadAnswerPermission,\n qetaCreateAnswerPermission,\n qetaEditAnswerPermission,\n qetaDeleteAnswerPermission,\n];\n\nexport const qetaCommentPermissions = [\n qetaCreateCommentPermission,\n qetaReadCommentPermission,\n qetaEditCommentPermission,\n qetaDeleteCommentPermission,\n];\n\nexport const qetaTagPermissions = [\n qetaCreateTagPermission,\n qetaReadTagPermission,\n qetaEditTagPermission,\n qetaDeleteTagPermission,\n];\n\nexport const qetaCollectionPermissions = [\n qetaReadCollectionPermission,\n qetaCreateCollectionPermission,\n qetaEditCollectionPermission,\n qetaDeleteCollectionPermission,\n];\n\nexport const isQetaPermission = (\n permission: BasicPermission | ResourcePermission,\n) => {\n return qetaPermissions.some(p => isPermission(permission, p));\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"permissions.esm.js","sources":["../src/permissions.ts"],"sourcesContent":["import {\n BasicPermission,\n createPermission,\n isPermission,\n ResourcePermission,\n} from '@backstage/plugin-permission-common';\n\nexport const qetaModeratePermission = createPermission({\n name: 'qeta.moderate',\n attributes: {},\n});\n\nexport const qetaCreatePostPermission = createPermission({\n name: 'qeta.create.post',\n attributes: { action: 'create' },\n});\n\nexport const qetaCreateAnswerPermission = createPermission({\n name: 'qeta.create.answer',\n attributes: { action: 'create' },\n});\n\nexport const qetaCreateCommentPermission = createPermission({\n name: 'qeta.create.comment',\n attributes: { action: 'create' },\n});\n\nexport const POST_RESOURCE_TYPE = 'post';\n\nexport const qetaReadPostPermission = createPermission({\n name: 'qeta.read.post',\n attributes: { action: 'read' },\n resourceType: POST_RESOURCE_TYPE,\n});\n\nexport const qetaEditPostPermission = createPermission({\n name: 'qeta.edit.post',\n attributes: { action: 'update' },\n resourceType: POST_RESOURCE_TYPE,\n});\n\nexport const qetaDeletePostPermission = createPermission({\n name: 'qeta.delete.post',\n attributes: { action: 'delete' },\n resourceType: POST_RESOURCE_TYPE,\n});\n\nexport const ANSWER_RESOURCE_TYPE = 'answer';\n\nexport const qetaReadAnswerPermission = createPermission({\n name: 'qeta.read.answer',\n attributes: { action: 'read' },\n resourceType: ANSWER_RESOURCE_TYPE,\n});\nexport const qetaEditAnswerPermission = createPermission({\n name: 'qeta.edit.answer',\n attributes: { action: 'update' },\n resourceType: ANSWER_RESOURCE_TYPE,\n});\n\nexport const qetaDeleteAnswerPermission = createPermission({\n name: 'qeta.delete.answer',\n attributes: { action: 'delete' },\n resourceType: ANSWER_RESOURCE_TYPE,\n});\n\nexport const COMMENT_RESOURCE_TYPE = 'comment';\n\nexport const qetaReadCommentPermission = createPermission({\n name: 'qeta.read.comment',\n attributes: { action: 'read' },\n resourceType: COMMENT_RESOURCE_TYPE,\n});\nexport const qetaEditCommentPermission = createPermission({\n name: 'qeta.edit.comment',\n attributes: { action: 'update' },\n resourceType: COMMENT_RESOURCE_TYPE,\n});\n\nexport const qetaDeleteCommentPermission = createPermission({\n name: 'qeta.delete.comment',\n attributes: { action: 'delete' },\n resourceType: COMMENT_RESOURCE_TYPE,\n});\n\nexport const TAG_RESOURCE_TYPE = 'tag';\n\nexport const qetaCreateTagPermission = createPermission({\n name: 'qeta.create.tag',\n attributes: { action: 'create' },\n});\nexport const qetaReadTagPermission = createPermission({\n name: 'qeta.read.tag',\n attributes: { action: 'read' },\n resourceType: TAG_RESOURCE_TYPE,\n});\nexport const qetaEditTagPermission = createPermission({\n name: 'qeta.edit.tag',\n attributes: { action: 'update' },\n resourceType: TAG_RESOURCE_TYPE,\n});\nexport const qetaDeleteTagPermission = createPermission({\n name: 'qeta.delete.tag',\n attributes: { action: 'delete' },\n resourceType: TAG_RESOURCE_TYPE,\n});\n\nexport const COLLECTION_RESOUCE_TYPE = 'collection';\n\nexport const qetaReadCollectionPermission = createPermission({\n name: 'qeta.read.collection',\n attributes: { action: 'read' },\n resourceType: COLLECTION_RESOUCE_TYPE,\n});\nexport const qetaCreateCollectionPermission = createPermission({\n name: 'qeta.create.collection',\n attributes: { action: 'create' },\n});\nexport const qetaEditCollectionPermission = createPermission({\n name: 'qeta.edit.collection',\n attributes: { action: 'update' },\n resourceType: COLLECTION_RESOUCE_TYPE,\n});\nexport const qetaDeleteCollectionPermission = createPermission({\n name: 'qeta.delete.collection',\n attributes: { action: 'delete' },\n resourceType: COLLECTION_RESOUCE_TYPE,\n});\n\nexport const qetaPermissions = [\n qetaModeratePermission,\n qetaReadPostPermission,\n qetaCreatePostPermission,\n qetaCreateAnswerPermission,\n qetaEditPostPermission,\n qetaDeletePostPermission,\n qetaReadAnswerPermission,\n qetaEditAnswerPermission,\n qetaDeleteAnswerPermission,\n qetaCreateCommentPermission,\n qetaReadCommentPermission,\n qetaEditCommentPermission,\n qetaDeleteCommentPermission,\n qetaCreateTagPermission,\n qetaReadTagPermission,\n qetaEditTagPermission,\n qetaDeleteTagPermission,\n qetaReadCollectionPermission,\n qetaCreateCollectionPermission,\n qetaEditCollectionPermission,\n qetaDeleteCollectionPermission,\n];\n\nexport const qetaPostPermissions = [\n qetaReadPostPermission,\n qetaCreatePostPermission,\n qetaEditPostPermission,\n qetaDeletePostPermission,\n];\n\nexport const qetaAnswerPermissions = [\n qetaReadAnswerPermission,\n qetaCreateAnswerPermission,\n qetaEditAnswerPermission,\n qetaDeleteAnswerPermission,\n];\n\nexport const qetaCommentPermissions = [\n qetaCreateCommentPermission,\n qetaReadCommentPermission,\n qetaEditCommentPermission,\n qetaDeleteCommentPermission,\n];\n\nexport const qetaTagPermissions = [\n qetaCreateTagPermission,\n qetaReadTagPermission,\n qetaEditTagPermission,\n qetaDeleteTagPermission,\n];\n\nexport const qetaCollectionPermissions = [\n qetaReadCollectionPermission,\n qetaCreateCollectionPermission,\n qetaEditCollectionPermission,\n qetaDeleteCollectionPermission,\n];\n\nexport const isQetaPermission = (\n permission: BasicPermission | ResourcePermission,\n) => {\n return qetaPermissions.some(p => isPermission(permission, p));\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.
|
|
10
|
+
"version": "3.25.0",
|
|
11
11
|
"main": "dist/index.cjs.js",
|
|
12
12
|
"types": "dist/index.d.ts",
|
|
13
13
|
"prepublishOnly": "yarn tsc && yarn build",
|
|
@@ -60,12 +60,19 @@
|
|
|
60
60
|
"@backstage/catalog-model": "^1.7.3"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
|
-
"@backstage/cli": "^0.
|
|
63
|
+
"@backstage/cli": "^0.32.0",
|
|
64
64
|
"@types/lodash": "^4.14.199",
|
|
65
65
|
"@types/qs": "^6"
|
|
66
66
|
},
|
|
67
67
|
"files": [
|
|
68
68
|
"dist"
|
|
69
69
|
],
|
|
70
|
+
"typesVersions": {
|
|
71
|
+
"*": {
|
|
72
|
+
"package.json": [
|
|
73
|
+
"package.json"
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
},
|
|
70
77
|
"module": "./dist/index.esm.js"
|
|
71
78
|
}
|