@azure-utils/storybooks
Version:
Utils to upload and manage Storybooks via Azure Functions and storage.
112 lines (110 loc) • 4.83 kB
JavaScript
const require_chunk = require('./chunk-DWy1uDak.cjs');
const require_constants = require('./constants-94H7Co6A.cjs');
require('./azure-data-tables-Cr_5xanT.cjs');
require('./mime-utils-t6SSMbeF.cjs');
require('./error-utils-DFTvM-wv.cjs');
require('./azure-storage-blob-BAHnImGv.cjs');
const require_shared = require('./shared-BSQDPNdH.cjs');
require('./projects-Dq7sJTc7.cjs');
const require_timer_purge_handler = require('./timer-purge-handler-Da1TCfbg.cjs');
require('./openapi-utils-CMVFCUk1.cjs');
const require_store = require('./store-CYxr095K.cjs');
const require_url_utils = require('./url-utils-Dy7KiQmB.cjs');
require('./table-CnB0C2aQ.cjs');
require('./projects-table-BIdoDclZ.cjs');
require('./builds-table-C0WHumRL.cjs');
require('./labels-table-C6Zj73wz.cjs');
const require_projects_router = require('./projects-router-CPG9dN8W.cjs');
require('./validators-XghOucvl.cjs');
require('./upload-utils-WCE_dx3_.cjs');
const require_builds_router = require('./builds-router-CjqDPSp2.cjs');
const require_labels_router = require('./labels-router-D-Imun3b.cjs');
require('./openapi-handler-DHgi5PyL.cjs');
const require_web_ui_router = require('./web-ui-router-B9HQAZXS.cjs');
const require_storybook_router = require('./storybook-router-BIGCGqvZ.cjs');
const __azure_functions = require_chunk.__toESM(require("@azure/functions"));
const zod = require_chunk.__toESM(require("zod"));
//#region src/index.ts
/**
* Function to register all routes required to manage the Storybooks including
* GET, POST and DELETE methods.
*
* @returns a function to register additional HTTP handlers for the service.
*/
function registerStorybooksRouter(options = {}) {
const { serviceName = require_constants.DEFAULT_SERVICE_NAME, baseRoute = "", authLevel, storageConnectionStringEnvVar = require_constants.DEFAULT_STORAGE_CONN_STR_ENV_VAR, purgeScheduleCron, openapi, checkPermissions = require_constants.DEFAULT_CHECK_PERMISSIONS_CALLBACK } = options;
const storageConnectionString = process.env[storageConnectionStringEnvVar];
if (!storageConnectionString) throw new Error("Missing env-var '${storageConnectionStringEnvVar}' value.\nIt is required to connect with Azure Storage resource.");
console.log("Registering Storybooks Router");
const openAPIEnabled = !openapi?.disabled;
__azure_functions.app.setup({ enableHttpStream: true });
const handlerWrapper = require_store.wrapHttpHandlerWithStore.bind(null, {
serviceName,
baseRoute,
authLevel,
connectionString: storageConnectionString,
openapi,
staticDirs: options.staticDirs || ["./public"],
checkPermissions
});
const normalisedServiceName = serviceName.toLowerCase().replace(/\s+/g, "_");
require_projects_router.registerProjectsRouter({
serviceName: normalisedServiceName,
baseRoute: require_url_utils.joinUrl(baseRoute, "projects"),
basePathParamsSchema: require_shared.EmptyObjectSchema,
openAPIEnabled,
handlerWrapper
});
require_builds_router.registerBuildsRouter({
serviceName: normalisedServiceName,
baseRoute: require_url_utils.joinUrl(baseRoute, "projects", "{projectId}", "builds"),
basePathParamsSchema: zod.default.object({ projectId: require_shared.ProjectIdSchema }),
openAPIEnabled,
handlerWrapper
});
require_labels_router.registerLabelsRouter({
serviceName: normalisedServiceName,
baseRoute: require_url_utils.joinUrl(baseRoute, "projects", "{projectId}", "labels"),
basePathParamsSchema: zod.default.object({ projectId: require_shared.ProjectIdSchema }),
openAPIEnabled,
handlerWrapper
});
require_storybook_router.registerStorybookRouter({
serviceName: normalisedServiceName,
baseRoute: require_url_utils.joinUrl(baseRoute, "_"),
basePathParamsSchema: require_shared.EmptyObjectSchema,
openAPIEnabled,
handlerWrapper
});
require_web_ui_router.registerWebUIRouter({
serviceName: normalisedServiceName,
baseRoute,
basePathParamsSchema: require_shared.EmptyObjectSchema,
openAPIEnabled,
handlerWrapper
});
if (purgeScheduleCron !== null) __azure_functions.app.timer(`${normalisedServiceName}-timer_purge`, {
schedule: purgeScheduleCron || require_constants.DEFAULT_PURGE_SCHEDULE_CRON,
handler: require_timer_purge_handler.timerPurgeHandler(storageConnectionString)
});
/**
* Register an HTTP function.
*
* The baseRoute and authLevel is inherited.
*
* @param name unique name for the HTTP function
* @param options Options for Azure HTTP function
*/
function registerRoute(name, options$1) {
__azure_functions.app.http(`${normalisedServiceName}-${name}`, {
authLevel,
...options$1,
route: require_url_utils.joinUrl(baseRoute, options$1.route || name),
handler: handlerWrapper(options$1.handler, []),
methods: options$1.methods || ["GET"]
});
}
return registerRoute;
}
//#endregion
exports.registerStorybooksRouter = registerStorybooksRouter;