@coder/backstage-plugin-coder
Version:
Create and manage Coder workspaces from Backstage
65 lines (63 loc) • 1.96 kB
JavaScript
const CODER_QUERY_KEY_PREFIX = "coder-backstage-plugin";
const sharedAuthQueryKey = [CODER_QUERY_KEY_PREFIX, "auth"];
const PENDING_REFETCH_INTERVAL_MS = 5e3;
const BACKGROUND_REFETCH_INTERVAL_MS = 6e4;
function getCoderWorkspacesRefetchInterval(workspaces2) {
if (workspaces2 === void 0) {
return false;
}
const areAnyWorkspacesPending = workspaces2.some((ws) => {
if (ws.latest_build.status === "pending") {
return true;
}
return ws.latest_build.resources.some((resource) => {
const agents = resource.agents;
return agents?.some((agent) => agent.status === "connecting") ?? false;
});
});
return areAnyWorkspacesPending ? PENDING_REFETCH_INTERVAL_MS : BACKGROUND_REFETCH_INTERVAL_MS;
}
function getSharedWorkspacesQueryKey(coderQuery) {
return [CODER_QUERY_KEY_PREFIX, "workspaces", coderQuery];
}
function workspaces({
auth,
api,
coderQuery
}) {
const enabled = auth.isAuthenticated;
return {
queryKey: getSharedWorkspacesQueryKey(coderQuery),
enabled,
keepPreviousData: enabled && coderQuery !== "",
refetchInterval: getCoderWorkspacesRefetchInterval,
queryFn: async () => {
const res = await api.getWorkspaces({
q: coderQuery,
limit: 0
});
return res.workspaces;
}
};
}
function workspacesByRepo({
coderQuery,
api,
auth,
workspacesConfig
}) {
const enabled = auth.isAuthenticated && coderQuery.trim() !== "";
return {
queryKey: [...getSharedWorkspacesQueryKey(coderQuery), workspacesConfig],
enabled,
keepPreviousData: enabled,
refetchInterval: getCoderWorkspacesRefetchInterval,
queryFn: async () => {
const request = { q: coderQuery, limit: 0 };
const res = await api.getWorkspacesByRepo(request, workspacesConfig);
return res.workspaces;
}
};
}
export { CODER_QUERY_KEY_PREFIX, sharedAuthQueryKey, workspaces, workspacesByRepo };
//# sourceMappingURL=queryOptions.esm.js.map