UNPKG

@fdm-monster/server

Version:

FDM Monster is a bulk OctoPrint, Klipper, PrusaLink and BambuLab manager to set up, configure and monitor 3D printers. Our aim is to provide neat overview over your farm.

101 lines (100 loc) 3.82 kB
import { printerApiKeyValidator, printerDisabledReasonValidator, printerEnabledValidator, printerNameValidator, printerPasswordValidator, printerTypeValidator, printerUrlValidator, printerUsernameValidator } from "./printer-service.validation.js"; import { floorNameValidator, floorOrderValidator, xValidator, yValidator } from "./floor-service.validation.js"; import { z } from "zod"; //#region src/services/validators/yaml-service.validation.ts const exportPrintersFloorsYamlSchema = z.object({ exportPrinters: z.boolean(), exportFloorGrid: z.boolean(), exportFloors: z.boolean(), exportTags: z.boolean(), exportGroups: z.boolean().optional(), exportSettings: z.boolean().default(false), exportUsers: z.boolean().default(false), printerComparisonStrategiesByPriority: z.array(z.string().refine((val) => [ "name", "url", "id" ].includes(val))).min(1), floorComparisonStrategiesByPriority: z.string().refine((val) => [ "name", "floor", "id" ].includes(val)), notes: z.string().optional() }); const numberOrStringIdValidator = z.union([z.number(), z.string()]); const printerPositionsSchema = z.array(z.object({ printerId: numberOrStringIdValidator, floorId: numberOrStringIdValidator.optional(), x: xValidator, y: yValidator })).min(0); const importPrinterPositionsSchema = z.object({ printers: printerPositionsSchema.optional() }); const importPrintersFloorsYamlSchema = z.object({ version: z.string().optional(), exportedAt: z.any().optional(), databaseType: z.enum(["mongo", "sqlite"]).default("sqlite"), config: z.object({ exportPrinters: z.boolean(), exportFloorGrid: z.boolean(), exportFloors: z.boolean(), exportTags: z.boolean().optional(), exportGroups: z.boolean().optional(), exportSettings: z.boolean().optional().default(false), exportUsers: z.boolean().optional().default(false), printerComparisonStrategiesByPriority: z.array(z.string().refine((val) => [ "name", "url", "id" ].includes(val))).min(1), floorComparisonStrategiesByPriority: z.string().refine((val) => [ "name", "floor", "id" ].includes(val)) }), printers: z.array(z.object({ id: numberOrStringIdValidator, printerURL: printerUrlValidator, printerType: printerTypeValidator, apiKey: printerApiKeyValidator, username: printerUsernameValidator.optional(), password: printerPasswordValidator.optional(), enabled: printerEnabledValidator, disabledReason: printerDisabledReasonValidator.optional(), name: printerNameValidator, printerName: z.string().optional(), settingsAppearance: z.object({ name: z.string().optional() }).optional(), feedRate: z.string().nullable().optional(), flowRate: z.string().nullable().optional(), assignee: z.string().nullable().optional() })).min(0).default([]), floors: z.array(z.object({ id: numberOrStringIdValidator, order: floorOrderValidator, floor: floorOrderValidator.optional(), name: floorNameValidator, printers: printerPositionsSchema })).min(0).default([]), tags: z.array(z.object({ id: numberOrStringIdValidator, name: z.string(), color: z.string().optional(), printers: z.array(z.object({ printerId: numberOrStringIdValidator })) })).min(0).default([]), settings: z.any().optional(), users: z.array(z.object({ id: numberOrStringIdValidator, username: z.string(), isDemoUser: z.boolean().optional(), isRootUser: z.boolean().optional(), isVerified: z.boolean().optional(), needsPasswordChange: z.boolean().optional(), passwordHash: z.string(), createdAt: z.date().optional(), roles: z.array(z.any()).optional() })).optional().default([]) }); //#endregion export { exportPrintersFloorsYamlSchema, importPrinterPositionsSchema, importPrintersFloorsYamlSchema, numberOrStringIdValidator, printerPositionsSchema }; //# sourceMappingURL=yaml-service.validation.js.map