UNPKG

@azure-utils/storybooks

Version:

Utils to upload and manage Storybooks via Azure Functions and storage.

152 lines (150 loc) 4.91 kB
import { QUERY_PARAMS } from "./constants"; import { getStore } from "./store"; import { joinUrl } from "./url-utils"; /** * URL builder for the Storybooks router. * @private */ export const urlBuilder = { root: (...pathnames: string[]) => { const { baseRoute, url: base } = getStore(); const url = new URL(joinUrl(baseRoute, ...pathnames), base); return url.toString(); }, staticFile: (filepath: string) => { const { baseRoute, url: base } = getStore(); const url = new URL(joinUrl(baseRoute, filepath), base); return url.toString(); }, allProjects: () => { const { baseRoute, url: base } = getStore(); const url = new URL(joinUrl(baseRoute, "projects"), base); return url.toString(); }, projectCreate: () => { const { baseRoute, url: base } = getStore(); const url = new URL(joinUrl(baseRoute, "projects"), base); url.searchParams.set(QUERY_PARAMS.mode, QUERY_PARAMS.newResource); return url.toString(); }, projectId: (projectId: string) => { const { baseRoute, url: base } = getStore(); const url = new URL(joinUrl(baseRoute, "projects", projectId), base); return url.toString(); }, projectIdEdit: (projectId: string) => { const { baseRoute, url: base } = getStore(); const url = new URL(joinUrl(baseRoute, "projects", projectId), base); url.searchParams.set(QUERY_PARAMS.mode, QUERY_PARAMS.editResource); return url.toString(); }, allBuilds: (projectId: string) => { const { baseRoute, url: base } = getStore(); const url = new URL( joinUrl(baseRoute, "projects", projectId, "builds"), base ); return url.toString(); }, buildSHA: (projectId: string, sha: string, labelSlug?: string) => { const { baseRoute, url: base } = getStore(); const url = new URL( joinUrl(baseRoute, "projects", projectId, "builds", sha), base ); if (labelSlug) { url.searchParams.set(QUERY_PARAMS.labelSlug, labelSlug); } return url.toString(); }, buildUpload: (projectId: string) => { const { baseRoute, url: base } = getStore(); const url = new URL( joinUrl(baseRoute, "projects", projectId, "builds"), base ); url.searchParams.set(QUERY_PARAMS.mode, QUERY_PARAMS.newResource); return url.toString(); }, allLabels: (projectId: string) => { const { baseRoute, url: base } = getStore(); const url = new URL( joinUrl(baseRoute, "projects", projectId, "labels"), base ); return url.toString(); }, labelCreate: (projectId: string) => { const { baseRoute, url: base } = getStore(); const url = new URL( joinUrl(baseRoute, "projects", projectId, "labels"), base ); url.searchParams.set(QUERY_PARAMS.mode, QUERY_PARAMS.newResource); return url.toString(); }, labelSlug: (projectId: string, labelSlug: string) => { const { baseRoute, url: base } = getStore(); const url = new URL( joinUrl(baseRoute, "projects", projectId, "labels", labelSlug), base ); return url.toString(); }, labelSlugEdit: (projectId: string, labelSlug: string) => { const { baseRoute, url: base } = getStore(); const url = new URL( joinUrl(baseRoute, "projects", projectId, "labels", labelSlug), base ); url.searchParams.set(QUERY_PARAMS.mode, QUERY_PARAMS.editResource); return url.toString(); }, labelSlugLatest: (projectId: string, labelSlug: string) => { const { baseRoute, url: base } = getStore(); const url = new URL( joinUrl(baseRoute, "projects", projectId, "labels", labelSlug, "latest"), base ); return url.toString(); }, storybookIndexHtml: (projectId: string, sha: string) => { const { baseRoute, url: base } = getStore(); const url = new URL( joinUrl(baseRoute, "_", projectId, sha, "index.html"), base ); return url.toString(); }, storybookTestReport: (projectId: string, sha: string) => { const { baseRoute, url: base } = getStore(); const url = new URL( joinUrl(baseRoute, "_", projectId, sha, "report", "index.html"), base ); return url.toString(); }, storybookCoverage: (projectId: string, sha: string) => { const { baseRoute, url: base } = getStore(); const url = new URL( joinUrl(baseRoute, "_", projectId, sha, "coverage", "index.html"), base ); return url.toString(); }, storybookZip: (projectId: string, sha: string) => { const { baseRoute, url: base } = getStore(); const url = new URL( joinUrl(baseRoute, "_", projectId, sha, "storybook.zip"), base ); return url.toString(); }, gitHub: (gitHubRepo: string, ...pathnames: string[]) => { const url = new URL( joinUrl(gitHubRepo, ...pathnames), "https://github.com" ); return url.toString(); }, } satisfies Record<string, (...args: any[]) => string>;