UNPKG

@aws-cdk/aws-bedrock-agentcore-alpha

Version:

The CDK Construct Library for Amazon Bedrock

85 lines 10.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ValidationError = void 0; exports.validateStringFieldLength = validateStringFieldLength; exports.validateFieldPattern = validateFieldPattern; exports.throwIfInvalid = throwIfInvalid; const aws_cdk_lib_1 = require("aws-cdk-lib"); /** * Error thrown when validation fails */ class ValidationError extends Error { constructor(message) { super(message); this.name = 'ValidationError'; } } exports.ValidationError = ValidationError; /** * Validates the length of a string field against minimum and maximum constraints. * @param value - The string value to validate * @param fieldName - Name of the field being validated (for error messages) * @param minLength - Minimum allowed length (defaults to 0) * @param maxLength - Maximum allowed length * @returns true if validation passes * @throws Error if validation fails with current length information */ function validateStringFieldLength(params) { const errors = []; // Handle null/undefined values if (params.value == null) { return errors; // Skip validation for null/undefined values } const currentLength = params.value.length; // Evaluate only if it is not an unresolved Token if (!aws_cdk_lib_1.Token.isUnresolved(params.fieldName)) { if (params.value.length > params.maxLength) { errors.push(`The field ${params.fieldName} is ${currentLength} characters long but must be less than or equal to ${params.maxLength} characters`); } if (params.value.length < params.minLength) { errors.push(`The field ${params.fieldName} is ${currentLength} characters long but must be at least ${params.minLength} characters`); } } return errors; } /** * Validates a string field against a regex pattern. * @param value - The string value to validate * @param fieldName - Name of the field being validated (for error messages) * @param pattern - Regular expression pattern to test against * @param customMessage - Optional custom error message * @returns true if validation passes * @throws Error if validation fails with detailed message */ function validateFieldPattern(value, fieldName, pattern, customMessage) { const errors = []; // Handle null/undefined values if (value == null) { return errors; // Skip validation for null/undefined values } // Evaluate only if it is not an unresolved Token if (!aws_cdk_lib_1.Token.isUnresolved(value)) { // Verify type if (typeof value !== 'string') { errors.push(`Expected string for ${fieldName}, got ${typeof value}`); } // Validate specified regex if (!(pattern instanceof RegExp)) { errors.push('Pattern must be a valid regular expression'); } // Pattern validation if (!pattern.test(value)) { const defaultMessage = `The field ${fieldName} with value "${value}" does not match the required pattern ${pattern}`; errors.push(customMessage || defaultMessage); } } return errors; } function throwIfInvalid(validationFn, param) { const errors = validationFn(param); if (errors.length > 0) { throw new ValidationError(errors.join('\n')); } return param; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidmFsaWRhdGlvbi1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQThCQSw4REEwQkM7QUFXRCxvREFnQ0M7QUFJRCx3Q0FNQztBQTdHRCw2Q0FBb0M7QUFFcEM7O0dBRUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsS0FBSztJQUN4QyxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztLQUMvQjtDQUNGO0FBTEQsMENBS0M7QUFXRDs7Ozs7Ozs7R0FRRztBQUNILFNBQWdCLHlCQUF5QixDQUFDLE1BQThCO0lBQ3RFLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztJQUU1QiwrQkFBK0I7SUFDL0IsSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3pCLE9BQU8sTUFBTSxDQUFDLENBQUMsNENBQTRDO0lBQzdELENBQUM7SUFFRCxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUUxQyxpREFBaUQ7SUFDakQsSUFBSSxDQUFDLG1CQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQzFDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sQ0FBQyxJQUFJLENBQ1QsYUFBYSxNQUFNLENBQUMsU0FBUyxPQUFPLGFBQWEsc0RBQXNELE1BQU0sQ0FBQyxTQUFTLGFBQWEsQ0FDckksQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMzQyxNQUFNLENBQUMsSUFBSSxDQUNULGFBQWEsTUFBTSxDQUFDLFNBQVMsT0FBTyxhQUFhLHlDQUF5QyxNQUFNLENBQUMsU0FBUyxhQUFhLENBQ3hILENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQWdCLG9CQUFvQixDQUNsQyxLQUFhLEVBQ2IsU0FBaUIsRUFDakIsT0FBZSxFQUNmLGFBQXNCO0lBRXRCLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztJQUU1QiwrQkFBK0I7SUFDL0IsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbEIsT0FBTyxNQUFNLENBQUMsQ0FBQyw0Q0FBNEM7SUFDN0QsQ0FBQztJQUVELGlEQUFpRDtJQUNqRCxJQUFJLENBQUMsbUJBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMvQixjQUFjO1FBQ2QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixTQUFTLFNBQVMsT0FBTyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7UUFDRCwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLENBQUMsT0FBTyxZQUFZLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDakMsTUFBTSxDQUFDLElBQUksQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFFRCxxQkFBcUI7UUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN6QixNQUFNLGNBQWMsR0FBRyxhQUFhLFNBQVMsZ0JBQWdCLEtBQUsseUNBQXlDLE9BQU8sRUFBRSxDQUFDO1lBQ3JILE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLGNBQWMsQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUlELFNBQWdCLGNBQWMsQ0FBSSxZQUE2QixFQUFFLEtBQVE7SUFDdkUsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN0QixNQUFNLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVG9rZW4gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5cbi8qKlxuICogRXJyb3IgdGhyb3duIHdoZW4gdmFsaWRhdGlvbiBmYWlsc1xuICovXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnVmFsaWRhdGlvbkVycm9yJztcbiAgfVxufVxuaW50ZXJmYWNlIEludGVydmFsVmFsaWRhdGlvbiB7XG4gIGZpZWxkTmFtZTogc3RyaW5nO1xuICBtaW5MZW5ndGg6IG51bWJlcjtcbiAgbWF4TGVuZ3RoOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBTdHJpbmdMZW5ndGhWYWxpZGF0aW9uIGV4dGVuZHMgSW50ZXJ2YWxWYWxpZGF0aW9uIHtcbiAgdmFsdWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhlIGxlbmd0aCBvZiBhIHN0cmluZyBmaWVsZCBhZ2FpbnN0IG1pbmltdW0gYW5kIG1heGltdW0gY29uc3RyYWludHMuXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgc3RyaW5nIHZhbHVlIHRvIHZhbGlkYXRlXG4gKiBAcGFyYW0gZmllbGROYW1lIC0gTmFtZSBvZiB0aGUgZmllbGQgYmVpbmcgdmFsaWRhdGVkIChmb3IgZXJyb3IgbWVzc2FnZXMpXG4gKiBAcGFyYW0gbWluTGVuZ3RoIC0gTWluaW11bSBhbGxvd2VkIGxlbmd0aCAoZGVmYXVsdHMgdG8gMClcbiAqIEBwYXJhbSBtYXhMZW5ndGggLSBNYXhpbXVtIGFsbG93ZWQgbGVuZ3RoXG4gKiBAcmV0dXJucyB0cnVlIGlmIHZhbGlkYXRpb24gcGFzc2VzXG4gKiBAdGhyb3dzIEVycm9yIGlmIHZhbGlkYXRpb24gZmFpbHMgd2l0aCBjdXJyZW50IGxlbmd0aCBpbmZvcm1hdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTdHJpbmdGaWVsZExlbmd0aChwYXJhbXM6IFN0cmluZ0xlbmd0aFZhbGlkYXRpb24pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICAvLyBIYW5kbGUgbnVsbC91bmRlZmluZWQgdmFsdWVzXG4gIGlmIChwYXJhbXMudmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiBlcnJvcnM7IC8vIFNraXAgdmFsaWRhdGlvbiBmb3IgbnVsbC91bmRlZmluZWQgdmFsdWVzXG4gIH1cblxuICBjb25zdCBjdXJyZW50TGVuZ3RoID0gcGFyYW1zLnZhbHVlLmxlbmd0aDtcblxuICAvLyBFdmFsdWF0ZSBvbmx5IGlmIGl0IGlzIG5vdCBhbiB1bnJlc29sdmVkIFRva2VuXG4gIGlmICghVG9rZW4uaXNVbnJlc29sdmVkKHBhcmFtcy5maWVsZE5hbWUpKSB7XG4gICAgaWYgKHBhcmFtcy52YWx1ZS5sZW5ndGggPiBwYXJhbXMubWF4TGVuZ3RoKSB7XG4gICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgYFRoZSBmaWVsZCAke3BhcmFtcy5maWVsZE5hbWV9IGlzICR7Y3VycmVudExlbmd0aH0gY2hhcmFjdGVycyBsb25nIGJ1dCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAke3BhcmFtcy5tYXhMZW5ndGh9IGNoYXJhY3RlcnNgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLnZhbHVlLmxlbmd0aCA8IHBhcmFtcy5taW5MZW5ndGgpIHtcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICBgVGhlIGZpZWxkICR7cGFyYW1zLmZpZWxkTmFtZX0gaXMgJHtjdXJyZW50TGVuZ3RofSBjaGFyYWN0ZXJzIGxvbmcgYnV0IG11c3QgYmUgYXQgbGVhc3QgJHtwYXJhbXMubWluTGVuZ3RofSBjaGFyYWN0ZXJzYCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVycm9ycztcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSBzdHJpbmcgZmllbGQgYWdhaW5zdCBhIHJlZ2V4IHBhdHRlcm4uXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgc3RyaW5nIHZhbHVlIHRvIHZhbGlkYXRlXG4gKiBAcGFyYW0gZmllbGROYW1lIC0gTmFtZSBvZiB0aGUgZmllbGQgYmVpbmcgdmFsaWRhdGVkIChmb3IgZXJyb3IgbWVzc2FnZXMpXG4gKiBAcGFyYW0gcGF0dGVybiAtIFJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuIHRvIHRlc3QgYWdhaW5zdFxuICogQHBhcmFtIGN1c3RvbU1lc3NhZ2UgLSBPcHRpb25hbCBjdXN0b20gZXJyb3IgbWVzc2FnZVxuICogQHJldHVybnMgdHJ1ZSBpZiB2YWxpZGF0aW9uIHBhc3Nlc1xuICogQHRocm93cyBFcnJvciBpZiB2YWxpZGF0aW9uIGZhaWxzIHdpdGggZGV0YWlsZWQgbWVzc2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVGaWVsZFBhdHRlcm4oXG4gIHZhbHVlOiBzdHJpbmcsXG4gIGZpZWxkTmFtZTogc3RyaW5nLFxuICBwYXR0ZXJuOiBSZWdFeHAsXG4gIGN1c3RvbU1lc3NhZ2U/OiBzdHJpbmcsXG4pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICAvLyBIYW5kbGUgbnVsbC91bmRlZmluZWQgdmFsdWVzXG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGVycm9yczsgLy8gU2tpcCB2YWxpZGF0aW9uIGZvciBudWxsL3VuZGVmaW5lZCB2YWx1ZXNcbiAgfVxuXG4gIC8vIEV2YWx1YXRlIG9ubHkgaWYgaXQgaXMgbm90IGFuIHVucmVzb2x2ZWQgVG9rZW5cbiAgaWYgKCFUb2tlbi5pc1VucmVzb2x2ZWQodmFsdWUpKSB7XG4gICAgLy8gVmVyaWZ5IHR5cGVcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgZXJyb3JzLnB1c2goYEV4cGVjdGVkIHN0cmluZyBmb3IgJHtmaWVsZE5hbWV9LCBnb3QgJHt0eXBlb2YgdmFsdWV9YCk7XG4gICAgfVxuICAgIC8vIFZhbGlkYXRlIHNwZWNpZmllZCByZWdleFxuICAgIGlmICghKHBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHApKSB7XG4gICAgICBlcnJvcnMucHVzaCgnUGF0dGVybiBtdXN0IGJlIGEgdmFsaWQgcmVndWxhciBleHByZXNzaW9uJyk7XG4gICAgfVxuXG4gICAgLy8gUGF0dGVybiB2YWxpZGF0aW9uXG4gICAgaWYgKCFwYXR0ZXJuLnRlc3QodmFsdWUpKSB7XG4gICAgICBjb25zdCBkZWZhdWx0TWVzc2FnZSA9IGBUaGUgZmllbGQgJHtmaWVsZE5hbWV9IHdpdGggdmFsdWUgXCIke3ZhbHVlfVwiIGRvZXMgbm90IG1hdGNoIHRoZSByZXF1aXJlZCBwYXR0ZXJuICR7cGF0dGVybn1gO1xuICAgICAgZXJyb3JzLnB1c2goY3VzdG9tTWVzc2FnZSB8fCBkZWZhdWx0TWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVycm9ycztcbn1cblxuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkZuPFQ+ID0gKHBhcmFtOiBUKSA9PiBzdHJpbmdbXTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRocm93SWZJbnZhbGlkPFQ+KHZhbGlkYXRpb25GbjogVmFsaWRhdGlvbkZuPFQ+LCBwYXJhbTogVCk6IFQge1xuICBjb25zdCBlcnJvcnMgPSB2YWxpZGF0aW9uRm4ocGFyYW0pO1xuICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGVycm9ycy5qb2luKCdcXG4nKSk7XG4gIH1cbiAgcmV0dXJuIHBhcmFtO1xufVxuIl19