@ram_28/kf-ai-sdk 2.0.18 → 2.0.20-beta.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/README.md +8 -16
- package/dist/{FileField-CZjS2uLh.js → FileField-BWrSHNRq.js} +3 -3
- package/dist/{FileField-DU4UWo_t.cjs → FileField-eDeuzln8.cjs} +1 -1
- package/dist/api.cjs +1 -1
- package/dist/api.mjs +1 -1
- package/dist/auth/authClient.d.ts.map +1 -1
- package/dist/auth/authConfig.d.ts +1 -1
- package/dist/auth/types.d.ts +1 -1
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/auth.cjs +1 -1
- package/dist/auth.mjs +102 -106
- package/dist/bdo/core/Item.d.ts +4 -0
- package/dist/bdo/core/Item.d.ts.map +1 -1
- package/dist/bdo/fields/ReferenceField.d.ts +1 -1
- package/dist/bdo/fields/ReferenceField.d.ts.map +1 -1
- package/dist/bdo/fields/SelectField.d.ts +1 -1
- package/dist/bdo/fields/SelectField.d.ts.map +1 -1
- package/dist/bdo/fields/UserField.d.ts +1 -1
- package/dist/bdo/fields/UserField.d.ts.map +1 -1
- package/dist/bdo.cjs +1 -1
- package/dist/bdo.mjs +62 -53
- package/dist/components/hooks/useActivityForm/types.d.ts +5 -4
- package/dist/components/hooks/useActivityForm/types.d.ts.map +1 -1
- package/dist/components/hooks/useActivityForm/useActivityForm.d.ts.map +1 -1
- package/dist/components/hooks/useActivityTable/types.d.ts +4 -5
- package/dist/components/hooks/useActivityTable/types.d.ts.map +1 -1
- package/dist/components/hooks/useActivityTable/useActivityTable.d.ts.map +1 -1
- package/dist/components/hooks/useBDOForm/createItemProxy.d.ts +3 -2
- package/dist/components/hooks/useBDOForm/createItemProxy.d.ts.map +1 -1
- package/dist/components/hooks/useBDOTable/types.d.ts +12 -20
- package/dist/components/hooks/useBDOTable/types.d.ts.map +1 -1
- package/dist/components/hooks/useBDOTable/useBDOTable.d.ts +2 -2
- package/dist/components/hooks/useBDOTable/useBDOTable.d.ts.map +1 -1
- package/dist/{constants-Cyi942Yr.js → constants-ConHc1oS.js} +5 -5
- package/dist/constants-QX2RX-wu.cjs +1 -0
- package/dist/filter.cjs +1 -1
- package/dist/filter.mjs +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.mjs +243 -226
- package/dist/table.cjs +1 -1
- package/dist/table.mjs +16 -15
- package/dist/table.types.d.ts +1 -1
- package/dist/table.types.d.ts.map +1 -1
- package/dist/types/constants.d.ts +1 -1
- package/dist/workflow/Activity.d.ts +5 -8
- package/dist/workflow/Activity.d.ts.map +1 -1
- package/dist/workflow.cjs +1 -1
- package/dist/workflow.mjs +476 -461
- package/docs/api.md +95 -0
- package/docs/bdo.md +224 -0
- package/docs/gaps.md +360 -0
- package/docs/useActivityForm.md +393 -0
- package/docs/useActivityTable.md +418 -0
- package/docs/useBDOForm.md +498 -0
- package/docs/useBDOTable.md +284 -0
- package/docs/useFilter.md +188 -0
- package/docs/workflow.md +560 -0
- package/package.json +14 -15
- package/sdk/auth/authClient.ts +15 -21
- package/sdk/auth/authConfig.ts +1 -1
- package/sdk/auth/types.ts +1 -1
- package/sdk/bdo/core/Item.ts +10 -1
- package/sdk/bdo/fields/ReferenceField.ts +1 -1
- package/sdk/bdo/fields/SelectField.ts +1 -1
- package/sdk/bdo/fields/UserField.ts +1 -1
- package/sdk/components/hooks/useActivityForm/types.ts +6 -4
- package/sdk/components/hooks/useActivityForm/useActivityForm.ts +73 -10
- package/sdk/components/hooks/useActivityTable/types.ts +5 -4
- package/sdk/components/hooks/useActivityTable/useActivityTable.ts +8 -10
- package/sdk/components/hooks/useBDOForm/createItemProxy.ts +58 -17
- package/sdk/components/hooks/useBDOTable/types.ts +10 -20
- package/sdk/components/hooks/useBDOTable/useBDOTable.ts +8 -12
- package/sdk/table.types.ts +0 -2
- package/sdk/types/constants.ts +1 -1
- package/sdk/workflow/Activity.ts +7 -39
- package/dist/constants-DEmYwKfC.cjs +0 -1
- package/docs/README.md +0 -57
- package/docs/bdo/README.md +0 -161
- package/docs/bdo/api_reference.md +0 -281
- package/docs/examples/bdo/create-product.md +0 -69
- package/docs/examples/bdo/edit-product-dialog.md +0 -95
- package/docs/examples/bdo/filtered-product-table.md +0 -100
- package/docs/examples/bdo/product-listing.md +0 -73
- package/docs/examples/bdo/supplier-dropdown.md +0 -60
- package/docs/examples/fields/complex-fields.md +0 -248
- package/docs/examples/fields/primitive-fields.md +0 -217
- package/docs/examples/workflow/approve-leave-request.md +0 -76
- package/docs/examples/workflow/filtered-activity-table.md +0 -101
- package/docs/examples/workflow/my-pending-requests.md +0 -90
- package/docs/examples/workflow/start-new-workflow.md +0 -47
- package/docs/examples/workflow/submit-leave-request.md +0 -72
- package/docs/examples/workflow/workflow-progress.md +0 -49
- package/docs/fields/README.md +0 -141
- package/docs/fields/api_reference.md +0 -134
- package/docs/useActivityForm/README.md +0 -244
- package/docs/useActivityForm/api_reference.md +0 -279
- package/docs/useActivityTable/README.md +0 -263
- package/docs/useActivityTable/api_reference.md +0 -294
- package/docs/useBDOForm/README.md +0 -175
- package/docs/useBDOForm/api_reference.md +0 -244
- package/docs/useBDOTable/README.md +0 -242
- package/docs/useBDOTable/api_reference.md +0 -253
- package/docs/useFilter/README.md +0 -323
- package/docs/useFilter/api_reference.md +0 -228
- package/docs/workflow/README.md +0 -158
- package/docs/workflow/api_reference.md +0 -161
- /package/docs/{useAuth/README.md → useAuth.md} +0 -0
package/dist/bdo.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var E=Object.defineProperty;var T=(r,e,t)=>e in r?E(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var m=(r,e,t)=>T(r,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./client-D5k4SYuw.cjs"),w=require("./attachment-constants-B5jlqoKI.cjs"),o=require("./FileField-DU4UWo_t.cjs"),U=require("./constants-DEmYwKfC.cjs");class x{constructor(e,t){m(this,"_data");m(this,"_bdo");m(this,"_accessorCache",new Map);return this._bdo=e,this._data={...t},new Proxy(this,{get(a,s,n){return s==="validate"||s==="toJSON"||s==="_bdo"||s==="_data"||s==="_accessorCache"||s==="_getAccessor"||s==="_requireInstanceId"||typeof s=="symbol"?Reflect.get(a,s,n):s==="_id"?a._data._id:a._getAccessor(s)},set(a,s,n){return s==="_bdo"||s==="_data"||s==="_accessorCache"||s==="validate"||s==="toJSON"?!1:typeof s=="symbol"?Reflect.set(a,s,n):(a._data[s]=n,!0)},has(a,s){return s==="validate"||s==="toJSON"?!0:s in a._data||s in a._bdo.getFields()},ownKeys(a){return[...Object.keys(a._bdo.getFields()),"validate","toJSON"]},getOwnPropertyDescriptor(a,s){if(s==="validate"||s==="toJSON")return{configurable:!0,enumerable:!1,value:a[s]};const n=a._bdo.getFields();if(s in n||s in a._data)return{configurable:!0,enumerable:!0,get:()=>a._getAccessor(s)}}})}_requireInstanceId(){return this._data._id||"draft"}_getAccessor(e){if(this._accessorCache.has(e))return this._accessorCache.get(e);const a=this._bdo.getFields()[e],s=(a==null?void 0:a.meta)??{_id:e,Name:e,Type:"String"},n=(a==null?void 0:a.readOnly)??!1,d=()=>{if(a){const _=a.validate(this._data[e]);if(!_.valid)return _}return this._bdo.hasMetadata()?this._bdo.validateFieldExpression(e,this._data[e],this.toJSON()):{valid:!0,errors:[]}},h=_=>{const f=this._data[e];return f??_};let y;if(n?y={label:(a==null?void 0:a.label)??e,required:(a==null?void 0:a.required)??!1,readOnly:!0,defaultValue:a==null?void 0:a.defaultValue,meta:s,get:()=>this._data[e],getOrDefault:h,validate:d}:y={label:(a==null?void 0:a.label)??e,required:(a==null?void 0:a.required)??!1,readOnly:!1,defaultValue:a==null?void 0:a.defaultValue,meta:s,get:()=>this._data[e],getOrDefault:h,set:_=>{this._data[e]=_},validate:d},s.Type==="Image"||s.Type==="File"){const _=this._bdo.getBoId(),f=y;s.Type==="Image"?(f.getDownloadUrl=async l=>{const c=this._requireInstanceId(),g=this._data[e];if(!(g!=null&&g._id))throw new Error(`${e} has no image to download`);return i.api(_).getDownloadUrl(c,e,g._id,l)},n||(f.upload=async l=>{w.validateFileExtension(l.name,"Image");const c=this._requireInstanceId(),g={FileName:l.name,Size:l.size,FileExtension:w.extractFileExtension(l.name)},[u]=await i.api(_).getUploadUrl(c,e,[g]);await fetch(u.UploadUrl.URL,{method:"PUT",headers:{"Content-Type":u.ContentType},body:l});const F={_id:u._id,_name:u._name,FileName:u.FileName,FileExtension:u.FileExtension,Size:u.Size,ContentType:u.ContentType};return this._data[e]=F,F},f.deleteAttachment=async()=>{const l=this._requireInstanceId(),c=this._data[e];if(!(c!=null&&c._id))throw new Error(`${e} has no image to delete`);await i.api(_).deleteAttachment(l,e,c._id),this._data[e]=null})):(f.getDownloadUrl=async(l,c)=>{const g=this._requireInstanceId();return i.api(_).getDownloadUrl(g,e,l,c)},f.getDownloadUrls=async l=>{const c=this._requireInstanceId();return i.api(_).getDownloadUrls(c,e,l)},n||(f.upload=async l=>{for(const b of l)w.validateFileExtension(b.name,"File");const c=this._requireInstanceId(),g=l.map(b=>({FileName:b.name,Size:b.size,FileExtension:w.extractFileExtension(b.name)})),u=await i.api(_).getUploadUrl(c,e,g),F=await Promise.all(l.map(async(b,p)=>(await fetch(u[p].UploadUrl.URL,{method:"PUT",headers:{"Content-Type":u[p].ContentType},body:b}),{_id:u[p]._id,_name:u[p]._name,FileName:u[p].FileName,FileExtension:u[p].FileExtension,Size:u[p].Size,ContentType:u[p].ContentType}))),v=this._data[e]??[];return this._data[e]=[...v,...F],F},f.deleteAttachment=async l=>{const c=this._requireInstanceId();await i.api(_).deleteAttachment(c,e,l);const g=this._data[e]??[];this._data[e]=g.filter(u=>u._id!==l)}))}return this._accessorCache.set(e,y),y}validate(){const e=this._bdo.getFields(),t=[],a=this.toJSON();for(const[s,n]of Object.entries(e)){if(n.readOnly)continue;const d=this._data[s],h=n.validate(d);if(!h.valid){t.push(...h.errors);continue}if(this._bdo.hasMetadata()){const y=this._bdo.validateFieldExpression(s,d,a);y.valid||t.push(...y.errors)}}return{valid:t.length===0,errors:t}}toJSON(){return{...this._data}}}const A={CONCAT:(...r)=>r.map(e=>String(e??"")).join(""),UPPER:r=>String(r??"").toUpperCase(),LOWER:r=>String(r??"").toLowerCase(),TRIM:r=>String(r??"").trim(),LENGTH:r=>String(r??"").length,SUBSTRING:(r,e,t)=>String(r??"").substring(e,t!==void 0?e+t:void 0),REPLACE:(r,e,t)=>String(r??"").replace(e,t),SUM:(...r)=>r.reduce((e,t)=>e+(Number(t)||0),0),AVG:(...r)=>{const e=r.filter(t=>t!=null&&!isNaN(Number(t)));return e.length===0?0:e.reduce((t,a)=>t+Number(a),0)/e.length},MIN:(...r)=>{const e=r.filter(t=>t!=null&&!isNaN(Number(t))).map(t=>Number(t));return e.length===0?0:Math.min(...e)},MAX:(...r)=>{const e=r.filter(t=>t!=null&&!isNaN(Number(t))).map(t=>Number(t));return e.length===0?0:Math.max(...e)},ABS:r=>Math.abs(Number(r)||0),ROUND:r=>Math.round(Number(r)||0),FLOOR:r=>Math.floor(Number(r)||0),CEIL:r=>Math.ceil(Number(r)||0),YEAR:r=>{const e=new Date(r);return isNaN(e.getTime())?0:e.getFullYear()},MONTH:r=>{const e=new Date(r);return isNaN(e.getTime())?0:e.getMonth()+1},DAY:r=>{const e=new Date(r);return isNaN(e.getTime())?0:e.getDate()},DATE_DIFF:(r,e)=>{const t=new Date(r),a=new Date(e);if(isNaN(t.getTime())||isNaN(a.getTime()))return 0;const s=Math.abs(t.getTime()-a.getTime());return Math.ceil(s/(1e3*60*60*24))},ADD_DAYS:(r,e)=>{const t=new Date(r);return isNaN(t.getTime())?new Date(NaN):(t.setDate(t.getDate()+e),t)},ADD_MONTHS:(r,e)=>{const t=new Date(r);return isNaN(t.getTime())?new Date(NaN):(t.setMonth(t.getMonth()+e),t)},IF:(r,e,t)=>r?e:t,UUID:()=>typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>{const e=Math.random()*16|0;return(r==="x"?e:e&3|8).toString(16)})};function S(){const r=new Date;return{NOW:r,TODAY:new Date(r.getFullYear(),r.getMonth(),r.getDate()),CURRENT_USER:{Id:"",Email:"",FirstName:"",LastName:""}}}function N(r,e){var t;switch(r.Type){case"Literal":return r.Value;case"Identifier":return e.formValues[r.Name];case"SystemIdentifier":return O(r,e);case"BinaryExpression":return R(r,e);case"LogicalExpression":return D(r,e);case"CallExpression":return C(r,e);case"MemberExpression":return M(r,e);case"AssignmentExpression":return((t=r.Arguments)==null?void 0:t.length)===1?N(r.Arguments[0],e):void 0;default:throw new Error(`Unsupported expression type: ${r.Type}`)}}function O(r,e){const t=r.Name,a=e.systemValues[t];return r.Property?a&&typeof a=="object"?a[r.Property.Name]:void 0:a}function R(r,e){if(!r.Arguments||r.Arguments.length<2)throw new Error("BinaryExpression requires 2 arguments");const[t,a]=r.Arguments,s=N(t,e),n=N(a,e);switch(r.Operator){case"==":return s==n;case"!=":return s!=n;case"<":return Number(s)<Number(n);case"<=":return Number(s)<=Number(n);case">":return Number(s)>Number(n);case">=":return Number(s)>=Number(n);case"+":return Number(s)+Number(n);case"-":return Number(s)-Number(n);case"*":return Number(s)*Number(n);case"/":return Number(n)!==0?Number(s)/Number(n):0;case"%":return Number(s)%Number(n);default:throw new Error(`Unsupported binary operator: ${r.Operator}`)}}function D(r,e){if(!r.Arguments||r.Arguments.length===0)throw new Error("LogicalExpression requires at least 1 argument");const t=r.Arguments;switch(r.Operator){case"AND":return t.every(a=>!!N(a,e));case"OR":return t.some(a=>!!N(a,e));case"!":return!N(t[0],e);default:throw new Error(`Unsupported logical operator: ${r.Operator}`)}}function C(r,e){if(!r.Callee)throw new Error("CallExpression requires a Callee");const t=A[r.Callee];if(!t)throw new Error(`Unknown function: ${r.Callee}`);const a=(r.Arguments??[]).map(s=>N(s,e));return t(...a)}function M(r,e){var s,n;if(!((s=r.Arguments)!=null&&s.length))return;const t=N(r.Arguments[0],e),a=(n=r.Arguments[0].Property)==null?void 0:n.Name;return a&&t&&typeof t=="object"?t[a]:t}class B{constructor(){m(this,"fieldRules",new Map);m(this,"metadata",null)}loadMetadata(e){var t,a;this.metadata=e,this.fieldRules.clear();for(const[s,n]of Object.entries(e.Fields)){const d=[];if(n.Validation&&Array.isArray(n.Validation)){for(const h of n.Validation)if(typeof h=="object"&&h.ExpressionTree)d.push(h);else if(typeof h=="string"){const y=(a=(t=e.Rules)==null?void 0:t.Validation)==null?void 0:a[h];y&&d.push(y)}}d.length>0&&this.fieldRules.set(s,d)}}hasMetadata(){return this.metadata!==null}getFieldRules(e){return this.fieldRules.get(e)??[]}validateField(e,t,a){const s=this.fieldRules.get(e);if(!s||s.length===0)return{valid:!0,errors:[]};const n={formValues:{...a,[e]:t},systemValues:S()};for(const d of s)try{if(!N(d.ExpressionTree,n))return{valid:!1,errors:[d.Message||`Validation failed: ${d.Name||d.Id}`]}}catch(h){console.warn(`Expression evaluation failed for rule ${d.Id}:`,h)}return{valid:!0,errors:[]}}validateAll(e){const t=[];for(const a of this.fieldRules.keys()){const s=this.validateField(a,e[a],e);s.valid||t.push(...s.errors)}return{valid:t.length===0,errors:t}}}class I{constructor(){m(this,"_id",new o.StringField({_id:"_id",Name:"ID",Type:"String",ReadOnly:!0}));m(this,"_created_at",new o.DateTimeField({_id:"_created_at",Name:"Created At",Type:"DateTime",ReadOnly:!0}));m(this,"_modified_at",new o.DateTimeField({_id:"_modified_at",Name:"Modified At",Type:"DateTime",ReadOnly:!0}));m(this,"_created_by",new o.UserField({_id:"_created_by",Name:"Created By",Type:"User",ReadOnly:!0}));m(this,"_modified_by",new o.UserField({_id:"_modified_by",Name:"Modified By",Type:"User",ReadOnly:!0}));m(this,"_version",new o.StringField({_id:"_version",Name:"Version",Type:"String",ReadOnly:!0}));m(this,"_m_version",new o.StringField({_id:"_m_version",Name:"Metadata Version",Type:"String",ReadOnly:!0}));m(this,"_fieldsBound",!1);m(this,"_fieldsCache",null);m(this,"_expressionEngine",new B)}getBoId(){return this.meta._id}getFields(){if(this._fieldsCache)return this._fieldsCache;const e={};for(const t of Object.keys(this)){const a=this[t];a instanceof o.BaseField&&(e[t]=a)}if(!this._fieldsBound){for(const t of Object.values(e))t._parentBoId=this.meta._id;this._fieldsBound=!0}return this._fieldsCache=e,e}loadMetadata(e){this._expressionEngine.loadMetadata(e)}hasMetadata(){return this._expressionEngine.hasMetadata()}validateFieldExpression(e,t,a){return this._expressionEngine.hasMetadata()?this._expressionEngine.validateField(e,t,a):{valid:!0,errors:[]}}async get(e){const t=await i.api(this.meta._id).get(e);return new x(this,t)}async list(e){return(await i.api(this.meta._id).list(e)).Data.map(a=>new x(this,a))}async count(e){return(await i.api(this.meta._id).count(e)).Count}async create(e){const t=await i.api(this.meta._id).create(e);return new x(this,{...e,_id:t._id})}async update(e,t){return i.api(this.meta._id).update(e,t)}async delete(e){return i.api(this.meta._id).delete(e)}async draft(e){return i.api(this.meta._id).draft(e)}async draftInteraction(e){return i.api(this.meta._id).draftInteraction(e)}createItem(e){return new x(this,e??{})}async draftUpdate(e,t){return i.api(this.meta._id).draftUpdate(e,t)}async draftPatch(e,t){return i.api(this.meta._id).draftPatch(e,t)}async metric(e){return i.api(this.meta._id).metric(e)}async pivot(e){return i.api(this.meta._id).pivot(e)}async getUploadUrl(e,t,a){return i.api(this.meta._id).getUploadUrl(e,t,a)}async getDownloadUrl(e,t,a,s){return i.api(this.meta._id).getDownloadUrl(e,t,a,s)}async getDownloadUrls(e,t,a){return i.api(this.meta._id).getDownloadUrls(e,t,a)}async deleteAttachment(e,t,a){return i.api(this.meta._id).deleteAttachment(e,t,a)}}class q extends o.BaseField{constructor(e){super(e)}get elementType(){return this._meta.Property}validate(e){return e!=null&&!Array.isArray(e)?{valid:!1,errors:[`${this.label} must be an array`]}:{valid:!0,errors:[]}}}class V extends o.BaseField{constructor(e){super(e)}get properties(){return this._meta.Property}validate(e){return e==null?{valid:!0,errors:[]}:typeof e!="object"||Array.isArray(e)?{valid:!1,errors:[`${this.label} must be a valid object`]}:{valid:!0,errors:[]}}}class j extends o.BaseField{constructor(e){super(e)}validate(e){return e==null?{valid:!0,errors:[]}:typeof e!="object"||Array.isArray(e)?{valid:!1,errors:[`${this.label} must be a valid image object`]}:!e._id||!e.FileName?{valid:!1,errors:[`${this.label} must have _id and FileName`]}:{valid:!0,errors:[]}}}exports.BaseField=o.BaseField;exports.BooleanField=o.BooleanField;exports.DateField=o.DateField;exports.DateTimeField=o.DateTimeField;exports.FileField=o.FileField;exports.NumberField=o.NumberField;exports.ReferenceField=o.ReferenceField;exports.SelectField=o.SelectField;exports.StringField=o.StringField;exports.TextAreaField=o.TextField;exports.TextField=o.TextField;exports.UserField=o.UserField;exports.SystemField=U.SystemField;exports.ArrayField=q;exports.BaseBdo=I;exports.ImageField=j;exports.ObjectField=V;
|
|
1
|
+
"use strict";var E=Object.defineProperty;var T=(r,e,t)=>e in r?E(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var m=(r,e,t)=>T(r,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./client-D5k4SYuw.cjs"),w=require("./attachment-constants-B5jlqoKI.cjs"),o=require("./FileField-eDeuzln8.cjs"),U=require("./constants-QX2RX-wu.cjs");class x{constructor(e,t){m(this,"_data");m(this,"_bdo");m(this,"_accessorCache",new Map);return this._bdo=e,this._data={...t},new Proxy(this,{get(a,s,n){return s==="validate"||s==="toJSON"||s==="_bdo"||s==="_data"||s==="_accessorCache"||s==="_getAccessor"||s==="_requireInstanceId"||typeof s=="symbol"?Reflect.get(a,s,n):s==="_id"?a._data._id:a._getAccessor(s)},set(a,s,n){return s==="_bdo"||s==="_data"||s==="_accessorCache"||s==="validate"||s==="toJSON"?!1:typeof s=="symbol"?Reflect.set(a,s,n):(a._data[s]=n,!0)},has(a,s){return s==="validate"||s==="toJSON"?!0:s in a._data||s in a._bdo.getFields()},ownKeys(a){return[...Object.keys(a._bdo.getFields()),"validate","toJSON"]},getOwnPropertyDescriptor(a,s){if(s==="validate"||s==="toJSON")return{configurable:!0,enumerable:!1,value:a[s]};const n=a._bdo.getFields();if(s in n||s in a._data)return{configurable:!0,enumerable:!0,get:()=>a._getAccessor(s)}}})}_requireInstanceId(){const e=this._data._id;if(!e)throw new Error("Cannot perform attachment operation: item has no _id. Save the item first.");return e}_getAccessor(e){if(this._accessorCache.has(e))return this._accessorCache.get(e);const a=this._bdo.getFields()[e],s=(a==null?void 0:a.meta)??{_id:e,Name:e,Type:"String"},n=(a==null?void 0:a.readOnly)??!1,d=()=>{if(a){const _=a.validate(this._data[e]);if(!_.valid)return _}return this._bdo.hasMetadata()?this._bdo.validateFieldExpression(e,this._data[e],this.toJSON()):{valid:!0,errors:[]}},h=_=>{const f=this._data[e];return f??_};let y;if(n?y={label:(a==null?void 0:a.label)??e,required:(a==null?void 0:a.required)??!1,readOnly:!0,defaultValue:a==null?void 0:a.defaultValue,meta:s,get:()=>this._data[e],getOrDefault:h,validate:d}:y={label:(a==null?void 0:a.label)??e,required:(a==null?void 0:a.required)??!1,readOnly:!1,defaultValue:a==null?void 0:a.defaultValue,meta:s,get:()=>this._data[e],getOrDefault:h,set:_=>{this._data[e]=_},validate:d},s.Type==="Image"||s.Type==="File"){const _=this._bdo.getBoId(),f=y;s.Type==="Image"?(f.getDownloadUrl=async l=>{const c=this._requireInstanceId(),g=this._data[e];if(!(g!=null&&g._id))throw new Error(`${e} has no image to download`);return i.api(_).getDownloadUrl(c,e,g._id,l)},n||(f.upload=async l=>{w.validateFileExtension(l.name,"Image");const c=this._requireInstanceId(),g={FileName:l.name,Size:l.size,FileExtension:w.extractFileExtension(l.name)},[u]=await i.api(_).getUploadUrl(c,e,[g]);await fetch(u.UploadUrl.URL,{method:"PUT",headers:{"Content-Type":u.ContentType},body:l});const F={_id:u._id,_name:u._name,FileName:u.FileName,FileExtension:u.FileExtension,Size:u.Size,ContentType:u.ContentType};return this._data[e]=F,F},f.deleteAttachment=async()=>{const l=this._requireInstanceId(),c=this._data[e];if(!(c!=null&&c._id))throw new Error(`${e} has no image to delete`);await i.api(_).deleteAttachment(l,e,c._id),this._data[e]=null})):(f.getDownloadUrl=async(l,c)=>{const g=this._requireInstanceId();return i.api(_).getDownloadUrl(g,e,l,c)},f.getDownloadUrls=async l=>{const c=this._requireInstanceId();return i.api(_).getDownloadUrls(c,e,l)},n||(f.upload=async l=>{for(const b of l)w.validateFileExtension(b.name,"File");const c=this._requireInstanceId(),g=l.map(b=>({FileName:b.name,Size:b.size,FileExtension:w.extractFileExtension(b.name)})),u=await i.api(_).getUploadUrl(c,e,g),F=await Promise.all(l.map(async(b,N)=>(await fetch(u[N].UploadUrl.URL,{method:"PUT",headers:{"Content-Type":u[N].ContentType},body:b}),{_id:u[N]._id,_name:u[N]._name,FileName:u[N].FileName,FileExtension:u[N].FileExtension,Size:u[N].Size,ContentType:u[N].ContentType}))),v=this._data[e]??[];return this._data[e]=[...v,...F],F},f.deleteAttachment=async l=>{const c=this._requireInstanceId();await i.api(_).deleteAttachment(c,e,l);const g=this._data[e]??[];this._data[e]=g.filter(u=>u._id!==l)}))}return this._accessorCache.set(e,y),y}validate(){const e=this._bdo.getFields(),t=[],a=this.toJSON();for(const[s,n]of Object.entries(e)){if(n.readOnly)continue;const d=this._data[s],h=n.validate(d);if(!h.valid){t.push(...h.errors);continue}if(this._bdo.hasMetadata()){const y=this._bdo.validateFieldExpression(s,d,a);y.valid||t.push(...y.errors)}}return{valid:t.length===0,errors:t}}toJSON(){return{...this._data}}}const A={CONCAT:(...r)=>r.map(e=>String(e??"")).join(""),UPPER:r=>String(r??"").toUpperCase(),LOWER:r=>String(r??"").toLowerCase(),TRIM:r=>String(r??"").trim(),LENGTH:r=>String(r??"").length,SUBSTRING:(r,e,t)=>String(r??"").substring(e,t!==void 0?e+t:void 0),REPLACE:(r,e,t)=>String(r??"").replace(e,t),SUM:(...r)=>r.reduce((e,t)=>e+(Number(t)||0),0),AVG:(...r)=>{const e=r.filter(t=>t!=null&&!isNaN(Number(t)));return e.length===0?0:e.reduce((t,a)=>t+Number(a),0)/e.length},MIN:(...r)=>{const e=r.filter(t=>t!=null&&!isNaN(Number(t))).map(t=>Number(t));return e.length===0?0:Math.min(...e)},MAX:(...r)=>{const e=r.filter(t=>t!=null&&!isNaN(Number(t))).map(t=>Number(t));return e.length===0?0:Math.max(...e)},ABS:r=>Math.abs(Number(r)||0),ROUND:r=>Math.round(Number(r)||0),FLOOR:r=>Math.floor(Number(r)||0),CEIL:r=>Math.ceil(Number(r)||0),YEAR:r=>{const e=new Date(r);return isNaN(e.getTime())?0:e.getFullYear()},MONTH:r=>{const e=new Date(r);return isNaN(e.getTime())?0:e.getMonth()+1},DAY:r=>{const e=new Date(r);return isNaN(e.getTime())?0:e.getDate()},DATE_DIFF:(r,e)=>{const t=new Date(r),a=new Date(e);if(isNaN(t.getTime())||isNaN(a.getTime()))return 0;const s=Math.abs(t.getTime()-a.getTime());return Math.ceil(s/(1e3*60*60*24))},ADD_DAYS:(r,e)=>{const t=new Date(r);return isNaN(t.getTime())?new Date(NaN):(t.setDate(t.getDate()+e),t)},ADD_MONTHS:(r,e)=>{const t=new Date(r);return isNaN(t.getTime())?new Date(NaN):(t.setMonth(t.getMonth()+e),t)},IF:(r,e,t)=>r?e:t,UUID:()=>typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>{const e=Math.random()*16|0;return(r==="x"?e:e&3|8).toString(16)})};function S(){const r=new Date;return{NOW:r,TODAY:new Date(r.getFullYear(),r.getMonth(),r.getDate()),CURRENT_USER:{Id:"",Email:"",FirstName:"",LastName:""}}}function p(r,e){var t;switch(r.Type){case"Literal":return r.Value;case"Identifier":return e.formValues[r.Name];case"SystemIdentifier":return O(r,e);case"BinaryExpression":return R(r,e);case"LogicalExpression":return C(r,e);case"CallExpression":return D(r,e);case"MemberExpression":return M(r,e);case"AssignmentExpression":return((t=r.Arguments)==null?void 0:t.length)===1?p(r.Arguments[0],e):void 0;default:throw new Error(`Unsupported expression type: ${r.Type}`)}}function O(r,e){const t=r.Name,a=e.systemValues[t];return r.Property?a&&typeof a=="object"?a[r.Property.Name]:void 0:a}function R(r,e){if(!r.Arguments||r.Arguments.length<2)throw new Error("BinaryExpression requires 2 arguments");const[t,a]=r.Arguments,s=p(t,e),n=p(a,e);switch(r.Operator){case"==":return s==n;case"!=":return s!=n;case"<":return Number(s)<Number(n);case"<=":return Number(s)<=Number(n);case">":return Number(s)>Number(n);case">=":return Number(s)>=Number(n);case"+":return Number(s)+Number(n);case"-":return Number(s)-Number(n);case"*":return Number(s)*Number(n);case"/":return Number(n)!==0?Number(s)/Number(n):0;case"%":return Number(s)%Number(n);default:throw new Error(`Unsupported binary operator: ${r.Operator}`)}}function C(r,e){if(!r.Arguments||r.Arguments.length===0)throw new Error("LogicalExpression requires at least 1 argument");const t=r.Arguments;switch(r.Operator){case"AND":return t.every(a=>!!p(a,e));case"OR":return t.some(a=>!!p(a,e));case"!":return!p(t[0],e);default:throw new Error(`Unsupported logical operator: ${r.Operator}`)}}function D(r,e){if(!r.Callee)throw new Error("CallExpression requires a Callee");const t=A[r.Callee];if(!t)throw new Error(`Unknown function: ${r.Callee}`);const a=(r.Arguments??[]).map(s=>p(s,e));return t(...a)}function M(r,e){var s,n;if(!((s=r.Arguments)!=null&&s.length))return;const t=p(r.Arguments[0],e),a=(n=r.Arguments[0].Property)==null?void 0:n.Name;return a&&t&&typeof t=="object"?t[a]:t}class B{constructor(){m(this,"fieldRules",new Map);m(this,"metadata",null)}loadMetadata(e){var t,a;this.metadata=e,this.fieldRules.clear();for(const[s,n]of Object.entries(e.Fields)){const d=[];if(n.Validation&&Array.isArray(n.Validation)){for(const h of n.Validation)if(typeof h=="object"&&h.ExpressionTree)d.push(h);else if(typeof h=="string"){const y=(a=(t=e.Rules)==null?void 0:t.Validation)==null?void 0:a[h];y&&d.push(y)}}d.length>0&&this.fieldRules.set(s,d)}}hasMetadata(){return this.metadata!==null}getFieldRules(e){return this.fieldRules.get(e)??[]}validateField(e,t,a){const s=this.fieldRules.get(e);if(!s||s.length===0)return{valid:!0,errors:[]};const n={formValues:{...a,[e]:t},systemValues:S()};for(const d of s)try{if(!p(d.ExpressionTree,n))return{valid:!1,errors:[d.Message||`Validation failed: ${d.Name||d.Id}`]}}catch(h){console.warn(`Expression evaluation failed for rule ${d.Id}:`,h)}return{valid:!0,errors:[]}}validateAll(e){const t=[];for(const a of this.fieldRules.keys()){const s=this.validateField(a,e[a],e);s.valid||t.push(...s.errors)}return{valid:t.length===0,errors:t}}}class I{constructor(){m(this,"_id",new o.StringField({_id:"_id",Name:"ID",Type:"String",ReadOnly:!0}));m(this,"_created_at",new o.DateTimeField({_id:"_created_at",Name:"Created At",Type:"DateTime",ReadOnly:!0}));m(this,"_modified_at",new o.DateTimeField({_id:"_modified_at",Name:"Modified At",Type:"DateTime",ReadOnly:!0}));m(this,"_created_by",new o.UserField({_id:"_created_by",Name:"Created By",Type:"User",ReadOnly:!0}));m(this,"_modified_by",new o.UserField({_id:"_modified_by",Name:"Modified By",Type:"User",ReadOnly:!0}));m(this,"_version",new o.StringField({_id:"_version",Name:"Version",Type:"String",ReadOnly:!0}));m(this,"_m_version",new o.StringField({_id:"_m_version",Name:"Metadata Version",Type:"String",ReadOnly:!0}));m(this,"_fieldsBound",!1);m(this,"_fieldsCache",null);m(this,"_expressionEngine",new B)}getBoId(){return this.meta._id}getFields(){if(this._fieldsCache)return this._fieldsCache;const e={};for(const t of Object.keys(this)){const a=this[t];a instanceof o.BaseField&&(e[t]=a)}if(!this._fieldsBound){for(const t of Object.values(e))t._parentBoId=this.meta._id;this._fieldsBound=!0}return this._fieldsCache=e,e}loadMetadata(e){this._expressionEngine.loadMetadata(e)}hasMetadata(){return this._expressionEngine.hasMetadata()}validateFieldExpression(e,t,a){return this._expressionEngine.hasMetadata()?this._expressionEngine.validateField(e,t,a):{valid:!0,errors:[]}}async get(e){const t=await i.api(this.meta._id).get(e);return new x(this,t)}async list(e){return(await i.api(this.meta._id).list(e)).Data.map(a=>new x(this,a))}async count(e){return(await i.api(this.meta._id).count(e)).Count}async create(e){const t=await i.api(this.meta._id).create(e);return new x(this,{...e,_id:t._id})}async update(e,t){return i.api(this.meta._id).update(e,t)}async delete(e){return i.api(this.meta._id).delete(e)}async draft(e){return i.api(this.meta._id).draft(e)}async draftInteraction(e){return i.api(this.meta._id).draftInteraction(e)}createItem(e){return new x(this,e??{})}async draftUpdate(e,t){return i.api(this.meta._id).draftUpdate(e,t)}async draftPatch(e,t){return i.api(this.meta._id).draftPatch(e,t)}async metric(e){return i.api(this.meta._id).metric(e)}async pivot(e){return i.api(this.meta._id).pivot(e)}async getUploadUrl(e,t,a){return i.api(this.meta._id).getUploadUrl(e,t,a)}async getDownloadUrl(e,t,a,s){return i.api(this.meta._id).getDownloadUrl(e,t,a,s)}async getDownloadUrls(e,t,a){return i.api(this.meta._id).getDownloadUrls(e,t,a)}async deleteAttachment(e,t,a){return i.api(this.meta._id).deleteAttachment(e,t,a)}}class q extends o.BaseField{constructor(e){super(e)}get elementType(){return this._meta.Property}validate(e){return e!=null&&!Array.isArray(e)?{valid:!1,errors:[`${this.label} must be an array`]}:{valid:!0,errors:[]}}}class V extends o.BaseField{constructor(e){super(e)}get properties(){return this._meta.Property}validate(e){return e==null?{valid:!0,errors:[]}:typeof e!="object"||Array.isArray(e)?{valid:!1,errors:[`${this.label} must be a valid object`]}:{valid:!0,errors:[]}}}class j extends o.BaseField{constructor(e){super(e)}validate(e){return e==null?{valid:!0,errors:[]}:typeof e!="object"||Array.isArray(e)?{valid:!1,errors:[`${this.label} must be a valid image object`]}:!e._id||!e.FileName?{valid:!1,errors:[`${this.label} must have _id and FileName`]}:{valid:!0,errors:[]}}}exports.BaseField=o.BaseField;exports.BooleanField=o.BooleanField;exports.DateField=o.DateField;exports.DateTimeField=o.DateTimeField;exports.FileField=o.FileField;exports.NumberField=o.NumberField;exports.ReferenceField=o.ReferenceField;exports.SelectField=o.SelectField;exports.StringField=o.StringField;exports.TextAreaField=o.TextField;exports.TextField=o.TextField;exports.UserField=o.UserField;exports.SystemField=U.SystemField;exports.ArrayField=q;exports.BaseBdo=I;exports.ImageField=j;exports.ObjectField=V;
|
package/dist/bdo.mjs
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
var O = Object.defineProperty;
|
|
2
2
|
var S = (r, e, t) => e in r ? O(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t;
|
|
3
|
-
var
|
|
3
|
+
var d = (r, e, t) => S(r, typeof e != "symbol" ? e + "" : e, t);
|
|
4
4
|
import { a as i } from "./client-_ayziI1d.js";
|
|
5
5
|
import { v, e as E } from "./attachment-constants-C2UHWxmp.js";
|
|
6
|
-
import { S as F, D as T, U, B as x } from "./FileField-
|
|
7
|
-
import { a as K, b as W, F as X, N as Q, R as Z, c as ee, T as te, T as re } from "./FileField-
|
|
8
|
-
import { d as se } from "./constants-
|
|
6
|
+
import { S as F, D as T, U, B as x } from "./FileField-BWrSHNRq.js";
|
|
7
|
+
import { a as K, b as W, F as X, N as Q, R as Z, c as ee, T as te, T as re } from "./FileField-BWrSHNRq.js";
|
|
8
|
+
import { d as se } from "./constants-ConHc1oS.js";
|
|
9
9
|
class w {
|
|
10
10
|
constructor(e, t) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
d(this, "_data");
|
|
12
|
+
d(this, "_bdo");
|
|
13
|
+
d(this, "_accessorCache", /* @__PURE__ */ new Map());
|
|
14
14
|
return this._bdo = e, this._data = { ...t }, new Proxy(this, {
|
|
15
15
|
get(a, s, n) {
|
|
16
16
|
return s === "validate" || s === "toJSON" || s === "_bdo" || s === "_data" || s === "_accessorCache" || s === "_getAccessor" || s === "_requireInstanceId" || typeof s == "symbol" ? Reflect.get(a, s, n) : s === "_id" ? a._data._id : a._getAccessor(s);
|
|
@@ -41,8 +41,17 @@ class w {
|
|
|
41
41
|
}
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* Require instanceId or throw.
|
|
46
|
+
* TODO: Support create flow via draftInteraction to get temp _id
|
|
47
|
+
*/
|
|
44
48
|
_requireInstanceId() {
|
|
45
|
-
|
|
49
|
+
const e = this._data._id;
|
|
50
|
+
if (!e)
|
|
51
|
+
throw new Error(
|
|
52
|
+
"Cannot perform attachment operation: item has no _id. Save the item first."
|
|
53
|
+
);
|
|
54
|
+
return e;
|
|
46
55
|
}
|
|
47
56
|
/**
|
|
48
57
|
* Get or create a field accessor for the given field.
|
|
@@ -67,8 +76,8 @@ class w {
|
|
|
67
76
|
this.toJSON()
|
|
68
77
|
) : { valid: !0, errors: [] };
|
|
69
78
|
}, m = (h) => {
|
|
70
|
-
const
|
|
71
|
-
return
|
|
79
|
+
const f = this._data[e];
|
|
80
|
+
return f ?? h;
|
|
72
81
|
};
|
|
73
82
|
let y;
|
|
74
83
|
if (n ? y = {
|
|
@@ -93,25 +102,25 @@ class w {
|
|
|
93
102
|
},
|
|
94
103
|
validate: l
|
|
95
104
|
}, s.Type === "Image" || s.Type === "File") {
|
|
96
|
-
const h = this._bdo.getBoId(),
|
|
97
|
-
s.Type === "Image" ? (
|
|
98
|
-
const
|
|
105
|
+
const h = this._bdo.getBoId(), f = y;
|
|
106
|
+
s.Type === "Image" ? (f.getDownloadUrl = async (o) => {
|
|
107
|
+
const c = this._requireInstanceId(), _ = this._data[e];
|
|
99
108
|
if (!(_ != null && _._id))
|
|
100
109
|
throw new Error(`${e} has no image to download`);
|
|
101
110
|
return i(h).getDownloadUrl(
|
|
102
|
-
|
|
111
|
+
c,
|
|
103
112
|
e,
|
|
104
113
|
_._id,
|
|
105
114
|
o
|
|
106
115
|
);
|
|
107
|
-
}, n || (
|
|
116
|
+
}, n || (f.upload = async (o) => {
|
|
108
117
|
v(o.name, "Image");
|
|
109
|
-
const
|
|
118
|
+
const c = this._requireInstanceId(), _ = {
|
|
110
119
|
FileName: o.name,
|
|
111
120
|
Size: o.size,
|
|
112
121
|
FileExtension: E(o.name)
|
|
113
122
|
}, [u] = await i(h).getUploadUrl(
|
|
114
|
-
|
|
123
|
+
c,
|
|
115
124
|
e,
|
|
116
125
|
[_]
|
|
117
126
|
);
|
|
@@ -129,31 +138,31 @@ class w {
|
|
|
129
138
|
ContentType: u.ContentType
|
|
130
139
|
};
|
|
131
140
|
return this._data[e] = p, p;
|
|
132
|
-
},
|
|
133
|
-
const o = this._requireInstanceId(),
|
|
134
|
-
if (!(
|
|
141
|
+
}, f.deleteAttachment = async () => {
|
|
142
|
+
const o = this._requireInstanceId(), c = this._data[e];
|
|
143
|
+
if (!(c != null && c._id))
|
|
135
144
|
throw new Error(`${e} has no image to delete`);
|
|
136
|
-
await i(h).deleteAttachment(o, e,
|
|
137
|
-
})) : (
|
|
145
|
+
await i(h).deleteAttachment(o, e, c._id), this._data[e] = null;
|
|
146
|
+
})) : (f.getDownloadUrl = async (o, c) => {
|
|
138
147
|
const _ = this._requireInstanceId();
|
|
139
148
|
return i(h).getDownloadUrl(
|
|
140
149
|
_,
|
|
141
150
|
e,
|
|
142
151
|
o,
|
|
143
|
-
|
|
152
|
+
c
|
|
144
153
|
);
|
|
145
|
-
},
|
|
146
|
-
const
|
|
147
|
-
return i(h).getDownloadUrls(
|
|
148
|
-
}, n || (
|
|
154
|
+
}, f.getDownloadUrls = async (o) => {
|
|
155
|
+
const c = this._requireInstanceId();
|
|
156
|
+
return i(h).getDownloadUrls(c, e, o);
|
|
157
|
+
}, n || (f.upload = async (o) => {
|
|
149
158
|
for (const b of o)
|
|
150
159
|
v(b.name, "File");
|
|
151
|
-
const
|
|
160
|
+
const c = this._requireInstanceId(), _ = o.map((b) => ({
|
|
152
161
|
FileName: b.name,
|
|
153
162
|
Size: b.size,
|
|
154
163
|
FileExtension: E(b.name)
|
|
155
164
|
})), u = await i(h).getUploadUrl(
|
|
156
|
-
|
|
165
|
+
c,
|
|
157
166
|
e,
|
|
158
167
|
_
|
|
159
168
|
), p = await Promise.all(
|
|
@@ -174,10 +183,10 @@ class w {
|
|
|
174
183
|
...A,
|
|
175
184
|
...p
|
|
176
185
|
], p;
|
|
177
|
-
},
|
|
178
|
-
const
|
|
186
|
+
}, f.deleteAttachment = async (o) => {
|
|
187
|
+
const c = this._requireInstanceId();
|
|
179
188
|
await i(h).deleteAttachment(
|
|
180
|
-
|
|
189
|
+
c,
|
|
181
190
|
e,
|
|
182
191
|
o
|
|
183
192
|
);
|
|
@@ -407,7 +416,7 @@ function C() {
|
|
|
407
416
|
}
|
|
408
417
|
};
|
|
409
418
|
}
|
|
410
|
-
function
|
|
419
|
+
function g(r, e) {
|
|
411
420
|
var t;
|
|
412
421
|
switch (r.Type) {
|
|
413
422
|
case "Literal":
|
|
@@ -425,7 +434,7 @@ function f(r, e) {
|
|
|
425
434
|
case "MemberExpression":
|
|
426
435
|
return V(r, e);
|
|
427
436
|
case "AssignmentExpression":
|
|
428
|
-
return ((t = r.Arguments) == null ? void 0 : t.length) === 1 ?
|
|
437
|
+
return ((t = r.Arguments) == null ? void 0 : t.length) === 1 ? g(r.Arguments[0], e) : void 0;
|
|
429
438
|
default:
|
|
430
439
|
throw new Error(`Unsupported expression type: ${r.Type}`);
|
|
431
440
|
}
|
|
@@ -437,7 +446,7 @@ function M(r, e) {
|
|
|
437
446
|
function D(r, e) {
|
|
438
447
|
if (!r.Arguments || r.Arguments.length < 2)
|
|
439
448
|
throw new Error("BinaryExpression requires 2 arguments");
|
|
440
|
-
const [t, a] = r.Arguments, s =
|
|
449
|
+
const [t, a] = r.Arguments, s = g(t, e), n = g(a, e);
|
|
441
450
|
switch (r.Operator) {
|
|
442
451
|
case "==":
|
|
443
452
|
return s == n;
|
|
@@ -471,11 +480,11 @@ function I(r, e) {
|
|
|
471
480
|
const t = r.Arguments;
|
|
472
481
|
switch (r.Operator) {
|
|
473
482
|
case "AND":
|
|
474
|
-
return t.every((a) => !!
|
|
483
|
+
return t.every((a) => !!g(a, e));
|
|
475
484
|
case "OR":
|
|
476
|
-
return t.some((a) => !!
|
|
485
|
+
return t.some((a) => !!g(a, e));
|
|
477
486
|
case "!":
|
|
478
|
-
return !
|
|
487
|
+
return !g(t[0], e);
|
|
479
488
|
default:
|
|
480
489
|
throw new Error(`Unsupported logical operator: ${r.Operator}`);
|
|
481
490
|
}
|
|
@@ -486,14 +495,14 @@ function B(r, e) {
|
|
|
486
495
|
const t = R[r.Callee];
|
|
487
496
|
if (!t)
|
|
488
497
|
throw new Error(`Unknown function: ${r.Callee}`);
|
|
489
|
-
const a = (r.Arguments ?? []).map((s) =>
|
|
498
|
+
const a = (r.Arguments ?? []).map((s) => g(s, e));
|
|
490
499
|
return t(...a);
|
|
491
500
|
}
|
|
492
501
|
function V(r, e) {
|
|
493
502
|
var s, n;
|
|
494
503
|
if (!((s = r.Arguments) != null && s.length))
|
|
495
504
|
return;
|
|
496
|
-
const t =
|
|
505
|
+
const t = g(r.Arguments[0], e), a = (n = r.Arguments[0].Property) == null ? void 0 : n.Name;
|
|
497
506
|
return a && t && typeof t == "object" ? t[a] : t;
|
|
498
507
|
}
|
|
499
508
|
class q {
|
|
@@ -501,11 +510,11 @@ class q {
|
|
|
501
510
|
/**
|
|
502
511
|
* Map of field ID to its validation rules
|
|
503
512
|
*/
|
|
504
|
-
|
|
513
|
+
d(this, "fieldRules", /* @__PURE__ */ new Map());
|
|
505
514
|
/**
|
|
506
515
|
* The loaded BDO metadata
|
|
507
516
|
*/
|
|
508
|
-
|
|
517
|
+
d(this, "metadata", null);
|
|
509
518
|
}
|
|
510
519
|
/**
|
|
511
520
|
* Load metadata and extract field validation rules
|
|
@@ -573,7 +582,7 @@ class q {
|
|
|
573
582
|
};
|
|
574
583
|
for (const l of s)
|
|
575
584
|
try {
|
|
576
|
-
if (!
|
|
585
|
+
if (!g(l.ExpressionTree, n))
|
|
577
586
|
return {
|
|
578
587
|
valid: !1,
|
|
579
588
|
errors: [l.Message || `Validation failed: ${l.Name || l.Id}`]
|
|
@@ -612,28 +621,28 @@ class z {
|
|
|
612
621
|
// ============================================================
|
|
613
622
|
// SYSTEM FIELDS (inherited by all BDOs)
|
|
614
623
|
// ============================================================
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
624
|
+
d(this, "_id", new F({ _id: "_id", Name: "ID", Type: "String", ReadOnly: !0 }));
|
|
625
|
+
d(this, "_created_at", new T({ _id: "_created_at", Name: "Created At", Type: "DateTime", ReadOnly: !0 }));
|
|
626
|
+
d(this, "_modified_at", new T({ _id: "_modified_at", Name: "Modified At", Type: "DateTime", ReadOnly: !0 }));
|
|
627
|
+
d(this, "_created_by", new U({ _id: "_created_by", Name: "Created By", Type: "User", ReadOnly: !0 }));
|
|
628
|
+
d(this, "_modified_by", new U({ _id: "_modified_by", Name: "Modified By", Type: "User", ReadOnly: !0 }));
|
|
629
|
+
d(this, "_version", new F({ _id: "_version", Name: "Version", Type: "String", ReadOnly: !0 }));
|
|
630
|
+
d(this, "_m_version", new F({ _id: "_m_version", Name: "Metadata Version", Type: "String", ReadOnly: !0 }));
|
|
622
631
|
/**
|
|
623
632
|
* Whether fields have been bound to this BDO
|
|
624
633
|
*/
|
|
625
|
-
|
|
634
|
+
d(this, "_fieldsBound", !1);
|
|
626
635
|
/**
|
|
627
636
|
* Cached field map
|
|
628
637
|
*/
|
|
629
|
-
|
|
638
|
+
d(this, "_fieldsCache", null);
|
|
630
639
|
// ============================================================
|
|
631
640
|
// EXPRESSION ENGINE (for backend validation rules)
|
|
632
641
|
// ============================================================
|
|
633
642
|
/**
|
|
634
643
|
* Expression engine instance for evaluating backend validation rules
|
|
635
644
|
*/
|
|
636
|
-
|
|
645
|
+
d(this, "_expressionEngine", new q());
|
|
637
646
|
}
|
|
638
647
|
// ============================================================
|
|
639
648
|
// FIELD DEFINITIONS (auto-discovered)
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { UseFormWatch, UseFormSetValue, UseFormGetValues, UseFormReset, UseFormTrigger, Control, FieldErrors } from 'react-hook-form';
|
|
2
2
|
import type { Activity } from '../../../workflow/Activity';
|
|
3
|
-
import type { CreateUpdateResponseType } from '../../../types/common';
|
|
4
3
|
import type { HandleSubmitType, FormItemType, FormRegisterType, EditableFormFieldAccessorType, ReadonlyFormFieldAccessorType } from '../useBDOForm/types';
|
|
5
4
|
export type { HandleSubmitType, FormItemType, FormRegisterType, EditableFormFieldAccessorType, ReadonlyFormFieldAccessorType, };
|
|
6
5
|
/** Extract TEntity from an Activity instance */
|
|
@@ -43,8 +42,10 @@ export interface UseActivityFormReturn<A extends Activity<any, any, any>> {
|
|
|
43
42
|
activity: A;
|
|
44
43
|
/** Smart register with auto-disable for readonly fields */
|
|
45
44
|
register: FormRegisterType<ExtractActivityEditable<A>, ExtractActivityReadonly<A>>;
|
|
46
|
-
/** Handle form submission —
|
|
47
|
-
handleSubmit: HandleSubmitType<
|
|
45
|
+
/** Handle form submission — calls activity.update() */
|
|
46
|
+
handleSubmit: HandleSubmitType<AllActivityFields<A>>;
|
|
47
|
+
/** Handle form completion — calls activity.update() + activity.complete() */
|
|
48
|
+
handleComplete: HandleSubmitType<AllActivityFields<A>>;
|
|
48
49
|
/** Watch field values */
|
|
49
50
|
watch: UseFormWatch<AllActivityFields<A>>;
|
|
50
51
|
/** Set field value programmatically */
|
|
@@ -63,7 +64,7 @@ export interface UseActivityFormReturn<A extends Activity<any, any, any>> {
|
|
|
63
64
|
isValid: boolean;
|
|
64
65
|
/** Form has been modified */
|
|
65
66
|
isDirty: boolean;
|
|
66
|
-
/** Form is currently submitting */
|
|
67
|
+
/** Form is currently submitting (save or complete) */
|
|
67
68
|
isSubmitting: boolean;
|
|
68
69
|
/** Form submission was successful */
|
|
69
70
|
isSubmitSuccessful: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../sdk/components/hooks/useActivityForm/types.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,OAAO,EACP,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../sdk/components/hooks/useActivityForm/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useActivityForm.d.ts","sourceRoot":"","sources":["../../../../sdk/components/hooks/useActivityForm/useActivityForm.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"useActivityForm.d.ts","sourceRoot":"","sources":["../../../../sdk/components/hooks/useActivityForm/useActivityForm.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EAEtB,MAAM,SAAS,CAAC;AAwBjB,wBAAgB,eAAe,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC/D,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,GACjC,qBAAqB,CAAC,CAAC,CAAC,CAkb1B"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Activity } from '../../../workflow/Activity';
|
|
2
|
+
import type { ActivityInstanceFieldsType } from '../../../workflow/types';
|
|
2
3
|
import type { UseTableReturnType, PaginationStateType } from '../useTable/types';
|
|
3
4
|
import type { UseFilterOptionsType } from '../useFilter/types';
|
|
4
5
|
import type { SortType } from '../../../types/common';
|
|
@@ -11,12 +12,10 @@ export declare const ActivityTableStatus: {
|
|
|
11
12
|
};
|
|
12
13
|
export type ActivityTableStatusType = (typeof ActivityTableStatus)[keyof typeof ActivityTableStatus];
|
|
13
14
|
/**
|
|
14
|
-
* Row type
|
|
15
|
-
*
|
|
15
|
+
* Row type for activity table data.
|
|
16
|
+
* System fields and entity fields are flat at the top level.
|
|
16
17
|
*/
|
|
17
|
-
export type ActivityRowType<A extends Activity<any, any, any>> = A extends
|
|
18
|
-
getInProgressList(opts?: any): Promise<(infer R)[]>;
|
|
19
|
-
} ? R : never;
|
|
18
|
+
export type ActivityRowType<A extends Activity<any, any, any>> = A extends Activity<infer E, any, any> ? ActivityInstanceFieldsType & E : never;
|
|
20
19
|
export interface UseActivityTableOptionsType<A extends Activity<any, any, any>> {
|
|
21
20
|
/** The activity instance to fetch data for */
|
|
22
21
|
activity: A;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../sdk/components/hooks/useActivityTable/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;CAGtB,CAAC;AAEX,MAAM,MAAM,uBAAuB,GACjC,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAEjE;;;GAGG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAC3D,CAAC,SAAS
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../sdk/components/hooks/useActivityTable/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;CAGtB,CAAC;AAEX,MAAM,MAAM,uBAAuB,GACjC,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAEjE;;;GAGG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAC3D,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GACjC,0BAA0B,GAAG,CAAC,GAC9B,KAAK,CAAC;AAEZ,MAAM,WAAW,2BAA2B,CAC1C,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAEjC,8CAA8C;IAC9C,QAAQ,EAAE,CAAC,CAAC;IACZ,sEAAsE;IACtE,MAAM,EAAE,uBAAuB,CAAC;IAChC,oBAAoB;IACpB,YAAY,CAAC,EAAE;QACb,IAAI,CAAC,EAAE,QAAQ,CAAC;QAChB,UAAU,CAAC,EAAE,mBAAmB,CAAC;QACjC,MAAM,CAAC,EAAE,oBAAoB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;KACnD,CAAC;IACF,qBAAqB;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,qCAAqC;IACrC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC;CAClD;AAED,MAAM,MAAM,0BAA0B,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IACtE,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useActivityTable.d.ts","sourceRoot":"","sources":["../../../../sdk/components/hooks/useActivityTable/useActivityTable.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EACV,2BAA2B,EAC3B,0BAA0B,EAE3B,MAAM,SAAS,CAAC;AAEjB,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAChE,OAAO,EAAE,2BAA2B,CAAC,CAAC,CAAC,GACtC,0BAA0B,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"useActivityTable.d.ts","sourceRoot":"","sources":["../../../../sdk/components/hooks/useActivityTable/useActivityTable.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EACV,2BAA2B,EAC3B,0BAA0B,EAE3B,MAAM,SAAS,CAAC;AAEjB,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAChE,OAAO,EAAE,2BAA2B,CAAC,CAAC,CAAC,GACtC,0BAA0B,CAAC,CAAC,CAAC,CA4B/B"}
|
|
@@ -7,8 +7,9 @@ import type { FormItemType, ExtractEditableType, ExtractReadonlyType } from "./t
|
|
|
7
7
|
* Key principle: Item has NO state. It's a view over RHF's state.
|
|
8
8
|
* Editable fields get set(), readonly fields do not.
|
|
9
9
|
*
|
|
10
|
-
* In create mode (no _id),
|
|
11
|
-
*
|
|
10
|
+
* Draft-based upload: In create mode (no _id), upload() automatically creates
|
|
11
|
+
* a draft record via draftInteraction() to get an _id, then uploads immediately.
|
|
12
|
+
* On form submit, if a draft _id exists, update() is used instead of create().
|
|
12
13
|
*
|
|
13
14
|
* @param bdo - The BDO instance for field metadata
|
|
14
15
|
* @param form - The RHF useForm return object
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createItemProxy.d.ts","sourceRoot":"","sources":["../../../../sdk/components/hooks/useBDOForm/createItemProxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAQ,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAQ5C,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EAGpB,MAAM,SAAS,CAAC;AAEjB
|
|
1
|
+
{"version":3,"file":"createItemProxy.d.ts","sourceRoot":"","sources":["../../../../sdk/components/hooks/useBDOForm/createItemProxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAQ,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAQ5C,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EAGpB,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC9D,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,GAC/B,YAAY,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAiV9D"}
|
|
@@ -1,32 +1,24 @@
|
|
|
1
|
-
import type { ListOptionsType, SortType } from '../../../types/common';
|
|
2
1
|
import type { UseTableReturnType, PaginationStateType } from '../useTable/types';
|
|
3
2
|
import type { UseFilterOptionsType } from '../useFilter/types';
|
|
4
|
-
|
|
5
|
-
export interface
|
|
6
|
-
meta
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
import type { SortType } from '../../../types/common';
|
|
4
|
+
export interface UseBDOTableOptionsType<T> {
|
|
5
|
+
/** BDO instance — only meta._id is used (for API routing) */
|
|
6
|
+
bdo: {
|
|
7
|
+
meta: {
|
|
8
|
+
readonly _id: string;
|
|
9
|
+
readonly name: string;
|
|
10
|
+
};
|
|
9
11
|
};
|
|
10
|
-
list(options?: ListOptionsType): Promise<any[]>;
|
|
11
|
-
count(options?: ListOptionsType): Promise<number>;
|
|
12
|
-
}
|
|
13
|
-
/** Infer row type from BDO's list() return type */
|
|
14
|
-
export type BDORowType<B extends BDOTableSourceType> = B extends {
|
|
15
|
-
list(opts?: any): Promise<(infer R)[]>;
|
|
16
|
-
} ? R : never;
|
|
17
|
-
export interface UseBDOTableOptionsType<B extends BDOTableSourceType> {
|
|
18
|
-
/** BDO instance — list() and count() are called for data */
|
|
19
|
-
bdo: B;
|
|
20
12
|
/** Initial state */
|
|
21
13
|
initialState?: {
|
|
22
14
|
sort?: SortType;
|
|
23
15
|
pagination?: PaginationStateType;
|
|
24
|
-
filter?: UseFilterOptionsType<
|
|
16
|
+
filter?: UseFilterOptionsType<T>;
|
|
25
17
|
};
|
|
26
18
|
/** Error callback */
|
|
27
19
|
onError?: (error: Error) => void;
|
|
28
|
-
/** Success callback — receives
|
|
29
|
-
onSuccess?: (data:
|
|
20
|
+
/** Success callback — receives rows from current page */
|
|
21
|
+
onSuccess?: (data: T[]) => void;
|
|
30
22
|
}
|
|
31
|
-
export type UseBDOTableReturnType<
|
|
23
|
+
export type UseBDOTableReturnType<T> = UseTableReturnType<T>;
|
|
32
24
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../sdk/components/hooks/useBDOTable/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../sdk/components/hooks/useBDOTable/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,WAAW,sBAAsB,CAAC,CAAC;IACvC,6DAA6D;IAC7D,GAAG,EAAE;QACH,IAAI,EAAE;YAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;KACvD,CAAC;IACF,oBAAoB;IACpB,YAAY,CAAC,EAAE;QACb,IAAI,CAAC,EAAE,QAAQ,CAAC;QAChB,UAAU,CAAC,EAAE,mBAAmB,CAAC;QACjC,MAAM,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;KAClC,CAAC;IACF,qBAAqB;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,yDAAyD;IACzD,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;CACjC;AAED,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare function useBDOTable<
|
|
1
|
+
import type { UseBDOTableOptionsType, UseBDOTableReturnType } from './types';
|
|
2
|
+
export declare function useBDOTable<T = any>(options: UseBDOTableOptionsType<T>): UseBDOTableReturnType<T>;
|
|
3
3
|
//# sourceMappingURL=useBDOTable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBDOTable.d.ts","sourceRoot":"","sources":["../../../../sdk/components/hooks/useBDOTable/useBDOTable.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useBDOTable.d.ts","sourceRoot":"","sources":["../../../../sdk/components/hooks/useBDOTable/useBDOTable.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAE7E,wBAAgB,WAAW,CAAC,CAAC,GAAG,GAAG,EACjC,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,GACjC,qBAAqB,CAAC,CAAC,CAAC,CAS1B"}
|
|
@@ -110,7 +110,7 @@ const t = {
|
|
|
110
110
|
Unauthenticated: "unauthenticated"
|
|
111
111
|
}, u = {
|
|
112
112
|
Google: "google",
|
|
113
|
-
|
|
113
|
+
Microsoft: "microsoft",
|
|
114
114
|
GitHub: "github",
|
|
115
115
|
Custom: "custom"
|
|
116
116
|
}, C = {
|
|
@@ -146,12 +146,12 @@ const t = {
|
|
|
146
146
|
PAGE: 1,
|
|
147
147
|
/** Maximum search query length */
|
|
148
148
|
SEARCH_MAX_LENGTH: 255
|
|
149
|
-
},
|
|
149
|
+
}, T = {
|
|
150
150
|
/** Date encoded field key: { "$__d__": "YYYY-MM-DD" } */
|
|
151
151
|
Date: "$__d__",
|
|
152
152
|
/** DateTime encoded field key: { "$__dt__": unix_timestamp } */
|
|
153
153
|
DateTime: "$__dt__"
|
|
154
|
-
},
|
|
154
|
+
}, A = {
|
|
155
155
|
/** Successful deletion */
|
|
156
156
|
Success: "success"
|
|
157
157
|
};
|
|
@@ -168,8 +168,8 @@ export {
|
|
|
168
168
|
e as R,
|
|
169
169
|
o as S,
|
|
170
170
|
r as V,
|
|
171
|
-
|
|
172
|
-
|
|
171
|
+
T as a,
|
|
172
|
+
A as b,
|
|
173
173
|
u as c,
|
|
174
174
|
C as d
|
|
175
175
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const t={EQ:"EQ",NE:"NE",GT:"GT",GTE:"GTE",LT:"LT",LTE:"LTE",Between:"Between",NotBetween:"NotBetween",IN:"IN",NIN:"NIN",Empty:"Empty",NotEmpty:"NotEmpty",Contains:"Contains",NotContains:"NotContains",MinLength:"MinLength",MaxLength:"MaxLength",Length:"Length"},e={And:"And",Or:"Or",Not:"Not"},n={Constant:"Constant",BDOField:"BDOField",AppVariable:"AppVariable"},o={ASC:"ASC",DESC:"DESC"},i={Sum:"Sum",Avg:"Avg",Count:"Count",Max:"Max",Min:"Min",DistinctCount:"DistinctCount",BlankCount:"BlankCount",NotBlankCount:"NotBlankCount",Concat:"Concat",DistinctConcat:"DistinctConcat"},a={List:"List",Metric:"Metric",Pivot:"Pivot"},c={Create:"create",Update:"update"},r={Interactive:"interactive",NonInteractive:"non-interactive"},s={OnBlur:"onBlur",OnChange:"onChange",OnSubmit:"onSubmit",OnTouched:"onTouched",All:"all"},d={Loading:"loading",Authenticated:"authenticated",Unauthenticated:"unauthenticated"},u={Google:"google",Microsoft:"microsoft",GitHub:"github",Custom:"custom"},C={Id:"_id",CreatedAt:"_created_at",ModifiedAt:"_modified_at",CreatedBy:"_created_by",ModifiedBy:"_modified_by",Version:"_version",MergeVersion:"_m_version"},E={GET:"GET",POST:"POST",PATCH:"PATCH",DELETE:"DELETE"},p={SEARCH_DEBOUNCE_MS:300,PAGE_SIZE:10,PAGE:1,SEARCH_MAX_LENGTH:255},T={Date:"$__d__",DateTime:"$__dt__"},l={Success:"success"};exports.AuthProviderName=u;exports.AuthStatus=d;exports.ConditionOperator=t;exports.DateEncodingKey=T;exports.Defaults=p;exports.DeleteStatus=l;exports.FormOperation=c;exports.GroupOperator=e;exports.HttpMethod=E;exports.InteractionMode=r;exports.MetricType=i;exports.QueryType=a;exports.RHSType=n;exports.SortDirection=o;exports.SystemField=C;exports.ValidationMode=s;
|
package/dist/filter.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./useFilter-Bg0jvIL6.cjs"),e=require("./constants-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./useFilter-Bg0jvIL6.cjs"),e=require("./constants-QX2RX-wu.cjs");exports.isCondition=o.isCondition;exports.isConditionGroup=o.isConditionGroup;exports.useFilter=o.useFilter;exports.ConditionOperator=e.ConditionOperator;exports.FilterValueSource=e.RHSType;exports.GroupOperator=e.GroupOperator;
|
package/dist/filter.mjs
CHANGED