function e(e, t) {
return e === 1 ? `${e} ${t}` : `${e} ${t}s`;
}
function t(e) {
return typeof e == `number`;
}
function n(e) {
return typeof e == `string`;
}
function r(e) {
return !!e && Object.prototype.toString.call(e) === `[object Date]` && !isNaN(e);
}
function i(e) {
return typeof e == `object` && !!e && `then` in e && typeof e.then == `function`;
}
function a(e) {
return typeof e == `object` && !!e && Object.prototype.toString.call(e) === `[object Object]`;
}
var o = Symbol.for(`decoders.kAnnotationRegistry`),
s = (globalThis[o] ??= new WeakSet());
function c(e) {
return (s.add(e), e);
}
function l(e, t) {
return c({ type: `object`, fields: e, text: t });
}
function u(e, t) {
return c({ type: `array`, items: e, text: t });
}
function d(e, t) {
return c({ type: `opaque`, value: e, text: t });
}
function ee(e, t) {
return c({ type: `scalar`, value: e, text: t });
}
function f(e, t) {
return t === void 0 ? e : c({ ...e, text: t });
}
function p(e, t) {
return l(new Map([...e.fields, ...t]), e.text);
}
function m(e) {
return s.has(e);
}
function h(e, t, n) {
n.add(e);
let r = [];
for (let t of e) r.push(_(t, void 0, n));
return u(r, t);
}
function g(e, t, n) {
n.add(e);
let r = new Map();
for (let t of Object.keys(e)) {
let i = e[t];
r.set(t, _(i, void 0, n));
}
return l(r, t);
}
function _(e, t, n) {
return e == null ||
typeof e == `string` ||
typeof e == `number` ||
typeof e == `boolean` ||
typeof e == `symbol` ||
typeof e == `bigint` ||
typeof e.getMonth == `function`
? ee(e, t)
: m(e)
? f(e, t)
: Array.isArray(e)
? n.has(e)
? d(`<circular ref>`, t)
: h(e, t, n)
: a(e)
? n.has(e)
? d(`<circular ref>`, t)
: g(e, t, n)
: typeof e == `function`
? d(`<function>`, t)
: i(e)
? d(`<Promise>`, t)
: e?.constructor?.name
? d(`<${e.constructor.name}>`, t)
: d(`???`, t);
}
function v(e, t) {
return _(e, t, new WeakSet());
}
function y(e, t) {
return g(e, t, new WeakSet());
}
var b = ` `;
function x(e) {
return e.includes(`
`);
}
function S(e, t = b) {
return x(e)
? e
.split(`
`)
.map((e) => `${t}${e}`).join(`
`)
: `${t}${e}`;
}
var C = /'/g;
function w(e) {
return typeof e == `string`
? `'` + e.replace(C, `\\'`) + `'`
: e === void 0
? `undefined`
: JSON.stringify(e);
}
function T(e, t = []) {
let n = [];
if (e.type === `array`) {
let r = e.items,
i = 0;
for (let e of r) for (let r of T(e, [...t, i++])) n.push(r);
} else if (e.type === `object`) {
let r = e.fields;
for (let [e, i] of r) for (let r of T(i, [...t, e])) n.push(r);
}
let r = e.text;
if (!r) return n;
let i;
return (
(i =
t.length === 0
? ``
: t.length === 1
? typeof t[0] == `number`
? `Value at index ${t[0]}: `
: `Value at key ${w(t[0])}: `
: `Value at keypath ${w(t.map(String).join(`.`))}: `),
[...n, `${i}${r}`]
);
}
function te(e, t = 80) {
let n = JSON.stringify(e);
if (n.length <= t) return n;
let r = `${e.substring(0, t - 15)}...`;
return ((n = `${JSON.stringify(r)} [truncated]`), n);
}
function ne(e, t) {
let { items: n } = e;
if (n.length === 0) return `[]`;
let r = [];
for (let e of n) {
let [n, i] = O(e, `${t}${b}`);
(r.push(`${t}${b}${n},`), i !== void 0 && r.push(S(i, `${t}${b}`)));
}
return [`[`, ...r, `${t}]`].join(`
`);
}
function E(e, t) {
let { fields: n } = e;
if (n.size === 0) return `{}`;
let r = [];
for (let [e, i] of n) {
let n = D(e),
a = `${t}${b}${` `.repeat(n.length + 2)}`,
[o, s] = O(i, `${t}${b}`);
(r.push(`${t}${b}${n}: ${o},`), s !== void 0 && r.push(S(s, a)));
}
return [`{`, ...r, `${t}}`].join(`
`);
}
function D(e) {
return typeof e == `string`
? te(e)
: typeof e == `number` || typeof e == `boolean` || typeof e == `symbol`
? e.toString()
: e === null
? `null`
: e === void 0
? `undefined`
: typeof e == `bigint`
? `${e.toString()}n`
: r(e)
? `new Date(${w(e.toISOString())})`
: e instanceof Date
? `(Invalid Date)`
: `(unserializable)`;
}
function O(e, t = ``) {
let n;
n =
e.type === `array`
? ne(e, t)
: e.type === `object`
? E(e, t)
: e.type === `scalar`
? D(e.value)
: e.value;
let r = e.text;
if (r !== void 0) {
let e = `^`.repeat(x(n) ? 1 : n.length);
return [
n,
[e, r].join(
x(r)
? `
`
: ` `,
),
];
} else return [n, void 0];
}
function k(e) {
let [t, n] = O(e);
return n === void 0
? t
: `${t}
${n}`;
}
function* A(e, t) {
switch (
(e.text && (t.length > 0 ? yield { message: e.text, path: [...t] } : yield { message: e.text }),
e.type)
) {
case `array`: {
let n = 0;
for (let r of e.items) (t.push(n++), yield* A(r, t), t.pop());
break;
}
case `object`:
for (let [n, r] of e.fields) (t.push(n), yield* A(r, t), t.pop());
break;
case `scalar`:
case `opaque`:
break;
}
}
function j(e) {
return Array.from(A(e, []));
}
function M(e) {
return { ok: !0, value: e, error: void 0 };
}
function N(e) {
return { ok: !1, value: void 0, error: e };
}
function re(e) {
return (t) => {
try {
return M(e(t));
} catch (e) {
return N(v(t, e instanceof Error ? e.message : String(e)));
}
};
}
function ie(e, t) {
let n = t(e);
if (typeof n == `string`) {
let e = Error(`
${n}`);
return ((e.name = `Decoding error`), e);
} else return n;
}
function P(e) {
function t(t) {
return e(t, M, (e) => N(m(e) ? e : v(t, e)));
}
function n(e, n = k) {
let r = t(e);
if (r.ok) return r.value;
throw ie(r.error, n);
}
function r(e) {
return t(e).value;
}
function i(e) {
return s(re(e));
}
function a(e, t) {
return l((n) => (e(n) ? null : t));
}
function o() {
return d;
}
function s(e) {
return P((n, r, i) => {
let a = t(n);
if (!a.ok) return a;
let o = R(e) ? e : e(a.value, r, i);
return R(o) ? o.decode(a.value) : o;
});
}
function c(e) {
return s(e);
}
function l(e) {
return s((t, n, r) => {
let i = e(t);
return i === null ? n(t) : r(typeof i == `string` ? v(t, i) : i);
});
}
function u(e) {
return P((n, r, i) => {
let a = t(n);
return a.ok ? a : i(v(a.error, e));
});
}
let d = L({
verify: n,
value: r,
decode: t,
transform: i,
refine: a,
refineType: o,
reject: l,
describe: u,
chain: s,
pipe: c,
"~standard": {
version: 1,
vendor: `decoders`,
validate: (e) => {
let n = t(e);
return n.ok ? { value: n.value } : { issues: j(n.error) };
},
},
});
return d;
}
var F = Symbol.for(`decoders.kDecoderRegistry`),
I = (globalThis[F] ??= new WeakSet());
function L(e) {
return (I.add(e), e);
}
function R(e) {
return I.has(e);
}
var z = P((e, t, n) => (Array.isArray(e) ? t(e) : n(`Must be an array`)));
function B(e) {
let t = e.decode;
return z.chain((e, n, r) => {
let i = [];
for (let n = 0; n < e.length; ++n) {
let a = e[n],
o = t(a);
if (o.ok) i.push(o.value);
else {
i.length = 0;
let t = o.error,
a = e.slice();
return (a.splice(n, 1, v(t, t.text ? `${t.text} (at index ${n})` : `index ${n}`)), r(v(a)));
}
}
return n(i);
});
}
function V(t) {
let n = t.size,
r = n ?? t.min,
i = n ?? t.max,
a = r === i ? `` : `at least `,
o = r === i ? `` : `at most `;
return (t) => {
let n = t.length ?? t.size;
if (typeof t == `string`) {
if (r !== void 0 && n < r) return `Too short, must be ${a}${e(r, `char`)}`;
if (i !== void 0 && n > i) return `Too long, must be ${o}${e(i, `char`)}`;
} else {
if (r !== void 0 && n < r) return `Must have ${a}${e(r, `item`)}`;
if (i !== void 0 && n > i) return `Must have ${o}${e(i, `item`)}`;
}
return null;
};
}
function H(e, t) {
return e.reject(V(t));
}
function U(e, t) {
let n = new Set();
for (let r of e) t.has(r) || n.add(r);
return n;
}
var W = P((e, t, n) => (a(e) ? t(e) : n(`Must be an object`)));
function G(e) {
let t = new Set(Object.keys(e));
return W.chain((n, r, i) => {
let a = new Set(Object.keys(n)),
o = U(t, a),
s = {},
c = null;
for (let t of Object.keys(e)) {
let r = e[t],
i = n[t],
a = r.decode(i);
if (a.ok) {
let e = a.value;
(e !== void 0 && (s[t] = e), o.delete(t));
} else {
let e = a.error;
i === void 0 ? o.add(t) : ((c ??= new Map()), c.set(t, e));
}
}
if (c || o.size > 0) {
let e = y(n);
if ((c && (e = p(e, c)), o.size > 0)) {
let t = Array.from(o).map(w).join(`, `),
n = o.size > 1 ? `keys` : `key`;
e = f(e, `Missing ${n}: ${t}`);
}
return i(e);
}
return r(s);
});
}
var K = `Either:
`;
function q(e) {
return `-${S(e).substring(1)}`;
}
function J(e) {
return e.startsWith(K) ? e.substring(K.length) : q(e);
}
function ae(...e) {
if (e.length === 0) throw Error(`Pass at least one decoder to either()`);
return P((t, n, r) => {
let i = [];
for (let n of e) {
let e = n.decode(t);
if (e.ok) return e;
i.push(e.error);
}
return r(
K +
i.map((e) =>
J(
T(e).join(`
`),
),
).join(`
`),
);
});
}
function oe(e) {
return P((t, n, r) => {
let i = e.indexOf(t);
return i === -1 ? r(`Must be one of ${e.map((e) => w(e)).join(`, `)}`) : n(e[i]);
});
}
function se(e) {
return typeof e == `function` ? e() : e;
}
var ce = ue(null);
function le(e, t) {
let n = ae(ce, e);
return arguments.length >= 2 ? n.transform((e) => e ?? se(t)) : n;
}
function ue(e) {
return P((t, n, r) => (t === e ? n(e) : r(`Must be ${typeof e == `symbol` ? String(e) : w(e)}`)));
}
var de =
/^([A-Za-z]{2,12}(?:[+][A-Za-z]{2,12})?):\/\/(?:([^@:]*:?(?:[^@]+)?)@)?(?:([A-Za-z0-9.-]+)(?::([0-9]{2,5}))?)(\/(?:[-+~%/.,!$&'()*:;=@\w]*)?(?:\?[-+~%/.,!$&'()*:;=@?\w]*)?)?(?:#[^\s#]*)?$/,
Y = P((e, t, r) => (n(e) ? t(e) : r(`Must be string`)));
function fe(e, t) {
return Y.refine((t) => e.test(t), t);
}
var pe = fe(de, `Must be URL`),
X = P((e, t, n) => (r(e) ? t(e) : n(`Must be a Date`))),
Z = P((e, n, r) => (t(e) ? n(e) : r(`Must be number`))).refine(
(e) => Number.isFinite(e),
`Number must be finite`,
);
function Q(e, t, n = Z) {
return n.reject((n) =>
n < e
? `Too low, must be between ${e} and ${t}`
: n > t
? `Too high, must be between ${e} and ${t}`
: null,
);
}
const $ = G({
id: Z,
created: X,
title: H(Y, { min: 1, max: 100 }),
type: oe([`jpg`, `png`]),
size: Z,
url: pe,
});
G({
id: Z,
created: X,
title: H(Y, { min: 1, max: 100 }),
brand: H(Y, { min: 1, max: 30 }),
description: H(Y, { min: 1, max: 500 }),
price: Q(1, 1e4),
discount: le(Q(1, 100)),
quantity: Q(1, 10),
tags: B(H(Y, { min: 1, max: 30 })),
images: B($),
ratings: B(
G({
id: Z,
stars: Q(1, 5),
title: H(Y, { min: 1, max: 100 }),
text: H(Y, { min: 1, max: 1e3 }),
images: B($),
}),
),
}).verify({});