@sethub/sdk
Version:
<div align="center"> <h1> SetHub SDK </h1>
137 lines (136 loc) • 4.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ProjectInvitations = void 0;
class ProjectInvitations {
constructor(httpClient) {
this.httpClient = httpClient;
}
async create(input, options) {
const { projectSlug, email, role } = input;
const response = await this.httpClient.post(`/v1/projects/${projectSlug}/invitations`, { email, role }, { abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal });
if (!response.ok) {
return {
data: null,
error: response.body
};
}
return {
data: response.body,
error: null
};
}
async list(input, options) {
const { projectSlug, page, size, orderBy, sortBy, } = input;
const queryParams = {};
if (page) {
queryParams.page = page;
}
if (size) {
queryParams.size = size;
}
if (orderBy) {
queryParams.order_by = orderBy;
}
if (sortBy) {
queryParams.sort_by = sortBy;
}
const response = await this.httpClient.get(`/v1/projects/${projectSlug}/invitations`, {
queryParams,
abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal,
});
if (!response.ok) {
return {
data: null,
error: response.body
};
}
const apiResponseBody = response.body;
const parsedResponse = {
metadata: {
page: apiResponseBody.metadata.page,
pages: apiResponseBody.metadata.pages,
size: apiResponseBody.metadata.size,
orderBy: apiResponseBody.metadata.order_by,
sortBy: apiResponseBody.metadata.sort_by,
totalCount: apiResponseBody.metadata.total_count,
},
items: apiResponseBody.items.map(invitation => ({
id: invitation.id,
email: invitation.email,
role: invitation.role,
status: invitation.status,
isExpired: invitation.is_expired,
createdAt: new Date(invitation.created_at),
invitedByMember: {
id: invitation.invited_by_member.id,
user: {
id: invitation.invited_by_member.user.id,
name: invitation.invited_by_member.user.name,
email: invitation.invited_by_member.user.email,
}
}
}))
};
return {
data: parsedResponse,
error: null
};
}
async updateRole(input, options) {
const { projectSlug, id, role } = input;
const response = await this.httpClient.patch(`/v1/projects/${projectSlug}/invitations/${id}/role`, { role }, { abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal });
if (!response.ok) {
return {
data: null,
error: response.body
};
}
return {
data: response.body,
error: null
};
}
async delete(input, options) {
const { projectSlug, id } = input;
const response = await this.httpClient.delete(`/v1/projects/${projectSlug}/invitations/${id}`, { abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal });
if (!response.ok) {
return {
data: null,
error: response.body
};
}
return {
data: response.body,
error: null
};
}
async accept(input, options) {
const { projectSlug, id } = input;
const response = await this.httpClient.post(`/v1/projects/${projectSlug}/invitations/${id}/accept`, undefined, { abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal });
if (!response.ok) {
return {
data: null,
error: response.body
};
}
return {
data: response.body,
error: null
};
}
async reject(input, options) {
const { projectSlug, id } = input;
const response = await this.httpClient.post(`/v1/projects/${projectSlug}/invitations/${id}/reject`, undefined, { abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal });
if (!response.ok) {
return {
data: null,
error: response.body
};
}
return {
data: response.body,
error: null
};
}
}
exports.ProjectInvitations = ProjectInvitations;