UNPKG

@ppramanik62/lab-works

Version:

A comprehensive command-line toolkit for hydraulic turbine calculations, supporting Francis Turbine and Pelton Wheel computations with interactive mode and validation.

84 lines 2.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.kaplanInputSchema = exports.peltonInputSchema = exports.francisInputSchema = exports.nonNegativeNumber = exports.positiveNumber = void 0; /** * Zod validation schemas for input validation */ const zod_1 = require("zod"); /** * Basic positive number schema with automatic number transformation */ exports.positiveNumber = zod_1.z .string() .or(zod_1.z.number()) .transform((val) => { const num = typeof val === "string" ? parseFloat(val) : val; if (isNaN(num)) throw new Error("Invalid number format"); return num; }) .refine((val) => val > 0, { message: "Value must be positive", }); /** * Non-negative number schema (allows zero) */ exports.nonNegativeNumber = zod_1.z .string() .or(zod_1.z.number()) .transform((val) => { const num = typeof val === "string" ? parseFloat(val) : val; if (isNaN(num)) throw new Error("Invalid number format"); return num; }) .refine((val) => val >= 0, { message: "Value must be non-negative", }); /** * Francis turbine input validation schema */ exports.francisInputSchema = zod_1.z .object({ ppg: exports.positiveNumber.describe("Positive pressure gauge reading"), npg: exports.positiveNumber.describe("Negative pressure gauge reading"), w1: exports.positiveNumber.describe("Weight 1 (kg)"), w2: exports.positiveNumber.describe("Weight 2 (kg)"), rpm: exports.positiveNumber.describe("RPM (revolutions per minute)"), }) .refine((data) => data.w1 > data.w2, { message: "Weight 1 (w1) must be greater than Weight 2 (w2)", path: ["w1"], }); /** * Pelton wheel input validation schema */ exports.peltonInputSchema = zod_1.z .object({ pg: exports.positiveNumber.describe("Pressure gauge reading"), w1: exports.positiveNumber.describe("Weight 1 (kg)"), w2: exports.positiveNumber.describe("Weight 2 (kg)"), rpm: exports.positiveNumber.describe("RPM (revolutions per minute)"), hf: exports.positiveNumber.describe("Height hf (mm)"), }) .refine((data) => data.w1 > data.w2, { message: "Weight 1 (w1) must be greater than Weight 2 (w2)", path: ["w1"], }); /** * Kaplan turbine input validation schema */ exports.kaplanInputSchema = zod_1.z .object({ pg: exports.positiveNumber.describe("Pressure gauge reading"), w1: exports.positiveNumber.describe("Weight 1 (kg)"), w2: exports.positiveNumber.describe("Weight 2 (kg)"), rpm: exports.positiveNumber.describe("RPM (revolutions per minute)"), lhs_mercury: exports.positiveNumber.describe("Left hand side manometer reading"), rhs_mercury: exports.positiveNumber.describe("Right hand side manometer reading"), }) .refine((data) => data.w1 > data.w2, { message: "Weight 1 (w1) must be greater than Weight 2 (w2)", path: ["w1"], }); //# sourceMappingURL=validation.js.map