UNPKG

@azure-utils/storybooks

Version:

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

116 lines (111 loc) 2.43 kB
import type { HttpHandler, HttpRequest, HttpResponse, HttpResponseInit, InvocationContext, } from "@azure/functions"; import type z from "zod"; /** * Type for the callback function to check permissions. * * Return true to allow access, or following to deny: * - false - returns 403 response * - HttpResponse - returns the specified HTTP response */ export type CheckPermissionsCallback = ( permissions: Permission[], context: InvocationContext, request: HttpRequest ) => | boolean | HttpResponse | HttpResponseInit | Promise<boolean | HttpResponse | HttpResponseInit>; /** * Type of permission to check */ export type Permission = { resource: PermissionResource; action: PermissionAction; projectId?: string; }; /** * Type of possible resources to check permissions for */ export type PermissionResource = | "project" | "build" | "label" | "openapi" | "ui"; /** * Type of possible actions to check permissions for */ export type PermissionAction = "create" | "read" | "update" | "delete"; export interface OpenAPIOptions { /** * Enable or disable openAPI schema endpoint. * @default false */ disabled?: boolean; /** * Title of the OpenAPI schema * @default SERVICE_NAME (storybooks) */ title?: string; /** * A version visible in the OpenAPI schema. * @default process.env['NODE_ENV'] */ version?: string; /** * Servers to be included in the OpenAPI schema. */ servers?: Array<{ url: string; description?: string; variables?: Record< string, { enum?: string[] | boolean[] | number[]; default: string | boolean | number; description?: string; } >; }>; } /** * @private * Options for configuring the router */ export interface RouterOptions { /** * Whether the router requires authentication. */ authLevel?: "admin"; /** * Name of the service */ serviceName: string; /** * The base route for the router. */ baseRoute: string; /** * Enable or disable OpenAPI schema generation. */ openAPIEnabled: boolean; /** * A base schema for path parameters based on baseRoute. */ basePathParamsSchema: z.ZodObject; /** * A wrapper function for the HTTP handler. * It adds request-specific context to the handler. */ handlerWrapper: ( handler: HttpHandler, permissions: Permission[] ) => HttpHandler; }