@ram_28/kf-ai-sdk 2.0.3 → 2.0.4
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useForm.d.ts","sourceRoot":"","sources":["../../../../sdk/components/hooks/useForm/useForm.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAMlB,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;GAaG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACtD,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC7B,iBAAiB,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"useForm.d.ts","sourceRoot":"","sources":["../../../../sdk/components/hooks/useForm/useForm.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAMlB,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;GAaG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACtD,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC7B,iBAAiB,CAAC,CAAC,CAAC,CAsStB"}
|
package/dist/form.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const N=require("./constants-D0J69if5.cjs"),l=require("react"),L=require("./index.esm-DuwT11sx.cjs"),$=require("@tanstack/react-query"),Q=require("./metadata-BJWukIqS.cjs");function J(i,t){const n=[];if(i.required&&(t==null||t===""))return n.push(`${i.label} is required`),{valid:!1,errors:n};if(t==null||t==="")return{valid:!0,errors:[]};if("length"in i&&typeof i.length=="number"&&typeof t=="string"&&t.length>i.length&&n.push(`${i.label} must be at most ${i.length} characters`),"integerPart"in i&&typeof t=="number"){const y=Math.floor(Math.abs(t)),u=i.integerPart??9;y.toString().length>u&&n.push(`${i.label} integer part must be at most ${u} digits`);const e=i.fractionPart;e!==void 0&&(t.toString().split(".")[1]??"").length>e&&n.push(`${i.label} can have at most ${e} decimal places`)}return n.length>0?{valid:!1,errors:n}:{valid:!0,errors:[]}}function A(i,t){return async(n,y,u)=>{var w;const e={},r=i.getFields(),I=(u==null?void 0:u.names)??Object.keys(r);for(const f of I){if(f==="_id"||(w=r[f])!=null&&w.readOnly)continue;const O=r[f];if(!O)continue;const s=n[f],c=O.validate(s);if(!c.valid&&c.errors.length>0){e[f]={type:"validate",message:c.errors[0]||`${f} is invalid`};continue}if((t==null?void 0:t.enableConstraintValidation)!==!1){const o=J(O,s);if(!o.valid&&o.errors.length>0){e[f]={type:"constraint",message:o.errors[0]};continue}}if(i.hasMetadata()){const o=i.validateFieldExpression(f,s,n);!o.valid&&o.errors.length>0&&(e[f]={type:"validate",message:o.errors[0]})}}return Object.keys(e).length===0?{values:n,errors:{}}:{values:{},errors:e}}}function U(i,t){const n=i.getFields(),y=new Map;return new Proxy({},{get(u,e){if(typeof e=="symbol")return;if(e==="_id")return t.getValues("_id");if(e==="toJSON")return()=>t.getValues();if(e==="validate")return()=>t.trigger();if(y.has(e))return y.get(e);const r=n[e],I=(r==null?void 0:r.meta)??{_id:e,Name:e,Type:"String"},w=(r==null?void 0:r.readOnly)??!1,f=()=>{if(!r)return{valid:!0,errors:[]};const s=t.getValues(e),c=r.validate(s);if(!c.valid)return c;const o=J(r,s);if(!o.valid)return o;if(i.hasMetadata()){const S=i.validateFieldExpression(e,s,t.getValues());if(!S.valid)return S}return{valid:!0,errors:[]}};if(!w){const s={label:(r==null?void 0:r.label)??e,required:(r==null?void 0:r.required)??!1,readOnly:!1,defaultValue:r==null?void 0:r.defaultValue,meta:I,get:()=>t.getValues(e),set:c=>{t.setValue(e,c,{shouldDirty:!0,shouldTouch:!0,shouldValidate:!1})},validate:f};return y.set(e,s),s}const O={label:(r==null?void 0:r.label)??e,required:(r==null?void 0:r.required)??!1,readOnly:!0,defaultValue:r==null?void 0:r.defaultValue,meta:I,get:()=>t.getValues(e),validate:f};return y.set(e,O),O},has(u,e){return typeof e=="symbol"?!1:e==="_id"||e==="toJSON"||e==="validate"?!0:e in n},ownKeys(u){return[...Object.keys(n),"_id","toJSON","validate"]},getOwnPropertyDescriptor(u,e){if(typeof e!="symbol")return{configurable:!0,enumerable:e!=="toJSON"&&e!=="validate"}}})}const G=300;function H(i){const{bdo:t,form:n,mode:y,fields:u,enabled:e}=i,[r,I]=l.useState(void 0),[w,f]=l.useState(!1),[O,s]=l.useState(!1),[c,o]=l.useState(null),S=l.useRef(0),E=l.useRef(!1),k=l.useRef(null),j=l.useRef(null);l.useEffect(()=>{if(!e)return;let g=!1;f(!0);const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const N=require("./constants-D0J69if5.cjs"),l=require("react"),L=require("./index.esm-DuwT11sx.cjs"),$=require("@tanstack/react-query"),Q=require("./metadata-BJWukIqS.cjs");function J(i,t){const n=[];if(i.required&&(t==null||t===""))return n.push(`${i.label} is required`),{valid:!1,errors:n};if(t==null||t==="")return{valid:!0,errors:[]};if("length"in i&&typeof i.length=="number"&&typeof t=="string"&&t.length>i.length&&n.push(`${i.label} must be at most ${i.length} characters`),"integerPart"in i&&typeof t=="number"){const y=Math.floor(Math.abs(t)),u=i.integerPart??9;y.toString().length>u&&n.push(`${i.label} integer part must be at most ${u} digits`);const e=i.fractionPart;e!==void 0&&(t.toString().split(".")[1]??"").length>e&&n.push(`${i.label} can have at most ${e} decimal places`)}return n.length>0?{valid:!1,errors:n}:{valid:!0,errors:[]}}function A(i,t){return async(n,y,u)=>{var w;const e={},r=i.getFields(),I=(u==null?void 0:u.names)??Object.keys(r);for(const f of I){if(f==="_id"||(w=r[f])!=null&&w.readOnly)continue;const O=r[f];if(!O)continue;const s=n[f],c=O.validate(s);if(!c.valid&&c.errors.length>0){e[f]={type:"validate",message:c.errors[0]||`${f} is invalid`};continue}if((t==null?void 0:t.enableConstraintValidation)!==!1){const o=J(O,s);if(!o.valid&&o.errors.length>0){e[f]={type:"constraint",message:o.errors[0]};continue}}if(i.hasMetadata()){const o=i.validateFieldExpression(f,s,n);!o.valid&&o.errors.length>0&&(e[f]={type:"validate",message:o.errors[0]})}}return Object.keys(e).length===0?{values:n,errors:{}}:{values:{},errors:e}}}function U(i,t){const n=i.getFields(),y=new Map;return new Proxy({},{get(u,e){if(typeof e=="symbol")return;if(e==="_id")return t.getValues("_id");if(e==="toJSON")return()=>t.getValues();if(e==="validate")return()=>t.trigger();if(y.has(e))return y.get(e);const r=n[e],I=(r==null?void 0:r.meta)??{_id:e,Name:e,Type:"String"},w=(r==null?void 0:r.readOnly)??!1,f=()=>{if(!r)return{valid:!0,errors:[]};const s=t.getValues(e),c=r.validate(s);if(!c.valid)return c;const o=J(r,s);if(!o.valid)return o;if(i.hasMetadata()){const S=i.validateFieldExpression(e,s,t.getValues());if(!S.valid)return S}return{valid:!0,errors:[]}};if(!w){const s={label:(r==null?void 0:r.label)??e,required:(r==null?void 0:r.required)??!1,readOnly:!1,defaultValue:r==null?void 0:r.defaultValue,meta:I,get:()=>t.getValues(e),set:c=>{t.setValue(e,c,{shouldDirty:!0,shouldTouch:!0,shouldValidate:!1})},validate:f};return y.set(e,s),s}const O={label:(r==null?void 0:r.label)??e,required:(r==null?void 0:r.required)??!1,readOnly:!0,defaultValue:r==null?void 0:r.defaultValue,meta:I,get:()=>t.getValues(e),validate:f};return y.set(e,O),O},has(u,e){return typeof e=="symbol"?!1:e==="_id"||e==="toJSON"||e==="validate"?!0:e in n},ownKeys(u){return[...Object.keys(n),"_id","toJSON","validate"]},getOwnPropertyDescriptor(u,e){if(typeof e!="symbol")return{configurable:!0,enumerable:e!=="toJSON"&&e!=="validate"}}})}const G=300;function H(i){const{bdo:t,form:n,mode:y,fields:u,enabled:e}=i,[r,I]=l.useState(void 0),[w,f]=l.useState(!1),[O,s]=l.useState(!1),[c,o]=l.useState(null),S=l.useRef(0),E=l.useRef(!1),k=l.useRef(null),j=l.useRef(null);l.useEffect(()=>{if(!e)return;let g=!1;f(!0);const _=new AbortController;return j.current=_,t.draftInteraction({}).then(b=>{if(g||_.signal.aborted)return;const C=b._id;I(C),n.setValue("_id",C,{shouldDirty:!1}),o(null)}).catch(b=>{g||_.signal.aborted||o(b instanceof Error?b:new Error(String(b)))}).finally(()=>{g||f(!1)}),()=>{g=!0,_.abort()}},[e,t,n]);const D=l.useCallback(async()=>{if(!e||!r||E.current)return;const g=n.formState.dirtyFields,_=n.getValues(),b={};for(const[d,q]of Object.entries(g))q&&u[d]&&!u[d].readOnly&&(b[d]=_[d]);if(Object.keys(b).length===0)return;const C=++S.current;s(!0);try{const d=await t.draftInteraction({_id:r,...b});if(C!==S.current)return;E.current=!0;try{for(const[q,P]of Object.entries(d))q!=="_id"&&(g[q]||n.setValue(q,P,{shouldDirty:!1,shouldValidate:!1}))}finally{setTimeout(()=>{E.current=!1},0)}o(null)}catch(d){if(C!==S.current)return;o(d instanceof Error?d:new Error(String(d)))}finally{C===S.current&&s(!1)}},[e,r,n,u,t]),a=l.useCallback(()=>{e&&(y==="onChange"||y==="all"?(k.current&&clearTimeout(k.current),k.current=setTimeout(()=>{D()},G)):D())},[e,y,D]),m=l.useCallback(async g=>t.draft({_id:r,...g}),[t,r]);return l.useEffect(()=>()=>{var g;k.current&&clearTimeout(k.current),(g=j.current)==null||g.abort()},[]),e?{draftId:r,isInitializingDraft:w,isInteracting:O,interactionError:c,triggerInteraction:a,commitDraft:m}:{draftId:void 0,isInitializingDraft:!1,isInteracting:!1,interactionError:null,triggerInteraction:()=>{},commitDraft:async()=>{throw new Error("Draft interaction is not enabled")}}}function W(i){const{bdo:t,recordId:n,operation:y,defaultValues:u,mode:e="onBlur",enableDraft:r,enableConstraintValidation:I,enableExpressionValidation:w}=i,s=(i.interactionMode??(r===!0?"interactive":r===!1?"non-interactive":"interactive"))==="interactive",c=y??(n?"update":"create"),o=l.useMemo(()=>A(t,{enableConstraintValidation:I}),[t,I]),{data:S,isLoading:E,isFetching:k,error:j}=$.useQuery({queryKey:["form-record",t.meta._id,n],queryFn:async()=>(await t.get(n)).toJSON(),enabled:c==="update"&&!!n,staleTime:0}),{data:D}=$.useQuery({queryKey:["form-schema",t.meta._id],queryFn:()=>Q.getBdoSchema(t.meta._id),staleTime:30*60*1e3,gcTime:60*60*1e3,enabled:w!==!1});l.useEffect(()=>{D!=null&&D.BDOBlob&&t.loadMetadata(D.BDOBlob)},[D,t]);const a=L.useForm({mode:e,resolver:o,defaultValues:u,values:c==="update"&&S?S:void 0}),m=t.getFields(),{draftId:g,isInitializingDraft:_,isInteracting:b,interactionError:C,triggerInteraction:d,commitDraft:q}=H({bdo:t,form:a,mode:e,fields:m,enabled:s&&c==="create"}),P=l.useMemo(()=>U(t,a),[t,a]),z=l.useCallback((R,M)=>{var x;const h=a.register(R,M);if((x=m[R])!=null&&x.readOnly)return{...h,disabled:!0};if(s&&(e==="onBlur"||e==="onTouched"||e==="all")){const V=h.onBlur;return{...h,onBlur:async B=>{await V(B),d()}}}return h},[a,m,s,e,d]);l.useEffect(()=>{if(!s||e!=="onChange"&&e!=="all")return;const R=a.watch((M,{type:h})=>{h==="change"&&d()});return()=>R.unsubscribe()},[s,e,a,d]);const K=l.useCallback((R,M)=>a.handleSubmit(async(h,x)=>{try{const V={};let B;if(s&&c==="create"){const T=a.formState.dirtyFields;for(const[v,F]of Object.entries(h))m[v]&&!m[v].readOnly&&T[v]&&(V[v]=F);B=await q(V)}else if(c==="create"){for(const[T,v]of Object.entries(h))m[T]&&!m[T].readOnly&&(V[T]=v);B=await t.create(V)}else{const T=a.formState.dirtyFields;for(const[v,F]of Object.entries(h))m[v]&&!m[v].readOnly&&T[v]&&(V[v]=F);B=await t.update(n,V)}R==null||R(B,x)}catch(V){M==null||M(V,x)}},(h,x)=>{M==null||M(h,x)}),[a,t,c,n,m,s,q]);return{item:P,bdo:t,operation:c,recordId:n,register:z,handleSubmit:K,watch:a.watch,setValue:a.setValue,getValues:a.getValues,reset:a.reset,trigger:a.trigger,control:a.control,formState:a.formState,errors:a.formState.errors,isDirty:a.formState.isDirty,isValid:a.formState.isValid,isSubmitting:a.formState.isSubmitting,isSubmitSuccessful:a.formState.isSubmitSuccessful,dirtyFields:a.formState.dirtyFields,isLoading:E||_,isFetching:k,loadError:j,draftId:g,isInitializingDraft:_,isInteracting:b,interactionError:C}}exports.FormOperation=N.FormOperation;exports.InteractionMode=N.InteractionMode;exports.ValidationMode=N.ValidationMode;exports.useForm=W;
|
package/dist/form.mjs
CHANGED
|
@@ -258,7 +258,7 @@ function rt(i) {
|
|
|
258
258
|
enabled: R !== !1
|
|
259
259
|
});
|
|
260
260
|
P(() => {
|
|
261
|
-
O != null && O.
|
|
261
|
+
O != null && O.BDOBlob && e.loadMetadata(O.BDOBlob);
|
|
262
262
|
}, [O, e]);
|
|
263
263
|
const a = U({
|
|
264
264
|
mode: t,
|
|
@@ -325,12 +325,17 @@ function rt(i) {
|
|
|
325
325
|
} else if (l === "create") {
|
|
326
326
|
for (const [B, b] of Object.entries(y))
|
|
327
327
|
m[B] && !m[B].readOnly && (S[B] = b);
|
|
328
|
-
k = await e.create(
|
|
328
|
+
k = await e.create(
|
|
329
|
+
S
|
|
330
|
+
);
|
|
329
331
|
} else {
|
|
330
332
|
const B = a.formState.dirtyFields;
|
|
331
333
|
for (const [b, J] of Object.entries(y))
|
|
332
334
|
m[b] && !m[b].readOnly && B[b] && (S[b] = J);
|
|
333
|
-
k = await e.update(
|
|
335
|
+
k = await e.update(
|
|
336
|
+
n,
|
|
337
|
+
S
|
|
338
|
+
);
|
|
334
339
|
}
|
|
335
340
|
_ == null || _(k, T);
|
|
336
341
|
} catch (S) {
|
package/package.json
CHANGED
package/sdk/api/metadata.ts
CHANGED
|
@@ -43,7 +43,7 @@ export async function getBdoSchema(metaId: string): Promise<BackendSchemaType> {
|
|
|
43
43
|
|
|
44
44
|
if (!response.ok) {
|
|
45
45
|
throw new Error(
|
|
46
|
-
`Failed to fetch schema for ${metaId}: ${response.statusText}
|
|
46
|
+
`Failed to fetch schema for ${metaId}: ${response.statusText}`,
|
|
47
47
|
);
|
|
48
48
|
}
|
|
49
49
|
|
|
@@ -58,7 +58,7 @@ export async function getBdoSchema(metaId: string): Promise<BackendSchemaType> {
|
|
|
58
58
|
} catch (error) {
|
|
59
59
|
console.error(`Schema fetch error for ${metaId}:`, error);
|
|
60
60
|
throw new Error(
|
|
61
|
-
`Failed to load BDO schema: ${error instanceof Error ? error.message : "Unknown error"}
|
|
61
|
+
`Failed to load BDO schema: ${error instanceof Error ? error.message : "Unknown error"}`,
|
|
62
62
|
);
|
|
63
63
|
}
|
|
64
64
|
}
|
|
@@ -83,7 +83,7 @@ export interface MetadataItemType {
|
|
|
83
83
|
* @returns Promise resolving to list of metadata items
|
|
84
84
|
*/
|
|
85
85
|
export async function listMetadata(
|
|
86
|
-
options?: ListOptionsType
|
|
86
|
+
options?: ListOptionsType,
|
|
87
87
|
): Promise<ListResponseType<MetadataItemType>> {
|
|
88
88
|
try {
|
|
89
89
|
const baseUrl = getApiBaseUrl();
|
|
@@ -111,7 +111,7 @@ export async function listMetadata(
|
|
|
111
111
|
} catch (error) {
|
|
112
112
|
console.error("Metadata list error:", error);
|
|
113
113
|
throw new Error(
|
|
114
|
-
`Failed to list metadata: ${error instanceof Error ? error.message : "Unknown error"}
|
|
114
|
+
`Failed to list metadata: ${error instanceof Error ? error.message : "Unknown error"}`,
|
|
115
115
|
);
|
|
116
116
|
}
|
|
117
117
|
}
|
|
@@ -117,8 +117,8 @@ export function useForm<B extends BaseBdo<any, any, any>>(
|
|
|
117
117
|
|
|
118
118
|
// Load metadata into bdo when schema is fetched
|
|
119
119
|
useEffect(() => {
|
|
120
|
-
if (schema?.
|
|
121
|
-
bdo.loadMetadata(schema.
|
|
120
|
+
if (schema?.BDOBlob) {
|
|
121
|
+
bdo.loadMetadata(schema.BDOBlob);
|
|
122
122
|
}
|
|
123
123
|
}, [schema, bdo]);
|
|
124
124
|
|
|
@@ -166,8 +166,7 @@ export function useForm<B extends BaseBdo<any, any, any>>(
|
|
|
166
166
|
// ============================================================
|
|
167
167
|
|
|
168
168
|
const item = useMemo(
|
|
169
|
-
() =>
|
|
170
|
-
createItemProxy(bdo, form as RHFUseFormReturn<FieldValues>),
|
|
169
|
+
() => createItemProxy(bdo, form as RHFUseFormReturn<FieldValues>),
|
|
171
170
|
[bdo, form],
|
|
172
171
|
);
|
|
173
172
|
|
|
@@ -252,7 +251,9 @@ export function useForm<B extends BaseBdo<any, any, any>>(
|
|
|
252
251
|
filteredData[key] = value;
|
|
253
252
|
}
|
|
254
253
|
}
|
|
255
|
-
result = await (bdo as unknown as CreatableBdo).create(
|
|
254
|
+
result = await (bdo as unknown as CreatableBdo).create(
|
|
255
|
+
filteredData,
|
|
256
|
+
);
|
|
256
257
|
} else {
|
|
257
258
|
// Update (always non-interactive) - send only dirty, non-readonly fields
|
|
258
259
|
const dirtyFields = form.formState.dirtyFields;
|
|
@@ -261,7 +262,10 @@ export function useForm<B extends BaseBdo<any, any, any>>(
|
|
|
261
262
|
filteredData[key] = value;
|
|
262
263
|
}
|
|
263
264
|
}
|
|
264
|
-
result = await (bdo as unknown as UpdatableBdo).update(
|
|
265
|
+
result = await (bdo as unknown as UpdatableBdo).update(
|
|
266
|
+
recordId!,
|
|
267
|
+
filteredData,
|
|
268
|
+
);
|
|
265
269
|
}
|
|
266
270
|
|
|
267
271
|
// Success callback
|