@stndrds/schema 1.0.0-alpha.316 → 1.0.0-alpha.317

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.
Files changed (67) hide show
  1. package/dist/{all-BGyE2RCe.d.ts → all-BsINIhT4.d.ts} +993 -618
  2. package/dist/{all--LbSrtzk.d.mts → all-Js3OaRJY.d.mts} +993 -618
  3. package/dist/{attributes-cBtnsK8O.d.mts → attributes-2ELU4S-n.d.mts} +2 -2
  4. package/dist/{attributes-cBtnsK8O.d.ts → attributes-2ELU4S-n.d.ts} +2 -2
  5. package/dist/chunk-3VONXKAN.js +2 -0
  6. package/dist/{chunk-D6LPMF5N.mjs → chunk-B2W4ZEO2.mjs} +1 -1
  7. package/dist/{chunk-WKDJGNVI.js → chunk-HS7IRPL2.js} +1 -1
  8. package/dist/chunk-MMOW6WTJ.mjs +2 -0
  9. package/dist/exceptions.d.mts +1 -1
  10. package/dist/exceptions.d.ts +1 -1
  11. package/dist/{objects-iPrveCDN.d.ts → helpers-CAOdIXNe.d.ts} +74 -2
  12. package/dist/{objects-kXaFEi-P.d.mts → helpers-CJpLZ8jG.d.mts} +74 -2
  13. package/dist/index-C6-AlR2_.d.mts +184 -0
  14. package/dist/index-iKNo_z7O.d.ts +184 -0
  15. package/dist/index.d.mts +4721 -3787
  16. package/dist/index.d.ts +4721 -3787
  17. package/dist/index.js +20 -20
  18. package/dist/index.mjs +20 -20
  19. package/dist/{types-DgPbxSij.d.mts → types-DFs7mc3G.d.mts} +1 -1
  20. package/dist/{types-CT0s-S_Y.d.ts → types-DjTB_kVH.d.ts} +1 -1
  21. package/dist/utils.d.mts +1 -1
  22. package/dist/utils.d.ts +1 -1
  23. package/dist/validation/all.d.mts +5 -6
  24. package/dist/validation/all.d.ts +5 -6
  25. package/dist/validation/all.js +1 -1
  26. package/dist/validation/all.mjs +1 -1
  27. package/dist/validation/complex/currency.d.mts +2 -2
  28. package/dist/validation/complex/currency.d.ts +2 -2
  29. package/dist/validation/complex/location.d.mts +2 -2
  30. package/dist/validation/complex/location.d.ts +2 -2
  31. package/dist/validation/complex/phone.d.mts +2 -2
  32. package/dist/validation/complex/phone.d.ts +2 -2
  33. package/dist/validation/complex/relation.d.mts +2 -2
  34. package/dist/validation/complex/relation.d.ts +2 -2
  35. package/dist/validation/complex/richtext.d.mts +2 -2
  36. package/dist/validation/complex/richtext.d.ts +2 -2
  37. package/dist/validation/complex/select.d.mts +2 -2
  38. package/dist/validation/complex/select.d.ts +2 -2
  39. package/dist/validation/complex/user.d.mts +2 -2
  40. package/dist/validation/complex/user.d.ts +2 -2
  41. package/dist/validation/computed/formula.d.mts +2 -2
  42. package/dist/validation/computed/formula.d.ts +2 -2
  43. package/dist/validation/computed/rollup.d.mts +2 -2
  44. package/dist/validation/computed/rollup.d.ts +2 -2
  45. package/dist/validation/config/index.d.mts +2 -3
  46. package/dist/validation/config/index.d.ts +2 -3
  47. package/dist/validation/config/index.js +1 -1
  48. package/dist/validation/config/index.mjs +1 -1
  49. package/dist/validation/core/index.d.mts +3 -3
  50. package/dist/validation/core/index.d.ts +3 -3
  51. package/dist/validation/object/index.d.mts +4 -4
  52. package/dist/validation/object/index.d.ts +4 -4
  53. package/dist/validation/primitives/checkbox.d.mts +2 -2
  54. package/dist/validation/primitives/checkbox.d.ts +2 -2
  55. package/dist/validation/primitives/date.d.mts +2 -2
  56. package/dist/validation/primitives/date.d.ts +2 -2
  57. package/dist/validation/primitives/number.d.mts +2 -2
  58. package/dist/validation/primitives/number.d.ts +2 -2
  59. package/dist/validation/primitives/text.d.mts +2 -2
  60. package/dist/validation/primitives/text.d.ts +2 -2
  61. package/package.json +2 -2
  62. package/dist/chunk-JRBNMHMY.js +0 -2
  63. package/dist/chunk-YFW2M45I.mjs +0 -2
  64. package/dist/helpers-BOtvDGN6.d.ts +0 -76
  65. package/dist/helpers-DrbRe4Xl.d.mts +0 -76
  66. package/dist/index-XQ-3wEYg.d.ts +0 -872
  67. package/dist/index-p0utq5vG.d.mts +0 -872
@@ -1,2 +0,0 @@
1
- import {a as a$1,c}from'./chunk-D6LPMF5N.mjs';import {h}from'./chunk-XRWRECDA.mjs';import {a}from'./chunk-KSPJP74K.mjs';import {z}from'zod';/*! © 2025-2026 AND YOU CREATE SAS (RCS Paris 940 190 614). Proprietary — see LICENSE (Standards SDK License 1.0). */
2
- var Bt={createdAt:"createdAt",updatedAt:"updatedAt",createdBy:"createdBy",lastUpdatedBy:"lastUpdatedBy",attachments:"attachments"};function cr(t){return Bt[t]}a(cr,"getSystemAttributeI18nKey");var Lt={createdAt:{id:"system:createdAt",name:"createdAt",label:"Created time",type:"date",required:false,system:true,icon:"clock-circle",description:"When this record was created"},updatedAt:{id:"system:updatedAt",name:"updatedAt",label:"Last edited time",type:"date",required:false,system:true,icon:"clock-circle",description:"When this record was last modified"},createdBy:{id:"system:createdBy",name:"createdBy",label:"Created by",type:"user",required:false,system:true,multiple:false,icon:"user",description:"Actor who created this record"},lastUpdatedBy:{id:"system:lastUpdatedBy",name:"lastUpdatedBy",label:"Last edited by",type:"user",required:false,system:true,multiple:false,icon:"user",description:"Actor who last modified this record"},attachments:{id:"system:attachments",name:"attachments",label:"Attachments",type:"document",required:false,system:true,hidden:true,icon:"paperclip",description:"Free-form document attachments"}};function dr(){return Object.values(Lt)}a(dr,"getSystemAttributeList");function K(t){return t.id?.startsWith("system:")??false}a(K,"isManagedSystemAttribute");var X=["is","is_not","contains","not_contains","starts_with","ends_with","is_empty","is_not_empty"],J=["is","is_not","less_than","greater_than","less_or_equal","greater_or_equal","is_empty","is_not_empty"],Nt=["is"],jt=["is","is_not","less_than","greater_than","less_or_equal","greater_or_equal","is_within","on_day_month","is_empty","is_not_empty"],H=["is","is_not","any_of","none_of","is_empty","is_not_empty"],Mt=["any_of","none_of","is_empty","is_not_empty"],Q=["is","is_not","any_of","none_of","is_empty","is_not_empty"],Ut=["is_empty","is_not_empty"],qt=["is","is_not","less_than","greater_than","less_or_equal","greater_or_equal","contains","not_contains","is_empty","is_not_empty"],w=["city","postalCode","country"];function C(t){return w.includes(t)}a(C,"isLocationFilterProperty");function fr(t){return X.includes(t)}a(fr,"isLocationPartOperator");var y={text:X,richtext:[],number:J,checkbox:Nt,date:jt,phone:["is","is_not","contains","not_contains","starts_with","is_empty","is_not_empty"],currency:J,status:H,select:H,multiselect:Mt,location:[],user:Q,relation:Q,formula:qt,document:Ut},$t=new Set(["formula","rollup"]),zt=new Set(["user","relation","document"]),Yt=new Set(["text","richtext","number","select","multiselect","status","date","phone","currency","location","user","relation","document"]),Wt=new Set(["text","number","date","phone","currency","select","multiselect"]),Gt=new Set(["text","phone","status","select","multiselect"]),Kt=new Set(["text","number","checkbox","date","phone","currency","status","select"]);function g(t){let r=!!(t.hidden||t.archived),i=!t.archived,n=$t.has(t.type),a=t.type==="document",s=zt.has(t.type),l=Ht(t),u=r?[]:Jt(t),p=u.length>0&&!r,h=!r&&Gt.has(t.type),_=!r&&Kt.has(t.type),T=!r&&ne(t.type),R=!r&&t.type==="status",Dt=K(t),$=n||a||Dt,O=!(r||$),Pt=te(t.type)?"forbidden":"allowed",kt=ee(t.type),z=Xt(t),Y=Wt.has(t.type),W=!!(t.deprecated&&!r),G=ie(t);return {lifecycle:{active:i,deprecated:!!t.deprecated,visibleInArchitect:true,visibleInRuntime:!r,warningWhenDeprecated:W},storage:{mode:n?"computed":s?"edge":"value",cardinality:l,edgeBacked:s,preservesExistingValues:!!t.archived,qualifiedProperties:Zt(t.type),polymorphic:Qt(t),maxItems:z},authoring:{editable:O,readOnly:$,directEdit:O&&G==="inline",required:Pt,defaultValue:kt,placeholder:Y,maxItems:z},presentation:{formField:!r&&oe(t.type),tableCell:!r&&tt(t.type),defaultColumn:!r&&re(t.type),compactDisplay:!r,popoverEditor:!r&&G==="popover",placeholder:Y,warningWhenDeprecated:W},query:{filterable:p,searchable:h,sortable:_,groupable:T,kanbanGroupable:R,operators:u},agent:{readable:!r,writable:O&&!a,compactReadable:!r,contentReadable:!r&&ae(t.type),requiresDedicatedTool:a},exchange:{importable:!r,exportable:!r,schemaExportable:true,metadataExportable:false}}}a(g,"getAttributeCapabilities");function Z(t){return g(t).query.operators}a(Z,"getAttributeFilterOperators");function hr(t){return g(t).query.filterable}a(hr,"isAttributeFilterable");function _r(t){return g(t).query.searchable}a(_r,"isAttributeSearchable");function gr(t){return g(t).query.sortable}a(gr,"isAttributeSortable");function Tr(t){return g(t).query.groupable}a(Tr,"isAttributeGroupable");function Sr(t){return g(t).query.kanbanGroupable}a(Sr,"isAttributeKanbanGroupable");function F(t){if(t.type!=="rollup")return t.type;let r=t;if(r.function==="earliest"||r.function==="latest")return "date";if(r.function==="original"){let i=r.targetAttributeType;if(i&&et(i))return i}return "number"}a(F,"resolveEffectiveFilterType");function V(t){let r=F(t);return et(r)?y[r]:y.number}a(V,"getRollupFilterOperators");function Jt(t){return t.type==="rollup"?V(t):y[t.type]??[]}a(Jt,"getRawFilterOperators");function Ht(t){return t.type==="multiselect"||t.type==="document"||t.type==="user"&&t.multiple===true||t.type==="relation"&&t.cardinality==="many"?"many":"one"}a(Ht,"getAttributeCardinality");function Qt(t){if(t.type!=="relation")return "none";let i=t.targets??[];return i.length===1&&i[0]?.object==="*"?"internal":i.length>1?"code-only":"none"}a(Qt,"getPolymorphicCapability");function Xt(t){return t.type==="multiselect"?true:t.type==="relation"?t.cardinality==="many":false}a(Xt,"supportsMaxItems");function Zt(t){return t==="relation"||t==="document"}a(Zt,"supportsQualifiedProperties");function te(t){return t==="checkbox"||t==="formula"||t==="rollup"}a(te,"isRequiredForbidden");function ee(t){return t==="checkbox"?"automatic":t==="formula"||t==="rollup"?"forbidden":Yt.has(t)?"static":"forbidden"}a(ee,"getDefaultValueCapability");function re(t){return tt(t)}a(re,"isDefaultColumnType");function tt(t){return t!=="richtext"&&t!=="document"}a(tt,"isTableCellType");function oe(t){return t!=="richtext"}a(oe,"isFormFieldType");function ie(t){switch(t.type){case "checkbox":return "inline";case "number":return t.renderAs==="rating"?"inline":"default";case "select":case "multiselect":return t.renderAs==="badges"?"inline":"popover";case "status":case "relation":case "user":case "date":return "popover";default:return "default"}}a(ie,"resolveEditMode");function ne(t){return t==="status"||t==="currency"}a(ne,"isGroupableType");function ae(t){return t==="richtext"||t==="document"}a(ae,"isContentReadableType");function et(t){return Object.prototype.hasOwnProperty.call(y,t)}a(et,"hasFilterOperatorEntry");var f=y,se=["is_empty","is_not_empty"];function rt(t){return se.includes(t)}a(rt,"isNoValueOperator");function Rr(t){return V(t)}a(Rr,"getRollupFilterOperators");function A(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)&&"dynamic"in t}a(A,"isDynamicValue");function Cr(){return {dynamic:"actor",ref:"current"}}a(Cr,"currentActor");function Fr(){return {dynamic:"date",anchor:"today"}}a(Fr,"today");function Vr(){return {dynamic:"date",anchor:"now"}}a(Vr,"now");function ot(t){if(typeof t=="number")return Number.isFinite(t)?t:null;if(typeof t=="string"&&t.trim()!==""){let r=Number(t);return Number.isFinite(r)?r:null}return null}a(ot,"toAmount");function it(t){return t!==null&&typeof t=="object"?"value"in t?ot(t.value):null:ot(t)}a(it,"extractCurrencyFilterValue");function Dr(t){return t==null?null:typeof t=="object"&&"value"in t?t.value??null:t}a(Dr,"extractFilterValue");var le=new Set(["is_not","not_contains","none_of","is_empty"]),ue={is_not:"is",not_contains:"contains",none_of:"any_of",is_empty:"is_not_empty"};function Br(t){return le.has(t)?"none":"any"}a(Br,"getOperatorPolarity");function Lr(t){return ue[t]??t}a(Lr,"normalizeForEdgeRpc");var nt={is:"any_of",is_not:"none_of"};function Nr(t){return nt[t]??t}a(Nr,"toMultiValueOperator");var pe=new Set(Object.values(nt).filter(t=>t!==void 0));function at(t){return pe.has(t)}a(at,"isSetMembershipOperator");function st(t,r){let i=t.value;if(rt(t.operator)||i==null||A(i))return;if(at(t.operator)){Array.isArray(i)||(t.value=[i]);return}if(r!=="currency")return;let n=it(i);if(n!==null){t.value=n;return}if(!ce(i))return;let a=`Filter on a currency attribute expected a numeric amount, received ${JSON.stringify(i)}`;throw new h(a,[{path:["value"],message:a}])}a(st,"canonicalizeFilterValue");function ce(t){return typeof t!="object"?true:"value"in t?t.value!=null:false}a(ce,"hasCurrencyAmount");var de={eq:"is",equals:"is",equal:"is","==":"is","=":"is",neq:"is_not",notEqual:"is_not",isNot:"is_not","!=":"is_not","<>":"is_not",lt:"less_than","<":"less_than",gt:"greater_than",">":"greater_than",lte:"less_or_equal","<=":"less_or_equal",gte:"greater_or_equal",">=":"greater_or_equal",in:"any_of",isAnyOf:"any_of",anyOf:"any_of",oneOf:"any_of",notIn:"none_of",not_in:"none_of",isNoneOf:"none_of",noneOf:"none_of",notOneOf:"none_of",startsWith:"starts_with",beginsWith:"starts_with",endsWith:"ends_with",doesNotContain:"not_contains",notContain:"not_contains",isEmpty:"is_empty",isNotEmpty:"is_not_empty"};function I(t){return de[t]??t}a(I,"normalizeOperator");function Kr(t){let r=I(t.operator);return r===t.operator?t:{...t,operator:r}}a(Kr,"normalizeFilterRule");var me=new Set(["days","weeks","months","years"]),be=new Set(["past","future"]);function v(t){if(typeof t!="object"||t===null)return false;let r=t;return typeof r.amount=="number"&&Number.isFinite(r.amount)&&r.amount>0&&typeof r.unit=="string"&&me.has(r.unit)&&typeof r.direction=="string"&&be.has(r.direction)}a(v,"isRelativeDateValue");function ut(t){return Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate())}a(ut,"utcDayStart");function lt(t,r,i){if(i==="days")return t+r*864e5;if(i==="weeks")return t+r*7*864e5;let n=new Date(t),a=n.getUTCFullYear()+(i==="years"?r:0),s=n.getUTCMonth()+(i==="months"?r:0),l=new Date(Date.UTC(a,s+1,0)).getUTCDate();return Date.UTC(a,s,Math.min(n.getUTCDate(),l))}a(lt,"shiftUtcDay");function Qr(t,r=new Date){if(!v(t))return null;let i=ut(r),n=Math.trunc(t.amount),a=t.direction==="past"?{startMs:lt(i,-n,t.unit),endMs:i+864e5}:{startMs:i,endMs:lt(i,n,t.unit)+864e5};return Number.isFinite(a.startMs)&&Number.isFinite(a.endMs)?a:null}a(Qr,"resolveIsWithinBounds");function Xr(t){if(!Number.isFinite(t))return null;let r=ut(new Date(t));return Number.isFinite(r)?{startMs:r,endMs:r+864e5}:null}a(Xr,"resolveUtcDayBounds");function Zr(t){return new Date(t).toISOString().slice(0,10)}a(Zr,"toUtcDayString");var ye=new Set(["relation","document","user"]),D=["is","is_not","any_of","none_of","is_empty","is_not_empty"],fe={id:D,objectId:D,tenantId:D,label:f.text,createdAt:f.date,updatedAt:f.date,deletedAt:f.date,createdBy:f.user,lastUpdatedBy:f.user},he={id:"text",objectId:"text",objectName:"text",tenantId:"text",label:"text",createdAt:"date",updatedAt:"date",deletedAt:"date",deletedBy:"user",createdBy:"user",lastUpdatedBy:"user",visibility:"select",ownedBy:"user"},B={before:'"less_than"',after:'"greater_than"',on_or_before:'"less_or_equal"',on_or_after:'"greater_or_equal"',is_checked:'"is" with value true',is_not_checked:'"is" with value false',day_month_eq:'"on_day_month"'},_e=new Set(Object.entries(y).filter(([,t])=>t.includes("any_of")&&!t.includes("contains")).map(([t])=>t)),ge={contains:"any_of",not_contains:"none_of"};function P(t,r){let i=B[t];if(i){let s=`Unknown filter operator "${t}" \u2014 use ${i}`;throw new h(s,[{path:["operator"],message:s}])}let n=I(t),a=ge[n];if(a&&_e.has(r)){let s=`Operator "${n}" is not valid for type "${r}" \u2014 use "${a}"`;throw new h(s,[{path:["operator"],message:s}])}return n}a(P,"resolveCanonicalOperator");function pt(t,r,i){let n=P(t,r),a=f[r];if(!a?.includes(n)){let s=a?.length?a.join(", "):"(no operators registered for this type)",l=`Operator "${t}" is not valid for ${i} type "${r}". Valid operators: ${s}.`;throw new h(l,[{path:["operator"],message:l}])}return n}a(pt,"assertOperatorForType");function Te(t){if(t.operator==="is_within"&&!v(t.value)){let r='Operator "is_within" requires a relative-date value { amount: positive number, unit: days|weeks|months|years, direction: past|future }';throw new h(r,[{path:["value"],message:r}])}}a(Te,"assertRelativeDateValue");function E(t,r,i){t.operator=r,st(t,i),Te(t);}a(E,"applyCanonicalForm");function ct(t,r){if(!A(t.value))return;let i=t.value;if(i.dynamic==="actor"&&r!=="user"){let n=`actor token (@me) is only valid on user attributes, not "${r}"`;throw new h(n,[{path:["value"],message:n}])}if(i.dynamic==="date"&&r!=="date"){let n=`date token (@today/@now) is only valid on date attributes, not "${r}"`;throw new h(n,[{path:["value"],message:n}])}}a(ct,"assertDynamicValueForAttribute");var k=w.map(t=>`"${t}"`).join(", ");function Se(t){return t==="location"?` A location is filtered on one of its parts: set "property" to one of ${k} and use a text operator (e.g. contains).`:""}a(Se,"locationPartsHint");function uo(t,r){try{return Ae({...t},r),[]}catch(i){if(!(i instanceof h))throw i;return i.errors.map(n=>({...n,path:[...n.path]}))}}a(uo,"collectQualifiedRuleIssues");function Ae(t,r){let i=r.attributes.find(u=>u.name===t.attribute),n=fe[t.attribute];if(!(i||n)){let[u,...p]=t.attribute.split("."),_=(p.length>0?r.attributes.find(R=>R.name===u):void 0)?.type==="location"?` Dotted paths are not supported \u2014 set "attribute" to "${u}" and "property" to ${C(p[0]??"")?`"${p[0]}"`:`one of ${k}`}.`:t.attribute.includes(".")?' Dotted paths are not supported \u2014 filter on the attribute name alone, or use the full-text "query" parameter to match text inside a value.':"",T=`Unknown attribute: ${t.attribute}${_}`;throw new h(T,[{path:["attribute"],message:T}])}if(t.quantifier!==void 0&&!t.property){let u='quantifier is only valid on qualified edge rules (set "property")';throw new h(u,[{path:["quantifier"],message:u}])}if(!i){if(t.property)throw new h(`Cannot qualify system attribute "${t.attribute}"`,[{path:["property"],message:`"${t.attribute}" is a system column, not a reference`}]);let u=he[t.attribute]??"text",p=P(t.operator,u);if(!n.includes(p)){let h$1=`Operator "${t.operator}" is not valid for system attribute "${t.attribute}". Valid operators: ${n.join(", ")}.`;throw new h(h$1,[{path:["operator"],message:h$1}])}E(t,p,u);return}if(!t.property){ct(t,i.type);let u=Z(i),p=P(t.operator,i.type);if(!u.includes(p)){let h$1=u.length?u.join(", "):"(not filterable)",_=`Operator "${t.operator}" is not valid for attribute "${i.name}". Valid operators: ${h$1}.${Se(i.type)}`;throw new h(_,[{path:["operator"],message:_}])}E(t,p,F(i));return}if(i.type==="location"){if(t.quantifier!==void 0){let p="quantifier is not valid on a location part \u2014 a location is one value, not a set of edges";throw new h(p,[{path:["quantifier"],message:p}])}if(!C(t.property)){let p=`Property "${t.property}" is not a part of location "${t.attribute}". Valid parts: ${k}.`;throw new h(p,[{path:["property"],message:p}])}ct(t,"text");let u=pt(t.operator,"text","property");E(t,u,"text");return}if(!ye.has(i.type))throw new h(`Cannot qualify ${i.type} attribute "${t.attribute}"`,[{path:["property"],message:`Attribute "${t.attribute}" is not a reference type`}]);let a=i.properties;if(!a)throw new h(`Attribute "${t.attribute}" has no qualifyWith schema`,[{path:["property"],message:`"${t.attribute}" has no qualifyWith`}]);let s=a.definitions.find(u=>u.name===t.property);if(!s)throw new h(`Property "${t.property}" not defined on "${t.attribute}".qualifyWith()`,[{path:["property"],message:`Unknown property: ${t.property}`}]);let l=pt(t.operator,s.type,"property");E(t,l,s.type);}a(Ae,"validateQualifiedRule");var L=["skill","memory","drives","artifact","meeting"];function mo(t){return L.includes(t)}a(mo,"isNativeObjectName");var N=["workspace","private"],dt=["all",...N];function _o(t){if(typeof t=="string"&&N.includes(t))return t;throw new h(`visibility must be one of: ${N.join(", ")} (received: ${String(t)})`,[])}a(_o,"parseResourceVisibility");var Ee=["id","createdAt","updatedAt","createdBy","lastUpdatedBy","visibility","ownedBy"],go=[...Ee,"objectId","label","embeddingText","values","metadata","deletedAt","deletedBy","schemaVersion","owned_by"],To=L;var ft=z.enum(["redirect","inline","peek"]),ht=z.enum(["side","page"]),xe=z.array(z.string()).min(1),x=z.array(z.string()).max(a$1.columnsPerTab),Re=z.array(z.string().min(1)).max(a$1.columnsPerTab).refine(t=>new Set(t).size===t.length,{message:"Displayed attribute names must be unique"}),Oe=z.object({attribute:z.string(),direction:z.enum(["asc","desc"])}).strict(),_t=z.array(Oe).max(a$1.sortsPerTab),we=z.object({amount:z.number(),unit:z.enum(["days","weeks","months","years"]),direction:z.enum(["past","future"])}).strict(),Ce=z.object({value:z.number().nullable(),code:z.array(z.string()).optional()}).strict(),Fe=z.object({phoneNumber:z.string().nullable(),countryCode:z.string().optional()}).strict(),Ve=z.discriminatedUnion("dynamic",[z.object({dynamic:z.literal("actor"),ref:z.literal("current")}).strict(),z.object({dynamic:z.literal("date"),anchor:z.enum(["today","now"])}).strict()]),Ie=z.object({month:z.number(),day:z.number()}).strict(),ve=z.union([z.string(),z.number(),z.boolean(),z.array(z.string()),we,Ce,Fe,Ie,Ve,z.null()]),De=z.enum(["is","is_not","contains","not_contains","starts_with","ends_with","is_empty","is_not_empty","less_than","greater_than","less_or_equal","greater_or_equal","is_within","on_day_month","any_of","none_of"],{error:a(t=>{let r=t.input,i=typeof r=="string"?B[r]:void 0;return i?`Unknown filter operator "${r}" \u2014 use ${i}`:void 0},"error")}),Pe=z.object({attribute:z.string(),property:z.string().optional(),quantifier:z.enum(["any","none"]).optional(),operator:De,value:ve}).strict(),gt=z.array(Pe).max(a$1.filterRulesPerTab),ke=z.object({combinator:z.enum(["and","or"]),rules:gt}).strict(),Tt=z.object({id:z.string(),combinator:z.enum(["and","or"]),rules:gt}).strict();function j(t,r,i=[]){let n=new Set;t.forEach((a,s)=>{n.has(a.id)&&r.addIssue({code:"custom",message:`Duplicate id "${a.id}"`,path:[...i,s,"id"]}),n.add(a.id);});}a(j,"addDuplicateIdIssues");function Be(t,r,i=[]){let n=new Set;t.forEach((a,s)=>{n.has(a.name)&&r.addIssue({code:"custom",message:`Duplicate name "${a.name}"`,path:[...i,s,"name"]}),n.add(a.name);});}a(Be,"addDuplicateNameIssues");var Le=z.object({id:z.string(),label:z.string(),description:z.string().optional(),attributes:xe,displayTemplate:z.string().optional()}).strict(),Ne={span:z.union([z.literal(1),z.literal(2),z.literal(3),z.literal(4),z.literal(5),z.literal(6),z.literal(7),z.literal(8),z.literal(9),z.literal(10),z.literal(11),z.literal(12)]).optional(),label:z.string().optional(),readOnly:z.boolean().optional()},St={attribute:z.string().optional(),attributeGroup:Le.optional(),...Ne};function At(t,r){t.attribute===void 0==(t.attributeGroup===void 0)&&r.addIssue({code:"custom",message:"A field must define exactly one of attribute or attributeGroup"});}a(At,"refineField");var je=z.object({id:z.string().optional(),...St}).strict().superRefine(At),Co=z.object({id:z.string().min(1),...St}).strict().superRefine(At),Me={id:z.string(),label:z.string(),description:z.string().optional(),collapsible:z.boolean().optional(),collapsed:z.boolean().optional(),order:z.number().optional()},Ue=z.object({...Me,type:z.literal("fields"),fields:z.array(je).max(a$1.fieldsPerGroup)}).strict(),qe=Ue,b={id:z.string(),name:z.string(),label:z.string(),icon:c.optional(),order:z.number().optional()},Et=z.array(qe).max(a$1.groupsPerFormTab),xt={...b,type:z.literal("form"),groups:Et,formColumns:z.union([z.literal(1),z.literal(2),z.literal(3)]).optional(),density:z.enum(["compact","comfortable","spacious"]).optional()},$e=z.object(xt).strict();function Rt(t,r){j(t.groups,r,["groups"]),t.groups.reduce((a,s)=>a+(s.type==="fields"?s.fields.length:0),0)>a$1.fieldsPerFormTab&&r.addIssue({code:"too_big",origin:"array",maximum:a$1.fieldsPerFormTab,inclusive:true,message:`A form tab can contain at most ${a$1.fieldsPerFormTab} fields`,path:["groups"]});let n=new Set;t.groups.forEach((a,s)=>{a.type==="fields"&&a.fields.forEach((l,u)=>{if(l.attributeGroup===void 0)return;let{id:p}=l.attributeGroup;n.has(p)&&r.addIssue({code:"custom",message:`Duplicate attribute group id "${p}"`,path:["groups",s,"fields",u,"attributeGroup","id"]}),n.add(p);});});}a(Rt,"refineFormTab");var ze=z.object({...xt,groups:Et.min(1)}).strict().superRefine(Rt),Ye=$e.superRefine(Rt),Ot=z.object({type:z.literal("relation"),attribute:z.string()}).strict(),wt=z.object({type:z.literal("inverse"),object:z.string(),attribute:z.string()}).strict(),Ct=z.discriminatedUnion("type",[Ot,wt]),We=z.object({...b,type:z.literal("table"),source:Ct,columns:x,allowCreate:z.boolean().optional(),createMode:ft.optional(),openMode:ht.optional(),allowEdit:z.boolean().optional(),allowDelete:z.boolean().optional(),filters:ke.optional(),sorts:_t.optional()}).strict(),mt=64,bt=1e4;function yt(t){let r=Object.getPrototypeOf(t);return r===Object.prototype||r===null}a(yt,"isPlainJsonObject");function m(t,r,i=[]){t.addIssue({code:"custom",message:r,path:i});}a(m,"addJsonIssue");function Ge(t,r,i,n){for(let a of Reflect.ownKeys(t))if(a!=="length"){if(a==="__proto__"){m(n,"The __proto__ key is not allowed in custom props",[...r.path,a]);continue}(typeof a=="symbol"||!/^(0|[1-9]\d*)$/.test(a))&&m(n,"Arrays cannot contain non-index JSON properties",[...r.path,a]);}for(let a=t.length-1;a>=0;a--){let s=Object.getOwnPropertyDescriptor(t,String(a)),l=[...r.path,a];if(!(s&&"value"in s)){m(n,"Sparse arrays are not valid JSON values",l);continue}i.push({kind:"enter",value:s.value,path:l,depth:r.depth+1});}}a(Ge,"pushJsonArrayChildren");function Ke(t,r,i,n){let a=Reflect.ownKeys(t);for(let s=a.length-1;s>=0;s--){let l=a[s],u=[...r.path,l];if(l==="__proto__"){m(n,"The __proto__ key is not allowed in custom props",u);continue}if(typeof l=="symbol"){m(n,"Symbol keys are not valid JSON keys",u);continue}let p=Object.getOwnPropertyDescriptor(t,l);if(!(p?.enumerable&&"value"in p)){m(n,"Custom props must contain enumerable data properties only",u);continue}i.push({kind:"enter",value:p.value,path:u,depth:r.depth+1});}}a(Ke,"pushJsonObjectChildren");function Je(t,r){if(t===null||typeof t!="object"){m(r,"Expected a plain JSON object");return}try{if(Array.isArray(t)||!yt(t)){m(r,"Expected a plain JSON object");return}}catch{m(r,"Custom props contain an object that cannot be safely inspected");return}let i=new WeakSet,n=[{kind:"enter",value:t,path:[],depth:0}],a=0;for(;n.length>0;){let s=n.pop();if(!s)break;if(s.kind==="exit"){i.delete(s.value);continue}if(a++,a>bt){m(r,`Custom props cannot exceed ${bt.toLocaleString("en-US")} total JSON nodes`,s.path);return}if(s.depth>mt){m(r,`Custom props cannot exceed depth ${mt}`,s.path);continue}let l=s.value;if(!(l===null||typeof l=="string"||typeof l=="boolean"||typeof l=="number"&&Number.isFinite(l))){if(typeof l!="object"){m(r,"Expected a JSON value",s.path);continue}if(i.has(l)){m(r,"Custom props cannot contain circular references",s.path);continue}try{if(Array.isArray(l)){i.add(l),n.push({kind:"exit",value:l}),Ge(l,s,n,r);continue}if(!yt(l)){m(r,"Expected an array or plain JSON object",s.path);continue}i.add(l),n.push({kind:"exit",value:l}),Ke(l,s,n,r);}catch{m(r,"Custom props contain an object that cannot be safely inspected",s.path);}}}}a(Je,"validateJsonProps");var He=z.unknown().superRefine(Je).transform(t=>t),Qe=z.object({...b,type:z.literal("custom"),component:z.string(),props:He.optional()}).strict(),Xe=z.object({...b,type:z.literal("activity"),limit:z.number().optional()}).strict(),Ze=z.object({...b,type:z.literal("richtext"),attribute:z.string(),titleAttribute:z.string().optional()}).strict(),tr=z.object({...b,type:z.literal("documents"),allowUpload:z.boolean().optional(),allowRemove:z.boolean().optional(),hideAttachments:z.boolean().optional(),relations:z.array(z.string()).optional()}).strict(),er=z.object({...b,type:z.literal("forms"),objectName:z.string().optional()}).strict(),rr=z.object({...b,type:z.literal("emails"),emailAttributeIds:z.array(z.string()).max(a$1.emailAttributesPerTab)}).strict(),or=z.object({...b,type:z.literal("meetings"),emailAttributeIds:z.array(z.string()).max(a$1.emailAttributesPerTab)}).strict(),Ft=[We,Qe,Xe,Ze,tr,er,rr,or],Vt=z.discriminatedUnion("type",[ze,...Ft]),Fo=z.discriminatedUnion("type",[Ye,...Ft]),M={id:z.string(),label:z.string(),icon:c.optional(),default:z.boolean().optional(),visibility:z.enum(dt).default("all"),columns:x,descriptionAttribute:z.string().min(1).optional(),displayAttributes:Re.optional(),filters:Tt.optional(),sorts:_t.optional(),readOnly:z.boolean().optional(),createMode:ft.optional(),openMode:ht.optional()},ir=z.object({...M,layout:z.literal("table"),columnSizing:z.record(z.string(),z.number()).optional(),groupByAttribute:z.string().min(1).optional()}).strict(),nr=z.object({...M,layout:z.literal("kanban"),columns:x.default([]),groupByAttribute:z.string(),cardUserAttribute:z.string().optional(),cardDateAttribute:z.string().optional(),kanbanColumnOrder:z.array(z.string()).optional(),kanbanColumnVisibility:z.record(z.string(),z.boolean()).optional(),kanbanPinnedColumns:z.array(z.string()).optional()}).strict(),ar=z.object({...M,layout:z.literal("list"),columns:x.default([]),columnSizing:z.record(z.string(),z.number()).optional(),groupByAttribute:z.string().min(1).optional()}).strict(),It=z.discriminatedUnion("layout",[ir,ar,nr]),sr=z.object({allowPresentationCustomization:z.boolean().optional(),defaultFilters:Tt.optional(),tabs:z.array(It).min(1).max(a$1.tabsPerView)}).strict().superRefine((t,r)=>{j(t.tabs,r,["tabs"]);let i=false;t.tabs.forEach((n,a)=>{n.layout!=="kanban"&&n.groupByAttribute!==void 0&&t.allowPresentationCustomization!==true&&r.addIssue({code:"unrecognized_keys",keys:["groupByAttribute"],path:["tabs",a]}),n.default&&(i&&r.addIssue({code:"custom",message:"Only one list tab can be the default",path:["tabs",a,"default"]}),i=true);});}),lr=z.discriminatedUnion("kind",[z.object({kind:z.literal("fields"),id:z.string().optional(),label:z.string().optional(),attributes:z.array(z.string()).max(a$1.sidePanelAttributes)}).strict(),z.object({kind:z.literal("activity"),id:z.string().optional(),label:z.string().optional()}).strict(),z.object({kind:z.literal("documents"),id:z.string(),label:z.string().optional(),allowUpload:z.boolean().optional(),allowRemove:z.boolean().optional()}).strict()]),ur=z.object({tabs:z.array(Vt).min(1).max(a$1.tabsPerView),readOnly:z.boolean().optional(),sidePanel:z.object({attributes:z.array(z.string()).max(a$1.sidePanelAttributes).optional(),panes:z.array(lr).max(a$1.sidePanelPanes).optional(),width:z.number().optional()}).strict().refine(t=>t.attributes!==void 0||t.panes!==void 0,{message:"sidePanel requires attributes or panes"}).refine(t=>t.panes===void 0||t.panes.length>0,{message:"sidePanel panes must not be empty"}).refine(t=>t.attributes===void 0||t.panes===void 0,{message:"sidePanel takes attributes or panes, not both"}).optional()}).strict().superRefine((t,r)=>{j(t.tabs,r,["tabs"]),Be(t.tabs,r,["tabs"]);}),U=sr,q=ur,Vo=z.enum(["list","detail"]);var vt=z.discriminatedUnion("type",[z.object({type:z.literal("list"),config:U}).strict(),z.object({type:z.literal("detail"),config:q}).strict()]);function pr(t,r){switch(t){case "list":return U.parse(r);case "detail":return q.parse(r);default:return vt.parse({type:t,config:r}).config}}a(pr,"parseViewConfig");var Io=["columnSizing"],vo=["groupByAttribute","cardUserAttribute","cardDateAttribute","kanbanColumnOrder","kanbanColumnVisibility","kanbanPinnedColumns"];export{_t as $,Ee as A,go as B,To as C,A as D,Cr as E,Fr as F,Vr as G,it as H,Dr as I,Br as J,Lr as K,Nr as L,at as M,st as N,de as O,I as P,Kr as Q,v as R,Qr as S,Xr as T,Zr as U,he as V,B as W,uo as X,Ae as Y,x as Z,Re as _,Bt as a,ke as aa,cr as b,Tt as ba,Lt as c,St as ca,dr as d,je as da,K as e,Co as ea,w as f,qe as fa,C as g,Ot as ga,fr as h,wt as ha,y as i,Ct as ia,g as j,Vt as ja,Z as k,Fo as ka,hr as l,It as la,_r as m,U as ma,gr as n,q as na,Tr as o,Vo as oa,Sr as p,vt as pa,F as q,pr as qa,f as r,Io as ra,se as s,vo as sa,rt as t,Rr as u,L as v,mo as w,N as x,dt as y,_o as z};
@@ -1,76 +0,0 @@
1
- import { z } from 'zod';
2
- import { A as Attribute } from './attributes-cBtnsK8O.js';
3
- import { V as ValidationMessages, a as ValidationResult } from './types-CT0s-S_Y.js';
4
- import { O as ObjectDefinition } from './objects-iPrveCDN.js';
5
-
6
- /**
7
- * Create a Zod schema for any attribute type.
8
- * Returns a strict validator that does NOT handle optional fields.
9
- * Use createFormAttributeValidator for form validation with optional support.
10
- *
11
- * @param attr - The attribute to create a validator for
12
- * @param messages - Custom validation messages for i18n support
13
- */
14
- declare function createAttributeValidator(attr: Attribute, messages?: ValidationMessages): z.ZodTypeAny;
15
- /**
16
- * Create a Zod schema for form validation.
17
- * - Normalizes empty values (empty strings, empty objects) to null for optional fields
18
- * - Accepts custom messages for i18n support
19
- *
20
- * Use this in UI forms where optional fields may have null/undefined values.
21
- *
22
- * @param attr - The attribute to create a validator for
23
- * @param messages - Custom validation messages for i18n support
24
- */
25
- declare function createFormAttributeValidator(attr: Attribute, messages?: ValidationMessages): z.ZodTypeAny;
26
-
27
- /**
28
- * Validate data against an attribute schema
29
- */
30
- declare function validateAttribute(attr: Attribute, value: unknown): ValidationResult;
31
- /**
32
- * Validate data against an object schema
33
- */
34
- declare function validateObject(objectDef: ObjectDefinition, data: Record<string, unknown>): ValidationResult;
35
- /**
36
- * Validate and throw if invalid.
37
- *
38
- * Throws `ValidationError` (code `SCHEMA_VALIDATION_FAILED`) on failure so HTTP
39
- * adapters can map it to 400. Generic `Error` would bubble up to a 500.
40
- */
41
- declare function validateObjectOrThrow(objectDef: ObjectDefinition, data: Record<string, unknown>): Record<string, unknown>;
42
- /**
43
- * Validate data in draft mode.
44
- * - All attributes are treated as optional (no required validation)
45
- * - Provided values are still validated for format/type correctness
46
- */
47
- declare function validateDraft(objectDef: ObjectDefinition, data: Record<string, unknown>): ValidationResult;
48
- /**
49
- * Validate draft data and throw if format validation fails.
50
- *
51
- * Same contract as `validateObjectOrThrow` but skips `required()` checks.
52
- * Throws `ValidationError` so HTTP adapters map it to 400.
53
- */
54
- declare function validateDraftOrThrow(objectDef: ObjectDefinition, data: Record<string, unknown>): Record<string, unknown>;
55
- /**
56
- * Throw a `ValidationError` when `data` contains keys that do not correspond
57
- * to any attribute declared on `objectDef`.
58
- *
59
- * Call this on **client-supplied input** before Zod validation so the error
60
- * message clearly names every offending key. Do NOT call on merged data that
61
- * includes existing record values — older records may legitimately carry stale
62
- * keys that predate this guard (see issue #658).
63
- *
64
- * Maps to HTTP 400 via `SchemaExceptionFilter` (code SCHEMA_VALIDATION_FAILED).
65
- */
66
- declare function rejectUnknownAttributesOrThrow(objectDef: ObjectDefinition, data: Record<string, unknown>): void;
67
- /**
68
- * Get the list of required attributes that are missing values.
69
- */
70
- declare function getMissingRequiredAttributes(objectDef: ObjectDefinition, data: Record<string, unknown>): Attribute[];
71
- /**
72
- * Check if a record is complete (all required attributes have valid values).
73
- */
74
- declare function isRecordComplete(objectDef: ObjectDefinition, data: Record<string, unknown>): boolean;
75
-
76
- export { createFormAttributeValidator as a, validateDraft as b, createAttributeValidator as c, validateDraftOrThrow as d, validateObject as e, validateObjectOrThrow as f, getMissingRequiredAttributes as g, isRecordComplete as i, rejectUnknownAttributesOrThrow as r, validateAttribute as v };
@@ -1,76 +0,0 @@
1
- import { z } from 'zod';
2
- import { A as Attribute } from './attributes-cBtnsK8O.mjs';
3
- import { V as ValidationMessages, a as ValidationResult } from './types-DgPbxSij.mjs';
4
- import { O as ObjectDefinition } from './objects-kXaFEi-P.mjs';
5
-
6
- /**
7
- * Create a Zod schema for any attribute type.
8
- * Returns a strict validator that does NOT handle optional fields.
9
- * Use createFormAttributeValidator for form validation with optional support.
10
- *
11
- * @param attr - The attribute to create a validator for
12
- * @param messages - Custom validation messages for i18n support
13
- */
14
- declare function createAttributeValidator(attr: Attribute, messages?: ValidationMessages): z.ZodTypeAny;
15
- /**
16
- * Create a Zod schema for form validation.
17
- * - Normalizes empty values (empty strings, empty objects) to null for optional fields
18
- * - Accepts custom messages for i18n support
19
- *
20
- * Use this in UI forms where optional fields may have null/undefined values.
21
- *
22
- * @param attr - The attribute to create a validator for
23
- * @param messages - Custom validation messages for i18n support
24
- */
25
- declare function createFormAttributeValidator(attr: Attribute, messages?: ValidationMessages): z.ZodTypeAny;
26
-
27
- /**
28
- * Validate data against an attribute schema
29
- */
30
- declare function validateAttribute(attr: Attribute, value: unknown): ValidationResult;
31
- /**
32
- * Validate data against an object schema
33
- */
34
- declare function validateObject(objectDef: ObjectDefinition, data: Record<string, unknown>): ValidationResult;
35
- /**
36
- * Validate and throw if invalid.
37
- *
38
- * Throws `ValidationError` (code `SCHEMA_VALIDATION_FAILED`) on failure so HTTP
39
- * adapters can map it to 400. Generic `Error` would bubble up to a 500.
40
- */
41
- declare function validateObjectOrThrow(objectDef: ObjectDefinition, data: Record<string, unknown>): Record<string, unknown>;
42
- /**
43
- * Validate data in draft mode.
44
- * - All attributes are treated as optional (no required validation)
45
- * - Provided values are still validated for format/type correctness
46
- */
47
- declare function validateDraft(objectDef: ObjectDefinition, data: Record<string, unknown>): ValidationResult;
48
- /**
49
- * Validate draft data and throw if format validation fails.
50
- *
51
- * Same contract as `validateObjectOrThrow` but skips `required()` checks.
52
- * Throws `ValidationError` so HTTP adapters map it to 400.
53
- */
54
- declare function validateDraftOrThrow(objectDef: ObjectDefinition, data: Record<string, unknown>): Record<string, unknown>;
55
- /**
56
- * Throw a `ValidationError` when `data` contains keys that do not correspond
57
- * to any attribute declared on `objectDef`.
58
- *
59
- * Call this on **client-supplied input** before Zod validation so the error
60
- * message clearly names every offending key. Do NOT call on merged data that
61
- * includes existing record values — older records may legitimately carry stale
62
- * keys that predate this guard (see issue #658).
63
- *
64
- * Maps to HTTP 400 via `SchemaExceptionFilter` (code SCHEMA_VALIDATION_FAILED).
65
- */
66
- declare function rejectUnknownAttributesOrThrow(objectDef: ObjectDefinition, data: Record<string, unknown>): void;
67
- /**
68
- * Get the list of required attributes that are missing values.
69
- */
70
- declare function getMissingRequiredAttributes(objectDef: ObjectDefinition, data: Record<string, unknown>): Attribute[];
71
- /**
72
- * Check if a record is complete (all required attributes have valid values).
73
- */
74
- declare function isRecordComplete(objectDef: ObjectDefinition, data: Record<string, unknown>): boolean;
75
-
76
- export { createFormAttributeValidator as a, validateDraft as b, createAttributeValidator as c, validateDraftOrThrow as d, validateObject as e, validateObjectOrThrow as f, getMissingRequiredAttributes as g, isRecordComplete as i, rejectUnknownAttributesOrThrow as r, validateAttribute as v };