UNPKG

@wishcbg/bobcode

Version:

基於店家同步功能的需求,讓店家能夠在不同的店家之間同步各項功能設定,並且能夠檢視各項功能的異動情況。 規劃出一套店家設定即程式碼的機制,讓店家能夠以 config file (.sac) 來定義各項功能設定,並且能夠還原店家各項功能設定。 暫且稱這個機制為「Settings as Code」「店家設定即程式碼」。

276 lines (275 loc) 8.27 kB
import { z } from 'zod'; import { BaseResourceSchema } from './base.js'; declare const resourceItemResourceSettingSchema: z.ZodObject<{ enabled: z.ZodBoolean; name: z.ZodString; bookingMax: z.ZodNumber; enableTimeOff: z.ZodDefault<z.ZodBoolean>; businessTimeBy: z.ZodEnum<["shop", "branch"]>; timeOffConfig: z.ZodOptional<z.ZodObject<{ months: z.ZodDefault<z.ZodArray<z.ZodNumber, "many">>; weekdays: z.ZodDefault<z.ZodArray<z.ZodNumber, "many">>; dateRangeSettings: z.ZodDefault<z.ZodArray<z.ZodObject<{ start: z.ZodDate; end: z.ZodDate; }, "strip", z.ZodTypeAny, { start: Date; end: Date; }, { start: Date; end: Date; }>, "many">>; timeRangeSettings: z.ZodDefault<z.ZodArray<z.ZodObject<{ start: z.ZodDate; end: z.ZodDate; }, "strip", z.ZodTypeAny, { start: Date; end: Date; }, { start: Date; end: Date; }>, "many">>; }, "strip", z.ZodTypeAny, { months: number[]; weekdays: number[]; dateRangeSettings: { start: Date; end: Date; }[]; timeRangeSettings: { start: Date; end: Date; }[]; }, { months?: number[] | undefined; weekdays?: number[] | undefined; dateRangeSettings?: { start: Date; end: Date; }[] | undefined; timeRangeSettings?: { start: Date; end: Date; }[] | undefined; }>>; excludeTimeRules: z.ZodOptional<z.ZodArray<z.ZodObject<{ type: z.ZodEnum<["once", "weekly", "monthly", "yearly"]>; onceSetting: z.ZodOptional<z.ZodObject<{ startAt: z.ZodDate; endAt: z.ZodDate; }, "strip", z.ZodTypeAny, { startAt: Date; endAt: Date; }, { startAt: Date; endAt: Date; }>>; weeklySetting: z.ZodOptional<z.ZodObject<{ week: z.ZodNumber; startTime: z.ZodNumber; endTime: z.ZodNumber; }, "strip", z.ZodTypeAny, { week: number; startTime: number; endTime: number; }, { week: number; startTime: number; endTime: number; }>>; monthlySetting: z.ZodOptional<z.ZodObject<{ startDay: z.ZodNumber; startTime: z.ZodNumber; endDay: z.ZodNumber; endTime: z.ZodNumber; }, "strip", z.ZodTypeAny, { startTime: number; endTime: number; startDay: number; endDay: number; }, { startTime: number; endTime: number; startDay: number; endDay: number; }>>; yearlySetting: z.ZodOptional<z.ZodObject<{ startMonth: z.ZodNumber; startDay: z.ZodNumber; startTime: z.ZodNumber; endMonth: z.ZodNumber; endDay: z.ZodNumber; endTime: z.ZodNumber; }, "strip", z.ZodTypeAny, { startTime: number; endTime: number; startDay: number; endDay: number; startMonth: number; endMonth: number; }, { startTime: number; endTime: number; startDay: number; endDay: number; startMonth: number; endMonth: number; }>>; }, "strip", z.ZodTypeAny, { type: "once" | "weekly" | "monthly" | "yearly"; onceSetting?: { startAt: Date; endAt: Date; } | undefined; weeklySetting?: { week: number; startTime: number; endTime: number; } | undefined; monthlySetting?: { startTime: number; endTime: number; startDay: number; endDay: number; } | undefined; yearlySetting?: { startTime: number; endTime: number; startDay: number; endDay: number; startMonth: number; endMonth: number; } | undefined; }, { type: "once" | "weekly" | "monthly" | "yearly"; onceSetting?: { startAt: Date; endAt: Date; } | undefined; weeklySetting?: { week: number; startTime: number; endTime: number; } | undefined; monthlySetting?: { startTime: number; endTime: number; startDay: number; endDay: number; } | undefined; yearlySetting?: { startTime: number; endTime: number; startDay: number; endDay: number; startMonth: number; endMonth: number; } | undefined; }>, "many">>; order: z.ZodOptional<z.ZodNumber>; image: z.ZodOptional<z.ZodString>; appointmentServiceLogicIds: z.ZodArray<z.ZodString, "many">; resourceItemCategoryLogicIds: z.ZodArray<z.ZodString, "many">; businessTimeBranchLogicId: z.ZodString; }, "strip", z.ZodTypeAny, { name: string; appointmentServiceLogicIds: string[]; enabled: boolean; bookingMax: number; enableTimeOff: boolean; businessTimeBy: "shop" | "branch"; resourceItemCategoryLogicIds: string[]; businessTimeBranchLogicId: string; order?: number | undefined; image?: string | undefined; timeOffConfig?: { months: number[]; weekdays: number[]; dateRangeSettings: { start: Date; end: Date; }[]; timeRangeSettings: { start: Date; end: Date; }[]; } | undefined; excludeTimeRules?: { type: "once" | "weekly" | "monthly" | "yearly"; onceSetting?: { startAt: Date; endAt: Date; } | undefined; weeklySetting?: { week: number; startTime: number; endTime: number; } | undefined; monthlySetting?: { startTime: number; endTime: number; startDay: number; endDay: number; } | undefined; yearlySetting?: { startTime: number; endTime: number; startDay: number; endDay: number; startMonth: number; endMonth: number; } | undefined; }[] | undefined; }, { name: string; appointmentServiceLogicIds: string[]; enabled: boolean; bookingMax: number; businessTimeBy: "shop" | "branch"; resourceItemCategoryLogicIds: string[]; businessTimeBranchLogicId: string; order?: number | undefined; image?: string | undefined; enableTimeOff?: boolean | undefined; timeOffConfig?: { months?: number[] | undefined; weekdays?: number[] | undefined; dateRangeSettings?: { start: Date; end: Date; }[] | undefined; timeRangeSettings?: { start: Date; end: Date; }[] | undefined; } | undefined; excludeTimeRules?: { type: "once" | "weekly" | "monthly" | "yearly"; onceSetting?: { startAt: Date; endAt: Date; } | undefined; weeklySetting?: { week: number; startTime: number; endTime: number; } | undefined; monthlySetting?: { startTime: number; endTime: number; startDay: number; endDay: number; } | undefined; yearlySetting?: { startTime: number; endTime: number; startDay: number; endDay: number; startMonth: number; endMonth: number; } | undefined; }[] | undefined; }>; export type IResourceItemResourceSettingSchema = z.infer<typeof resourceItemResourceSettingSchema>; export declare const ResourceItemResourceSchema: BaseResourceSchema<typeof resourceItemResourceSettingSchema>; export {};