@macrulez/vue-form-schema 0.1.9 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/README.md +461 -180
  2. package/dist/MaskEngine-BEXwX4BK.js +144 -0
  3. package/dist/MaskEngine-CPr-fSPy.cjs +1 -0
  4. package/dist/ValidationEngine-BC4U1ef1.js +135 -0
  5. package/dist/ValidationEngine-Diz-qTFs.cjs +1 -0
  6. package/dist/_plugin-vue_export-helper-BHFhmbuH.cjs +1 -0
  7. package/dist/_plugin-vue_export-helper-CHgC5LLL.js +9 -0
  8. package/dist/core/ConditionEvaluator.d.ts.map +1 -1
  9. package/dist/core/MaskEngine.d.ts.map +1 -1
  10. package/dist/core/ValidationEngine.d.ts +7 -0
  11. package/dist/core/ValidationEngine.d.ts.map +1 -1
  12. package/dist/core/formRegistry.d.ts +33 -0
  13. package/dist/core/formRegistry.d.ts.map +1 -0
  14. package/dist/core/inferTypes.d.ts.map +1 -1
  15. package/dist/core/schemaUtils.d.ts +38 -0
  16. package/dist/core/schemaUtils.d.ts.map +1 -1
  17. package/dist/core/serverErrors.d.ts +69 -0
  18. package/dist/core/serverErrors.d.ts.map +1 -0
  19. package/dist/core/types.d.ts +12 -0
  20. package/dist/core/types.d.ts.map +1 -1
  21. package/dist/core/useForm.d.ts +4 -1
  22. package/dist/core/useForm.d.ts.map +1 -1
  23. package/dist/core/useMultiStepForm.d.ts.map +1 -1
  24. package/dist/devtools/index.d.ts +26 -0
  25. package/dist/devtools/index.d.ts.map +1 -0
  26. package/dist/devtools.cjs +1 -0
  27. package/dist/devtools.d.ts +6 -0
  28. package/dist/devtools.js +93 -0
  29. package/dist/formRegistry-Bv1eaWQ-.js +31 -0
  30. package/dist/formRegistry-DaDmXyYY.cjs +1 -0
  31. package/dist/index.cjs +1 -1
  32. package/dist/index.d.ts +4 -2
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +393 -368
  35. package/dist/openapi.cjs +1 -0
  36. package/dist/openapi.d.ts +202 -0
  37. package/dist/openapi.js +118 -0
  38. package/dist/parsers/json.d.ts.map +1 -1
  39. package/dist/parsers/openapi.d.ts +139 -0
  40. package/dist/parsers/openapi.d.ts.map +1 -0
  41. package/dist/parsers/valibot.d.ts +13 -4
  42. package/dist/parsers/valibot.d.ts.map +1 -1
  43. package/dist/parsers/yup.d.ts +10 -4
  44. package/dist/parsers/yup.d.ts.map +1 -1
  45. package/dist/parsers/zod.d.ts +18 -4
  46. package/dist/parsers/zod.d.ts.map +1 -1
  47. package/dist/schemaUtils-Cc7CwGXB.cjs +1 -0
  48. package/dist/schemaUtils-Cvlsk24U.js +337 -0
  49. package/dist/style.css +1 -0
  50. package/dist/ui/naive/index.d.ts +11 -0
  51. package/dist/ui/naive/index.d.ts.map +1 -0
  52. package/dist/ui/primevue/index.d.ts +11 -0
  53. package/dist/ui/primevue/index.d.ts.map +1 -0
  54. package/dist/ui/shadcn/index.d.ts +11 -0
  55. package/dist/ui/shadcn/index.d.ts.map +1 -0
  56. package/dist/ui-naive.cjs +1 -0
  57. package/dist/ui-naive.d.ts +411 -0
  58. package/dist/ui-naive.js +667 -0
  59. package/dist/ui-primevue.cjs +1 -0
  60. package/dist/ui-primevue.d.ts +411 -0
  61. package/dist/ui-primevue.js +651 -0
  62. package/dist/ui-shadcn.cjs +1 -0
  63. package/dist/ui-shadcn.d.ts +411 -0
  64. package/dist/ui-shadcn.js +650 -0
  65. package/dist/ui-tailwind.cjs +1 -1
  66. package/dist/ui-tailwind.d.ts +14 -0
  67. package/dist/ui-tailwind.js +180 -161
  68. package/dist/ui.cjs +1 -1
  69. package/dist/ui.d.ts +14 -0
  70. package/dist/ui.js +130 -131
  71. package/dist/valibot.cjs +1 -1
  72. package/dist/valibot.d.ts +25 -2
  73. package/dist/valibot.js +47 -20
  74. package/dist/yup.cjs +1 -1
  75. package/dist/yup.d.ts +23 -3
  76. package/dist/yup.js +16 -15
  77. package/dist/zod.cjs +1 -1
  78. package/dist/zod.d.ts +31 -3
  79. package/dist/zod.js +58 -28
  80. package/package.json +66 -6
  81. package/dist/MaskEngine-DAKSNIHQ.cjs +0 -1
  82. package/dist/MaskEngine-mLoXKd4d.js +0 -251
@@ -1,251 +0,0 @@
1
- import { inject as I, provide as x, computed as p } from "vue";
2
- const m = Symbol("vfs:registry");
3
- function k(t) {
4
- return {
5
- install(e) {
6
- e.provide(m, t);
7
- }
8
- };
9
- }
10
- function z() {
11
- return I(m, {});
12
- }
13
- function b(t) {
14
- x(m, t);
15
- }
16
- function q(t, e) {
17
- const n = p(() => T(t.fields.value, e)), r = p(() => (t.getField(e) ?? []).map((u, a) => {
18
- var g;
19
- return {
20
- key: `${e}__${a}`,
21
- index: a,
22
- fields: $(((g = n.value) == null ? void 0 : g.fields) ?? [], e, a)
23
- };
24
- })), i = p(() => r.value.length);
25
- function s() {
26
- return [...t.getField(e) ?? []];
27
- }
28
- function o(f = {}) {
29
- const u = s();
30
- u.push(f), t.setField(e, u);
31
- }
32
- function l(f = {}) {
33
- const u = s();
34
- u.unshift(f), t.setField(e, u);
35
- }
36
- function c(f) {
37
- const u = s();
38
- u.splice(f, 1), t.setField(e, u);
39
- }
40
- function d(f, u) {
41
- const a = s(), [g] = a.splice(f, 1);
42
- a.splice(u, 0, g), t.setField(e, a);
43
- }
44
- function h(f, u) {
45
- const a = s();
46
- [a[f], a[u]] = [a[u], a[f]], t.setField(e, a);
47
- }
48
- function E(f, u) {
49
- const a = s();
50
- a[f] = u, t.setField(e, a);
51
- }
52
- return { rows: r, count: i, append: o, prepend: l, remove: c, move: d, swap: h, replace: E };
53
- }
54
- function $(t, e, n) {
55
- return t.map((r) => ({
56
- ...r,
57
- name: `${e}.${n}.${r.name}`,
58
- fields: r.fields ? $(r.fields, e, n) : void 0
59
- }));
60
- }
61
- function T(t, e) {
62
- for (const n of t) {
63
- if (n.name === e) return n;
64
- if (n.fields) {
65
- const r = T(n.fields, e);
66
- if (r) return r;
67
- }
68
- }
69
- }
70
- const S = (t) => t == null || t === "" || Array.isArray(t) && t.length === 0 ? "This field is required" : null, B = (t, e) => (n) => typeof n != "string" && !Array.isArray(n) || n.length >= t ? null : e ?? `Minimum length is ${t}`, C = (t, e) => (n) => typeof n != "string" && !Array.isArray(n) || n.length <= t ? null : e ?? `Maximum length is ${t}`, _ = (t, e) => (n) => {
71
- const r = Number(n);
72
- return isNaN(r) || r >= t ? null : e ?? `Minimum value is ${t}`;
73
- }, U = (t, e) => (n) => {
74
- const r = Number(n);
75
- return isNaN(r) || r <= t ? null : e ?? `Maximum value is ${t}`;
76
- }, K = (t, e) => (n) => typeof n != "string" || t.test(n) ? null : e ?? "Invalid format", V = (t) => t ? /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(String(t)) ? null : "Invalid email address" : null, W = (t) => {
77
- if (!t) return null;
78
- try {
79
- return new URL(String(t)), null;
80
- } catch {
81
- return "Invalid URL";
82
- }
83
- }, Y = (t, e) => (n, r) => n === r[t] ? null : e ?? `Must match ${t}`;
84
- function v(t) {
85
- return t ? t instanceof File ? [t] : Array.isArray(t) ? t.filter((e) => e instanceof File) : [] : [];
86
- }
87
- function R(t) {
88
- return t < 1024 ? `${t} B` : t < 1024 * 1024 ? `${(t / 1024).toFixed(1)} KB` : `${(t / (1024 * 1024)).toFixed(1)} MB`;
89
- }
90
- const G = (t, e) => (n) => {
91
- const r = v(n);
92
- return r.length && r.filter(
93
- (s) => !t.some((o) => s.type.startsWith(o) || s.name.toLowerCase().endsWith(o))
94
- ).length ? e ?? `Accepted formats: ${t.join(", ")}` : null;
95
- }, Z = (t, e) => (n) => {
96
- const r = v(n);
97
- return r.length && r.filter((s) => s.size > t).length ? e ?? `File size must not exceed ${R(t)}` : null;
98
- }, D = (t, e) => (n) => v(n).length > t ? e ?? `Maximum ${t} file${t === 1 ? "" : "s"} allowed` : null;
99
- class H {
100
- constructor(e = 300, n = "first") {
101
- this.asyncTimers = /* @__PURE__ */ new Map(), this.debounceMs = e, this.validateMode = n;
102
- }
103
- /** Run sync validators for a single field; returns list of error messages */
104
- validateField(e, n, r) {
105
- const i = [];
106
- if (e.required) {
107
- const s = S(n);
108
- if (s && (i.push(s), this.validateMode === "first"))
109
- return i;
110
- }
111
- for (const s of e.validators ?? []) {
112
- const o = s(n, r);
113
- if (o && (i.push(o), this.validateMode === "first"))
114
- return i;
115
- }
116
- return i;
117
- }
118
- /** Run all sync validators across all visible fields */
119
- validateAll(e, n) {
120
- const r = {};
121
- return this.collectErrors(e, n, r), r;
122
- }
123
- collectErrors(e, n, r) {
124
- for (const i of e) {
125
- const s = L(n, i.name), o = this.validateField(i, s, n);
126
- o.length && (r[i.name] = o), (i.type === "group" || i.type === "array") && i.fields && this.collectErrors(i.fields, n, r);
127
- }
128
- }
129
- /** Run async validators with debounce; calls onResult when done */
130
- validateAsync(e, n, r, i) {
131
- var l;
132
- if (!((l = e.asyncValidators) != null && l.length)) return;
133
- const s = this.asyncTimers.get(e.name);
134
- s && clearTimeout(s);
135
- const o = setTimeout(async () => {
136
- const d = (await Promise.all(
137
- e.asyncValidators.map((h) => h(n, r))
138
- )).filter((h) => h !== null);
139
- i(e.name, d), this.asyncTimers.delete(e.name);
140
- }, this.debounceMs);
141
- this.asyncTimers.set(e.name, o);
142
- }
143
- destroy() {
144
- for (const e of this.asyncTimers.values()) clearTimeout(e);
145
- this.asyncTimers.clear();
146
- }
147
- }
148
- function L(t, e) {
149
- return e.split(".").reduce((n, r) => {
150
- if (n && typeof n == "object") return n[r];
151
- }, t);
152
- }
153
- function J(t, e, n) {
154
- const r = e.split("."), i = { ...t };
155
- let s = i;
156
- for (let o = 0; o < r.length - 1; o++) {
157
- const l = r[o], c = s[l];
158
- Array.isArray(c) ? s[l] = [...c] : c && typeof c == "object" ? s[l] = { ...c } : s[l] = {}, s = s[l];
159
- }
160
- return s[r[r.length - 1]] = n, i;
161
- }
162
- const P = {
163
- "phone-ru": "+7 (###) ###-##-##",
164
- "phone-eu": "+## (##) ###-##-##",
165
- date: "##.##.####",
166
- inn: "############",
167
- iban: "AA## #### #### #### #### #### ####"
168
- };
169
- function w(t) {
170
- return t.preset ? P[t.preset] : t.pattern ?? "";
171
- }
172
- function y(t) {
173
- return t === "#" || t === "A";
174
- }
175
- function A(t, e) {
176
- return e === "#" ? /\d/.test(t) : e === "A" ? /[a-zA-Z]/.test(t) : !1;
177
- }
178
- function F(t, e) {
179
- const r = w(typeof e == "string" ? { pattern: e } : e);
180
- if (!r) return t;
181
- const i = Array.from(t);
182
- let s = 0, o = -1;
183
- for (let c = 0; c < r.length && s < i.length; c++) {
184
- const d = r[c];
185
- if (y(d)) {
186
- for (; s < i.length && !A(i[s], d); ) s++;
187
- s < i.length && (o = c, s++);
188
- }
189
- }
190
- if (o === -1) return "";
191
- let l = "";
192
- s = 0;
193
- for (let c = 0; c <= o; c++) {
194
- const d = r[c];
195
- if (y(d)) {
196
- for (; s < i.length && !A(i[s], d); ) s++;
197
- s < i.length && (l += d === "A" ? i[s++].toUpperCase() : i[s++]);
198
- } else
199
- l += d;
200
- }
201
- return l;
202
- }
203
- function M(t, e) {
204
- const r = w(typeof e == "string" ? { pattern: e } : e);
205
- if (!r) return t;
206
- const i = [];
207
- let s = 0;
208
- for (let o = 0; o < r.length && s < t.length; o++) {
209
- const l = r[o], c = t[s];
210
- y(l) ? (i.push(c), s++) : c === l && s++;
211
- }
212
- return i.join("");
213
- }
214
- function O(t, e) {
215
- function n() {
216
- const i = M(t.value, e), s = F(i, e);
217
- if (t.value !== s) {
218
- const o = t.selectionStart ?? s.length;
219
- t.value = s;
220
- const l = Math.min(o, s.length);
221
- t.setSelectionRange(l, l);
222
- }
223
- }
224
- t.addEventListener("input", n);
225
- const r = F(M(t.value, e), e);
226
- return t.value !== r && r && (t.value = r), () => t.removeEventListener("input", n);
227
- }
228
- export {
229
- H as V,
230
- F as a,
231
- O as b,
232
- k as c,
233
- Z as d,
234
- V as e,
235
- D as f,
236
- G as g,
237
- L as h,
238
- C as i,
239
- _ as j,
240
- B as k,
241
- b as l,
242
- U as m,
243
- S as n,
244
- J as o,
245
- K as p,
246
- q,
247
- M as r,
248
- Y as s,
249
- z as t,
250
- W as u
251
- };