UNPKG

@fdm-monster/server

Version:

FDM Monster is a bulk OctoPrint manager to set up, configure and monitor 3D printers. Our aim is to provide extremely optimized websocket performance and reliability.

133 lines (132 loc) 4.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { createPrinterSchema: function() { return createPrinterSchema; }, printerApiKeyValidator: function() { return printerApiKeyValidator; }, printerDateAddedValidator: function() { return printerDateAddedValidator; }, printerDisabledReasonValidator: function() { return printerDisabledReasonValidator; }, printerEnabledValidator: function() { return printerEnabledValidator; }, printerNameValidator: function() { return printerNameValidator; }, printerPasswordValidator: function() { return printerPasswordValidator; }, printerTypeValidator: function() { return printerTypeValidator; }, printerUrlValidator: function() { return printerUrlValidator; }, printerUsernameValidator: function() { return printerUsernameValidator; }, refineApiKeyValidator: function() { return refineApiKeyValidator; }, updatePrinterDisabledReasonSchema: function() { return updatePrinterDisabledReasonSchema; }, updatePrinterEnabledSchema: function() { return updatePrinterEnabledSchema; } }); const _serviceconstants = require("../../constants/service.constants"); const _printerapiinterface = require("../printer-api.interface"); const _zod = require("zod"); const octoPrintApiKeySchema = _zod.z.string().min(_serviceconstants.apiKeyLengthMinDefault).max(_serviceconstants.apiKeyLengthMaxDefault).regex(/^[a-zA-Z0-9_-]+$/, "Alpha-numeric, dash, and underscore only"); const printerApiKeyValidator = _zod.z.string().optional(); const printerNameValidator = _zod.z.string(); const printerUsernameValidator = _zod.z.string(); const printerPasswordValidator = _zod.z.string(); const printerEnabledValidator = _zod.z.boolean(); const printerDisabledReasonValidator = _zod.z.string().optional(); const printerUrlValidator = _zod.z.string().url(); const printerTypeValidator = _zod.z.nativeEnum(_printerapiinterface.PrinterTypesEnum); const printerDateAddedValidator = _zod.z.number().optional(); const prusaLinkAuthSchema = _zod.z.object({ username: printerUsernameValidator, password: printerPasswordValidator }); const basePrinterSchema = _zod.z.object({ dateAdded: printerDateAddedValidator, printerURL: printerUrlValidator, printerType: printerTypeValidator, apiKey: printerApiKeyValidator, username: printerUsernameValidator.optional(), password: printerPasswordValidator.optional(), enabled: printerEnabledValidator.optional(), name: printerNameValidator }).strip(); const apiKeyPrinterTypeSchema = _zod.z.object({ apiKey: printerApiKeyValidator, printerType: printerTypeValidator, username: printerUsernameValidator.optional(), password: printerPasswordValidator.optional() }); const refineApiKeyValidator = (data, ctx)=>{ if (data.printerType === _printerapiinterface.OctoprintType) { const result = octoPrintApiKeySchema.safeParse(data.apiKey); if (!result.success) { result.error.issues.forEach((issue)=>{ ctx.addIssue({ ...issue, path: [ "apiKey", ...issue.path ] }); }); } } else if (data.printerType === _printerapiinterface.PrusaLinkType) { const result = prusaLinkAuthSchema.safeParse({ username: data.username, password: data.password }); if (!result.success) { result.error.issues.forEach((issue)=>{ ctx.addIssue({ ...issue, path: [ "username", ...issue.path ] }); ctx.addIssue({ ...issue, path: [ "password", ...issue.path ] }); }); } } }; const createPrinterSchema = basePrinterSchema.superRefine(refineApiKeyValidator); const updatePrinterEnabledSchema = _zod.z.object({ enabled: printerEnabledValidator }); const updatePrinterDisabledReasonSchema = _zod.z.object({ disabledReason: printerDisabledReasonValidator, enabled: printerEnabledValidator.optional() }); //# sourceMappingURL=printer-service.validation.js.map