first commit
This commit is contained in:
commit
db5762abd4
687 files changed
+171307
No files matched your search
@@ -0,0 +1,214 @@
|
||||
function e(e) {
|
||||
return e && typeof e == `object` && !Array.isArray(e) ? e : null;
|
||||
}
|
||||
function t(e) {
|
||||
return typeof e == `string` || typeof e == `number` ? String(e) : ``;
|
||||
}
|
||||
function n(e) {
|
||||
return e === !0 || e === 1 || e === `1`;
|
||||
}
|
||||
function r(n) {
|
||||
return (
|
||||
Array.isArray(n)
|
||||
? n.flatMap((n) => {
|
||||
let r = e(n);
|
||||
return r
|
||||
? [
|
||||
{
|
||||
value: t(r.value ?? r.id ?? r.option_value),
|
||||
label: t(r.label ?? r.name ?? r.option_name ?? r.value),
|
||||
},
|
||||
]
|
||||
: [t(n)];
|
||||
})
|
||||
: t(n).split(/[,\n]/)
|
||||
)
|
||||
.map((e) =>
|
||||
typeof e == `string`
|
||||
? {
|
||||
value: e.trim(),
|
||||
label: e.trim(),
|
||||
}
|
||||
: e,
|
||||
)
|
||||
.filter((e) => e.value !== ``);
|
||||
}
|
||||
function i(e) {
|
||||
let n = t(e).trim();
|
||||
if (!n) return {};
|
||||
let r = ``,
|
||||
i = n[0],
|
||||
a = {
|
||||
"(": `)`,
|
||||
"[": `]`,
|
||||
"{": `}`,
|
||||
"<": `>`,
|
||||
};
|
||||
if (/[^a-zA-Z0-9\\\s\0]/.test(i)) {
|
||||
let e = a[i] ?? i,
|
||||
t = 1,
|
||||
o = -1;
|
||||
for (let r = 1; r < n.length; r++) {
|
||||
if (n[r] === `\\`) {
|
||||
r++;
|
||||
continue;
|
||||
}
|
||||
if ((a[i] && n[r] === i && t++, n[r] === e && --t === 0)) {
|
||||
o = r;
|
||||
break;
|
||||
}
|
||||
a[i] || (t = 1);
|
||||
}
|
||||
if (o > 0 && /^[a-zA-Z\s]*$/.test(n.slice(o + 1)))
|
||||
((r = n.slice(o + 1).replace(/\s/g, ``)),
|
||||
(n = n.slice(1, o)),
|
||||
`\\^$.*+?()[]{}|/`.includes(e) || (n = n.split(`\\${e}`).join(e)));
|
||||
else if (`/#~%!`.includes(i)) throw Error(`自定义字段验证规则无效`);
|
||||
}
|
||||
if (!/^[imsuxADSUXJnr]*$/.test(r))
|
||||
throw Error(`自定义字段验证规则修饰符无效`);
|
||||
let o = /^\(\?([imsx]+)\)/.exec(n);
|
||||
o && ((r += o[1]), (n = n.slice(o[0].length)));
|
||||
let s = [...new Set(r.replace(/[^imsu]/g, ``))].join(``);
|
||||
if (
|
||||
/\(\?(?:[>('|&R0-9]|P[=>]|[imsx-]+:)|\(\*|\\[KCG]|(?:[+*?]|\{\d+(?:,\d*)?\})\+/.test(
|
||||
n,
|
||||
) ||
|
||||
r.includes(`r`) ||
|
||||
(r.includes(`J`) && /\(\?</.test(n))
|
||||
)
|
||||
return {
|
||||
pattern: n,
|
||||
patternFlags: s || void 0,
|
||||
patternServerOnly: !0,
|
||||
};
|
||||
let c = ``,
|
||||
l = !1;
|
||||
for (let e = 0; e < n.length; e++) {
|
||||
let t = n[e];
|
||||
if (t === `\\`) {
|
||||
let t = n[++e],
|
||||
r = {
|
||||
A: `(?<![\\s\\S])`,
|
||||
z: `(?![\\s\\S])`,
|
||||
Z: `(?=\\n?(?![\\s\\S]))`,
|
||||
};
|
||||
c += !l && t && r[t] ? r[t] : `\\${t ?? ``}`;
|
||||
continue;
|
||||
}
|
||||
if (
|
||||
(t === `[` && !l ? (l = !0) : t === `]` && l && (l = !1),
|
||||
!l && r.includes(`x`))
|
||||
) {
|
||||
if (/\s/.test(t)) continue;
|
||||
if (t === `#`) {
|
||||
for (
|
||||
;
|
||||
e < n.length &&
|
||||
n[e] !==
|
||||
`
|
||||
`;
|
||||
)
|
||||
e++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (!l && t === `$` && r.includes(`D`) && !s.includes(`m`)) {
|
||||
c += `(?![\\s\\S])`;
|
||||
continue;
|
||||
}
|
||||
if (!l && t === `(` && r.includes(`n`) && n[e + 1] !== `?`) {
|
||||
c += `(?:`;
|
||||
continue;
|
||||
}
|
||||
((c += t),
|
||||
!l &&
|
||||
r.includes(`U`) &&
|
||||
(`*+`.includes(t) ||
|
||||
(t === `?` && e > 0 && n[e - 1] !== `(`) ||
|
||||
(t === `}` && /\{\d+(?:,\d*)?\}$/.test(c))) &&
|
||||
(n[e + 1] === `?` ? e++ : (c += `?`)));
|
||||
}
|
||||
r.includes(`A`) && (c = `(?<![\\s\\S])(?:${c})`);
|
||||
try {
|
||||
new RegExp(c, s);
|
||||
} catch {
|
||||
throw Error(`自定义字段验证规则无效`);
|
||||
}
|
||||
return {
|
||||
pattern: c,
|
||||
patternFlags: s || void 0,
|
||||
};
|
||||
}
|
||||
function a(a) {
|
||||
let o = e(a),
|
||||
s = Array.isArray(a) ? a : Array.isArray(o?.data) ? o.data : [],
|
||||
c = [];
|
||||
for (let a of s) {
|
||||
let o = e(a);
|
||||
if (!o || o.id === void 0) continue;
|
||||
let s = t(o.field_type || o.type).toLowerCase();
|
||||
if (
|
||||
![
|
||||
`text`,
|
||||
`password`,
|
||||
`textarea`,
|
||||
`dropdown`,
|
||||
`checkbox`,
|
||||
`tickbox`,
|
||||
`link`,
|
||||
`explain`,
|
||||
].includes(s)
|
||||
)
|
||||
continue;
|
||||
let l =
|
||||
s === `dropdown`
|
||||
? `select`
|
||||
: s === `checkbox` || s === `tickbox`
|
||||
? `boolean`
|
||||
: s;
|
||||
c.push({
|
||||
id: String(o.id),
|
||||
label: t(o.field_name || o.name).trim() || `自定义字段`,
|
||||
kind: l,
|
||||
required: n(o.is_required ?? o.required),
|
||||
...i(o.regexpr),
|
||||
description: t(o.description).trim() || void 0,
|
||||
explain: t(o.explain_content).trim() || void 0,
|
||||
options: l === `select` ? r(o.field_option ?? o.options) : [],
|
||||
});
|
||||
}
|
||||
return c.filter((e, t, n) => n.findIndex((t) => t.id === e.id) === t);
|
||||
}
|
||||
function o(e) {
|
||||
return Object.fromEntries(
|
||||
e.filter((e) => e.kind !== `explain`).map((e) => [e.id, (e.kind, ``)]),
|
||||
);
|
||||
}
|
||||
function s(e, t) {
|
||||
for (let n of e) {
|
||||
if (n.kind === `explain`) continue;
|
||||
let e = t[n.id],
|
||||
r =
|
||||
n.kind === `boolean`
|
||||
? e === !0 || e === 1 || e === `1`
|
||||
? `1`
|
||||
: ``
|
||||
: String(e ?? ``).trim();
|
||||
if (n.required && !r) throw Error(`请填写${n.label}`);
|
||||
if (r) {
|
||||
if (n.kind === `select` && !n.options.some((e) => e.value === r))
|
||||
throw Error(`${n.label}选项无效`);
|
||||
if (n.pattern && !n.patternServerOnly) {
|
||||
let e;
|
||||
try {
|
||||
e = new RegExp(n.pattern, n.patternFlags);
|
||||
} catch {
|
||||
throw Error(`${n.label}验证规则无效`);
|
||||
}
|
||||
if (!e.test(r)) throw Error(`${n.label}格式不正确`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
export { s as i, i as n, a as r, o as t };
|
||||
Reference in new issue
Block a user