UNPKG

@push.rocks/smartguard

Version:

A TypeScript library for creating and managing validation guards, aiding in data validation and security checks.

74 lines 4.55 kB
import * as plugins from './smartguard.plugins.js'; import { Guard } from './smartguard.classes.guard.js'; /** * Extended GuardSet that inherits from Guard * and provides additional functionalities. */ export class GuardSet extends Guard { constructor(guardArray = []) { super(async (dataArg) => { return this.allGuardsPass(dataArg); }); this.guards = guardArray; } /** * executes all guards in all guardSets against a data argument * @param dataArg */ async execAllWithData(dataArg, optionsArg = { mode: 'parallel', stopOnFail: false }) { const resultPromises = []; for (const guard of this.guards) { const guardResultPromise = guard.exec(dataArg); if (optionsArg.mode === 'serial') { await guardResultPromise; } resultPromises.push(guardResultPromise); if (optionsArg.stopOnFail) { if (!await guardResultPromise) { return await Promise.all(resultPromises); } } } const results = await Promise.all(resultPromises); return results; } /** * checks if all guards pass * @param dataArg */ async allGuardsPass(dataArg, optionsArg = { mode: 'parallel', stopOnFail: false }) { const results = await this.execAllWithData(dataArg, optionsArg); return results.every(result => result); } /** * checks if any guard passes * @param dataArg */ async anyGuardsPass(dataArg) { const results = await this.execAllWithData(dataArg, { mode: 'parallel', stopOnFail: false }); return results.some(result => result); } /** * returns the first reason for why something fails * @param dataArg * @returns */ getFailedHint(dataArg) { for (const guard of this.guards) { const failedHint = guard.getFailedHint(dataArg); if (failedHint) { return failedHint; } } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRndWFyZC5jbGFzc2VzLmd1YXJkc2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRndWFyZC5jbGFzc2VzLmd1YXJkc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLEtBQUssRUFBdUIsTUFBTSwrQkFBK0IsQ0FBQztBQU8zRTs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sUUFBWSxTQUFRLEtBQVE7SUFHdkMsWUFBWSxhQUE4QixFQUFFO1FBQzFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBVSxFQUFFLEVBQUU7WUFDekIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7T0FHRztJQUNJLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBVSxFQUFFLGFBQTJCO1FBQ2xFLElBQUksRUFBRSxVQUFVO1FBQ2hCLFVBQVUsRUFBRSxLQUFLO0tBQ2xCO1FBQ0MsTUFBTSxjQUFjLEdBQTRCLEVBQUUsQ0FBQztRQUVuRCxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQyxNQUFNLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDL0MsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUNqQyxNQUFNLGtCQUFrQixDQUFDO1lBQzNCLENBQUM7WUFDRCxjQUFjLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDeEMsSUFBSSxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxNQUFNLGtCQUFrQixFQUFFLENBQUM7b0JBQzlCLE9BQU8sTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUMzQyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbEQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBVSxFQUFFLGFBQTJCO1FBQ2hFLElBQUksRUFBRSxVQUFVO1FBQ2hCLFVBQVUsRUFBRSxLQUFLO0tBQ2xCO1FBQ0MsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNoRSxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFVO1FBQ25DLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUU7WUFDbEQsSUFBSSxFQUFFLFVBQVU7WUFDaEIsVUFBVSxFQUFFLEtBQUs7U0FDbEIsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxhQUFhLENBQUUsT0FBVTtRQUM5QixLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2hELElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxVQUFVLENBQUM7WUFDcEIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==