* revert: "fix: Request permissions to allow events to be created on shared Office365/Outlook calendars (#17760)" This reverts commit1680cba5a5. * plain.com card * detiled error handling for get customer * working email and id * hmac * Revert "fix: correct line-breaks in calendar event description (#18077)" This reverts commit06494a6999. * pr changes requet * remove pan for now * add-new-implementation-for-early-review * Pushing fix for createHmac stringify * added validation and user repository for email check * add apiRouteMiddleware which handles the error handling * HMAC_SECRET_KEY -> PLAIN_HMAC_SECRET_KEY * Use the right error * Convey right error to consumer * Fixup apiRouteMiddleware to handle handler * Don't export handler, only export POST * changed to app directory * working unkown user card --------- Co-authored-by: Keith Williams <keithwillcode@gmail.com> Co-authored-by: Omar López <zomars@me.com> Co-authored-by: Alex van Andel <me@alexvanandel.com>
87 lines
2.6 KiB
TypeScript
87 lines
2.6 KiB
TypeScript
import { z } from "zod";
|
|
|
|
export const ComponentTextSize = z.enum(["S", "M", "L"]);
|
|
export type ComponentTextSize = z.infer<typeof ComponentTextSize>;
|
|
|
|
export const ComponentTextColor = z.enum(["NORMAL", "MUTED", "SUCCESS", "WARNING", "ERROR"]);
|
|
export type ComponentTextColor = z.infer<typeof ComponentTextColor>;
|
|
|
|
export const ComponentSpacerSize = z.enum(["XS", "S", "M", "L", "XL"]);
|
|
export type ComponentSpacerSize = z.infer<typeof ComponentSpacerSize>;
|
|
|
|
export const ComponentDividerSpacingSize = z.enum(["XS", "S", "M", "L", "XL"]);
|
|
export type ComponentDividerSpacingSize = z.infer<typeof ComponentDividerSpacingSize>;
|
|
|
|
export const ComponentBadgeColor = z.enum(["GREY", "GREEN", "YELLOW", "RED", "BLUE"]);
|
|
export type ComponentBadgeColor = z.infer<typeof ComponentBadgeColor>;
|
|
|
|
const Text = z.object({
|
|
textSize: ComponentTextSize.nullish(),
|
|
textColor: ComponentTextColor.nullish(),
|
|
text: z.string().min(1).max(5000),
|
|
});
|
|
|
|
const Divider = z.object({
|
|
dividerSpacingSize: ComponentDividerSpacingSize.nullish(),
|
|
});
|
|
|
|
const LinkButton = z.object({
|
|
linkButtonUrl: z.string().url(),
|
|
linkButtonLabel: z.string().max(500),
|
|
});
|
|
|
|
const Spacer = z.object({
|
|
spacerSize: ComponentSpacerSize,
|
|
});
|
|
|
|
const Badge = z.object({
|
|
badgeLabel: z.string().max(500),
|
|
badgeColor: ComponentBadgeColor.nullish(),
|
|
});
|
|
|
|
const CopyButton = z.object({
|
|
copyButtonValue: z.string().max(1000),
|
|
copyButtonTooltipLabel: z.string().max(500).nullish(),
|
|
});
|
|
|
|
const RowContentUnionInput = z.object({
|
|
componentText: Text.optional(),
|
|
componentDivider: Divider.optional(),
|
|
componentLinkButton: LinkButton.optional(),
|
|
componentSpacer: Spacer.optional(),
|
|
componentBadge: Badge.optional(),
|
|
componentCopyButton: CopyButton.optional(),
|
|
});
|
|
|
|
const Row = z.object({
|
|
rowMainContent: z.array(RowContentUnionInput),
|
|
rowAsideContent: z.array(RowContentUnionInput),
|
|
});
|
|
|
|
const ContainerContentUnionInput = z.object({
|
|
componentText: Text.optional(),
|
|
componentDivider: Divider.optional(),
|
|
componentLinkButton: LinkButton.optional(),
|
|
componentSpacer: Spacer.optional(),
|
|
componentBadge: Badge.optional(),
|
|
componentCopyButton: CopyButton.optional(),
|
|
componentRow: Row.optional(),
|
|
});
|
|
|
|
const Container = z.object({
|
|
containerContent: z.array(ContainerContentUnionInput).min(1),
|
|
});
|
|
|
|
export const Component = z.object({
|
|
componentText: Text.optional(),
|
|
componentDivider: Divider.optional(),
|
|
componentLinkButton: LinkButton.optional(),
|
|
componentSpacer: Spacer.optional(),
|
|
componentBadge: Badge.optional(),
|
|
componentCopyButton: CopyButton.optional(),
|
|
componentRow: Row.optional(),
|
|
componentContainer: Container.optional(),
|
|
});
|
|
|
|
export type Component = z.infer<typeof Component>;
|