@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.
- package/dist/array.d.ts +4 -0
- package/dist/array.d.ts.map +1 -0
- package/dist/condition.d.ts +4 -0
- package/dist/condition.d.ts.map +1 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +277 -0
- package/dist/model.d.ts +14 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/plugin.d.ts +3 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/registry.d.ts +21 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/submit.d.ts +3 -0
- package/dist/submit.d.ts.map +1 -0
- package/dist/types.d.ts +145 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/validation.d.ts +5 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/visibility.d.ts +5 -0
- package/dist/visibility.d.ts.map +1 -0
- package/package.json +25 -0
package/dist/array.d.ts
ADDED
|
@@ -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;
|
package/dist/index.d.ts
ADDED
|
@@ -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 };
|
package/dist/model.d.ts
ADDED
|
@@ -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"}
|
package/dist/plugin.d.ts
ADDED
|
@@ -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"}
|
package/dist/submit.d.ts
ADDED
|
@@ -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"}
|
package/dist/types.d.ts
ADDED
|
@@ -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
|
+
}
|