UNPKG

juvo-rafa-library

Version:

A comprehensive Angular component library featuring real-world components and validators extracted from the Juvo Rafa backoffice application. Now with improved select components and bug fixes.

45 lines 4.23 kB
/** * Validator function for network ports * * @description * Validates that the input value is a valid network port number. * Accepts port numbers in the range 0-65535 (standard TCP/UDP port range). * * @example * ```typescript * // Basic usage in FormControl * const portControl = new FormControl('', [portValidator()]); * * // Usage in reactive forms * this.serverForm = this.fb.group({ * port: ['', [Validators.required, portValidator()]] * }); * * // Valid inputs: 80, 443, 8080, 3000, 65535 * // Invalid inputs: -1, 65536, 'abc', 'port' * ``` * * @returns ValidatorFn that returns null if valid, or validation error object if invalid * * @since 2.0.0 * @author Juvo Rafa Team */ export function portValidator() { return (control) => { // Allow empty values and explicit 0 (use Validators.required for required validation) if (!control.value && control.value !== 0) return null; const port = Number(control.value); // Check if it's a valid number and within port range if (isNaN(port) || port < 0 || port > 65535) { return { invalidPort: { value: control.value, message: 'Port must be a number between 0 and 65535' } }; } return null; }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydC52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21wb25lbnRzL3NyYy9saWIvdmFsaWRhdG9ycy9wb3J0LnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQUNILE1BQU0sVUFBVSxhQUFhO0lBQzNCLE9BQU8sQ0FBQyxPQUF3QixFQUFxQyxFQUFFO1FBQ3JFLHNGQUFzRjtRQUN0RixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUV2RCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRW5DLHFEQUFxRDtRQUNyRCxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxLQUFLLEVBQUUsQ0FBQztZQUM1QyxPQUFPO2dCQUNMLFdBQVcsRUFBRTtvQkFDWCxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7b0JBQ3BCLE9BQU8sRUFBRSwyQ0FBMkM7aUJBQ3JEO2FBQ0YsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vKipcbiAqIFZhbGlkYXRvciBmdW5jdGlvbiBmb3IgbmV0d29yayBwb3J0c1xuICogXG4gKiBAZGVzY3JpcHRpb25cbiAqIFZhbGlkYXRlcyB0aGF0IHRoZSBpbnB1dCB2YWx1ZSBpcyBhIHZhbGlkIG5ldHdvcmsgcG9ydCBudW1iZXIuXG4gKiBBY2NlcHRzIHBvcnQgbnVtYmVycyBpbiB0aGUgcmFuZ2UgMC02NTUzNSAoc3RhbmRhcmQgVENQL1VEUCBwb3J0IHJhbmdlKS5cbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIEJhc2ljIHVzYWdlIGluIEZvcm1Db250cm9sXG4gKiBjb25zdCBwb3J0Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJywgW3BvcnRWYWxpZGF0b3IoKV0pO1xuICogXG4gKiAvLyBVc2FnZSBpbiByZWFjdGl2ZSBmb3Jtc1xuICogdGhpcy5zZXJ2ZXJGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gKiAgIHBvcnQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHBvcnRWYWxpZGF0b3IoKV1dXG4gKiB9KTtcbiAqIFxuICogLy8gVmFsaWQgaW5wdXRzOiA4MCwgNDQzLCA4MDgwLCAzMDAwLCA2NTUzNVxuICogLy8gSW52YWxpZCBpbnB1dHM6IC0xLCA2NTUzNiwgJ2FiYycsICdwb3J0J1xuICogYGBgXG4gKiBcbiAqIEByZXR1cm5zIFZhbGlkYXRvckZuIHRoYXQgcmV0dXJucyBudWxsIGlmIHZhbGlkLCBvciB2YWxpZGF0aW9uIGVycm9yIG9iamVjdCBpZiBpbnZhbGlkXG4gKiBcbiAqIEBzaW5jZSAyLjAuMFxuICogQGF1dGhvciBKdXZvIFJhZmEgVGVhbVxuICovXG5leHBvcnQgZnVuY3Rpb24gcG9ydFZhbGlkYXRvcigpOiBWYWxpZGF0b3JGbiB7XG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0gfCBudWxsID0+IHtcbiAgICAvLyBBbGxvdyBlbXB0eSB2YWx1ZXMgYW5kIGV4cGxpY2l0IDAgKHVzZSBWYWxpZGF0b3JzLnJlcXVpcmVkIGZvciByZXF1aXJlZCB2YWxpZGF0aW9uKVxuICAgIGlmICghY29udHJvbC52YWx1ZSAmJiBjb250cm9sLnZhbHVlICE9PSAwKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IHBvcnQgPSBOdW1iZXIoY29udHJvbC52YWx1ZSk7XG4gICAgXG4gICAgLy8gQ2hlY2sgaWYgaXQncyBhIHZhbGlkIG51bWJlciBhbmQgd2l0aGluIHBvcnQgcmFuZ2VcbiAgICBpZiAoaXNOYU4ocG9ydCkgfHwgcG9ydCA8IDAgfHwgcG9ydCA+IDY1NTM1KSB7XG4gICAgICByZXR1cm4geyBcbiAgICAgICAgaW52YWxpZFBvcnQ6IHsgXG4gICAgICAgICAgdmFsdWU6IGNvbnRyb2wudmFsdWUsIFxuICAgICAgICAgIG1lc3NhZ2U6ICdQb3J0IG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA2NTUzNScgXG4gICAgICAgIH0gXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9O1xufSAiXX0=