summaryrefslogtreecommitdiff
path: root/node_modules/zod/lib/helpers/parseUtil.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/zod/lib/helpers/parseUtil.js')
-rw-r--r--node_modules/zod/lib/helpers/parseUtil.js115
1 files changed, 115 insertions, 0 deletions
diff --git a/node_modules/zod/lib/helpers/parseUtil.js b/node_modules/zod/lib/helpers/parseUtil.js
new file mode 100644
index 0000000..5510257
--- /dev/null
+++ b/node_modules/zod/lib/helpers/parseUtil.js
@@ -0,0 +1,115 @@
+"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 (key.value !== "__proto__" &&
+ (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;