@speykye/vue-form-engine-core 0.1.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.
@@ -0,0 +1,4 @@
1
+ import type { FormArrayFieldSchema, FormEngine, FormModel } from './types';
2
+ export declare function addArrayItem(model: FormModel, field: FormArrayFieldSchema, engine: FormEngine): any;
3
+ export declare function removeArrayItem(model: FormModel, field: FormArrayFieldSchema, index: number): any;
4
+ //# sourceMappingURL=array.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../src/array.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAG3E,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,UAAU,OAM7F;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,OAK3F"}
@@ -0,0 +1,4 @@
1
+ import type { FormCondition, FormContext, FormEngine, FormModel } from './types';
2
+ export declare function registerDefaultConditionOperators(engine: FormEngine): void;
3
+ export declare function evaluateCondition(condition: FormCondition | undefined, model: FormModel, engine: FormEngine, context?: FormContext): boolean;
4
+ //# sourceMappingURL=condition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition.d.ts","sourceRoot":"","sources":["../src/condition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEjF,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,UAAU,QAenE;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,aAAa,GAAG,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CA0BhJ"}
package/dist/index.cjs ADDED
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e){return typeof e==`object`&&e&&`component`in e?e:{component:e}}function t(e){return typeof e==`object`&&e&&`component`in e?e:{component:e}}function n(){let n=new Map,r=new Map,i=new Map,a=new Map;function o(t,r){n.set(t,e(r))}function s(e){Object.entries(e).forEach(([e,t])=>o(e,t))}function c(e,n){r.set(e,t(n))}function l(e){Object.entries(e).forEach(([e,t])=>c(e,t))}function u(e){e.fields&&s(e.fields),e.blocks&&l(e.blocks)}function d(e,t){i.set(e,t)}function f(e){Object.entries(e).forEach(([e,t])=>d(e,t))}function p(e,t){a.set(e,t)}function m(e){Object.entries(e).forEach(([e,t])=>p(e,t))}return{fields:n,blocks:r,validators:i,conditionOperators:a,registerField:o,registerFields:s,registerBlock:c,registerBlocks:l,registerComponents:u,registerValidator:d,registerValidators:f,registerConditionOperator:p,registerConditionOperators:m}}function r(e){e.registerConditionOperators({eq:(e,t)=>e===t,neq:(e,t)=>e!==t,in:(e,t)=>Array.isArray(t)&&t.includes(e),notIn:(e,t)=>Array.isArray(t)&&!t.includes(e),empty:e=>e==null||e===``||Array.isArray(e)&&e.length===0,notEmpty:e=>!(e==null||e===``||Array.isArray(e)&&e.length===0),gt:(e,t)=>Number(e)>Number(t),gte:(e,t)=>Number(e)>=Number(t),lt:(e,t)=>Number(e)<Number(t),lte:(e,t)=>Number(e)<=Number(t),includes:(e,t)=>Array.isArray(e)?e.includes(t):String(e??``).includes(String(t??``)),matches:(e,t)=>new RegExp(String(t)).test(String(e??``))})}function i(e,t,n,r={}){if(!e)return!0;if(typeof e==`function`)return!!e(t);if(`predicate`in e)return!!e.predicate(t);if(`logic`in e){let a=e.conditions.map(e=>i(e,t,n,r));return e.logic===`and`?a.every(Boolean):a.some(Boolean)}if(`field`in e){let i=n.conditionOperators.get(e.operator);return i?!!i(t[e.field],e.value,t,r):(console.warn(`[vue-form-engine] Unknown condition operator: ${e.operator}`),!1)}return!0}function a(e){return e.kind!==`block`&&e.kind!==`array`}function o(e){return e.kind===`array`||e.type===`array`}function s(e){return e.sections.flatMap(e=>e.items)}function c(e){return s(e).filter(a)}function l(e){return typeof e==`function`?e():Array.isArray(e)?[...e]:e&&typeof e==`object`?{...e}:e}function u(e,t){if(e.defaultValue!==void 0)return l(e.defaultValue);let n=t.fields.get(e.type);if(n?.defaultValue!==void 0)return l(n.defaultValue);switch(e.type){case`switch`:return!1;case`number`:return;default:return``}}function d(e,t){let n={};return e.itemFields.forEach(e=>{n[e.key]=u(e,t)}),n}function f(e,t,n={}){let r={...n};return s(e).forEach(e=>{if(e.kind===`block`){let n=t.blocks.get(e.type);n?.defaultModel&&Object.assign(r,{...n.defaultModel(),...r});return}if(o(e)){if(!Array.isArray(r[e.key])){let n=e.minItems??0;r[e.key]=Array.from({length:n},()=>d(e,t))}return}e.key in r||(r[e.key]=u(e,t))}),r}function p(e,t){return e[t]}function m(e,t,n){e[t]=n}function h(e,t){delete e[t]}function g(e,t,n,r={}){return i(e.visibleWhen,t,n,r)}function _(e,t,n,r={}){return`disabled`in e&&e.disabled?!0:!i(e.disabledWhen,t,n,r)}function v(e,t,n,r={}){return e.sections.flatMap(e=>e.items).filter(e=>g(e,t,n,r))}function y(e){e.registerValidators({required(e){return!(e==null||e===``||Array.isArray(e)&&e.length===0)},email(e){return e?/^\S+@\S+\.\S+$/.test(String(e)):!0}})}function b(e,t){return e.trigger?Array.isArray(e.trigger)?e.trigger.includes(t):e.trigger===t:t===`onSubmit`}function x(e,t){return e===!0?``:typeof e==`string`?e:t}async function S(e,t,n,r,i={},a=`onSubmit`){let o=[],s=e.rules??[];for(let c of s){if(!b(c,a))continue;let s=c.message??`${e.label??e.key} is invalid`;if(c.required){let e=t==null||t===``||Array.isArray(t)&&t.length===0;if(e&&o.push(s),e)continue}if(c.validator){let e=x(await c.validator(t,n,i),s);e&&o.push(e);continue}if(c.type){let e=r.validators.get(c.type);if(!e){console.warn(`[vue-form-engine] Unknown validator: ${c.type}`);continue}let a=x(await e(t,n,i),s);a&&o.push(a)}}return o}async function C(e,t,n,r={},i=`onSubmit`){let c={},l=s(e);for(let s of l)if(!(e.validateVisibleOnly!==!1&&!g(s,t,n,r))){if(a(s)){let e=await S(s,t[s.key],t,n,r,i);e.length&&(c[s.key]=e);continue}if(o(s)){let e=Array.isArray(t[s.key])?t[s.key]:[];for(let t=0;t<e.length;t+=1)for(let a of s.itemFields){let o=await S(a,e[t]?.[a.key],e[t]??{},n,r,i);o.length&&(c[`${s.key}.${t}.${a.key}`]=o)}}}return c}function w(){let e=n(),t={...e,use(n){n.fields&&e.registerFields(n.fields),n.blocks&&e.registerBlocks(n.blocks),n.validators&&e.registerValidators(n.validators),n.conditionOperators&&e.registerConditionOperators(n.conditionOperators),n.install?.(t)}};return r(t),y(t),t}function T(e,t,n,r={}){if((e.hiddenValueStrategy??`submitVisibleOnly`)===`keep`)return{...t};let i={};for(let c of s(e)){if(!g(c,t,n,r))continue;if(a(c)){let e=n.fields.get(c.type);if(e?.submitTransform){let n=e.submitTransform(t[c.key],{field:c,model:t,context:r});n&&typeof n==`object`&&!Array.isArray(n)?Object.assign(i,n):i[c.key]=n}else i[c.key]=t[c.key];continue}if(o(c)){i[c.key]=Array.isArray(t[c.key])?t[c.key]:[];continue}let e=n.blocks.get(c.type);e?.submitTransform&&Object.assign(i,e.submitTransform(t,{block:c,model:t,context:r}))}return i}function E(e,t,n){let r=Array.isArray(e[t.key])?e[t.key]:[];if(t.maxItems!==void 0&&r.length>=t.maxItems)return r;let i=[...r,d(t,n)];return e[t.key]=i,i}function D(e,t,n){let r=Array.isArray(e[t.key])?e[t.key]:[];return t.minItems!==void 0&&r.length<=t.minItems?r:(e[t.key]=r.filter((e,t)=>t!==n),e[t.key])}exports.addArrayItem=E,exports.buildInitialModel=f,exports.clearField=h,exports.cloneDefaultValue=l,exports.collectSubmitValues=T,exports.createArrayItemModel=d,exports.createFormEngine=w,exports.createFormRegistry=n,exports.evaluateCondition=i,exports.getAllFields=c,exports.getAllItems=s,exports.getFieldDefaultValue=u,exports.getValue=p,exports.getVisibleItems=v,exports.isArrayItem=o,exports.isFieldItem=a,exports.isItemDisabled=_,exports.isItemVisible=g,exports.registerDefaultConditionOperators=r,exports.registerDefaultValidators=y,exports.removeArrayItem=D,exports.setValue=m,exports.validateField=S,exports.validateForm=C;
@@ -0,0 +1,10 @@
1
+ export * from './types';
2
+ export * from './registry';
3
+ export * from './plugin';
4
+ export * from './condition';
5
+ export * from './model';
6
+ export * from './visibility';
7
+ export * from './validation';
8
+ export * from './submit';
9
+ export * from './array';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,277 @@
1
+ //#region src/registry.ts
2
+ function e(e) {
3
+ return typeof e == "object" && e && "component" in e ? e : { component: e };
4
+ }
5
+ function t(e) {
6
+ return typeof e == "object" && e && "component" in e ? e : { component: e };
7
+ }
8
+ function n() {
9
+ let n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Map();
10
+ function o(t, r) {
11
+ n.set(t, e(r));
12
+ }
13
+ function s(e) {
14
+ Object.entries(e).forEach(([e, t]) => o(e, t));
15
+ }
16
+ function c(e, n) {
17
+ r.set(e, t(n));
18
+ }
19
+ function l(e) {
20
+ Object.entries(e).forEach(([e, t]) => c(e, t));
21
+ }
22
+ function u(e) {
23
+ e.fields && s(e.fields), e.blocks && l(e.blocks);
24
+ }
25
+ function d(e, t) {
26
+ i.set(e, t);
27
+ }
28
+ function f(e) {
29
+ Object.entries(e).forEach(([e, t]) => d(e, t));
30
+ }
31
+ function p(e, t) {
32
+ a.set(e, t);
33
+ }
34
+ function m(e) {
35
+ Object.entries(e).forEach(([e, t]) => p(e, t));
36
+ }
37
+ return {
38
+ fields: n,
39
+ blocks: r,
40
+ validators: i,
41
+ conditionOperators: a,
42
+ registerField: o,
43
+ registerFields: s,
44
+ registerBlock: c,
45
+ registerBlocks: l,
46
+ registerComponents: u,
47
+ registerValidator: d,
48
+ registerValidators: f,
49
+ registerConditionOperator: p,
50
+ registerConditionOperators: m
51
+ };
52
+ }
53
+ //#endregion
54
+ //#region src/condition.ts
55
+ function r(e) {
56
+ e.registerConditionOperators({
57
+ eq: (e, t) => e === t,
58
+ neq: (e, t) => e !== t,
59
+ in: (e, t) => Array.isArray(t) && t.includes(e),
60
+ notIn: (e, t) => Array.isArray(t) && !t.includes(e),
61
+ empty: (e) => e == null || e === "" || Array.isArray(e) && e.length === 0,
62
+ notEmpty: (e) => !(e == null || e === "" || Array.isArray(e) && e.length === 0),
63
+ gt: (e, t) => Number(e) > Number(t),
64
+ gte: (e, t) => Number(e) >= Number(t),
65
+ lt: (e, t) => Number(e) < Number(t),
66
+ lte: (e, t) => Number(e) <= Number(t),
67
+ includes: (e, t) => Array.isArray(e) ? e.includes(t) : String(e ?? "").includes(String(t ?? "")),
68
+ matches: (e, t) => new RegExp(String(t)).test(String(e ?? ""))
69
+ });
70
+ }
71
+ function i(e, t, n, r = {}) {
72
+ if (!e) return !0;
73
+ if (typeof e == "function") return !!e(t);
74
+ if ("predicate" in e) return !!e.predicate(t);
75
+ if ("logic" in e) {
76
+ let a = e.conditions.map((e) => i(e, t, n, r));
77
+ return e.logic === "and" ? a.every(Boolean) : a.some(Boolean);
78
+ }
79
+ if ("field" in e) {
80
+ let i = n.conditionOperators.get(e.operator);
81
+ return i ? !!i(t[e.field], e.value, t, r) : (console.warn(`[vue-form-engine] Unknown condition operator: ${e.operator}`), !1);
82
+ }
83
+ return !0;
84
+ }
85
+ //#endregion
86
+ //#region src/model.ts
87
+ function a(e) {
88
+ return e.kind !== "block" && e.kind !== "array";
89
+ }
90
+ function o(e) {
91
+ return e.kind === "array" || e.type === "array";
92
+ }
93
+ function s(e) {
94
+ return e.sections.flatMap((e) => e.items);
95
+ }
96
+ function c(e) {
97
+ return s(e).filter(a);
98
+ }
99
+ function l(e) {
100
+ return typeof e == "function" ? e() : Array.isArray(e) ? [...e] : e && typeof e == "object" ? { ...e } : e;
101
+ }
102
+ function u(e, t) {
103
+ if (e.defaultValue !== void 0) return l(e.defaultValue);
104
+ let n = t.fields.get(e.type);
105
+ if (n?.defaultValue !== void 0) return l(n.defaultValue);
106
+ switch (e.type) {
107
+ case "switch": return !1;
108
+ case "number": return;
109
+ default: return "";
110
+ }
111
+ }
112
+ function d(e, t) {
113
+ let n = {};
114
+ return e.itemFields.forEach((e) => {
115
+ n[e.key] = u(e, t);
116
+ }), n;
117
+ }
118
+ function f(e, t, n = {}) {
119
+ let r = { ...n };
120
+ return s(e).forEach((e) => {
121
+ if (e.kind === "block") {
122
+ let n = t.blocks.get(e.type);
123
+ n?.defaultModel && Object.assign(r, {
124
+ ...n.defaultModel(),
125
+ ...r
126
+ });
127
+ return;
128
+ }
129
+ if (o(e)) {
130
+ if (!Array.isArray(r[e.key])) {
131
+ let n = e.minItems ?? 0;
132
+ r[e.key] = Array.from({ length: n }, () => d(e, t));
133
+ }
134
+ return;
135
+ }
136
+ e.key in r || (r[e.key] = u(e, t));
137
+ }), r;
138
+ }
139
+ function p(e, t) {
140
+ return e[t];
141
+ }
142
+ function m(e, t, n) {
143
+ e[t] = n;
144
+ }
145
+ function h(e, t) {
146
+ delete e[t];
147
+ }
148
+ //#endregion
149
+ //#region src/visibility.ts
150
+ function g(e, t, n, r = {}) {
151
+ return i(e.visibleWhen, t, n, r);
152
+ }
153
+ function _(e, t, n, r = {}) {
154
+ return "disabled" in e && e.disabled ? !0 : !i(e.disabledWhen, t, n, r);
155
+ }
156
+ function v(e, t, n, r = {}) {
157
+ return e.sections.flatMap((e) => e.items).filter((e) => g(e, t, n, r));
158
+ }
159
+ //#endregion
160
+ //#region src/validation.ts
161
+ function y(e) {
162
+ e.registerValidators({
163
+ required(e) {
164
+ return !(e == null || e === "" || Array.isArray(e) && e.length === 0);
165
+ },
166
+ email(e) {
167
+ return e ? /^\S+@\S+\.\S+$/.test(String(e)) : !0;
168
+ }
169
+ });
170
+ }
171
+ function b(e, t) {
172
+ return e.trigger ? Array.isArray(e.trigger) ? e.trigger.includes(t) : e.trigger === t : t === "onSubmit";
173
+ }
174
+ function x(e, t) {
175
+ return e === !0 ? "" : typeof e == "string" ? e : t;
176
+ }
177
+ async function S(e, t, n, r, i = {}, a = "onSubmit") {
178
+ let o = [], s = e.rules ?? [];
179
+ for (let c of s) {
180
+ if (!b(c, a)) continue;
181
+ let s = c.message ?? `${e.label ?? e.key} is invalid`;
182
+ if (c.required) {
183
+ let e = t == null || t === "" || Array.isArray(t) && t.length === 0;
184
+ if (e && o.push(s), e) continue;
185
+ }
186
+ if (c.validator) {
187
+ let e = x(await c.validator(t, n, i), s);
188
+ e && o.push(e);
189
+ continue;
190
+ }
191
+ if (c.type) {
192
+ let e = r.validators.get(c.type);
193
+ if (!e) {
194
+ console.warn(`[vue-form-engine] Unknown validator: ${c.type}`);
195
+ continue;
196
+ }
197
+ let a = x(await e(t, n, i), s);
198
+ a && o.push(a);
199
+ }
200
+ }
201
+ return o;
202
+ }
203
+ async function C(e, t, n, r = {}, i = "onSubmit") {
204
+ let c = {}, l = s(e);
205
+ for (let s of l) if (!(e.validateVisibleOnly !== !1 && !g(s, t, n, r))) {
206
+ if (a(s)) {
207
+ let e = await S(s, t[s.key], t, n, r, i);
208
+ e.length && (c[s.key] = e);
209
+ continue;
210
+ }
211
+ if (o(s)) {
212
+ let e = Array.isArray(t[s.key]) ? t[s.key] : [];
213
+ for (let t = 0; t < e.length; t += 1) for (let a of s.itemFields) {
214
+ let o = await S(a, e[t]?.[a.key], e[t] ?? {}, n, r, i);
215
+ o.length && (c[`${s.key}.${t}.${a.key}`] = o);
216
+ }
217
+ }
218
+ }
219
+ return c;
220
+ }
221
+ //#endregion
222
+ //#region src/plugin.ts
223
+ function w() {
224
+ let e = n(), t = {
225
+ ...e,
226
+ use(n) {
227
+ n.fields && e.registerFields(n.fields), n.blocks && e.registerBlocks(n.blocks), n.validators && e.registerValidators(n.validators), n.conditionOperators && e.registerConditionOperators(n.conditionOperators), n.install?.(t);
228
+ }
229
+ };
230
+ return r(t), y(t), t;
231
+ }
232
+ //#endregion
233
+ //#region src/submit.ts
234
+ function T(e, t, n, r = {}) {
235
+ if ((e.hiddenValueStrategy ?? "submitVisibleOnly") === "keep") return { ...t };
236
+ let i = {};
237
+ for (let c of s(e)) {
238
+ if (!g(c, t, n, r)) continue;
239
+ if (a(c)) {
240
+ let e = n.fields.get(c.type);
241
+ if (e?.submitTransform) {
242
+ let n = e.submitTransform(t[c.key], {
243
+ field: c,
244
+ model: t,
245
+ context: r
246
+ });
247
+ n && typeof n == "object" && !Array.isArray(n) ? Object.assign(i, n) : i[c.key] = n;
248
+ } else i[c.key] = t[c.key];
249
+ continue;
250
+ }
251
+ if (o(c)) {
252
+ i[c.key] = Array.isArray(t[c.key]) ? t[c.key] : [];
253
+ continue;
254
+ }
255
+ let e = n.blocks.get(c.type);
256
+ e?.submitTransform && Object.assign(i, e.submitTransform(t, {
257
+ block: c,
258
+ model: t,
259
+ context: r
260
+ }));
261
+ }
262
+ return i;
263
+ }
264
+ //#endregion
265
+ //#region src/array.ts
266
+ function E(e, t, n) {
267
+ let r = Array.isArray(e[t.key]) ? e[t.key] : [];
268
+ if (t.maxItems !== void 0 && r.length >= t.maxItems) return r;
269
+ let i = [...r, d(t, n)];
270
+ return e[t.key] = i, i;
271
+ }
272
+ function D(e, t, n) {
273
+ let r = Array.isArray(e[t.key]) ? e[t.key] : [];
274
+ return t.minItems !== void 0 && r.length <= t.minItems ? r : (e[t.key] = r.filter((e, t) => t !== n), e[t.key]);
275
+ }
276
+ //#endregion
277
+ export { E as addArrayItem, f as buildInitialModel, h as clearField, l as cloneDefaultValue, T as collectSubmitValues, d as createArrayItemModel, w as createFormEngine, n as createFormRegistry, i as evaluateCondition, c as getAllFields, s as getAllItems, u as getFieldDefaultValue, p as getValue, v as getVisibleItems, o as isArrayItem, a as isFieldItem, _ as isItemDisabled, g as isItemVisible, r as registerDefaultConditionOperators, y as registerDefaultValidators, D as removeArrayItem, m as setValue, S as validateField, C as validateForm };
@@ -0,0 +1,14 @@
1
+ import type { FormArrayFieldSchema, FormFieldSchema, FormItemSchema, FormModel, FormSchema } from './types';
2
+ import type { FormEngine } from './types';
3
+ export declare function isFieldItem(item: FormItemSchema): item is FormFieldSchema;
4
+ export declare function isArrayItem(item: FormItemSchema): item is FormArrayFieldSchema;
5
+ export declare function getAllItems(schema: FormSchema): FormItemSchema[];
6
+ export declare function getAllFields(schema: FormSchema): FormFieldSchema[];
7
+ export declare function cloneDefaultValue(value: any): any;
8
+ export declare function getFieldDefaultValue(field: FormFieldSchema, engine: FormEngine): any;
9
+ export declare function createArrayItemModel(field: FormArrayFieldSchema, engine: FormEngine): FormModel;
10
+ export declare function buildInitialModel(schema: FormSchema, engine: FormEngine, initialValue?: FormModel): FormModel;
11
+ export declare function getValue(model: FormModel, key: string): any;
12
+ export declare function setValue(model: FormModel, key: string, value: any): void;
13
+ export declare function clearField(model: FormModel, key: string): void;
14
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC5G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,wBAAgB,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,IAAI,eAAe,CAEzE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,IAAI,oBAAoB,CAE9E;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,cAAc,EAAE,CAEhE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,eAAe,EAAE,CAElE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,GAAG,OAK3C;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,OAY9E;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,UAAU,GAAG,SAAS,CAM/F;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,GAAE,SAAc,GAAG,SAAS,CAoBjH;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAErD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,QAEjE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,QAEvD"}
@@ -0,0 +1,3 @@
1
+ import type { FormEngine } from './types';
2
+ export declare function createFormEngine(): FormEngine;
3
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,SAAS,CAAC;AAEtD,wBAAgB,gBAAgB,IAAI,UAAU,CAkB7C"}
@@ -0,0 +1,21 @@
1
+ import type { Component } from 'vue';
2
+ import type { BlockRegistration, ConditionOperator, FieldRegistration, FormValidator } from './types';
3
+ export declare function createFormRegistry(): {
4
+ fields: Map<string, FieldRegistration>;
5
+ blocks: Map<string, BlockRegistration>;
6
+ validators: Map<string, FormValidator>;
7
+ conditionOperators: Map<string, ConditionOperator>;
8
+ registerField: (type: string, input: Component | FieldRegistration) => void;
9
+ registerFields: (inputs: Record<string, Component | FieldRegistration>) => void;
10
+ registerBlock: (type: string, input: Component | BlockRegistration) => void;
11
+ registerBlocks: (inputs: Record<string, Component | BlockRegistration>) => void;
12
+ registerComponents: (input: {
13
+ fields?: Record<string, Component | FieldRegistration>;
14
+ blocks?: Record<string, Component | BlockRegistration>;
15
+ }) => void;
16
+ registerValidator: (type: string, validator: FormValidator) => void;
17
+ registerValidators: (inputs: Record<string, FormValidator>) => void;
18
+ registerConditionOperator: (type: string, operator: ConditionOperator) => void;
19
+ registerConditionOperators: (inputs: Record<string, ConditionOperator>) => void;
20
+ };
21
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AACrC,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAYtG,wBAAgB,kBAAkB;;;;;0BAMH,MAAM,SAAS,SAAS,GAAG,iBAAiB;6BAIzC,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,iBAAiB,CAAC;0BAIhD,MAAM,SAAS,SAAS,GAAG,iBAAiB;6BAIzC,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,iBAAiB,CAAC;gCAI1C;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,iBAAiB,CAAC,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,iBAAiB,CAAC,CAAA;KAAE;8BAKpH,MAAM,aAAa,aAAa;iCAI7B,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;sCAIxB,MAAM,YAAY,iBAAiB;yCAIhC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC;EAmB9E"}
@@ -0,0 +1,3 @@
1
+ import type { FormContext, FormEngine, FormModel, FormSchema } from './types';
2
+ export declare function collectSubmitValues(schema: FormSchema, model: FormModel, engine: FormEngine, context?: FormContext): FormModel;
3
+ //# sourceMappingURL=submit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submit.d.ts","sourceRoot":"","sources":["../src/submit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAI9E,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAE,WAAgB,GAAG,SAAS,CAkClI"}
@@ -0,0 +1,145 @@
1
+ import type { Component } from 'vue';
2
+ export type FormModel = Record<string, any>;
3
+ export type FormTrigger = 'onChange' | 'onBlur' | 'onSubmit';
4
+ export type HiddenValueStrategy = 'keep' | 'clear' | 'submitVisibleOnly';
5
+ export interface FormContext {
6
+ services?: Record<string, any>;
7
+ [key: string]: any;
8
+ }
9
+ export interface FormSchema {
10
+ sections: FormSectionSchema[];
11
+ hiddenValueStrategy?: HiddenValueStrategy;
12
+ validateVisibleOnly?: boolean;
13
+ }
14
+ export interface FormSectionSchema {
15
+ key?: string;
16
+ title?: string;
17
+ description?: string;
18
+ items: FormItemSchema[];
19
+ }
20
+ export type FormItemSchema = FormFieldSchema | FormArrayFieldSchema | FormBlockSchema;
21
+ export interface FormFieldSchema<TProps extends Record<string, any> = Record<string, any>, TMeta extends Record<string, any> = Record<string, any>> {
22
+ kind?: 'field';
23
+ key: string;
24
+ type: string;
25
+ label?: string;
26
+ placeholder?: string;
27
+ defaultValue?: any;
28
+ options?: FormOption[];
29
+ props?: TProps;
30
+ meta?: TMeta;
31
+ readonly?: boolean;
32
+ disabled?: boolean;
33
+ visibleWhen?: FormCondition;
34
+ disabledWhen?: FormCondition;
35
+ rules?: FormRule[];
36
+ validateDebounce?: number;
37
+ span?: number;
38
+ }
39
+ export interface FormArrayFieldSchema extends Omit<FormFieldSchema, 'kind' | 'type' | 'defaultValue'> {
40
+ kind: 'array';
41
+ type: 'array';
42
+ minItems?: number;
43
+ maxItems?: number;
44
+ addText?: string;
45
+ removeText?: string;
46
+ itemFields: FormFieldSchema[];
47
+ }
48
+ export interface FormBlockSchema<TProps extends Record<string, any> = Record<string, any>> {
49
+ kind: 'block';
50
+ key: string;
51
+ type: string;
52
+ component?: string;
53
+ props?: TProps;
54
+ visibleWhen?: FormCondition;
55
+ disabledWhen?: FormCondition;
56
+ span?: number;
57
+ }
58
+ export interface FormOption {
59
+ label: string;
60
+ value: any;
61
+ disabled?: boolean;
62
+ [key: string]: any;
63
+ }
64
+ export type FormCondition = SimpleCondition | GroupCondition | FunctionCondition | ((model: FormModel) => boolean);
65
+ export interface SimpleCondition {
66
+ field: string;
67
+ operator: string;
68
+ value?: any;
69
+ }
70
+ export interface GroupCondition {
71
+ logic: 'and' | 'or';
72
+ conditions: FormCondition[];
73
+ }
74
+ export interface FunctionCondition {
75
+ deps?: string[];
76
+ predicate: (model: FormModel) => boolean;
77
+ }
78
+ export interface FormRule {
79
+ type?: string;
80
+ required?: boolean;
81
+ message?: string;
82
+ trigger?: FormTrigger | FormTrigger[];
83
+ debounce?: number;
84
+ validator?: (value: any, model: FormModel, ctx: FormContext) => boolean | string | Promise<boolean | string>;
85
+ }
86
+ export interface FieldRuntimeContext {
87
+ field: FormFieldSchema;
88
+ model: FormModel;
89
+ context: FormContext;
90
+ }
91
+ export interface BlockRuntimeContext {
92
+ block: FormBlockSchema;
93
+ model: FormModel;
94
+ context: FormContext;
95
+ }
96
+ export interface FieldRegistration {
97
+ component: Component;
98
+ defaultValue?: any | (() => any);
99
+ normalizeValue?: (value: any, ctx: FieldRuntimeContext) => any;
100
+ submitTransform?: (value: any, ctx: FieldRuntimeContext) => any | Record<string, any>;
101
+ clearWhenHidden?: boolean;
102
+ }
103
+ export interface BlockRegistration {
104
+ component: Component;
105
+ defaultModel?: () => FormModel;
106
+ submitTransform?: (model: FormModel, ctx: BlockRuntimeContext) => Record<string, any>;
107
+ }
108
+ export type FormValidator = (value: any, model: FormModel, ctx: FormContext) => boolean | string | Promise<boolean | string>;
109
+ export type ConditionOperator = (actual: any, expected: any, model: FormModel, ctx: FormContext) => boolean;
110
+ export interface FormPlugin {
111
+ name: string;
112
+ fields?: Record<string, Component | FieldRegistration>;
113
+ blocks?: Record<string, Component | BlockRegistration>;
114
+ validators?: Record<string, FormValidator>;
115
+ conditionOperators?: Record<string, ConditionOperator>;
116
+ install?: (engine: FormEngine) => void;
117
+ }
118
+ export interface FormEngine {
119
+ fields: Map<string, FieldRegistration>;
120
+ blocks: Map<string, BlockRegistration>;
121
+ validators: Map<string, FormValidator>;
122
+ conditionOperators: Map<string, ConditionOperator>;
123
+ registerField(type: string, component: Component | FieldRegistration): void;
124
+ registerFields(fields: Record<string, Component | FieldRegistration>): void;
125
+ registerBlock(type: string, component: Component | BlockRegistration): void;
126
+ registerBlocks(blocks: Record<string, Component | BlockRegistration>): void;
127
+ registerComponents(registry: {
128
+ fields?: Record<string, Component | FieldRegistration>;
129
+ blocks?: Record<string, Component | BlockRegistration>;
130
+ }): void;
131
+ registerValidator(type: string, validator: FormValidator): void;
132
+ registerValidators(validators: Record<string, FormValidator>): void;
133
+ registerConditionOperator(type: string, operator: ConditionOperator): void;
134
+ registerConditionOperators(operators: Record<string, ConditionOperator>): void;
135
+ use(plugin: FormPlugin): void;
136
+ }
137
+ export interface FieldComponentProps {
138
+ field: FormFieldSchema;
139
+ modelValue: any;
140
+ model: FormModel;
141
+ disabled?: boolean;
142
+ readonly?: boolean;
143
+ errorMessage?: string;
144
+ }
145
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { FormContext, FormEngine, FormFieldSchema, FormModel, FormSchema, FormTrigger } from './types';
2
+ export declare function registerDefaultValidators(engine: FormEngine): void;
3
+ export declare function validateField(field: FormFieldSchema, value: any, model: FormModel, engine: FormEngine, context?: FormContext, trigger?: FormTrigger): Promise<string[]>;
4
+ export declare function validateForm(schema: FormSchema, model: FormModel, engine: FormEngine, context?: FormContext, trigger?: FormTrigger): Promise<Record<string, string[]>>;
5
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,SAAS,EAAY,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAItH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,UAAU,QAW3D;AAaD,wBAAsB,aAAa,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAE,WAAgB,EAAE,OAAO,GAAE,WAAwB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAkC7L;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAE,WAAgB,EAAE,OAAO,GAAE,WAAwB,qCAyBxJ"}
@@ -0,0 +1,5 @@
1
+ import type { FormContext, FormEngine, FormItemSchema, FormModel, FormSchema } from './types';
2
+ export declare function isItemVisible(item: FormItemSchema, model: FormModel, engine: FormEngine, context?: FormContext): boolean;
3
+ export declare function isItemDisabled(item: FormItemSchema, model: FormModel, engine: FormEngine, context?: FormContext): boolean;
4
+ export declare function getVisibleItems(schema: FormSchema, model: FormModel, engine: FormEngine, context?: FormContext): FormItemSchema[];
5
+ //# sourceMappingURL=visibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visibility.d.ts","sourceRoot":"","sources":["../src/visibility.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE9F,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAE,WAAgB,WAElH;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAE,WAAgB,WAGnH;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAE,WAAgB,oBAElH"}
package/package.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "@speykye/vue-form-engine-core",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "main": "./dist/index.cjs",
6
+ "module": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "require": "./dist/index.cjs",
12
+ "types": "./dist/index.d.ts"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "peerDependencies": {
19
+ "vue": "^3.5.0"
20
+ },
21
+ "scripts": {
22
+ "build": "vue-tsc --declaration --emitDeclarationOnly --outDir dist && vite build",
23
+ "typecheck": "vue-tsc --noEmit"
24
+ }
25
+ }