@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,CAkStB"}
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 D=new AbortController;return j.current=D,t.draftInteraction({}).then(b=>{if(g||D.signal.aborted)return;const C=b._id;I(C),n.setValue("_id",C,{shouldDirty:!1}),o(null)}).catch(b=>{g||D.signal.aborted||o(b instanceof Error?b:new Error(String(b)))}).finally(()=>{g||f(!1)}),()=>{g=!0,D.abort()}},[e,t,n]);const _=l.useCallback(async()=>{if(!e||!r||E.current)return;const g=n.formState.dirtyFields,D=n.getValues(),b={};for(const[d,q]of Object.entries(g))q&&u[d]&&!u[d].readOnly&&(b[d]=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(()=>{_()},G)):_())},[e,y,_]),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:_}=$.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(()=>{_!=null&&_.BOBlob&&t.loadMetadata(_.BOBlob)},[_,t]);const a=L.useForm({mode:e,resolver:o,defaultValues:u,values:c==="update"&&S?S:void 0}),m=t.getFields(),{draftId:g,isInitializingDraft:D,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||D,isFetching:k,loadError:j,draftId:g,isInitializingDraft:D,isInteracting:b,interactionError:C}}exports.FormOperation=N.FormOperation;exports.InteractionMode=N.InteractionMode;exports.ValidationMode=N.ValidationMode;exports.useForm=W;
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.BOBlob && e.loadMetadata(O.BOBlob);
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(S);
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(n, S);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ram_28/kf-ai-sdk",
3
- "version": "2.0.3",
3
+ "version": "2.0.4",
4
4
  "description": "Type-safe, AI-driven SDK for building modern web applications with role-based access control",
5
5
  "author": "Ramprasad",
6
6
  "license": "MIT",
@@ -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?.BOBlob) {
121
- bdo.loadMetadata(schema.BOBlob);
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(filteredData);
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(recordId!, filteredData);
265
+ result = await (bdo as unknown as UpdatableBdo).update(
266
+ recordId!,
267
+ filteredData,
268
+ );
265
269
  }
266
270
 
267
271
  // Success callback