schemas/libraries/valibot/download_compiled/index/unminified.js
const DEFAULT_CONFIG = {
lang: void 0,
message: void 0,
abortEarly: void 0,
abortPipeEarly: void 0
};
function getGlobalConfig(config$1) {
if (!config$1 && true) return DEFAULT_CONFIG;
return {
lang: config$1?.lang ?? void 0,
message: config$1?.message,
abortEarly: config$1?.abortEarly ?? void 0,
abortPipeEarly: config$1?.abortPipeEarly ?? void 0
};
}
function _stringify(input) {
const type = typeof input;
if (type === "string") return `"${input}"`;
if (type === "number" || type === "bigint" || type === "boolean") return `${input}`;
if (type === "object" || type === "function") return (input && Object.getPrototypeOf(input)?.constructor?.name) ?? "null";
return type;
}
function _addIssue(context, label, dataset, config$1, other) {
const input = other && "input" in other ? other.input : dataset.value;
const expected = other?.expected ?? context.expects ?? null;
const received = other?.received ?? _stringify(input);
const issue = {
kind: context.kind,
type: context.type,
input,
expected,
received,
message: `Invalid ${label}: ${expected ? `Expected ${expected} but r` : "R"}eceived ${received}`,
requirement: context.requirement,
path: other?.path,
issues: other?.issues,
lang: config$1.lang,
abortEarly: config$1.abortEarly,
abortPipeEarly: config$1.abortPipeEarly
};
const isSchema = context.kind === "schema";
const message$1 = other?.message ?? context.message ?? (context.reference, issue.lang, void 0) ?? (isSchema ? (issue.lang, void 0) : null) ?? config$1.message ?? (issue.lang, void 0);
if (message$1 !== void 0) issue.message = typeof message$1 === "function" ? message$1(issue) : message$1;
if (isSchema) dataset.typed = false;
if (dataset.issues) dataset.issues.push(issue);
else dataset.issues = [issue];
}
function _joinExpects(values$1, separator) {
const list = [...new Set(values$1)];
if (list.length > 1) return `(${list.join(` ${separator} `)})`;
return list[0] ?? "never";
}
function _standardSchema(schema) {
schema["~standard"] = {
version: 1,
vendor: "valibot",
validate: (value$1) => schema["~run"]({ value: value$1 }, getGlobalConfig())
};
return schema;
}
var ValiError = class extends Error {
constructor(issues) {
super(issues[0].message);
this.name = "ValiError";
this.issues = issues;
}
};
function maxLength(requirement, message$1) {
return {
kind: "validation",
type: "max_length",
reference: maxLength,
async: false,
expects: `<=${requirement}`,
requirement,
message: message$1,
"~run"(dataset, config$1) {
if (dataset.typed && dataset.value.length > this.requirement) _addIssue(this, "length", dataset, config$1, { received: `${dataset.value.length}` });
return dataset;
}
};
}
function maxValue(requirement, message$1) {
return {
kind: "validation",
type: "max_value",
reference: maxValue,
async: false,
expects: `<=${requirement instanceof Date ? requirement.toJSON() : _stringify(requirement)}`,
requirement,
message: message$1,
"~run"(dataset, config$1) {
if (dataset.typed && !(dataset.value <= this.requirement)) _addIssue(this, "value", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : _stringify(dataset.value) });
return dataset;
}
};
}
function minLength(requirement, message$1) {
return {
kind: "validation",
type: "min_length",
reference: minLength,
async: false,
expects: `>=${requirement}`,
requirement,
message: message$1,
"~run"(dataset, config$1) {
if (dataset.typed && dataset.value.length < this.requirement) _addIssue(this, "length", dataset, config$1, { received: `${dataset.value.length}` });
return dataset;
}
};
}
function minValue(requirement, message$1) {
return {
kind: "validation",
type: "min_value",
reference: minValue,
async: false,
expects: `>=${requirement instanceof Date ? requirement.toJSON() : _stringify(requirement)}`,
requirement,
message: message$1,
"~run"(dataset, config$1) {
if (dataset.typed && !(dataset.value >= this.requirement)) _addIssue(this, "value", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : _stringify(dataset.value) });
return dataset;
}
};
}
function url(message$1) {
return {
kind: "validation",
type: "url",
reference: url,
async: false,
expects: null,
requirement(input) {
try {
if (URL.canParse) return URL.canParse(input);
new URL(input);
return true;
} catch {
return false;
}
},
message: message$1,
"~run"(dataset, config$1) {
if (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, "URL", dataset, config$1);
return dataset;
}
};
}
function getFallback(schema, dataset, config$1) {
return typeof schema.fallback === "function" ? schema.fallback(dataset, config$1) : schema.fallback;
}
function getDefault(schema, dataset, config$1) {
return typeof schema.default === "function" ? schema.default(dataset, config$1) : schema.default;
}
function array(item, message$1) {
return _standardSchema({
kind: "schema",
type: "array",
reference: array,
expects: "Array",
async: false,
item,
message: message$1,
"~run"(dataset, config$1) {
const input = dataset.value;
if (Array.isArray(input)) {
dataset.typed = true;
dataset.value = [];
for (let key = 0; key < input.length; key++) {
const value$1 = input[key];
const itemDataset = this.item["~run"]({ value: value$1 }, config$1);
if (itemDataset.issues) {
const pathItem = {
type: "array",
origin: "value",
input,
key,
value: value$1
};
for (const issue of itemDataset.issues) {
if (issue.path) issue.path.unshift(pathItem);
else issue.path = [pathItem];
dataset.issues?.push(issue);
}
if (!dataset.issues) dataset.issues = itemDataset.issues;
if (config$1.abortEarly) {
dataset.typed = false;
break;
}
}
if (!itemDataset.typed) dataset.typed = false;
dataset.value.push(itemDataset.value);
}
} else _addIssue(this, "type", dataset, config$1);
return dataset;
}
});
}
function date(message$1) {
return _standardSchema({
kind: "schema",
type: "date",
reference: date,
expects: "Date",
async: false,
message: message$1,
"~run"(dataset, config$1) {
if (dataset.value instanceof Date) if (!isNaN(dataset.value)) dataset.typed = true;
else _addIssue(this, "type", dataset, config$1, { received: "\"Invalid Date\"" });
else _addIssue(this, "type", dataset, config$1);
return dataset;
}
});
}
function nullable(wrapped, default_) {
return _standardSchema({
kind: "schema",
type: "nullable",
reference: nullable,
expects: `(${wrapped.expects} | null)`,
async: false,
wrapped,
default: default_,
"~run"(dataset, config$1) {
if (dataset.value === null) {
if (this.default !== void 0) dataset.value = getDefault(this, dataset, config$1);
if (dataset.value === null) {
dataset.typed = true;
return dataset;
}
}
return this.wrapped["~run"](dataset, config$1);
}
});
}
function number(message$1) {
return _standardSchema({
kind: "schema",
type: "number",
reference: number,
expects: "number",
async: false,
message: message$1,
"~run"(dataset, config$1) {
if (typeof dataset.value === "number" && !isNaN(dataset.value)) dataset.typed = true;
else _addIssue(this, "type", dataset, config$1);
return dataset;
}
});
}
function object(entries$1, message$1) {
return _standardSchema({
kind: "schema",
type: "object",
reference: object,
expects: "Object",
async: false,
entries: entries$1,
message: message$1,
"~run"(dataset, config$1) {
const input = dataset.value;
if (input && typeof input === "object") {
dataset.typed = true;
dataset.value = {};
for (const key in this.entries) {
const valueSchema = this.entries[key];
if (key in input || (valueSchema.type === "exact_optional" || valueSchema.type === "optional" || valueSchema.type === "nullish") && valueSchema.default !== void 0) {
const value$1 = key in input ? input[key] : getDefault(valueSchema);
const valueDataset = valueSchema["~run"]({ value: value$1 }, config$1);
if (valueDataset.issues) {
const pathItem = {
type: "object",
origin: "value",
input,
key,
value: value$1
};
for (const issue of valueDataset.issues) {
if (issue.path) issue.path.unshift(pathItem);
else issue.path = [pathItem];
dataset.issues?.push(issue);
}
if (!dataset.issues) dataset.issues = valueDataset.issues;
if (config$1.abortEarly) {
dataset.typed = false;
break;
}
}
if (!valueDataset.typed) dataset.typed = false;
dataset.value[key] = valueDataset.value;
} else if (valueSchema.fallback !== void 0) dataset.value[key] = getFallback(valueSchema);
else if (valueSchema.type !== "exact_optional" && valueSchema.type !== "optional" && valueSchema.type !== "nullish") {
_addIssue(this, "key", dataset, config$1, {
input: void 0,
expected: `"${key}"`,
path: [{
type: "object",
origin: "key",
input,
key,
value: input[key]
}]
});
if (config$1.abortEarly) break;
}
}
} else _addIssue(this, "type", dataset, config$1);
return dataset;
}
});
}
function picklist(options, message$1) {
return _standardSchema({
kind: "schema",
type: "picklist",
reference: picklist,
expects: _joinExpects(options.map(_stringify), "|"),
async: false,
options,
message: message$1,
"~run"(dataset, config$1) {
if (this.options.includes(dataset.value)) dataset.typed = true;
else _addIssue(this, "type", dataset, config$1);
return dataset;
}
});
}
function string(message$1) {
return _standardSchema({
kind: "schema",
type: "string",
reference: string,
expects: "string",
async: false,
message: message$1,
"~run"(dataset, config$1) {
if (typeof dataset.value === "string") dataset.typed = true;
else _addIssue(this, "type", dataset, config$1);
return dataset;
}
});
}
function parse(schema, input, config$1) {
const dataset = schema["~run"]({ value: input }, getGlobalConfig(config$1));
if (dataset.issues) throw new ValiError(dataset.issues);
return dataset.value;
}
function pipe(...pipe$1) {
return _standardSchema({
...pipe$1[0],
pipe: pipe$1,
"~run"(dataset, config$1) {
for (const item of pipe$1) if (item.kind !== "metadata") {
if (dataset.issues && (item.kind === "schema" || item.kind === "transformation")) {
dataset.typed = false;
break;
}
if (!dataset.issues || !config$1.abortEarly && !config$1.abortPipeEarly) dataset = item["~run"](dataset, config$1);
}
return dataset;
}
});
}
const imageSchema = object({
id: number(),
created: date(),
title: pipe( string(), minLength(1), maxLength(100)),
type: picklist(["jpg", "png"]),
size: number(),
url: pipe( string(), url())
});
parse( object({
id: number(),
created: date(),
title: pipe( string(), minLength(1), maxLength(100)),
brand: pipe( string(), minLength(1), maxLength(30)),
description: pipe( string(), minLength(1), maxLength(500)),
price: pipe( number(), minValue(1), maxValue(1e4)),
discount: nullable( pipe( number(), minValue(1), maxValue(100))),
quantity: pipe( number(), minValue(0), maxValue(10)),
tags: array( pipe( string(), minLength(1), maxLength(30))),
images: array(imageSchema),
ratings: array( object({
id: number(),
stars: pipe( number(), minValue(1), maxValue(5)),
title: pipe( string(), minLength(1), maxLength(100)),
text: pipe( string(), minLength(1), maxLength(1e3)),
images: array(imageSchema)
}))
}), {});