Update flow for updating is current status for deployments

This commit is contained in:
IshaVenikar 2024-10-18 16:45:03 +05:30
parent 0415e3b1d4
commit 2a435666ad
10 changed files with 74 additions and 2410 deletions

View File

@ -254,7 +254,6 @@ export class Registry {
application: `${lrn}@${applicationRecord.attributes.app_version}`, application: `${lrn}@${applicationRecord.attributes.app_version}`,
dns: data.dns, dns: data.dns,
// TODO: Not set in test-progressive-web-app CI
// https://git.vdb.to/cerc-io/laconic-registry-cli/commit/129019105dfb93bebcea02fde0ed64d0f8e5983b // https://git.vdb.to/cerc-io/laconic-registry-cli/commit/129019105dfb93bebcea02fde0ed64d0f8e5983b
config: JSON.stringify({ config: JSON.stringify({
env: data.environmentVariables env: data.environmentVariables

View File

@ -44,6 +44,7 @@ export class Service {
private config: Config; private config: Config;
private deployRecordCheckTimeout?: NodeJS.Timeout; private deployRecordCheckTimeout?: NodeJS.Timeout;
private auctionStatusCheckTimeout?: NodeJS.Timeout;
constructor(config: Config, db: Database, app: OAuthApp, registry: Registry) { constructor(config: Config, db: Database, app: OAuthApp, registry: Registry) {
this.db = db; this.db = db;
@ -70,6 +71,7 @@ export class Service {
*/ */
destroy(): void { destroy(): void {
clearTimeout(this.deployRecordCheckTimeout); clearTimeout(this.deployRecordCheckTimeout);
clearTimeout(this.auctionStatusCheckTimeout);
} }
/** /**
@ -160,42 +162,21 @@ export class Service {
/** /**
* Update deployments with ApplicationDeploymentRecord data * Update deployments with ApplicationDeploymentRecord data
* Deployments that are completed but not updated in DB
*/ */
async updateDeploymentsWithRecordData( async updateDeploymentsWithRecordData(
records: AppDeploymentRecord[], records: AppDeploymentRecord[],
): Promise<void> { ): Promise<void> {
// Get deployments for ApplicationDeploymentRecords // get and update deployments to be updated using request id
// Deployments that are completed but not updated(are in building state and ApplicationDeploymentRecord is present)
const deployments = await this.db.getDeployments({ const deployments = await this.db.getDeployments({
where: records.map((record) => ({ where: records.map((record) => ({
applicationRecordId: record.attributes.application, applicationDeploymentRequestId: record.attributes.request,
// Only for the specific deployer
deployerLrn: record.attributes.deployer
})), })),
order: { order: {
createdAt: 'DESC', createdAt: 'DESC',
}, },
}); });
// Get deployment IDs of deployments that are in production environment
const productionDeploymentIds: string[] = [];
deployments.forEach(deployment => {
if (deployment.environment === Environment.Production) {
if (!productionDeploymentIds.includes(deployment.id)) {
productionDeploymentIds.push(deployment.id);
}
}
});
// Set old deployments isCurrent to false
// TODO: Only set isCurrent to false for the deployment for that specific deployer
for (const deploymentId of productionDeploymentIds) {
await this.db.updateDeployment(
{ id: deploymentId },
{ isCurrent: false }
);
}
const recordToDeploymentsMap = deployments.reduce( const recordToDeploymentsMap = deployments.reduce(
(acc: { [key: string]: Deployment }, deployment) => { (acc: { [key: string]: Deployment }, deployment) => {
acc[deployment.applicationDeploymentRequestId!] = deployment; acc[deployment.applicationDeploymentRequestId!] = deployment;
@ -213,14 +194,14 @@ export class Service {
const parts = record.attributes.url.replace('https://', '').split('.'); const parts = record.attributes.url.replace('https://', '').split('.');
const baseDomain = parts.slice(1).join('.'); const baseDomain = parts.slice(1).join('.');
await this.db.updateDeploymentById(deployment.id, { deployment.applicationDeploymentRecordId = record.id;
applicationDeploymentRecordId: record.id, deployment.applicationDeploymentRecordData = record.attributes;
applicationDeploymentRecordData: record.attributes, deployment.url = record.attributes.url;
url: record.attributes.url, deployment.baseDomain = baseDomain;
baseDomain, deployment.status = DeploymentStatus.Ready;
status: DeploymentStatus.Ready, deployment.isCurrent = deployment.environment === Environment.Production;
isCurrent: deployment.environment === Environment.Production,
}); await this.db.updateDeploymentById(deployment.id, deployment);
const baseDomains = project.baseDomains || []; const baseDomains = project.baseDomains || [];
@ -237,6 +218,33 @@ export class Service {
); );
}); });
await Promise.all(deploymentUpdatePromises);
// if iscurrent is true for this deployment then update the old ones
const prodDeployments = Object.values(recordToDeploymentsMap).filter(deployment => deployment.isCurrent);
// Get deployment IDs of deployments that are in production environment
for (const deployment of prodDeployments) {
const projectDeployments = await this.db.getDeploymentsByProjectId(deployment.projectId);
const oldDeployments = projectDeployments
.filter(projectDeployment => projectDeployment.deployerLrn === deployment.deployerLrn && projectDeployment.id !== deployment.id);
for (const oldDeployment of oldDeployments) {
await this.db.updateDeployment(
{ id: oldDeployment.id },
{ isCurrent: false }
);
}
}
// Get old deployments for ApplicationDeploymentRecords
// flter out deps with is current false
// loop over these deps
// get the project
// get all the deployemnts in that proj with the same deployer lrn (query filter not above updated dep)
// set is current to false
await Promise.all(deploymentUpdatePromises); await Promise.all(deploymentUpdatePromises);
} }
@ -280,13 +288,6 @@ export class Service {
); );
await this.db.deleteDeploymentById(deployment.id); await this.db.deleteDeploymentById(deployment.id);
const project = await this.db.getProjectById(deployment.projectId);
const updatedBaseDomains = project!.baseDomains!.filter(baseDomain => baseDomain !== deployment.baseDomain);
await this.db.updateProjectById(deployment.projectId, {
baseDomains: updatedBaseDomains
});
}); });
await Promise.all(deploymentUpdatePromises); await Promise.all(deploymentUpdatePromises);
@ -309,9 +310,7 @@ export class Service {
const projects = allProjects.filter(project => { const projects = allProjects.filter(project => {
if (project.deletedAt !== null) return false; if (project.deletedAt !== null) return false;
const deletedDeployments = project.deployments.filter(deployment => deployment.deletedAt !== null).length; return project.deployments.length === 0;
return project.deployments.length === 0 && deletedDeployments === 0;
}); });
const auctionIds = projects.map((project) => project.auctionId); const auctionIds = projects.map((project) => project.auctionId);
@ -343,7 +342,7 @@ export class Service {
} }
} }
this.deployRecordCheckTimeout = setTimeout(() => { this.auctionStatusCheckTimeout = setTimeout(() => {
this.checkAuctionStatus(); this.checkAuctionStatus();
}, this.config.registryConfig.checkAuctionStatusDelay); }, this.config.registryConfig.checkAuctionStatusDelay);
} }
@ -605,7 +604,8 @@ export class Service {
domain: prodBranchDomains[0], domain: prodBranchDomains[0],
commitHash: oldDeployment.commitHash, commitHash: oldDeployment.commitHash,
commitMessage: oldDeployment.commitMessage, commitMessage: oldDeployment.commitMessage,
}, oldDeployment.deployerLrn); deployerLrn: oldDeployment.deployerLrn
});
return newDeployment; return newDeployment;
} }
@ -613,8 +613,7 @@ export class Service {
async createDeployment( async createDeployment(
userId: string, userId: string,
octokit: Octokit, octokit: Octokit,
data: DeepPartial<Deployment>, data: DeepPartial<Deployment>
deployerLrn: string
): Promise<Deployment> { ): Promise<Deployment> {
assert(data.project?.repository, 'Project repository not found'); assert(data.project?.repository, 'Project repository not found');
log( log(
@ -643,7 +642,7 @@ export class Service {
); );
} }
const newDeployment = await this.createDeploymentFromData(userId, data, deployerLrn, applicationRecordId, applicationRecordData); const newDeployment = await this.createDeploymentFromData(userId, data, data.deployerLrn!, applicationRecordId, applicationRecordData);
const { repo, repoUrl } = await getRepoDetails(octokit, data.project.repository, data.commitHash); const { repo, repoUrl } = await getRepoDetails(octokit, data.project.repository, data.commitHash);
const environmentVariablesObj = await this.getEnvVariables(data.project!.id!); const environmentVariablesObj = await this.getEnvVariables(data.project!.id!);
@ -657,7 +656,7 @@ export class Service {
repository: repoUrl, repository: repoUrl,
environmentVariables: environmentVariablesObj, environmentVariables: environmentVariablesObj,
dns: `${newDeployment.project.name}`, dns: `${newDeployment.project.name}`,
lrn: deployerLrn lrn: data.deployerLrn!
}); });
} }
@ -666,7 +665,7 @@ export class Service {
deployment: newDeployment, deployment: newDeployment,
appName: repo, appName: repo,
repository: repoUrl, repository: repoUrl,
lrn: deployerLrn, lrn: data.deployerLrn!,
environmentVariables: environmentVariablesObj, environmentVariables: environmentVariablesObj,
dns: `${newDeployment.project.name}-${newDeployment.id}`, dns: `${newDeployment.project.name}-${newDeployment.id}`,
}); });
@ -676,11 +675,6 @@ export class Service {
applicationDeploymentRequestData, applicationDeploymentRequestData,
}); });
// Save deployer lrn only if present
if (deployerLrn) {
newDeployment.project.deployerLrns = [deployerLrn];
}
return newDeployment; return newDeployment;
} }
@ -876,13 +870,14 @@ export class Service {
domain: null, domain: null,
commitHash: latestCommit.sha, commitHash: latestCommit.sha,
commitMessage: latestCommit.commit.message, commitMessage: latestCommit.commit.message,
deployerLrn: lrn
}; };
if (auctionParams) { if (auctionParams) {
const { applicationDeploymentAuctionId } = await this.laconicRegistry.createApplicationDeploymentAuction(repo, octokit, auctionParams!, deploymentData); const { applicationDeploymentAuctionId } = await this.laconicRegistry.createApplicationDeploymentAuction(repo, octokit, auctionParams!, deploymentData);
await this.updateProject(project.id, { auctionId: applicationDeploymentAuctionId }) await this.updateProject(project.id, { auctionId: applicationDeploymentAuctionId })
} else { } else {
await this.createDeployment(user.id, octokit, deploymentData, lrn!); await this.createDeployment(user.id, octokit, deploymentData);
await this.updateProject(project.id, { deployerLrns: [lrn!] }) await this.updateProject(project.id, { deployerLrns: [lrn!] })
} }
@ -954,7 +949,10 @@ export class Service {
}); });
const deployers = project.deployerLrns; const deployers = project.deployerLrns;
if (!deployers) return; if (!deployers) {
log(`No deployer present for project ${project.id}`)
return;
}
for (const deployer of deployers) { for (const deployer of deployers) {
// Create deployment with branch and latest commit in GitHub data // Create deployment with branch and latest commit in GitHub data
@ -969,8 +967,8 @@ export class Service {
domain, domain,
commitHash: headCommit.id, commitHash: headCommit.id,
commitMessage: headCommit.message, commitMessage: headCommit.message,
deployerLrn: deployer
}, },
deployer
); );
} }
} }
@ -1025,6 +1023,7 @@ export class Service {
let newDeployment: Deployment; let newDeployment: Deployment;
if (oldDeployment.project.auctionId) { if (oldDeployment.project.auctionId) {
// TODO: Discuss creating applicationRecord for redeployments
newDeployment = await this.createDeploymentFromAuction(oldDeployment.project, oldDeployment.deployerLrn); newDeployment = await this.createDeploymentFromAuction(oldDeployment.project, oldDeployment.deployerLrn);
} else { } else {
newDeployment = await this.createDeployment(user.id, octokit, newDeployment = await this.createDeployment(user.id, octokit,
@ -1036,8 +1035,8 @@ export class Service {
domain: oldDeployment.domain, domain: oldDeployment.domain,
commitHash: oldDeployment.commitHash, commitHash: oldDeployment.commitHash,
commitMessage: oldDeployment.commitMessage, commitMessage: oldDeployment.commitMessage,
}, deployerLrn: oldDeployment.deployerLrn
oldDeployment.deployerLrn }
); );
} }

View File

@ -29,28 +29,29 @@ export const AuctionCard = ({ project }: { project: Project }) => {
setAuctionStatus(result.status); setAuctionStatus(result.status);
setAuctionDetails(result); setAuctionDetails(result);
setDeployerLrns(project.deployerLrns); setDeployerLrns(project.deployerLrns);
}, [client, project.auctionId, project.deployerLrns]); }, [client, project.auctionId, project.deployerLrns]);
useEffect(() => { useEffect(() => {
const fetchUpdatedProject = async () => {
if (auctionStatus === 'completed') {
// Wait for 5 secs since the project is not immediately updated with deployer LRNs
await new Promise((resolve) => setTimeout(resolve, WAIT_DURATION));
const updatedProject = await client.getProject(project.id);
setDeployerLrns(updatedProject.project!.deployerLrns || []);
}
};
if (auctionStatus !== 'completed') { if (auctionStatus !== 'completed') {
const intervalId = setInterval(checkAuctionStatus, WAIT_DURATION);
checkAuctionStatus(); checkAuctionStatus();
const intervalId = setInterval(checkAuctionStatus, WAIT_DURATION);
return () => clearInterval(intervalId); return () => clearInterval(intervalId);
} else { }
}, [auctionStatus, checkAuctionStatus]);
useEffect(() => {
if (auctionStatus === 'completed') {
const fetchUpdatedProject = async () => {
// Wait for 5 secs since the project is not immediately updated with deployer LRNs
await new Promise((resolve) => setTimeout(resolve, WAIT_DURATION));
const updatedProject = await client.getProject(project.id);
setDeployerLrns(updatedProject.project?.deployerLrns || []);
};
fetchUpdatedProject(); fetchUpdatedProject();
} }
}, [auctionStatus, checkAuctionStatus, client]); }, [auctionStatus, client, project.id]);
const renderAuctionStatus = useCallback( const renderAuctionStatus = useCallback(
() => ( () => (

View File

@ -36,7 +36,7 @@ const deployment: Deployment = {
url: 'https://deploy1.example.com', url: 'https://deploy1.example.com',
environment: Environment.Production, environment: Environment.Production,
isCurrent: true, isCurrent: true,
deployerLrn: 'lrn://deepstack-test4/deployers/webapp-deployer-api.test4.wireitin.com', deployerLrn: 'lrn://example/deployers/webapp-deployer-api.test.com',
status: DeploymentStatus.Ready, status: DeploymentStatus.Ready,
createdBy: { createdBy: {
id: 'user1', id: 'user1',

View File

@ -1,340 +0,0 @@
declare enum Role {
Owner = "Owner",
Maintainer = "Maintainer",
Reader = "Reader"
}
declare enum Permission {
View = "View",
Edit = "Edit"
}
declare enum Environment {
Production = "Production",
Preview = "Preview",
Development = "Development"
}
declare enum DeploymentStatus {
Building = "Building",
Ready = "Ready",
Error = "Error",
Deleting = "Deleting"
}
declare enum AuctionStatus {
AuctionStatusCommitPhase = "commit",
AuctionStatusRevealPhase = "reveal",
AuctionStatusExpired = "expired",
AuctionStatusCompleted = "completed"
}
type Bid = {
auctionId: string;
bidderAddress: string;
status: string;
commitHash: string;
commitTime?: Date;
commitFee?: string;
revealTime?: Date;
revealFee?: string;
bidAmount?: string;
};
type Auction = {
id: string;
kind: string;
status: string;
ownerAddress: string;
createTime?: Date;
commitsEndTime?: Date;
revealsEndTime?: Date;
commitFee?: string;
revealFee?: string;
minimumBid?: string;
winnerAddresses: string[];
winnerBids?: string[];
winnerPrice?: string;
maxPrice?: string;
numProviders: number;
fundsReleased: boolean;
bids: Bid[];
};
declare enum DomainStatus {
Live = "Live",
Pending = "Pending"
}
type EnvironmentVariable = {
id: string;
environment: Environment;
key: string;
value: string;
createdAt: string;
updatedAt: string;
};
type Domain = {
id: string;
branch: string;
name: string;
status: DomainStatus;
redirectTo: Domain | null;
createdAt: string;
updatedAt: string;
};
type User = {
id: string;
name: string | null;
email: string;
isVerified: boolean;
createdAt: string;
updatedAt: string;
gitHubToken: string | null;
};
type Deployment = {
id: string;
domain: Domain;
branch: string;
commitHash: string;
commitMessage: string;
url?: string;
deployerLrn: string;
environment: Environment;
isCurrent: boolean;
baseDomain?: string;
status: DeploymentStatus;
createdBy: User;
createdAt: string;
updatedAt: string;
};
type OrganizationMember = {
id: string;
member: User;
role: Role;
createdAt: string;
updatedAt: string;
};
type ProjectMember = {
id: string;
member: User;
permissions: Permission[];
isPending: boolean;
createdAt: string;
updatedAt: string;
};
type OrganizationProject = {
id: string;
owner: User;
deployments: Deployment[];
name: string;
repository: string;
prodBranch: string;
description: string;
template: string;
framework: string;
webhooks: string[];
members: ProjectMember[];
environmentVariables: EnvironmentVariable[];
createdAt: string;
updatedAt: string;
};
type Organization = {
id: string;
name: string;
slug: string;
projects: OrganizationProject[];
createdAt: string;
updatedAt: string;
members: OrganizationMember[];
};
type Project = {
id: string;
owner: User;
deployments: Deployment[];
name: string;
repository: string;
prodBranch: string;
description: string;
template: string;
framework: string;
deployerLrns: string[];
auctionId: string;
webhooks: string[];
members: ProjectMember[];
environmentVariables: EnvironmentVariable[];
createdAt: string;
updatedAt: string;
organization: Organization;
icon: string;
baseDomains?: string[] | null;
};
type GetProjectMembersResponse = {
projectMembers: ProjectMember[];
};
type AddProjectMemberResponse = {
addProjectMember: boolean;
};
type RemoveProjectMemberResponse = {
removeProjectMember: boolean;
};
type UpdateProjectMemberResponse = {
updateProjectMember: boolean;
};
type GetDeploymentsResponse = {
deployments: Deployment[];
};
type GetEnvironmentVariablesResponse = {
environmentVariables: EnvironmentVariable[];
};
type GetOrganizationsResponse = {
organizations: Organization[];
};
type GetUserResponse = {
user: User;
};
type GetProjectResponse = {
project: Project | null;
};
type GetProjectsInOrganizationResponse = {
projectsInOrganization: Project[];
};
type GetDomainsResponse = {
domains: Domain[];
};
type SearchProjectsResponse = {
searchProjects: Project[];
};
type AddEnvironmentVariablesResponse = {
addEnvironmentVariables: boolean;
};
type AddEnvironmentVariableInput = {
environments: string[];
key: string;
value: string;
};
type UpdateEnvironmentVariableInput = {
key: string;
value: string;
};
type UpdateProjectMemberInput = {
permissions: Permission[];
};
type AddProjectMemberInput = {
email: string;
permissions: Permission[];
};
type UpdateEnvironmentVariableResponse = {
updateEnvironmentVariable: boolean;
};
type RemoveEnvironmentVariableResponse = {
removeEnvironmentVariable: boolean;
};
type UpdateDeploymentToProdResponse = {
updateDeploymentToProd: boolean;
};
type AddProjectFromTemplateResponse = {
addProjectFromTemplate: Project;
};
type AddProjectResponse = {
addProject: Project;
};
type UpdateProjectResponse = {
updateProject: boolean;
};
type UpdateDomainResponse = {
updateDomain: boolean;
};
type DeleteProjectResponse = {
deleteProject: boolean;
};
type DeleteDomainResponse = {
deleteDomain: boolean;
};
type AddProjectFromTemplateInput = {
templateOwner: string;
templateRepo: string;
owner: string;
name: string;
isPrivate: boolean;
};
type AddProjectInput = {
name: string;
repository: string;
prodBranch: string;
template?: string;
};
type UpdateProjectInput = {
name?: string;
description?: string;
prodBranch?: string;
webhooks?: string[];
organizationId?: string;
};
type UpdateDomainInput = {
name?: string;
branch?: string;
redirectToId?: string | null;
};
type RedeployToProdResponse = {
redeployToProd: boolean;
};
type RollbackDeploymentResponse = {
rollbackDeployment: boolean;
};
type DeleteDeploymentResponse = {
deleteDeployment: boolean;
};
type AddDomainInput = {
name: string;
};
type FilterDomainInput = {
branch?: string;
status?: DomainStatus;
};
type AddDomainResponse = {
addDomain: true;
};
type AuthenticateGitHubResponse = {
authenticateGitHub: {
token: string;
};
};
type UnauthenticateGitHubResponse = {
unauthenticateGitHub: boolean;
};
type AuctionParams = {
maxPrice: string;
numProviders: number;
};
interface GraphQLConfig {
gqlEndpoint: string;
}
declare class GQLClient {
private client;
constructor(config: GraphQLConfig);
getUser(): Promise<GetUserResponse>;
getProject(projectId: string): Promise<GetProjectResponse>;
getProjectsInOrganization(organizationSlug: string): Promise<GetProjectsInOrganizationResponse>;
getOrganizations(): Promise<GetOrganizationsResponse>;
getDeployments(projectId: string): Promise<GetDeploymentsResponse>;
getEnvironmentVariables(projectId: string): Promise<GetEnvironmentVariablesResponse>;
getProjectMembers(projectId: string): Promise<GetProjectMembersResponse>;
addProjectMember(projectId: string, data: AddProjectMemberInput): Promise<AddProjectMemberResponse>;
updateProjectMember(projectMemberId: string, data: UpdateProjectMemberInput): Promise<UpdateProjectMemberResponse>;
removeProjectMember(projectMemberId: string): Promise<RemoveProjectMemberResponse>;
searchProjects(searchText: string): Promise<SearchProjectsResponse>;
addEnvironmentVariables(projectId: string, data: AddEnvironmentVariableInput[]): Promise<AddEnvironmentVariablesResponse>;
updateEnvironmentVariable(environmentVariableId: string, data: UpdateEnvironmentVariableInput): Promise<UpdateEnvironmentVariableResponse>;
removeEnvironmentVariable(environmentVariableId: string): Promise<RemoveEnvironmentVariableResponse>;
updateDeploymentToProd(deploymentId: string): Promise<UpdateDeploymentToProdResponse>;
addProjectFromTemplate(organizationSlug: string, data: AddProjectFromTemplateInput, lrn?: string, auctionParams?: AuctionParams): Promise<AddProjectFromTemplateResponse>;
addProject(organizationSlug: string, data: AddProjectInput, lrn?: string, auctionParams?: AuctionParams): Promise<AddProjectResponse>;
updateProject(projectId: string, data: UpdateProjectInput): Promise<UpdateProjectResponse>;
updateDomain(domainId: string, data: UpdateDomainInput): Promise<UpdateDomainResponse>;
redeployToProd(deploymentId: string): Promise<RedeployToProdResponse>;
deleteProject(projectId: string): Promise<DeleteProjectResponse>;
deleteDomain(domainId: string): Promise<DeleteDomainResponse>;
rollbackDeployment(projectId: string, deploymentId: string): Promise<RollbackDeploymentResponse>;
deleteDeployment(deploymentId: string): Promise<DeleteDeploymentResponse>;
addDomain(projectId: string, data: AddDomainInput): Promise<AddDomainResponse>;
getDomains(projectId: string, filter?: FilterDomainInput): Promise<GetDomainsResponse>;
authenticateGitHub(code: string): Promise<AuthenticateGitHubResponse>;
unauthenticateGithub(): Promise<UnauthenticateGitHubResponse>;
getAuctionData(auctionId: string): Promise<Auction>;
}
export { type AddDomainInput, type AddDomainResponse, type AddEnvironmentVariableInput, type AddEnvironmentVariablesResponse, type AddProjectFromTemplateInput, type AddProjectFromTemplateResponse, type AddProjectInput, type AddProjectMemberInput, type AddProjectMemberResponse, type AddProjectResponse, type Auction, type AuctionParams, AuctionStatus, type AuthenticateGitHubResponse, type Bid, type DeleteDeploymentResponse, type DeleteDomainResponse, type DeleteProjectResponse, type Deployment, DeploymentStatus, type Domain, DomainStatus, Environment, type EnvironmentVariable, type FilterDomainInput, GQLClient, type GetDeploymentsResponse, type GetDomainsResponse, type GetEnvironmentVariablesResponse, type GetOrganizationsResponse, type GetProjectMembersResponse, type GetProjectResponse, type GetProjectsInOrganizationResponse, type GetUserResponse, type GraphQLConfig, type Organization, type OrganizationMember, type OrganizationProject, Permission, type Project, type ProjectMember, type RedeployToProdResponse, type RemoveEnvironmentVariableResponse, type RemoveProjectMemberResponse, Role, type RollbackDeploymentResponse, type SearchProjectsResponse, type UnauthenticateGitHubResponse, type UpdateDeploymentToProdResponse, type UpdateDomainInput, type UpdateDomainResponse, type UpdateEnvironmentVariableInput, type UpdateEnvironmentVariableResponse, type UpdateProjectInput, type UpdateProjectMemberInput, type UpdateProjectMemberResponse, type UpdateProjectResponse, type User };

View File

@ -1,340 +0,0 @@
declare enum Role {
Owner = "Owner",
Maintainer = "Maintainer",
Reader = "Reader"
}
declare enum Permission {
View = "View",
Edit = "Edit"
}
declare enum Environment {
Production = "Production",
Preview = "Preview",
Development = "Development"
}
declare enum DeploymentStatus {
Building = "Building",
Ready = "Ready",
Error = "Error",
Deleting = "Deleting"
}
declare enum AuctionStatus {
AuctionStatusCommitPhase = "commit",
AuctionStatusRevealPhase = "reveal",
AuctionStatusExpired = "expired",
AuctionStatusCompleted = "completed"
}
type Bid = {
auctionId: string;
bidderAddress: string;
status: string;
commitHash: string;
commitTime?: Date;
commitFee?: string;
revealTime?: Date;
revealFee?: string;
bidAmount?: string;
};
type Auction = {
id: string;
kind: string;
status: string;
ownerAddress: string;
createTime?: Date;
commitsEndTime?: Date;
revealsEndTime?: Date;
commitFee?: string;
revealFee?: string;
minimumBid?: string;
winnerAddresses: string[];
winnerBids?: string[];
winnerPrice?: string;
maxPrice?: string;
numProviders: number;
fundsReleased: boolean;
bids: Bid[];
};
declare enum DomainStatus {
Live = "Live",
Pending = "Pending"
}
type EnvironmentVariable = {
id: string;
environment: Environment;
key: string;
value: string;
createdAt: string;
updatedAt: string;
};
type Domain = {
id: string;
branch: string;
name: string;
status: DomainStatus;
redirectTo: Domain | null;
createdAt: string;
updatedAt: string;
};
type User = {
id: string;
name: string | null;
email: string;
isVerified: boolean;
createdAt: string;
updatedAt: string;
gitHubToken: string | null;
};
type Deployment = {
id: string;
domain: Domain;
branch: string;
commitHash: string;
commitMessage: string;
url?: string;
deployerLrn: string;
environment: Environment;
isCurrent: boolean;
baseDomain?: string;
status: DeploymentStatus;
createdBy: User;
createdAt: string;
updatedAt: string;
};
type OrganizationMember = {
id: string;
member: User;
role: Role;
createdAt: string;
updatedAt: string;
};
type ProjectMember = {
id: string;
member: User;
permissions: Permission[];
isPending: boolean;
createdAt: string;
updatedAt: string;
};
type OrganizationProject = {
id: string;
owner: User;
deployments: Deployment[];
name: string;
repository: string;
prodBranch: string;
description: string;
template: string;
framework: string;
webhooks: string[];
members: ProjectMember[];
environmentVariables: EnvironmentVariable[];
createdAt: string;
updatedAt: string;
};
type Organization = {
id: string;
name: string;
slug: string;
projects: OrganizationProject[];
createdAt: string;
updatedAt: string;
members: OrganizationMember[];
};
type Project = {
id: string;
owner: User;
deployments: Deployment[];
name: string;
repository: string;
prodBranch: string;
description: string;
template: string;
framework: string;
deployerLrns: string[];
auctionId: string;
webhooks: string[];
members: ProjectMember[];
environmentVariables: EnvironmentVariable[];
createdAt: string;
updatedAt: string;
organization: Organization;
icon: string;
baseDomains?: string[] | null;
};
type GetProjectMembersResponse = {
projectMembers: ProjectMember[];
};
type AddProjectMemberResponse = {
addProjectMember: boolean;
};
type RemoveProjectMemberResponse = {
removeProjectMember: boolean;
};
type UpdateProjectMemberResponse = {
updateProjectMember: boolean;
};
type GetDeploymentsResponse = {
deployments: Deployment[];
};
type GetEnvironmentVariablesResponse = {
environmentVariables: EnvironmentVariable[];
};
type GetOrganizationsResponse = {
organizations: Organization[];
};
type GetUserResponse = {
user: User;
};
type GetProjectResponse = {
project: Project | null;
};
type GetProjectsInOrganizationResponse = {
projectsInOrganization: Project[];
};
type GetDomainsResponse = {
domains: Domain[];
};
type SearchProjectsResponse = {
searchProjects: Project[];
};
type AddEnvironmentVariablesResponse = {
addEnvironmentVariables: boolean;
};
type AddEnvironmentVariableInput = {
environments: string[];
key: string;
value: string;
};
type UpdateEnvironmentVariableInput = {
key: string;
value: string;
};
type UpdateProjectMemberInput = {
permissions: Permission[];
};
type AddProjectMemberInput = {
email: string;
permissions: Permission[];
};
type UpdateEnvironmentVariableResponse = {
updateEnvironmentVariable: boolean;
};
type RemoveEnvironmentVariableResponse = {
removeEnvironmentVariable: boolean;
};
type UpdateDeploymentToProdResponse = {
updateDeploymentToProd: boolean;
};
type AddProjectFromTemplateResponse = {
addProjectFromTemplate: Project;
};
type AddProjectResponse = {
addProject: Project;
};
type UpdateProjectResponse = {
updateProject: boolean;
};
type UpdateDomainResponse = {
updateDomain: boolean;
};
type DeleteProjectResponse = {
deleteProject: boolean;
};
type DeleteDomainResponse = {
deleteDomain: boolean;
};
type AddProjectFromTemplateInput = {
templateOwner: string;
templateRepo: string;
owner: string;
name: string;
isPrivate: boolean;
};
type AddProjectInput = {
name: string;
repository: string;
prodBranch: string;
template?: string;
};
type UpdateProjectInput = {
name?: string;
description?: string;
prodBranch?: string;
webhooks?: string[];
organizationId?: string;
};
type UpdateDomainInput = {
name?: string;
branch?: string;
redirectToId?: string | null;
};
type RedeployToProdResponse = {
redeployToProd: boolean;
};
type RollbackDeploymentResponse = {
rollbackDeployment: boolean;
};
type DeleteDeploymentResponse = {
deleteDeployment: boolean;
};
type AddDomainInput = {
name: string;
};
type FilterDomainInput = {
branch?: string;
status?: DomainStatus;
};
type AddDomainResponse = {
addDomain: true;
};
type AuthenticateGitHubResponse = {
authenticateGitHub: {
token: string;
};
};
type UnauthenticateGitHubResponse = {
unauthenticateGitHub: boolean;
};
type AuctionParams = {
maxPrice: string;
numProviders: number;
};
interface GraphQLConfig {
gqlEndpoint: string;
}
declare class GQLClient {
private client;
constructor(config: GraphQLConfig);
getUser(): Promise<GetUserResponse>;
getProject(projectId: string): Promise<GetProjectResponse>;
getProjectsInOrganization(organizationSlug: string): Promise<GetProjectsInOrganizationResponse>;
getOrganizations(): Promise<GetOrganizationsResponse>;
getDeployments(projectId: string): Promise<GetDeploymentsResponse>;
getEnvironmentVariables(projectId: string): Promise<GetEnvironmentVariablesResponse>;
getProjectMembers(projectId: string): Promise<GetProjectMembersResponse>;
addProjectMember(projectId: string, data: AddProjectMemberInput): Promise<AddProjectMemberResponse>;
updateProjectMember(projectMemberId: string, data: UpdateProjectMemberInput): Promise<UpdateProjectMemberResponse>;
removeProjectMember(projectMemberId: string): Promise<RemoveProjectMemberResponse>;
searchProjects(searchText: string): Promise<SearchProjectsResponse>;
addEnvironmentVariables(projectId: string, data: AddEnvironmentVariableInput[]): Promise<AddEnvironmentVariablesResponse>;
updateEnvironmentVariable(environmentVariableId: string, data: UpdateEnvironmentVariableInput): Promise<UpdateEnvironmentVariableResponse>;
removeEnvironmentVariable(environmentVariableId: string): Promise<RemoveEnvironmentVariableResponse>;
updateDeploymentToProd(deploymentId: string): Promise<UpdateDeploymentToProdResponse>;
addProjectFromTemplate(organizationSlug: string, data: AddProjectFromTemplateInput, lrn?: string, auctionParams?: AuctionParams): Promise<AddProjectFromTemplateResponse>;
addProject(organizationSlug: string, data: AddProjectInput, lrn?: string, auctionParams?: AuctionParams): Promise<AddProjectResponse>;
updateProject(projectId: string, data: UpdateProjectInput): Promise<UpdateProjectResponse>;
updateDomain(domainId: string, data: UpdateDomainInput): Promise<UpdateDomainResponse>;
redeployToProd(deploymentId: string): Promise<RedeployToProdResponse>;
deleteProject(projectId: string): Promise<DeleteProjectResponse>;
deleteDomain(domainId: string): Promise<DeleteDomainResponse>;
rollbackDeployment(projectId: string, deploymentId: string): Promise<RollbackDeploymentResponse>;
deleteDeployment(deploymentId: string): Promise<DeleteDeploymentResponse>;
addDomain(projectId: string, data: AddDomainInput): Promise<AddDomainResponse>;
getDomains(projectId: string, filter?: FilterDomainInput): Promise<GetDomainsResponse>;
authenticateGitHub(code: string): Promise<AuthenticateGitHubResponse>;
unauthenticateGithub(): Promise<UnauthenticateGitHubResponse>;
getAuctionData(auctionId: string): Promise<Auction>;
}
export { type AddDomainInput, type AddDomainResponse, type AddEnvironmentVariableInput, type AddEnvironmentVariablesResponse, type AddProjectFromTemplateInput, type AddProjectFromTemplateResponse, type AddProjectInput, type AddProjectMemberInput, type AddProjectMemberResponse, type AddProjectResponse, type Auction, type AuctionParams, AuctionStatus, type AuthenticateGitHubResponse, type Bid, type DeleteDeploymentResponse, type DeleteDomainResponse, type DeleteProjectResponse, type Deployment, DeploymentStatus, type Domain, DomainStatus, Environment, type EnvironmentVariable, type FilterDomainInput, GQLClient, type GetDeploymentsResponse, type GetDomainsResponse, type GetEnvironmentVariablesResponse, type GetOrganizationsResponse, type GetProjectMembersResponse, type GetProjectResponse, type GetProjectsInOrganizationResponse, type GetUserResponse, type GraphQLConfig, type Organization, type OrganizationMember, type OrganizationProject, Permission, type Project, type ProjectMember, type RedeployToProdResponse, type RemoveEnvironmentVariableResponse, type RemoveProjectMemberResponse, Role, type RollbackDeploymentResponse, type SearchProjectsResponse, type UnauthenticateGitHubResponse, type UpdateDeploymentToProdResponse, type UpdateDomainInput, type UpdateDomainResponse, type UpdateEnvironmentVariableInput, type UpdateEnvironmentVariableResponse, type UpdateProjectInput, type UpdateProjectMemberInput, type UpdateProjectMemberResponse, type UpdateProjectResponse, type User };

View File

@ -1,841 +0,0 @@
"use strict";
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var __async = (__this, __arguments, generator) => {
return new Promise((resolve, reject) => {
var fulfilled = (value) => {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
};
var rejected = (value) => {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
};
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
step((generator = generator.apply(__this, __arguments)).next());
});
};
// src/index.ts
var src_exports = {};
__export(src_exports, {
AuctionStatus: () => AuctionStatus,
DeploymentStatus: () => DeploymentStatus,
DomainStatus: () => DomainStatus,
Environment: () => Environment,
GQLClient: () => GQLClient,
Permission: () => Permission,
Role: () => Role
});
module.exports = __toCommonJS(src_exports);
// src/client.ts
var import_client3 = require("@apollo/client");
// src/queries.ts
var import_client = require("@apollo/client");
var getUser = import_client.gql`
query {
user {
id
name
email
createdAt
updatedAt
gitHubToken
}
}
`;
var getProject = import_client.gql`
query ($projectId: String!) {
project(projectId: $projectId) {
createdAt
description
id
name
template
updatedAt
prodBranch
auctionId
deployerLrns
framework
repository
webhooks
icon
baseDomains
organization {
id
name
}
owner {
id
name
email
}
deployments {
id
branch
isCurrent
baseDomain
status
updatedAt
commitHash
createdAt
environment
domain {
status
branch
createdAt
updatedAt
id
name
}
createdBy {
id
name
}
}
}
}
`;
var getProjectsInOrganization = import_client.gql`
query ($organizationSlug: String!) {
projectsInOrganization(organizationSlug: $organizationSlug) {
id
name
createdAt
description
framework
auctionId
deployerLrns
prodBranch
webhooks
repository
updatedAt
icon
baseDomains
deployments {
id
branch
isCurrent
baseDomain
status
updatedAt
commitHash
commitMessage
createdAt
environment
domain {
status
branch
createdAt
updatedAt
id
name
}
}
}
}
`;
var getOrganizations = import_client.gql`
query {
organizations {
id
name
slug
createdAt
updatedAt
}
}
`;
var getDeployments = import_client.gql`
query ($projectId: String!) {
deployments(projectId: $projectId) {
id
domain{
branch
createdAt
id
name
status
updatedAt
}
branch
commitHash
commitMessage
url
deployerLrn
environment
isCurrent
baseDomain
status
createdAt
updatedAt
createdBy {
id
name
email
}
}
}
`;
var getEnvironmentVariables = import_client.gql`
query ($projectId: String!) {
environmentVariables(projectId: $projectId) {
createdAt
environment
id
key
updatedAt
value
}
}
`;
var getProjectMembers = import_client.gql`
query ($projectId: String!) {
projectMembers(projectId: $projectId) {
id
member {
id
name
email
isVerified
}
isPending
createdAt
updatedAt
permissions
}
}
`;
var searchProjects = import_client.gql`
query ($searchText: String!) {
searchProjects(searchText: $searchText) {
id
name
prodBranch
repository
createdAt
description
framework
auctionId
deployerLrns
prodBranch
webhooks
updatedAt
template
repository
organization {
id
name
slug
createdAt
updatedAt
}
}
}
`;
var getDomains = import_client.gql`
query ($projectId: String!, $filter: FilterDomainsInput) {
domains(projectId: $projectId, filter: $filter) {
branch
createdAt
redirectTo {
id
name
branch
status
}
id
name
status
updatedAt
}
}
`;
var getAuctionData = import_client.gql`
query ($auctionId: String!) {
getAuctionData(auctionId: $auctionId){
id
kind
status
ownerAddress
createTime
commitsEndTime
revealsEndTime
commitFee {
type
quantity
}
revealFee {
type
quantity
}
minimumBid {
type
quantity
}
winnerAddresses
winnerBids {
type
quantity
}
winnerPrice {
type
quantity
}
maxPrice {
type
quantity
}
numProviders
fundsReleased
bids {
bidderAddress
status
commitHash
commitTime
revealTime
commitFee {
type
quantity
}
revealFee {
type
quantity
}
bidAmount {
type
quantity
}
}
}
}
`;
// src/mutations.ts
var import_client2 = require("@apollo/client");
var removeProjectMember = import_client2.gql`
mutation ($projectMemberId: String!) {
removeProjectMember(projectMemberId: $projectMemberId)
}
`;
var updateProjectMember = import_client2.gql`
mutation ($projectMemberId: String!, $data: UpdateProjectMemberInput) {
updateProjectMember(projectMemberId: $projectMemberId, data: $data)
}
`;
var addProjectMember = import_client2.gql`
mutation ($projectId: String!, $data: AddProjectMemberInput) {
addProjectMember(projectId: $projectId, data: $data)
}
`;
var addEnvironmentVariables = import_client2.gql`
mutation ($projectId: String!, $data: [AddEnvironmentVariableInput!]) {
addEnvironmentVariables(projectId: $projectId, data: $data)
}
`;
var updateEnvironmentVariable = import_client2.gql`
mutation (
$environmentVariableId: String!
$data: UpdateEnvironmentVariableInput!
) {
updateEnvironmentVariable(
environmentVariableId: $environmentVariableId
data: $data
)
}
`;
var removeEnvironmentVariable = import_client2.gql`
mutation ($environmentVariableId: String!) {
removeEnvironmentVariable(environmentVariableId: $environmentVariableId)
}
`;
var updateDeploymentToProd = import_client2.gql`
mutation ($deploymentId: String!) {
updateDeploymentToProd(deploymentId: $deploymentId)
}
`;
var addProjectFromTemplate = import_client2.gql`
mutation ($organizationSlug: String!, $data: AddProjectFromTemplateInput, $lrn: String, $auctionParams: AuctionParams) {
addProjectFromTemplate(organizationSlug: $organizationSlug, data: $data, lrn: $lrn, auctionParams: $auctionParams) {
id
}
}
`;
var addProject = import_client2.gql`
mutation ($organizationSlug: String!, $data: AddProjectInput!, $lrn: String, $auctionParams: Auctionparams) {
addProject(organizationSlug: $organizationSlug, data: $data, lrn: $lrn, auctionParams: $auctionParams) {
id
}
}
`;
var updateProjectMutation = import_client2.gql`
mutation ($projectId: String!, $data: UpdateProjectInput) {
updateProject(projectId: $projectId, data: $data)
}
`;
var updateDomainMutation = import_client2.gql`
mutation ($domainId: String!, $data: UpdateDomainInput!) {
updateDomain(domainId: $domainId, data: $data)
}
`;
var redeployToProd = import_client2.gql`
mutation ($deploymentId: String!) {
redeployToProd(deploymentId: $deploymentId)
}
`;
var deleteProject = import_client2.gql`
mutation ($projectId: String!) {
deleteProject(projectId: $projectId)
}
`;
var deleteDomain = import_client2.gql`
mutation ($domainId: String!) {
deleteDomain(domainId: $domainId)
}
`;
var rollbackDeployment = import_client2.gql`
mutation ($projectId: String!, $deploymentId: String!) {
rollbackDeployment(projectId: $projectId, deploymentId: $deploymentId)
}
`;
var deleteDeployment = import_client2.gql`
mutation ($deploymentId: String!) {
deleteDeployment(deploymentId: $deploymentId)
}
`;
var addDomain = import_client2.gql`
mutation ($projectId: String!, $data: AddDomainInput!) {
addDomain(projectId: $projectId, data: $data)
}
`;
var authenticateGitHub = import_client2.gql`
mutation ($code: String!) {
authenticateGitHub(code: $code) {
token
}
}
`;
var unauthenticateGitHub = import_client2.gql`
mutation {
unauthenticateGitHub
}
`;
// src/client.ts
var defaultOptions = {
watchQuery: {
fetchPolicy: "no-cache",
errorPolicy: "ignore"
},
query: {
fetchPolicy: "no-cache",
errorPolicy: "all"
}
};
var GQLClient = class {
constructor(config) {
this.client = new import_client3.ApolloClient({
uri: config.gqlEndpoint,
cache: new import_client3.InMemoryCache(),
defaultOptions,
credentials: "include"
});
}
getUser() {
return __async(this, null, function* () {
const { data } = yield this.client.query({
query: getUser
});
return data;
});
}
getProject(projectId) {
return __async(this, null, function* () {
const { data } = yield this.client.query({
query: getProject,
variables: {
projectId
}
});
return data;
});
}
getProjectsInOrganization(organizationSlug) {
return __async(this, null, function* () {
const { data } = yield this.client.query({
query: getProjectsInOrganization,
variables: {
organizationSlug
}
});
return data;
});
}
getOrganizations() {
return __async(this, null, function* () {
const { data } = yield this.client.query({
query: getOrganizations
});
return data;
});
}
getDeployments(projectId) {
return __async(this, null, function* () {
const { data } = yield this.client.query({
query: getDeployments,
variables: {
projectId
}
});
return data;
});
}
getEnvironmentVariables(projectId) {
return __async(this, null, function* () {
const { data } = yield this.client.query({
query: getEnvironmentVariables,
variables: {
projectId
}
});
return data;
});
}
getProjectMembers(projectId) {
return __async(this, null, function* () {
const result = yield this.client.query({
query: getProjectMembers,
variables: {
projectId
}
});
return result.data;
});
}
addProjectMember(projectId, data) {
return __async(this, null, function* () {
const result = yield this.client.mutate({
mutation: addProjectMember,
variables: {
projectId,
data
}
});
return result.data;
});
}
updateProjectMember(projectMemberId, data) {
return __async(this, null, function* () {
const result = yield this.client.mutate({
mutation: updateProjectMember,
variables: {
projectMemberId,
data
}
});
return result.data;
});
}
removeProjectMember(projectMemberId) {
return __async(this, null, function* () {
const result = yield this.client.mutate({
mutation: removeProjectMember,
variables: {
projectMemberId
}
});
return result.data;
});
}
searchProjects(searchText) {
return __async(this, null, function* () {
const { data } = yield this.client.query({
query: searchProjects,
variables: {
searchText
}
});
return data;
});
}
addEnvironmentVariables(projectId, data) {
return __async(this, null, function* () {
const result = yield this.client.mutate({
mutation: addEnvironmentVariables,
variables: {
projectId,
data
}
});
return result.data;
});
}
updateEnvironmentVariable(environmentVariableId, data) {
return __async(this, null, function* () {
const result = yield this.client.mutate({
mutation: updateEnvironmentVariable,
variables: {
environmentVariableId,
data
}
});
return result.data;
});
}
removeEnvironmentVariable(environmentVariableId) {
return __async(this, null, function* () {
const { data } = yield this.client.mutate({
mutation: removeEnvironmentVariable,
variables: {
environmentVariableId
}
});
return data;
});
}
updateDeploymentToProd(deploymentId) {
return __async(this, null, function* () {
const { data } = yield this.client.mutate({
mutation: updateDeploymentToProd,
variables: {
deploymentId
}
});
return data;
});
}
addProjectFromTemplate(organizationSlug, data, lrn, auctionParams) {
return __async(this, null, function* () {
const result = yield this.client.mutate({
mutation: addProjectFromTemplate,
variables: {
organizationSlug,
data,
lrn,
auctionParams
}
});
return result.data;
});
}
addProject(organizationSlug, data, lrn, auctionParams) {
return __async(this, null, function* () {
const result = yield this.client.mutate({
mutation: addProject,
variables: {
organizationSlug,
data,
lrn,
auctionParams
}
});
return result.data;
});
}
updateProject(projectId, data) {
return __async(this, null, function* () {
const result = yield this.client.mutate({
mutation: updateProjectMutation,
variables: {
projectId,
data
}
});
return result.data;
});
}
updateDomain(domainId, data) {
return __async(this, null, function* () {
const result = yield this.client.mutate({
mutation: updateDomainMutation,
variables: {
domainId,
data
}
});
return result.data;
});
}
redeployToProd(deploymentId) {
return __async(this, null, function* () {
const { data } = yield this.client.mutate({
mutation: redeployToProd,
variables: {
deploymentId
}
});
return data;
});
}
deleteProject(projectId) {
return __async(this, null, function* () {
const { data } = yield this.client.mutate({
mutation: deleteProject,
variables: {
projectId
}
});
return data;
});
}
deleteDomain(domainId) {
return __async(this, null, function* () {
const { data } = yield this.client.mutate({
mutation: deleteDomain,
variables: {
domainId
}
});
return data;
});
}
rollbackDeployment(projectId, deploymentId) {
return __async(this, null, function* () {
const { data } = yield this.client.mutate({
mutation: rollbackDeployment,
variables: {
projectId,
deploymentId
}
});
return data;
});
}
deleteDeployment(deploymentId) {
return __async(this, null, function* () {
const { data } = yield this.client.mutate({
mutation: deleteDeployment,
variables: {
deploymentId
}
});
return data;
});
}
addDomain(projectId, data) {
return __async(this, null, function* () {
const result = yield this.client.mutate({
mutation: addDomain,
variables: {
projectId,
data
}
});
return result.data;
});
}
getDomains(projectId, filter) {
return __async(this, null, function* () {
const { data } = yield this.client.query({
query: getDomains,
variables: {
projectId,
filter
}
});
return data;
});
}
authenticateGitHub(code) {
return __async(this, null, function* () {
const { data } = yield this.client.mutate({
mutation: authenticateGitHub,
variables: {
code
}
});
return data;
});
}
unauthenticateGithub() {
return __async(this, null, function* () {
const { data } = yield this.client.mutate({
mutation: unauthenticateGitHub
});
return data;
});
}
getAuctionData(auctionId) {
return __async(this, null, function* () {
const { data } = yield this.client.query({
query: getAuctionData,
variables: {
auctionId
}
});
return data.getAuctionData;
});
}
};
// src/types.ts
var Role = /* @__PURE__ */ ((Role2) => {
Role2["Owner"] = "Owner";
Role2["Maintainer"] = "Maintainer";
Role2["Reader"] = "Reader";
return Role2;
})(Role || {});
var Permission = /* @__PURE__ */ ((Permission2) => {
Permission2["View"] = "View";
Permission2["Edit"] = "Edit";
return Permission2;
})(Permission || {});
var Environment = /* @__PURE__ */ ((Environment2) => {
Environment2["Production"] = "Production";
Environment2["Preview"] = "Preview";
Environment2["Development"] = "Development";
return Environment2;
})(Environment || {});
var DeploymentStatus = /* @__PURE__ */ ((DeploymentStatus2) => {
DeploymentStatus2["Building"] = "Building";
DeploymentStatus2["Ready"] = "Ready";
DeploymentStatus2["Error"] = "Error";
DeploymentStatus2["Deleting"] = "Deleting";
return DeploymentStatus2;
})(DeploymentStatus || {});
var AuctionStatus = /* @__PURE__ */ ((AuctionStatus2) => {
AuctionStatus2["AuctionStatusCommitPhase"] = "commit";
AuctionStatus2["AuctionStatusRevealPhase"] = "reveal";
AuctionStatus2["AuctionStatusExpired"] = "expired";
AuctionStatus2["AuctionStatusCompleted"] = "completed";
return AuctionStatus2;
})(AuctionStatus || {});
var DomainStatus = /* @__PURE__ */ ((DomainStatus2) => {
DomainStatus2["Live"] = "Live";
DomainStatus2["Pending"] = "Pending";
return DomainStatus2;
})(DomainStatus || {});
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
AuctionStatus,
DeploymentStatus,
DomainStatus,
Environment,
GQLClient,
Permission,
Role
});
//# sourceMappingURL=index.js.map

File diff suppressed because one or more lines are too long

View File

@ -1,812 +0,0 @@
var __async = (__this, __arguments, generator) => {
return new Promise((resolve, reject) => {
var fulfilled = (value) => {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
};
var rejected = (value) => {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
};
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
step((generator = generator.apply(__this, __arguments)).next());
});
};
// src/client.ts
import {
ApolloClient,
InMemoryCache
} from "@apollo/client";
// src/queries.ts
import { gql } from "@apollo/client";
var getUser = gql`
query {
user {
id
name
email
createdAt
updatedAt
gitHubToken
}
}
`;
var getProject = gql`
query ($projectId: String!) {
project(projectId: $projectId) {
createdAt
description
id
name
template
updatedAt
prodBranch
auctionId
deployerLrns
framework
repository
webhooks
icon
baseDomains
organization {
id
name
}
owner {
id
name
email
}
deployments {
id
branch
isCurrent
baseDomain
status
updatedAt
commitHash
createdAt
environment
domain {
status
branch
createdAt
updatedAt
id
name
}
createdBy {
id
name
}
}
}
}
`;
var getProjectsInOrganization = gql`
query ($organizationSlug: String!) {
projectsInOrganization(organizationSlug: $organizationSlug) {
id
name
createdAt
description
framework
auctionId
deployerLrns
prodBranch
webhooks
repository
updatedAt
icon
baseDomains
deployments {
id
branch
isCurrent
baseDomain
status
updatedAt
commitHash
commitMessage
createdAt
environment
domain {
status
branch
createdAt
updatedAt
id
name
}
}
}
}
`;
var getOrganizations = gql`
query {
organizations {
id
name
slug
createdAt
updatedAt
}
}
`;
var getDeployments = gql`
query ($projectId: String!) {
deployments(projectId: $projectId) {
id
domain{
branch
createdAt
id
name
status
updatedAt
}
branch
commitHash
commitMessage
url
deployerLrn
environment
isCurrent
baseDomain
status
createdAt
updatedAt
createdBy {
id
name
email
}
}
}
`;
var getEnvironmentVariables = gql`
query ($projectId: String!) {
environmentVariables(projectId: $projectId) {
createdAt
environment
id
key
updatedAt
value
}
}
`;
var getProjectMembers = gql`
query ($projectId: String!) {
projectMembers(projectId: $projectId) {
id
member {
id
name
email
isVerified
}
isPending
createdAt
updatedAt
permissions
}
}
`;
var searchProjects = gql`
query ($searchText: String!) {
searchProjects(searchText: $searchText) {
id
name
prodBranch
repository
createdAt
description
framework
auctionId
deployerLrns
prodBranch
webhooks
updatedAt
template
repository
organization {
id
name
slug
createdAt
updatedAt
}
}
}
`;
var getDomains = gql`
query ($projectId: String!, $filter: FilterDomainsInput) {
domains(projectId: $projectId, filter: $filter) {
branch
createdAt
redirectTo {
id
name
branch
status
}
id
name
status
updatedAt
}
}
`;
var getAuctionData = gql`
query ($auctionId: String!) {
getAuctionData(auctionId: $auctionId){
id
kind
status
ownerAddress
createTime
commitsEndTime
revealsEndTime
commitFee {
type
quantity
}
revealFee {
type
quantity
}
minimumBid {
type
quantity
}
winnerAddresses
winnerBids {
type
quantity
}
winnerPrice {
type
quantity
}
maxPrice {
type
quantity
}
numProviders
fundsReleased
bids {
bidderAddress
status
commitHash
commitTime
revealTime
commitFee {
type
quantity
}
revealFee {
type
quantity
}
bidAmount {
type
quantity
}
}
}
}
`;
// src/mutations.ts
import { gql as gql2 } from "@apollo/client";
var removeProjectMember = gql2`
mutation ($projectMemberId: String!) {
removeProjectMember(projectMemberId: $projectMemberId)
}
`;
var updateProjectMember = gql2`
mutation ($projectMemberId: String!, $data: UpdateProjectMemberInput) {
updateProjectMember(projectMemberId: $projectMemberId, data: $data)
}
`;
var addProjectMember = gql2`
mutation ($projectId: String!, $data: AddProjectMemberInput) {
addProjectMember(projectId: $projectId, data: $data)
}
`;
var addEnvironmentVariables = gql2`
mutation ($projectId: String!, $data: [AddEnvironmentVariableInput!]) {
addEnvironmentVariables(projectId: $projectId, data: $data)
}
`;
var updateEnvironmentVariable = gql2`
mutation (
$environmentVariableId: String!
$data: UpdateEnvironmentVariableInput!
) {
updateEnvironmentVariable(
environmentVariableId: $environmentVariableId
data: $data
)
}
`;
var removeEnvironmentVariable = gql2`
mutation ($environmentVariableId: String!) {
removeEnvironmentVariable(environmentVariableId: $environmentVariableId)
}
`;
var updateDeploymentToProd = gql2`
mutation ($deploymentId: String!) {
updateDeploymentToProd(deploymentId: $deploymentId)
}
`;
var addProjectFromTemplate = gql2`
mutation ($organizationSlug: String!, $data: AddProjectFromTemplateInput, $lrn: String, $auctionParams: AuctionParams) {
addProjectFromTemplate(organizationSlug: $organizationSlug, data: $data, lrn: $lrn, auctionParams: $auctionParams) {
id
}
}
`;
var addProject = gql2`
mutation ($organizationSlug: String!, $data: AddProjectInput!, $lrn: String, $auctionParams: Auctionparams) {
addProject(organizationSlug: $organizationSlug, data: $data, lrn: $lrn, auctionParams: $auctionParams) {
id
}
}
`;
var updateProjectMutation = gql2`
mutation ($projectId: String!, $data: UpdateProjectInput) {
updateProject(projectId: $projectId, data: $data)
}
`;
var updateDomainMutation = gql2`
mutation ($domainId: String!, $data: UpdateDomainInput!) {
updateDomain(domainId: $domainId, data: $data)
}
`;
var redeployToProd = gql2`
mutation ($deploymentId: String!) {
redeployToProd(deploymentId: $deploymentId)
}
`;
var deleteProject = gql2`
mutation ($projectId: String!) {
deleteProject(projectId: $projectId)
}
`;
var deleteDomain = gql2`
mutation ($domainId: String!) {
deleteDomain(domainId: $domainId)
}
`;
var rollbackDeployment = gql2`
mutation ($projectId: String!, $deploymentId: String!) {
rollbackDeployment(projectId: $projectId, deploymentId: $deploymentId)
}
`;
var deleteDeployment = gql2`
mutation ($deploymentId: String!) {
deleteDeployment(deploymentId: $deploymentId)
}
`;
var addDomain = gql2`
mutation ($projectId: String!, $data: AddDomainInput!) {
addDomain(projectId: $projectId, data: $data)
}
`;
var authenticateGitHub = gql2`
mutation ($code: String!) {
authenticateGitHub(code: $code) {
token
}
}
`;
var unauthenticateGitHub = gql2`
mutation {
unauthenticateGitHub
}
`;
// src/client.ts
var defaultOptions = {
watchQuery: {
fetchPolicy: "no-cache",
errorPolicy: "ignore"
},
query: {
fetchPolicy: "no-cache",
errorPolicy: "all"
}
};
var GQLClient = class {
constructor(config) {
this.client = new ApolloClient({
uri: config.gqlEndpoint,
cache: new InMemoryCache(),
defaultOptions,
credentials: "include"
});
}
getUser() {
return __async(this, null, function* () {
const { data } = yield this.client.query({
query: getUser
});
return data;
});
}
getProject(projectId) {
return __async(this, null, function* () {
const { data } = yield this.client.query({
query: getProject,
variables: {
projectId
}
});
return data;
});
}
getProjectsInOrganization(organizationSlug) {
return __async(this, null, function* () {
const { data } = yield this.client.query({
query: getProjectsInOrganization,
variables: {
organizationSlug
}
});
return data;
});
}
getOrganizations() {
return __async(this, null, function* () {
const { data } = yield this.client.query({
query: getOrganizations
});
return data;
});
}
getDeployments(projectId) {
return __async(this, null, function* () {
const { data } = yield this.client.query({
query: getDeployments,
variables: {
projectId
}
});
return data;
});
}
getEnvironmentVariables(projectId) {
return __async(this, null, function* () {
const { data } = yield this.client.query({
query: getEnvironmentVariables,
variables: {
projectId
}
});
return data;
});
}
getProjectMembers(projectId) {
return __async(this, null, function* () {
const result = yield this.client.query({
query: getProjectMembers,
variables: {
projectId
}
});
return result.data;
});
}
addProjectMember(projectId, data) {
return __async(this, null, function* () {
const result = yield this.client.mutate({
mutation: addProjectMember,
variables: {
projectId,
data
}
});
return result.data;
});
}
updateProjectMember(projectMemberId, data) {
return __async(this, null, function* () {
const result = yield this.client.mutate({
mutation: updateProjectMember,
variables: {
projectMemberId,
data
}
});
return result.data;
});
}
removeProjectMember(projectMemberId) {
return __async(this, null, function* () {
const result = yield this.client.mutate({
mutation: removeProjectMember,
variables: {
projectMemberId
}
});
return result.data;
});
}
searchProjects(searchText) {
return __async(this, null, function* () {
const { data } = yield this.client.query({
query: searchProjects,
variables: {
searchText
}
});
return data;
});
}
addEnvironmentVariables(projectId, data) {
return __async(this, null, function* () {
const result = yield this.client.mutate({
mutation: addEnvironmentVariables,
variables: {
projectId,
data
}
});
return result.data;
});
}
updateEnvironmentVariable(environmentVariableId, data) {
return __async(this, null, function* () {
const result = yield this.client.mutate({
mutation: updateEnvironmentVariable,
variables: {
environmentVariableId,
data
}
});
return result.data;
});
}
removeEnvironmentVariable(environmentVariableId) {
return __async(this, null, function* () {
const { data } = yield this.client.mutate({
mutation: removeEnvironmentVariable,
variables: {
environmentVariableId
}
});
return data;
});
}
updateDeploymentToProd(deploymentId) {
return __async(this, null, function* () {
const { data } = yield this.client.mutate({
mutation: updateDeploymentToProd,
variables: {
deploymentId
}
});
return data;
});
}
addProjectFromTemplate(organizationSlug, data, lrn, auctionParams) {
return __async(this, null, function* () {
const result = yield this.client.mutate({
mutation: addProjectFromTemplate,
variables: {
organizationSlug,
data,
lrn,
auctionParams
}
});
return result.data;
});
}
addProject(organizationSlug, data, lrn, auctionParams) {
return __async(this, null, function* () {
const result = yield this.client.mutate({
mutation: addProject,
variables: {
organizationSlug,
data,
lrn,
auctionParams
}
});
return result.data;
});
}
updateProject(projectId, data) {
return __async(this, null, function* () {
const result = yield this.client.mutate({
mutation: updateProjectMutation,
variables: {
projectId,
data
}
});
return result.data;
});
}
updateDomain(domainId, data) {
return __async(this, null, function* () {
const result = yield this.client.mutate({
mutation: updateDomainMutation,
variables: {
domainId,
data
}
});
return result.data;
});
}
redeployToProd(deploymentId) {
return __async(this, null, function* () {
const { data } = yield this.client.mutate({
mutation: redeployToProd,
variables: {
deploymentId
}
});
return data;
});
}
deleteProject(projectId) {
return __async(this, null, function* () {
const { data } = yield this.client.mutate({
mutation: deleteProject,
variables: {
projectId
}
});
return data;
});
}
deleteDomain(domainId) {
return __async(this, null, function* () {
const { data } = yield this.client.mutate({
mutation: deleteDomain,
variables: {
domainId
}
});
return data;
});
}
rollbackDeployment(projectId, deploymentId) {
return __async(this, null, function* () {
const { data } = yield this.client.mutate({
mutation: rollbackDeployment,
variables: {
projectId,
deploymentId
}
});
return data;
});
}
deleteDeployment(deploymentId) {
return __async(this, null, function* () {
const { data } = yield this.client.mutate({
mutation: deleteDeployment,
variables: {
deploymentId
}
});
return data;
});
}
addDomain(projectId, data) {
return __async(this, null, function* () {
const result = yield this.client.mutate({
mutation: addDomain,
variables: {
projectId,
data
}
});
return result.data;
});
}
getDomains(projectId, filter) {
return __async(this, null, function* () {
const { data } = yield this.client.query({
query: getDomains,
variables: {
projectId,
filter
}
});
return data;
});
}
authenticateGitHub(code) {
return __async(this, null, function* () {
const { data } = yield this.client.mutate({
mutation: authenticateGitHub,
variables: {
code
}
});
return data;
});
}
unauthenticateGithub() {
return __async(this, null, function* () {
const { data } = yield this.client.mutate({
mutation: unauthenticateGitHub
});
return data;
});
}
getAuctionData(auctionId) {
return __async(this, null, function* () {
const { data } = yield this.client.query({
query: getAuctionData,
variables: {
auctionId
}
});
return data.getAuctionData;
});
}
};
// src/types.ts
var Role = /* @__PURE__ */ ((Role2) => {
Role2["Owner"] = "Owner";
Role2["Maintainer"] = "Maintainer";
Role2["Reader"] = "Reader";
return Role2;
})(Role || {});
var Permission = /* @__PURE__ */ ((Permission2) => {
Permission2["View"] = "View";
Permission2["Edit"] = "Edit";
return Permission2;
})(Permission || {});
var Environment = /* @__PURE__ */ ((Environment2) => {
Environment2["Production"] = "Production";
Environment2["Preview"] = "Preview";
Environment2["Development"] = "Development";
return Environment2;
})(Environment || {});
var DeploymentStatus = /* @__PURE__ */ ((DeploymentStatus2) => {
DeploymentStatus2["Building"] = "Building";
DeploymentStatus2["Ready"] = "Ready";
DeploymentStatus2["Error"] = "Error";
DeploymentStatus2["Deleting"] = "Deleting";
return DeploymentStatus2;
})(DeploymentStatus || {});
var AuctionStatus = /* @__PURE__ */ ((AuctionStatus2) => {
AuctionStatus2["AuctionStatusCommitPhase"] = "commit";
AuctionStatus2["AuctionStatusRevealPhase"] = "reveal";
AuctionStatus2["AuctionStatusExpired"] = "expired";
AuctionStatus2["AuctionStatusCompleted"] = "completed";
return AuctionStatus2;
})(AuctionStatus || {});
var DomainStatus = /* @__PURE__ */ ((DomainStatus2) => {
DomainStatus2["Live"] = "Live";
DomainStatus2["Pending"] = "Pending";
return DomainStatus2;
})(DomainStatus || {});
export {
AuctionStatus,
DeploymentStatus,
DomainStatus,
Environment,
GQLClient,
Permission,
Role
};
//# sourceMappingURL=index.mjs.map

File diff suppressed because one or more lines are too long