UNPKG

@axarai/axar

Version:

TypeScript-based agent framework for building agentic applications powered by LLMs

63 lines (62 loc) 2.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.registerProperty = registerProperty; exports.addValidationRule = addValidationRule; const meta_keys_1 = require("./meta-keys"); /** * Registers a property in the metadata registry for schema generation. * Ensures each property is only registered once. * * @param target - The target object (typically the class prototype) * @param propertyKey - The property symbol */ function registerProperty(target, propertyKey) { const propertyKeyStr = propertyKey.toString(); const properties = Reflect.getMetadata(meta_keys_1.META_KEYS.PROPERTIES, target) || []; if (!properties.includes(propertyKeyStr)) { properties.push(propertyKeyStr); Reflect.defineMetadata(meta_keys_1.META_KEYS.PROPERTIES, properties, target); } } /** * Adds a validation rule to a property's metadata. * * @param target - The target object * @param propertyKey - The property to validate * @param rule - The validation rule to add * * @example * ```typescript * addValidationRule(user, 'age', { * type: 'minimum', * params: [0] * }); * ``` */ function addValidationRule(target, propertyKey, rule) { const propertyKeyStr = propertyKey.toString(); const existingRules = getValidationMetadata(target, propertyKeyStr); existingRules.push(rule); setValidationMetadata(target, propertyKeyStr, existingRules); } /** * Retrieves validation rules for a property. * * @param target - The target object * @param propertyKey - The property to get validation rules for * @returns Array of validation rules */ function getValidationMetadata(target, propertyKey) { return (Reflect.getMetadata(meta_keys_1.META_KEYS.PROPERTY_RULES, target, propertyKey) || []); } /** * Sets validation rules for a property. * * @param target - The target object * @param propertyKey - The property to set validation rules for * @param rules - Array of validation rules to set * @throws {Error} If any required parameter is missing or if operation fails */ function setValidationMetadata(target, propertyKey, rules) { Reflect.defineMetadata(meta_keys_1.META_KEYS.PROPERTY_RULES, rules, target, propertyKey); }