@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
JavaScript
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