Back | Home
الـ Path الحالي: /home/picotech/domains/instantly.picotech.app/public_html/public/uploads/../uploads/../../../../instantly.picotech.app/homes/../../wa.picotech.app/public_html/node_modules/escape-html/../querystring/../@protobufjs/../once/../get-intrinsic/./../cliui/../pino/../mime/../cheerio/../express-validator/declarations/../src
الملفات الموجودة في هذا الـ Path:
.
..
base.d.ts
base.js
chain
context-builder.d.ts
context-builder.js
context-items
context.d.ts
context.js
express-validator.d.ts
express-validator.js
field-selection.d.ts
field-selection.js
index.d.ts
index.js
matched-data.d.ts
matched-data.js
middlewares
options.d.ts
options.js
utils.d.ts
utils.js
validation-result.d.ts
validation-result.js
مشاهدة ملف: context.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Context = void 0;
const _ = require("lodash");
function getDataMapKey(path, location) {
return `${location}:${path}`;
}
class Context {
constructor(fields, locations, stack, optional, bail, message) {
this.fields = fields;
this.locations = locations;
this.stack = stack;
this.optional = optional;
this.bail = bail;
this.message = message;
this._errors = [];
this.dataMap = new Map();
}
get errors() {
return this._errors;
}
getData(options = { requiredOnly: false }) {
const { optional } = this;
const checks = options.requiredOnly && optional
? [
(value) => value !== undefined,
(value) => (optional === 'null' ? value != null : true),
(value) => (optional === 'falsy' ? value : true),
]
: [];
return _([...this.dataMap.values()])
.groupBy('originalPath')
.flatMap((instances, group) => {
const locations = _.uniqBy(instances, 'location');
// #331 - When multiple locations are involved, all of them must pass the validation.
// If none of the locations contain the field, we at least include one for error reporting.
// #458, #531 - Wildcards are an exception though: they may yield 0..* instances with different
// paths, so we may want to skip this filtering.
if (instances.length > 1 && locations.length > 1 && !group.includes('*')) {
const withValue = instances.filter(instance => instance.value !== undefined);
return withValue.length ? withValue : [instances[0]];
}
return instances;
})
.filter(instance => checks.every(check => check(instance.value)))
.valueOf();
}
addFieldInstances(instances) {
instances.forEach(instance => {
this.dataMap.set(getDataMapKey(instance.path, instance.location), { ...instance });
});
}
setData(path, value, location) {
const instance = this.dataMap.get(getDataMapKey(path, location));
if (!instance) {
throw new Error('Attempt to write data that did not pre-exist in context');
}
instance.value = value;
}
addError(opts) {
const msg = opts.message || this.message || 'Invalid value';
let error;
switch (opts.type) {
case 'field':
error = {
type: 'field',
value: opts.value,
msg: typeof msg === 'function' ? msg(opts.value, opts.meta) : msg,
path: opts.meta?.path,
location: opts.meta?.location,
};
break;
case 'unknown_fields':
error = {
type: 'unknown_fields',
msg: typeof msg === 'function' ? msg(opts.fields, { req: opts.req }) : msg,
fields: opts.fields,
};
break;
case 'alternative':
error = {
type: 'alternative',
msg: typeof msg === 'function' ? msg(opts.nestedErrors, { req: opts.req }) : msg,
nestedErrors: opts.nestedErrors,
};
break;
case 'alternative_grouped':
error = {
type: 'alternative_grouped',
msg: typeof msg === 'function' ? msg(opts.nestedErrors, { req: opts.req }) : msg,
nestedErrors: opts.nestedErrors,
};
break;
default:
throw new Error(`Unhandled addError case`);
}
this._errors.push(error);
}
}
exports.Context = Context;