convex
Version:
Client for the Convex Cloud
177 lines (176 loc) • 4.79 kB
JavaScript
;
import {
bigBrainAPI,
bigBrainAPIMaybeThrows,
logAndHandleFetchError,
ThrowingFetchError
} from "../utils/utils.js";
export async function getCandidateEmailsForWorkIntegration(ctx) {
return bigBrainAPI({
ctx,
method: "GET",
url: "workos/available_workos_team_emails"
});
}
export async function getInvitationEligibleEmails(ctx, teamId) {
return bigBrainAPI({
ctx,
method: "GET",
url: `teams/${teamId}/workos_invitation_eligible_emails`
});
}
export async function getDeploymentCanProvisionWorkOSEnvironments(ctx, deploymentName) {
const request = {
deploymentName
};
return bigBrainAPI({
ctx,
method: "POST",
url: "workos/has_associated_workos_team",
data: request
});
}
export async function createEnvironmentAndAPIKey(ctx, deploymentName, environmentName) {
try {
const request = {
deploymentName,
environmentName: environmentName ?? null
};
const data = await bigBrainAPI({
ctx,
method: "POST",
url: "workos/get_or_provision_workos_environment",
data: request
});
return {
success: true,
data
};
} catch (error) {
if (error?.message?.includes("WorkOSTeamNotProvisioned")) {
return {
success: false,
error: "team_not_provisioned",
message: error.message
};
}
return await ctx.crash({
exitCode: 1,
errorType: "fatal",
printedMessage: `Error provisioning WorkOS environment: ${error}`
});
}
}
export async function createAssociatedWorkosTeam(ctx, teamId, email) {
try {
const request = {
teamId,
email
};
const result = await bigBrainAPIMaybeThrows({
ctx,
method: "POST",
url: "workos/provision_associated_workos_team",
data: JSON.stringify(request)
});
return {
result: "success",
...result
};
} catch (error) {
const data = error instanceof ThrowingFetchError ? error.serverErrorData : void 0;
if (data?.code === "WorkosAccountAlreadyExistsWithThisEmail") {
return {
result: "emailAlreadyUsed",
message: data?.message || "WorkOS account with this email already exists"
};
}
return await logAndHandleFetchError(ctx, error);
}
}
export async function getWorkosTeamHealth(ctx, teamId) {
try {
return await bigBrainAPIMaybeThrows({
ctx,
method: "GET",
url: `teams/${teamId}/workos_team_health`
});
} catch (error) {
if (error?.serverErrorData?.code === "WorkOSTeamNotProvisioned") {
return null;
}
return await logAndHandleFetchError(ctx, error);
}
}
export async function getWorkosEnvironmentHealth(ctx, deploymentName) {
try {
return await bigBrainAPIMaybeThrows({
ctx,
method: "GET",
url: `deployments/${deploymentName}/workos_environment_health`
});
} catch (error) {
if (error?.serverErrorData?.code === "WorkOSEnvironmentNotProvisioned") {
return null;
}
return await logAndHandleFetchError(ctx, error);
}
}
export async function disconnectWorkOSTeam(ctx, teamId) {
try {
const request = {
teamId
};
const result = await bigBrainAPIMaybeThrows({
ctx,
method: "POST",
url: "workos/disconnect_workos_team",
data: JSON.stringify(request)
});
return {
success: true,
...result
};
} catch (error) {
const data = error instanceof ThrowingFetchError ? error.serverErrorData : void 0;
if (data?.code === "WorkOSTeamNotAssociated") {
return {
success: false,
error: "not_associated",
message: data?.message || "No WorkOS team is associated"
};
}
return {
success: false,
error: "other",
message: data?.message || (error instanceof Error ? error.message : String(error))
};
}
}
export async function inviteToWorkosTeam(ctx, teamId, email) {
try {
const result = await bigBrainAPIMaybeThrows({
ctx,
method: "POST",
url: "workos/invite_team_member",
data: JSON.stringify({ teamId, email })
});
return { result: "success", ...result };
} catch (error) {
const data = error instanceof ThrowingFetchError ? error.serverErrorData : void 0;
if (data?.code === "WorkOSTeamNotProvisioned") {
return {
result: "teamNotProvisioned",
message: data?.message || "This team doesn't have a WorkOS team yet"
};
}
if (data?.code === "WorkosUserAlreadyInWorkspace") {
return {
result: "alreadyInWorkspace",
message: data?.message || "This email is already a member of another WorkOS workspace"
};
}
return await logAndHandleFetchError(ctx, error);
}
}
//# sourceMappingURL=platformApi.js.map