"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.zNumeroInteiroPositivo = exports.zNumeroInteiro = exports.zNumeroPositivo = exports.zNumero = void 0; const zod_1 = __importDefault(require("zod")); const zPreprocessarNumero = (p) => { if (typeof p === "number") return p; if (typeof p !== "string") return p; let p2 = p; if (p2.includes(",")) { // ponto de milhar → remove; vírgula decimal → troca por ponto p2 = p2.replace(/\./g, "").replace(",", "."); } // remove tudo que não seja dígito ou ponto decimal p2 = p2.replace(/[^0-9.]/g, ""); if (p2 == "") return null; return Number(p2); }; /** * Schema numérico que aceita strings legadas e normaliza para `number`. * * O campo **é** um número. O `preprocess` resolve compatibilidade com dados * antigos onde o frontend enviava strings formatadas (BR ou monetária). * * Formatos de entrada aceitos: * - `10` → number direto * - `10.1` → ponto decimal * - `10,1` → vírgula decimal (BR) * - `1.000,1` → milhar com ponto + vírgula decimal (BR) * - `R$ 10,01` → prefixo monetário legado */ exports.zNumero = zod_1.default.preprocess(zPreprocessarNumero, zod_1.default.number()); exports.zNumeroPositivo = zod_1.default.preprocess(zPreprocessarNumero, zod_1.default.number().positive()); exports.zNumeroInteiro = zod_1.default.preprocess(zPreprocessarNumero, zod_1.default.number().int()); exports.zNumeroInteiroPositivo = zod_1.default.preprocess(zPreprocessarNumero, zod_1.default.number().int().positive());