UNPKG

@push.rocks/smartguard

Version:

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

75 lines 4.59 kB
import * as plugins from './smartguard.plugins.js'; import { Guard } from './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 */ async getFailedHint(dataArg) { for (const guard of this.guards) { const failedHint = await guard.getFailedHint(dataArg); if (failedHint) { return failedHint; } } return null; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5ndWFyZHNldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NsYXNzZXMuZ3VhcmRzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsS0FBSyxFQUF1QixNQUFNLG9CQUFvQixDQUFDO0FBT2hFOzs7R0FHRztBQUNILE1BQU0sT0FBTyxRQUFZLFNBQVEsS0FBUTtJQUd2QyxZQUFZLGFBQThCLEVBQUU7UUFDMUMsS0FBSyxDQUFDLEtBQUssRUFBRSxPQUFVLEVBQUUsRUFBRTtZQUN6QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLGVBQWUsQ0FBQyxPQUFVLEVBQUUsYUFBMkI7UUFDbEUsSUFBSSxFQUFFLFVBQVU7UUFDaEIsVUFBVSxFQUFFLEtBQUs7S0FDbEI7UUFDQyxNQUFNLGNBQWMsR0FBNEIsRUFBRSxDQUFDO1FBRW5ELEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hDLE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMvQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ2pDLE1BQU0sa0JBQWtCLENBQUM7WUFDM0IsQ0FBQztZQUNELGNBQWMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUN4QyxJQUFJLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLE1BQU0sa0JBQWtCLEVBQUUsQ0FBQztvQkFDOUIsT0FBTyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQzNDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNsRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFVLEVBQUUsYUFBMkI7UUFDaEUsSUFBSSxFQUFFLFVBQVU7UUFDaEIsVUFBVSxFQUFFLEtBQUs7S0FDbEI7UUFDQyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2hFLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQVU7UUFDbkMsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRTtZQUNsRCxJQUFJLEVBQUUsVUFBVTtZQUNoQixVQUFVLEVBQUUsS0FBSztTQUNsQixDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBVTtRQUNuQyxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQyxNQUFNLFVBQVUsR0FBRyxNQUFNLEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEQsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDZixPQUFPLFVBQVUsQ0FBQztZQUNwQixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGIn0=