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