@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
JavaScript
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==