@bitte-ai/agent-sdk
Version:
Agent SDK for Bitte Protocol
64 lines (63 loc) • 2.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateInput = validateInput;
exports.addressField = addressField;
exports.addressOrSymbolField = addressOrSymbolField;
exports.numberField = numberField;
exports.floatField = floatField;
const viem_1 = require("viem");
function validateInput(params, validatorMapping) {
const fields = createFields(validatorMapping);
return Object.fromEntries(Object.entries(fields).map(([key, value]) => {
const { paramName, validator } = value;
return [key, validator(params.get(paramName), paramName)];
}));
}
function addressField(param, name) {
return parseField(param, name, viem_1.getAddress, "Invalid Address field");
}
function addressOrSymbolField(param, name) {
return parseField(param, name, (value) => {
try {
return (0, viem_1.getAddress)(value);
}
catch {
return value;
}
}, "Invalid Address or Symbol field");
}
function numberField(param, name) {
const value = parseField(param, name, parseInt, "Invalid Float field");
if (isNaN(value)) {
throw new Error(`Invalid Integer field '${name}': Not a number`);
}
return value;
}
function floatField(param, name) {
const value = parseField(param, name, parseFloat, "Invalid Float parameter");
if (isNaN(value)) {
throw new Error(`Invalid Float parameter '${name}': Not a number`);
}
return value;
}
function createFields(validatorMapping) {
return Object.fromEntries(Object.keys(validatorMapping).map((key) => [
key,
{ paramName: key, validator: validatorMapping[key] },
]));
}
function exists(param, name) {
if (!param) {
throw new Error(`Missing required field: '${name}'`);
}
return param;
}
function parseField(param, name, parser, errorMessage) {
const value = exists(param, name);
try {
return parser(value);
}
catch {
throw new Error(`${errorMessage} '${name}': ${value}`);
}
}