123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- "use strict";
- var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.isAsync = exports.isValid = exports.isDirty = exports.isAborted = exports.OK = exports.DIRTY = exports.INVALID = exports.ParseStatus = exports.addIssueToContext = exports.EMPTY_PATH = exports.makeIssue = void 0;
- const errors_1 = require("../errors");
- const en_1 = __importDefault(require("../locales/en"));
- const makeIssue = (params) => {
- const { data, path, errorMaps, issueData } = params;
- const fullPath = [...path, ...(issueData.path || [])];
- const fullIssue = {
- ...issueData,
- path: fullPath,
- };
- let errorMessage = "";
- const maps = errorMaps
- .filter((m) => !!m)
- .slice()
- .reverse();
- for (const map of maps) {
- errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;
- }
- return {
- ...issueData,
- path: fullPath,
- message: issueData.message || errorMessage,
- };
- };
- exports.makeIssue = makeIssue;
- exports.EMPTY_PATH = [];
- function addIssueToContext(ctx, issueData) {
- const issue = (0, exports.makeIssue)({
- issueData: issueData,
- data: ctx.data,
- path: ctx.path,
- errorMaps: [
- ctx.common.contextualErrorMap,
- ctx.schemaErrorMap,
- (0, errors_1.getErrorMap)(),
- en_1.default,
- ].filter((x) => !!x),
- });
- ctx.common.issues.push(issue);
- }
- exports.addIssueToContext = addIssueToContext;
- class ParseStatus {
- constructor() {
- this.value = "valid";
- }
- dirty() {
- if (this.value === "valid")
- this.value = "dirty";
- }
- abort() {
- if (this.value !== "aborted")
- this.value = "aborted";
- }
- static mergeArray(status, results) {
- const arrayValue = [];
- for (const s of results) {
- if (s.status === "aborted")
- return exports.INVALID;
- if (s.status === "dirty")
- status.dirty();
- arrayValue.push(s.value);
- }
- return { status: status.value, value: arrayValue };
- }
- static async mergeObjectAsync(status, pairs) {
- const syncPairs = [];
- for (const pair of pairs) {
- syncPairs.push({
- key: await pair.key,
- value: await pair.value,
- });
- }
- return ParseStatus.mergeObjectSync(status, syncPairs);
- }
- static mergeObjectSync(status, pairs) {
- const finalObject = {};
- for (const pair of pairs) {
- const { key, value } = pair;
- if (key.status === "aborted")
- return exports.INVALID;
- if (value.status === "aborted")
- return exports.INVALID;
- if (key.status === "dirty")
- status.dirty();
- if (value.status === "dirty")
- status.dirty();
- if (typeof value.value !== "undefined" || pair.alwaysSet) {
- finalObject[key.value] = value.value;
- }
- }
- return { status: status.value, value: finalObject };
- }
- }
- exports.ParseStatus = ParseStatus;
- exports.INVALID = Object.freeze({
- status: "aborted",
- });
- const DIRTY = (value) => ({ status: "dirty", value });
- exports.DIRTY = DIRTY;
- const OK = (value) => ({ status: "valid", value });
- exports.OK = OK;
- const isAborted = (x) => x.status === "aborted";
- exports.isAborted = isAborted;
- const isDirty = (x) => x.status === "dirty";
- exports.isDirty = isDirty;
- const isValid = (x) => x.status === "valid";
- exports.isValid = isValid;
- const isAsync = (x) => typeof Promise !== "undefined" && x instanceof Promise;
- exports.isAsync = isAsync;
|