@axarai/axar
Version:
TypeScript-based agent framework for building agentic applications powered by LLMs
63 lines (62 loc) • 2.22 kB
JavaScript
;
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);
}