@homedev/fields 1.2.21 → 1.2.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -72,8 +72,18 @@ export declare interface ProcessFieldsOptions {
72
72
  filters?: RegExp[];
73
73
  root?: Record<any, any>;
74
74
  globalContext?: any;
75
- onSection?: (section: FieldProcessorSection, path: string, root: Record<string, any>, options: ProcessFieldsOptions) => Promise<void | boolean | string> | void | boolean | string;
76
- onSectionConfig?: (section: FieldProcessorSection, path: string, root: Record<string, any>, options: ProcessFieldsOptions) => Promise<boolean | void> | boolean | void;
75
+ onSection?: (section: FieldProcessorSection, context: {
76
+ content: string;
77
+ path: string;
78
+ root: Record<string, any>;
79
+ options: ProcessFieldsOptions;
80
+ }) => Promise<void | boolean | string> | void | boolean | string;
81
+ onSectionConfig?: (section: FieldProcessorSection, context: {
82
+ content: string;
83
+ path: string;
84
+ root: Record<string, any>;
85
+ options: ProcessFieldsOptions;
86
+ }) => Promise<boolean | void> | boolean | void;
77
87
  }
78
88
 
79
89
  declare type SourceFunc = (...args: any[]) => any;
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- var o=Object.create;var{getPrototypeOf:a,defineProperty:q,getOwnPropertyNames:P0}=Object;var f0=Object.prototype.hasOwnProperty;var F0=(P,F,f)=>{f=P!=null?o(a(P)):{};let W=F||!P||!P.__esModule?q(f,"default",{value:P,enumerable:!0}):f;for(let M of P0(P))if(!f0.call(W,M))q(W,M,{get:()=>P[M],enumerable:!0});return W};var y0=(P,F)=>()=>(F||P((F={exports:{}}).exports,F),F.exports);var h=y0((z0,x)=>{var{defineProperty:z,getOwnPropertyNames:W0,getOwnPropertyDescriptor:_0}=Object,E0=Object.prototype.hasOwnProperty,R=new WeakMap,M0=(P)=>{var F=R.get(P),f;if(F)return F;if(F=z({},"__esModule",{value:!0}),P&&typeof P==="object"||typeof P==="function")W0(P).map((W)=>!E0.call(F,W)&&z(F,W,{get:()=>P[W],enumerable:!(f=_0(P,W))||f.enumerable}));return R.set(P,F),F},D0=(P,F)=>{for(var f in F)z(P,f,{get:F[f],enumerable:!0,configurable:!0,set:(W)=>F[f]=()=>W})},m={};D0(m,{splitWithQuotes:()=>k0,splitNested:()=>C0});x.exports=M0(m);var C0=(P,F,f="(",W=")")=>{let M=0,_="",E=[];for(let y of P){if(_+=y,y===f)M++;if(y===W)M--;if(M===0&&y===F)E.push(_.slice(0,-1)),_=""}if(_)E.push(_);return E},k0=(P,F=",")=>{let f=[],W=P.length,M=F.length,_=0,E=(y)=>{if(y+M>W)return!1;for(let D=0;D<M;D++)if(P[y+D]!==F[D])return!1;return!0};while(_<W){while(_<W&&P[_]===" ")_++;if(_>=W)break;let y="",D=P[_]==='"'||P[_]==="'";if(D){let k=P[_++];while(_<W&&P[_]!==k)y+=P[_++];if(_<W)_++}else{while(_<W&&!E(_)){let k=P[_];if(k==='"'||k==="'"){y+=k,_++;while(_<W&&P[_]!==k)y+=P[_++];if(_<W)y+=P[_++]}else y+=P[_++]}y=y.trim()}if(y)f.push({value:y,quoted:D});if(E(_))_+=M}return f}});var l=F0(h(),1);var K;((P)=>{P[P.Explore=0]="Explore",P[P.SkipSiblings=1]="SkipSiblings",P[P.NoExplore=2]="NoExplore",P[P.ReplaceParent=3]="ReplaceParent",P[P.DeleteParent=4]="DeleteParent",P[P.MergeParent=5]="MergeParent",P[P.ReplaceItem=6]="ReplaceItem",P[P.DeleteItem=7]="DeleteItem"})(K||={});class X{action;by;skipSiblings;reexplore;constructor(P,F,f,W){this.action=P,this.by=F,this.skipSiblings=f,this.reexplore=W}static _explore=new X(0);static _noExplore=new X(2);static _skipSiblings=new X(1);static _deleteParent=new X(4);static ReplaceParent(P,F){return new X(3,P,void 0,F)}static SkipSiblings(){return X._skipSiblings}static Explore(){return X._explore}static NoExplore(){return X._noExplore}static DeleteParent(){return X._deleteParent}static MergeParent(P){return new X(5,P)}static ReplaceItem(P,F){return new X(6,P,F)}static DeleteItem(P){return new X(7,void 0,P)}}var r=async(P,F)=>{let f=new WeakSet,W=[],M=[],_=async(y,D,k)=>{let Z=y===null,$=Z?X.Explore():await F({key:y,value:D,path:W,parent:k,parents:M});if(D&&typeof D==="object"&&$.action===0){if(f.has(D))return $;if(f.add(D),!Z)W.push(y),M.push(k);let C=D;while(await E(C,y,k))C=k[y];if(!Z)M.pop(),W.pop()}return $},E=async(y,D,k)=>{let Z=Object.keys(y),$=Z.length;for(let C=0;C<$;C++){let j=Z[C],S=y[j],O=await _(j,S,y),J=O.action;if(J===0||J===2)continue;if(J===6){if(y[j]=O.by,O.skipSiblings)return;continue}if(J===7){if(delete y[j],O.skipSiblings)return;continue}if(J===1)return;if(J===3){if(D===null)throw Error("Cannot replace root object");if(k[D]=O.by,O.reexplore)return!0;return}if(J===4){if(D===null)throw Error("Cannot delete root object");delete k[D];return}if(J===5)delete y[j],Object.assign(y,O.by)}};await _(null,P,null)};var Q0=Object.create,{getPrototypeOf:j0,defineProperty:g,getOwnPropertyNames:O0}=Object,$0=Object.prototype.hasOwnProperty,X0=(P,F,f)=>{f=P!=null?Q0(j0(P)):{};let W=F||!P||!P.__esModule?g(f,"default",{value:P,enumerable:!0}):f;for(let M of O0(P))if(!$0.call(W,M))g(W,M,{get:()=>P[M],enumerable:!0});return W},Z0=(P,F)=>()=>(F||P((F={exports:{}}).exports,F),F.exports),J0=Z0((P,F)=>{var{defineProperty:f,getOwnPropertyNames:W,getOwnPropertyDescriptor:M}=Object,_=Object.prototype.hasOwnProperty,E=new WeakMap,y=(C)=>{var j=E.get(C),S;if(j)return j;if(j=f({},"__esModule",{value:!0}),C&&typeof C==="object"||typeof C==="function")W(C).map((O)=>!_.call(j,O)&&f(j,O,{get:()=>C[O],enumerable:!(S=M(C,O))||S.enumerable}));return E.set(C,j),j},D=(C,j)=>{for(var S in j)f(C,S,{get:j[S],enumerable:!0,configurable:!0,set:(O)=>j[S]=()=>O})},k={};D(k,{splitWithQuotes:()=>$,splitNested:()=>Z}),F.exports=y(k);var Z=(C,j,S="(",O=")")=>{let J=0,Q="",L=[];for(let G of C){if(Q+=G,G===S)J++;if(G===O)J--;if(J===0&&G===j)L.push(Q.slice(0,-1)),Q=""}if(Q)L.push(Q);return L},$=(C,j=",")=>{let S=[],O=C.length,J=j.length,Q=0,L=(G)=>{if(G+J>O)return!1;for(let U=0;U<J;U++)if(C[G+U]!==j[U])return!1;return!0};while(Q<O){while(Q<O&&C[Q]===" ")Q++;if(Q>=O)break;let G="",U=C[Q]==='"'||C[Q]==="'";if(U){let T=C[Q++];while(Q<O&&C[Q]!==T)G+=C[Q++];if(Q<O)Q++}else{while(Q<O&&!L(Q)){let T=C[Q];if(T==='"'||T==="'"){G+=T,Q++;while(Q<O&&C[Q]!==T)G+=C[Q++];if(Q<O)G+=C[Q++]}else G+=C[Q++]}G=G.trim()}if(G)S.push({value:G,quoted:U});if(L(Q))Q+=J}return S}}),S0=X0(J0(),1),G0=/^\[([^=\]]*)([=]*)([^\]]*)\]$/,K0=/^([^[\]]*)\[([^\]]*)]$/,d=(P,F,f,W)=>{if(P.startsWith("{")&&P.endsWith("}")){let M=P.substring(1,P.length-1);return Y(F,M,f)?.toString()}return W?P:void 0},U0=(P,F,f,W)=>{let M=d(F,f,W);if(M)return Y(P,M,W);let _=G0.exec(F);if(_){let[,y,D,k]=_,Z=d(y.trim(),f,W,!0),$=d(k.trim(),f,W,!0);if(Array.isArray(P)&&(D==="="||D==="==")&&Z)return P.find((C)=>C?.[Z]==$)}let E=K0.exec(F);if(E){let[,y,D]=E;return P?.[y]?.[D]}return P?.[F]},Y=(P,F,f)=>{let W=void 0,M=void 0,_=F??"",E=($)=>{if(!$)return[$,!1];return $.endsWith("?")?[$.substring(0,$.length-1),!0]:[$,!1]},y=($,C)=>{let[j,S]=E(C.pop());if(!j){if(f?.set!==void 0&&M!==void 0&&W!==void 0)W[M]=f.set;return $}let O=U0($,j,P,f);if(O===void 0){if(S||f?.optional||f?.defaultValue!==void 0)return;throw Error(`Unknown path element: "${j}" in "${_}"`)}return W=$,M=j,y(O,C)},D=S0.splitNested(_,f?.separator??".","{","}"),k=void 0;if(D.length>0&&D[D.length-1].startsWith("?="))k=D.pop()?.substring(2);D.reverse();let Z=y(P,D);if(Z===void 0)return k??f?.defaultValue;return Z};var i=(P,F)=>{if(typeof P.value==="string"){if(P.quoted)return P.value;if(P.value.startsWith("[")&&P.value.endsWith("]")){let f=P.value.slice(1,-1);if(f.trim()==="")return[];return f.split(";").map((W)=>{let M=W.trim();if(!isNaN(+M))return+M;return M})}if(P.value.startsWith("{")&&P.value.endsWith("}")){if(P.value.slice(1,-1).trim()==="")return{}}if(P.value==="null")return null;if(P.value==="undefined")return;if(P.value.startsWith("@"))return P.value.slice(1);if(!isNaN(+P.value))return+P.value}return F(P.value)},N=(P,F,f,W,M,_)=>{let E=W?.(P)??P,y=M(E);if(y[0])return y[1];if(!F){let D=Y(f,P),k=M(D);if(k[0])return k[1]}throw Error(_)},H=(P,F,f,W,M)=>{let _=typeof P.types==="function"?P.types(W,F.value,M):P.types?.[W];if(!_||_==="ref")return i(F,(y)=>Y(f,y));let E=i(F,()=>F.value);if(Array.isArray(_)){if(!_.includes(E))throw Error(`Argument ${W.toString()} must be one of [${_.join(", ")}]: ${E}`);return E}if(typeof _==="string"){if(_.endsWith("?")){let y=_.slice(0,-1);if(F.value==="null")return X.ReplaceItem(null);if(F.value==="undefined")return X.ReplaceItem(void 0);if(F.value==="")return"";_=y}switch(_){case"any":return E;case"array":return N(E,F.quoted,f,null,(y)=>[Array.isArray(y),y],`Argument ${W.toString()} must be an array: ${E}`);case"object":return N(E,F.quoted,f,null,(y)=>[typeof y==="object"&&y!==null,y],`Argument ${W.toString()} must be an object: ${E}`);case"number":return N(E,F.quoted,f,(y)=>Number(y),(y)=>[!isNaN(y),y],`Argument ${W.toString()} must be a number: ${E}`);case"boolean":return N(E,F.quoted,f,null,(y)=>{if([!0,"true","1",1,"yes","on"].includes(y))return[!0,!0];if([!1,"false","0",0,"no","off"].includes(y))return[!0,!1];if([null,"null","undefined",void 0,""].includes(y))return[!0,!1];if(Array.isArray(y))return[!0,y.length>0];return[!1,!1]},`Argument ${W.toString()} must be a boolean: ${E}`);case"string":return E.toString();default:throw Error(`Unknown type for argument ${W.toString()}: ${_}`)}}return _(E,f,W,F.quoted)};var b=(P,F)=>{let f=P?.[F];if(f===void 0)throw Error(`Unhandled field processor type: ${F}`);return typeof f==="function"?{options:{},fn:f}:{options:f,fn:f.fn}},V=(P)=>!P.quoted&&P.value.startsWith("."),Y0=(P)=>{let F={};for(let f of P){if(!V(f))continue;let W=f.value.indexOf("="),M=W>-1?f.value.slice(1,W):f.value.slice(1),_=W>-1?f.value.slice(W+1):"";if(_.length>=2){let E=_[0],y=_[_.length-1];if(E==='"'&&y==='"'||E==="'"&&y==="'")_=_.slice(1,-1)}if(!F[M])F[M]=[];F[M].push(_)}return F},e=(P,F,f)=>{let W=l.splitWithQuotes(P??""),M=Y0(W),_=W.filter((y)=>!V(y)),E=F.options.processArgs===!1?[]:_.map((y,D)=>H(F.options,y,f,D,_));return{rawArgs:_,parsedArgs:E,tags:M}};var L0=(P)=>{return P!==null&&typeof P==="object"&&"action"in P},p=(P,F)=>F.keys!==void 0&&P.key.startsWith(".")&&F.keys[P.key.substring(1)]!==void 0,n=async(P,F,f,W)=>{let{key:M,parent:_}=P,E=b(W.keys,M.substring(1));if(E.options.processArgs!==!1&&(typeof E.options.types==="function"||E.options.types?.[0]!==void 0))P.value=H(E.options,{value:P.value,quoted:!1},f,0,[]);if(typeof P.value!=="string")await B(P.value,{...W,root:{...f,parent:P.parent,parents:P.parents},filters:[...W.filters??[],...E.options.filters??[]]});let y=await E.fn({path:F,root:f,parent:_,key:M,options:W,value:P.value,args:[],rawArgs:[],tags:{}});return L0(y)?y:X.ReplaceParent(y)};var A=(P)=>{let F=[],f=0;while(f<P.length)if(P[f]==="$"&&P[f+1]==="("&&(f===0||P[f-1]!=="\\")){let W=f;f+=2;let M=1;for(;f<P.length;f++)if(P[f]==="(")M++;else if(P[f]===")"){if(M--,M===0){F.push([W,f]);break}}if(M!==0)throw Error(`Unmatched opening $( at position ${W.toString()}`);f++}else f++;return F};var w=Symbol.for("@homedev/fields:OverrideResult"),v=(P)=>({[w]:!0,value:P}),T0=(P)=>{return P!==null&&typeof P==="object"&&w in P&&P[w]===!0},c=async(P,F,f)=>{for(let W=F.length-1;W>=0;W--){let[M,_]=F[W],E=P.slice(M+2,_),y=await c(E,A(E),f);if(typeof y==="object")return y;let D=await f(y,P);if(T0(D))return D.value;P=P.slice(0,M)+D+P.slice(_+1)}return P},u=async(P,F)=>c(P,A(P),F);var I0=(P)=>{let F=/%{\s*section\s+([\w\d_-]+)\s*}([\s\S]*?)%{\s*endsection\s+\1\s*}/g,f,W=[],M=[];while((f=F.exec(P))!==null){let[y,D,k]=f,Z=f.index,$=Z+y.length;if(P[$]===`
2
- `)$++;M.push({start:Z,end:$,name:D,body:k})}let _=[],E=0;for(let{start:y,end:D,name:k,body:Z}of M){if(y>E)_.push(P.slice(E,y));E=D;let $={},C=Z,j=/(^|\r?\n)[ \t]*---[ \t]*(\r?\n|$)/m.exec(Z);if(j){let S=Z.slice(0,j.index),O=j.index+j[0].length;C=Z.slice(O);let J=S.trim();if(J.length>0)try{$=Bun.YAML.parse(J)??{}}catch(Q){throw Error(`Failed to parse YAML config for section ${k}: ${Q.message}`)}}else if(/^\r?\n/.test(C))C=C.replace(/^\r?\n/,"");if(/[ \t]*\r?\n$/.test(C))C=C.replace(/[\t]*\r?\n$/,"");W.push({name:k,config:$,content:C})}if(E<P.length)_.push(P.slice(E));return{sections:W,content:_.join("")}},t=async(P,F,f,W)=>{let M=F?.onSection?I0(P):null;if(!M)return[P,null];let _=M.content;for(let E of M.sections){let y=await I(f,E.name,W,F);if(y.action===K.ReplaceItem)E.name=y.by;if(Object.keys(E.config).length>0){if(await F.onSectionConfig?.(E,f,W,F)!==!1)await B(E.config,F)}let D=await F.onSection(E,f,W,F);if(E.trim)E.content=E.content.trim();if(E.indent)E.content=E.content.split(`
3
- `).map((k)=>" ".repeat(E.indent)+k).join(`
4
- `);if(D===!0||E.show)_=_+E.content;else if(typeof D==="string")_=_+D}return[_,M]};var N0=(P)=>{return P!==null&&typeof P==="object"&&"action"in P},H0=/([\w\d.-_/]+):(.+)/,b0=async(P,F,f,W)=>{let M=await(async()=>{let _=H0.exec(P);if(!_)return await Y(F,P);let[E,y,D]=_,k=b(W.sources,y),Z=e(D,k,F);return await k.fn({args:Z.parsedArgs,rawArgs:Z.rawArgs,tags:Z.tags,key:y,options:W,root:F,path:f,value:null})})();if(M===null||M===void 0)return"";if(typeof M==="object")return v(M);return M},I=async(P,F,f,W)=>{let[M,_]=await t(F,W,P,f),E=await u(M,(y)=>b0(y,f,P,W));if(N0(E))return E;if(E===M){if(_?.sections.length)return X.ReplaceItem(E);return X.Explore()}if(typeof E==="string"){let y=await I(P,E,f,W);if(y.action!==K.Explore)return y}return X.ReplaceItem(E)};var B=async(P,F)=>{return F??={},await r(P,async(f)=>{let W=[...f.path,f.key].join(".");if(F?.filters?.length&&F.filters.some((y)=>y.test(W)))return X.NoExplore();let M=f.path.length===0,_=f.parents.length>0?f.parents.toReversed():[];if(M){if(_.length>0)throw Error("Root object should not have a parent");_=F?.root?.parents?[F.root.parent,...F.root.parents.toReversed()]:[]}let E={...P,...F.root,this:f.parent,parent:_.length>0?_[0]:null,parents:_};try{if(f.key.startsWith("$"))return X.NoExplore();let y=X.Explore();if(typeof f.value==="string")switch(y=await I(W,f.value,E,F),y.action){case K.Explore:break;case K.ReplaceItem:f.value=y.by;break;default:return y}if(p(f,F))y=await n(f,W,E,F);return y}catch(y){throw Error(`${y.message}
5
- (${W})`)}}),P};var s=(P,F)=>F?{fn:(f)=>P(...f.args),types:F}:(f)=>P(...f.args),jP=(P,F)=>Object.fromEntries(P.map((f)=>[f.name,s(f,F?.types?.[f.name])])),OP=(P,F)=>Object.fromEntries((F?.keys??Object.keys(P)).map((f)=>[f,s(P[f],F?.types?.[f])]));export{B as processFields,OP as makeFieldProcessorMap,jP as makeFieldProcessorList,s as makeFieldProcessor,b as getProcessor,e as getArgs};
1
+ var o=Object.create;var{getPrototypeOf:a,defineProperty:R,getOwnPropertyNames:P0}=Object;var f0=Object.prototype.hasOwnProperty;var F0=(P,F,f)=>{f=P!=null?o(a(P)):{};let W=F||!P||!P.__esModule?R(f,"default",{value:P,enumerable:!0}):f;for(let M of P0(P))if(!f0.call(W,M))R(W,M,{get:()=>P[M],enumerable:!0});return W};var y0=(P,F)=>()=>(F||P((F={exports:{}}).exports,F),F.exports);var x=y0((z0,h)=>{var{defineProperty:z,getOwnPropertyNames:W0,getOwnPropertyDescriptor:_0}=Object,E0=Object.prototype.hasOwnProperty,q=new WeakMap,M0=(P)=>{var F=q.get(P),f;if(F)return F;if(F=z({},"__esModule",{value:!0}),P&&typeof P==="object"||typeof P==="function")W0(P).map((W)=>!E0.call(F,W)&&z(F,W,{get:()=>P[W],enumerable:!(f=_0(P,W))||f.enumerable}));return q.set(P,F),F},D0=(P,F)=>{for(var f in F)z(P,f,{get:F[f],enumerable:!0,configurable:!0,set:(W)=>F[f]=()=>W})},m={};D0(m,{splitWithQuotes:()=>Q0,splitNested:()=>C0});h.exports=M0(m);var C0=(P,F,f="(",W=")")=>{let M=0,_="",E=[];for(let y of P){if(_+=y,y===f)M++;if(y===W)M--;if(M===0&&y===F)E.push(_.slice(0,-1)),_=""}if(_)E.push(_);return E},Q0=(P,F=",")=>{let f=[],W=P.length,M=F.length,_=0,E=(y)=>{if(y+M>W)return!1;for(let D=0;D<M;D++)if(P[y+D]!==F[D])return!1;return!0};while(_<W){while(_<W&&P[_]===" ")_++;if(_>=W)break;let y="",D=P[_]==='"'||P[_]==="'";if(D){let Q=P[_++];while(_<W&&P[_]!==Q)y+=P[_++];if(_<W)_++}else{while(_<W&&!E(_)){let Q=P[_];if(Q==='"'||Q==="'"){y+=Q,_++;while(_<W&&P[_]!==Q)y+=P[_++];if(_<W)y+=P[_++]}else y+=P[_++]}y=y.trim()}if(y)f.push({value:y,quoted:D});if(E(_))_+=M}return f}});var i=F0(x(),1);var U;((P)=>{P[P.Explore=0]="Explore",P[P.SkipSiblings=1]="SkipSiblings",P[P.NoExplore=2]="NoExplore",P[P.ReplaceParent=3]="ReplaceParent",P[P.DeleteParent=4]="DeleteParent",P[P.MergeParent=5]="MergeParent",P[P.ReplaceItem=6]="ReplaceItem",P[P.DeleteItem=7]="DeleteItem"})(U||={});class Z{action;by;skipSiblings;reexplore;constructor(P,F,f,W){this.action=P,this.by=F,this.skipSiblings=f,this.reexplore=W}static _explore=new Z(0);static _noExplore=new Z(2);static _skipSiblings=new Z(1);static _deleteParent=new Z(4);static ReplaceParent(P,F){return new Z(3,P,void 0,F)}static SkipSiblings(){return Z._skipSiblings}static Explore(){return Z._explore}static NoExplore(){return Z._noExplore}static DeleteParent(){return Z._deleteParent}static MergeParent(P){return new Z(5,P)}static ReplaceItem(P,F){return new Z(6,P,F)}static DeleteItem(P){return new Z(7,void 0,P)}}var g=async(P,F)=>{let f=new WeakSet,W=[],M=[],_=async(y,D,Q)=>{let $=y===null,X=$?Z.Explore():await F({key:y,value:D,path:W,parent:Q,parents:M});if(D&&typeof D==="object"&&X.action===0){if(f.has(D))return X;if(f.add(D),!$)W.push(y),M.push(Q);let C=D;while(await E(C,y,Q))C=Q[y];if(!$)M.pop(),W.pop()}return X},E=async(y,D,Q)=>{let $=Object.keys(y),X=$.length;for(let C=0;C<X;C++){let k=$[C],J=y[k],O=await _(k,J,y),G=O.action;if(G===0||G===2)continue;if(G===6){if(y[k]=O.by,O.skipSiblings)return;continue}if(G===7){if(delete y[k],O.skipSiblings)return;continue}if(G===1)return;if(G===3){if(D===null)throw Error("Cannot replace root object");if(Q[D]=O.by,O.reexplore)return!0;return}if(G===4){if(D===null)throw Error("Cannot delete root object");delete Q[D];return}if(G===5)delete y[k],Object.assign(y,O.by)}};await _(null,P,null)};var j0=Object.create,{getPrototypeOf:k0,defineProperty:r,getOwnPropertyNames:O0}=Object,$0=Object.prototype.hasOwnProperty,X0=(P,F,f)=>{f=P!=null?j0(k0(P)):{};let W=F||!P||!P.__esModule?r(f,"default",{value:P,enumerable:!0}):f;for(let M of O0(P))if(!$0.call(W,M))r(W,M,{get:()=>P[M],enumerable:!0});return W},Z0=(P,F)=>()=>(F||P((F={exports:{}}).exports,F),F.exports),J0=Z0((P,F)=>{var{defineProperty:f,getOwnPropertyNames:W,getOwnPropertyDescriptor:M}=Object,_=Object.prototype.hasOwnProperty,E=new WeakMap,y=(C)=>{var k=E.get(C),J;if(k)return k;if(k=f({},"__esModule",{value:!0}),C&&typeof C==="object"||typeof C==="function")W(C).map((O)=>!_.call(k,O)&&f(k,O,{get:()=>C[O],enumerable:!(J=M(C,O))||J.enumerable}));return E.set(C,k),k},D=(C,k)=>{for(var J in k)f(C,J,{get:k[J],enumerable:!0,configurable:!0,set:(O)=>k[J]=()=>O})},Q={};D(Q,{splitWithQuotes:()=>X,splitNested:()=>$}),F.exports=y(Q);var $=(C,k,J="(",O=")")=>{let G=0,j="",S=[];for(let K of C){if(j+=K,K===J)G++;if(K===O)G--;if(G===0&&K===k)S.push(j.slice(0,-1)),j=""}if(j)S.push(j);return S},X=(C,k=",")=>{let J=[],O=C.length,G=k.length,j=0,S=(K)=>{if(K+G>O)return!1;for(let Y=0;Y<G;Y++)if(C[K+Y]!==k[Y])return!1;return!0};while(j<O){while(j<O&&C[j]===" ")j++;if(j>=O)break;let K="",Y=C[j]==='"'||C[j]==="'";if(Y){let T=C[j++];while(j<O&&C[j]!==T)K+=C[j++];if(j<O)j++}else{while(j<O&&!S(j)){let T=C[j];if(T==='"'||T==="'"){K+=T,j++;while(j<O&&C[j]!==T)K+=C[j++];if(j<O)K+=C[j++]}else K+=C[j++]}K=K.trim()}if(K)J.push({value:K,quoted:Y});if(S(j))j+=G}return J}}),G0=X0(J0(),1),K0=/^\[([^=\]]*)([=]*)([^\]]*)\]$/,S0=/^([^[\]]*)\[([^\]]*)]$/,A=(P,F,f,W)=>{if(P.startsWith("{")&&P.endsWith("}")){let M=P.substring(1,P.length-1);return L(F,M,f)?.toString()}return W?P:void 0},U0=(P,F,f,W)=>{let M=A(F,f,W);if(M)return L(P,M,W);let _=K0.exec(F);if(_){let[,y,D,Q]=_,$=A(y.trim(),f,W,!0),X=A(Q.trim(),f,W,!0);if(Array.isArray(P)&&(D==="="||D==="==")&&$)return P.find((C)=>C?.[$]==X)}let E=S0.exec(F);if(E){let[,y,D]=E;return P?.[y]?.[D]}return P?.[F]},L=(P,F,f)=>{let W=void 0,M=void 0,_=F??"",E=(X)=>{if(!X)return[X,!1];return X.endsWith("?")?[X.substring(0,X.length-1),!0]:[X,!1]},y=(X,C)=>{let[k,J]=E(C.pop());if(!k){if(f?.set!==void 0&&M!==void 0&&W!==void 0)W[M]=f.set;return X}let O=U0(X,k,P,f);if(O===void 0){if(J||f?.optional||f?.defaultValue!==void 0)return;throw Error(`Unknown path element: "${k}" in "${_}"`)}return W=X,M=k,y(O,C)},D=G0.splitNested(_,f?.separator??".","{","}"),Q=void 0;if(D.length>0&&D[D.length-1].startsWith("?="))Q=D.pop()?.substring(2);D.reverse();let $=y(P,D);if($===void 0)return Q??f?.defaultValue;return $};var V=(P,F)=>{if(typeof P.value==="string"){if(P.quoted)return P.value;if(P.value.startsWith("[")&&P.value.endsWith("]")){let f=P.value.slice(1,-1);if(f.trim()==="")return[];return f.split(";").map((W)=>{let M=W.trim();if(!isNaN(+M))return+M;return M})}if(P.value.startsWith("{")&&P.value.endsWith("}")){if(P.value.slice(1,-1).trim()==="")return{}}if(P.value==="null")return null;if(P.value==="undefined")return;if(P.value.startsWith("@"))return P.value.slice(1);if(!isNaN(+P.value))return+P.value}return F(P.value)},N=(P,F,f,W,M,_)=>{let E=W?.(P)??P,y=M(E);if(y[0])return y[1];if(!F){let D=L(f,P),Q=M(D);if(Q[0])return Q[1]}throw Error(_)},H=(P,F,f,W,M)=>{let _=typeof P.types==="function"?P.types(W,F.value,M):P.types?.[W];if(!_||_==="ref")return V(F,(y)=>L(f,y));let E=V(F,()=>F.value);if(Array.isArray(_)){if(!_.includes(E))throw Error(`Argument ${W.toString()} must be one of [${_.join(", ")}]: ${E}`);return E}if(typeof _==="string"){if(_.endsWith("?")){let y=_.slice(0,-1);if(F.value==="null")return Z.ReplaceItem(null);if(F.value==="undefined")return Z.ReplaceItem(void 0);if(F.value==="")return"";_=y}switch(_){case"any":return E;case"array":return N(E,F.quoted,f,null,(y)=>[Array.isArray(y),y],`Argument ${W.toString()} must be an array: ${E}`);case"object":return N(E,F.quoted,f,null,(y)=>[typeof y==="object"&&y!==null,y],`Argument ${W.toString()} must be an object: ${E}`);case"number":return N(E,F.quoted,f,(y)=>Number(y),(y)=>[!isNaN(y),y],`Argument ${W.toString()} must be a number: ${E}`);case"boolean":return N(E,F.quoted,f,null,(y)=>{if([!0,"true","1",1,"yes","on"].includes(y))return[!0,!0];if([!1,"false","0",0,"no","off"].includes(y))return[!0,!1];if([null,"null","undefined",void 0,""].includes(y))return[!0,!1];if(Array.isArray(y))return[!0,y.length>0];return[!1,!1]},`Argument ${W.toString()} must be a boolean: ${E}`);case"string":return E.toString();default:throw Error(`Unknown type for argument ${W.toString()}: ${_}`)}}return _(E,f,W,F.quoted)};var b=(P,F)=>{let f=P?.[F];if(f===void 0)throw Error(`Unhandled field processor type: ${F}`);return typeof f==="function"?{options:{},fn:f}:{options:f,fn:f.fn}},l=(P)=>!P.quoted&&P.value.startsWith("."),Y0=(P)=>{let F={};for(let f of P){if(!l(f))continue;let W=f.value.indexOf("="),M=W>-1?f.value.slice(1,W):f.value.slice(1),_=W>-1?f.value.slice(W+1):"";if(_.length>=2){let E=_[0],y=_[_.length-1];if(E==='"'&&y==='"'||E==="'"&&y==="'")_=_.slice(1,-1)}if(!F[M])F[M]=[];F[M].push(_)}return F},e=(P,F,f)=>{let W=i.splitWithQuotes(P??""),M=Y0(W),_=W.filter((y)=>!l(y)),E=F.options.processArgs===!1?[]:_.map((y,D)=>H(F.options,y,f,D,_));return{rawArgs:_,parsedArgs:E,tags:M}};var L0=(P)=>{return P!==null&&typeof P==="object"&&"action"in P},n=(P,F)=>F.keys!==void 0&&P.key.startsWith(".")&&F.keys[P.key.substring(1)]!==void 0,p=async(P,F,f,W)=>{let{key:M,parent:_}=P,E=b(W.keys,M.substring(1));if(E.options.processArgs!==!1&&(typeof E.options.types==="function"||E.options.types?.[0]!==void 0))P.value=H(E.options,{value:P.value,quoted:!1},f,0,[]);if(typeof P.value!=="string")await B(P.value,{...W,root:{...f,parent:P.parent,parents:P.parents},filters:[...W.filters??[],...E.options.filters??[]]});let y=await E.fn({path:F,root:f,parent:_,key:M,options:W,value:P.value,args:[],rawArgs:[],tags:{}});return L0(y)?y:Z.ReplaceParent(y)};var d=(P)=>{let F=[],f=0;while(f<P.length)if(P[f]==="$"&&P[f+1]==="("&&(f===0||P[f-1]!=="\\")){let W=f;f+=2;let M=1;for(;f<P.length;f++)if(P[f]==="(")M++;else if(P[f]===")"){if(M--,M===0){F.push([W,f]);break}}if(M!==0)throw Error(`Unmatched opening $( at position ${W.toString()}`);f++}else f++;return F};var w=Symbol.for("@homedev/fields:OverrideResult"),v=(P)=>({[w]:!0,value:P}),T0=(P)=>{return P!==null&&typeof P==="object"&&w in P&&P[w]===!0},u=async(P,F,f)=>{for(let W=F.length-1;W>=0;W--){let[M,_]=F[W],E=P.slice(M+2,_),y=await u(E,d(E),f);if(typeof y==="object")return y;let D=await f(y,P);if(T0(D))return D.value;P=P.slice(0,M)+D+P.slice(_+1)}return P},c=async(P,F)=>u(P,d(P),F);var I0=(P)=>{let F=/%{\s*section\s+([\w\d_-]+)\s*}([\s\S]*?)%{\s*endsection\s+\1\s*}/g,f,W=[],M=[];while((f=F.exec(P))!==null){let[y,D,Q]=f,$=f.index,X=$+y.length;if(P[X]===`
2
+ `)X++;M.push({start:$,end:X,name:D,body:Q})}let _=[],E=0;for(let{start:y,end:D,name:Q,body:$}of M){if(y>E)_.push(P.slice(E,y));E=D;let X={},C=$,k=/(^|\r?\n)[ \t]*---[ \t]*(\r?\n|$)/m.exec($);if(k){let O=$.slice(0,k.index),G=k.index+k[0].length;C=$.slice(G);let j=O.trim();if(j.length>0)try{X=Bun.YAML.parse(j)??{}}catch(S){throw Error(`Failed to parse YAML config for section ${Q}: ${S.message}`)}}else if(/^\r?\n/.test(C))C=C.replace(/^\r?\n/,"");if(/[ \t]*\r?\n$/.test(C))C=C.replace(/[\t]*\r?\n$/,"");let J=`__FIELD_SECTION_${W.length.toString()}__`;W.push({name:Q,config:X,content:C,placeholder:J}),_.push(J)}if(E<P.length)_.push(P.slice(E));return{sections:W,content:_.join("")}},t=async(P,F,f,W)=>{let M=F?.onSection?I0(P):null;if(!M)return[P,null];let _={content:M.content,root:W,path:f,options:F};for(let E of M.sections){let y=await I(f,E.name,W,F);if(y.action===U.ReplaceItem)E.name=y.by;if(Object.keys(E.config).length>0){if(await F.onSectionConfig?.(E,_)!==!1)await B(E.config,F)}let D=await F.onSection(E,_);if(E.trim)E.content=E.content.trim();if(E.indent)E.content=E.content.split(`
3
+ `).map(($)=>" ".repeat(E.indent)+$).join(`
4
+ `);let Q="";if(D===!0||E.show)Q=E.content;else if(typeof D==="string")Q=D;_.content=_.content.replace(E.placeholder,Q)}return[_.content,M]};var N0=(P)=>{return P!==null&&typeof P==="object"&&"action"in P},H0=/([\w\d.-_/]+):(.+)/,b0=async(P,F,f,W)=>{let M=await(async()=>{let _=H0.exec(P);if(!_)return await L(F,P);let[E,y,D]=_,Q=b(W.sources,y),$=e(D,Q,F);return await Q.fn({args:$.parsedArgs,rawArgs:$.rawArgs,tags:$.tags,key:y,options:W,root:F,path:f,value:null})})();if(M===null||M===void 0)return"";if(typeof M==="object")return v(M);return M},I=async(P,F,f,W)=>{let[M,_]=await t(F,W,P,f),E=await c(M,(y)=>b0(y,f,P,W));if(N0(E))return E;if(E===M){if(_?.sections.length)return Z.ReplaceItem(E);return Z.Explore()}if(typeof E==="string"){let y=await I(P,E,f,W);if(y.action!==U.Explore)return y}return Z.ReplaceItem(E)};var B=async(P,F)=>{return F??={},await g(P,async(f)=>{let W=[...f.path,f.key].join(".");if(F?.filters?.length&&F.filters.some((y)=>y.test(W)))return Z.NoExplore();let M=f.path.length===0,_=f.parents.length>0?f.parents.toReversed():[];if(M){if(_.length>0)throw Error("Root object should not have a parent");_=F?.root?.parents?[F.root.parent,...F.root.parents.toReversed()]:[]}let E={...P,...F.root,this:f.parent,parent:_.length>0?_[0]:null,parents:_};try{if(f.key.startsWith("$"))return Z.NoExplore();let y=Z.Explore();if(typeof f.value==="string")switch(y=await I(W,f.value,E,F),y.action){case U.Explore:break;case U.ReplaceItem:f.value=y.by;break;default:return y}if(n(f,F))y=await p(f,W,E,F);return y}catch(y){throw Error(`${y.message}
5
+ (${W})`)}}),P};var s=(P,F)=>F?{fn:(f)=>P(...f.args),types:F}:(f)=>P(...f.args),kP=(P,F)=>Object.fromEntries(P.map((f)=>[f.name,s(f,F?.types?.[f.name])])),OP=(P,F)=>Object.fromEntries((F?.keys??Object.keys(P)).map((f)=>[f,s(P[f],F?.types?.[f])]));export{B as processFields,OP as makeFieldProcessorMap,kP as makeFieldProcessorList,s as makeFieldProcessor,b as getProcessor,e as getArgs};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@homedev/fields",
3
- "version": "1.2.21",
3
+ "version": "1.2.22",
4
4
  "description": "field utilities",
5
5
  "author": "julzor",
6
6
  "license": "ISC",