@homedev/objector 1.2.28 → 1.2.30

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.js CHANGED
@@ -1,11 +1,13 @@
1
- var Gr=Object.create;var{getPrototypeOf:Hr,defineProperty:C,getOwnPropertyNames:K,getOwnPropertyDescriptor:Qr}=Object,B=Object.prototype.hasOwnProperty;var A=(r,e,o)=>{o=r!=null?Gr(Hr(r)):{};let n=e||!r||!r.__esModule?C(o,"default",{value:r,enumerable:!0}):o;for(let i of K(r))if(!B.call(n,i))C(n,i,{get:()=>r[i],enumerable:!0});return n},_=new WeakMap,Wr=(r)=>{var e=_.get(r),o;if(e)return e;if(e=C({},"__esModule",{value:!0}),r&&typeof r==="object"||typeof r==="function")K(r).map((n)=>!B.call(e,n)&&C(e,n,{get:()=>r[n],enumerable:!(o=Qr(r,n))||o.enumerable}));return _.set(r,e),e};var Xr=(r,e)=>{for(var o in e)C(r,o,{get:e[o],enumerable:!0,configurable:!0,set:(n)=>e[o]=()=>n})};var Zr={};Xr(Zr,{Objector:()=>_r});module.exports=Wr(Zr);var qr=require("@homedev/fields"),L=require("@homedev/files"),Yr=require("@homedev/merge"),q=A(require("path"));var G=require("@homedev/navigate"),H=(r)=>({output:(e)=>{delete e.parent[e.key];for(let o of Array.isArray(e.value)?e.value:[e.value])if(typeof o==="string")r.output({name:o,value:e.parent});else r.output({...o,value:o.value??e.parent});return G.NavigateResult.SkipSiblings()}});var Q=require("@homedev/navigate"),W=A(require("path")),X=(r)=>({load:async(e)=>{let o=e.options.globalContext;for(let{file:n}of Array.isArray(e.value)?e.value:[e.value]){if(!n)throw Error("File reference required");await r.load(n,o.file&&W.default.dirname(o.file))}return Q.NavigateResult.DeleteItem()}});var er=require("@homedev/fields"),$=require("@homedev/merge");var Z=require("@homedev/select"),z=(r)=>{if(typeof r.value==="string")return r.parent;let e=r.value.model;if(!e)return r.parent;if(typeof e==="string")return Z.select(r.root,e);return e};var J=require("@homedev/select"),V=(r)=>{if(typeof r.value==="string")return J.select(r.root,r.value);if(Array.isArray(r.value))return r.value;let e=r.value;if(typeof e.from==="string")return J.select(r.root,e.from);return e.from};var x=require("@homedev/fields"),v=require("@homedev/select"),rr=async(r,e)=>{let o=r.value;if(o.selector===void 0)return e;if(typeof o.selector!=="string"){let n=JSON.parse(JSON.stringify(o.selector));return await x.processFields(n,{...r.options,root:{...r.root,result:e}}),n}return await v.select({...r.root,result:e},o.selector)};var c=(r)=>globalThis.structuredClone!==void 0?structuredClone(r):JSON.parse(JSON.stringify(r));var g={and:(...r)=>r.every((e)=>!!e),or:(...r)=>r.some((e)=>!!e),xor:(...r)=>r.filter((e)=>!!e).length===1,true:(...r)=>r.every((e)=>!!e),false:(...r)=>r.every((e)=>!e),eq:(...r)=>r.every((e)=>e===r[0]),ne:(...r)=>r.some((e)=>e!==r[0]),lt:(...r)=>typeof r[0]==="number"&&r.slice(1).every((e)=>typeof e==="number"&&r[0]<e),le:(...r)=>typeof r[0]==="number"&&r.slice(1).every((e)=>typeof e==="number"&&r[0]<=e),gt:(...r)=>typeof r[0]==="number"&&r.slice(1).every((e)=>typeof e==="number"&&r[0]>e),ge:(...r)=>typeof r[0]==="number"&&r.slice(1).every((e)=>typeof e==="number"&&r[0]>=e),in:(r,e)=>{if(Array.isArray(e))return e.includes(r);if(typeof r==="string")return r.includes(e);if(Array.isArray(r))return r.includes(e);return!1},notin:(r,e)=>!g.in(r,e),contains:(r,e)=>r.includes(e),notcontains:(r,e)=>!r.includes(e),containsi:(r,e)=>r.toLowerCase().includes(e.toLowerCase()),notcontainsi:(r,e)=>!r.toLowerCase().includes(e.toLowerCase()),null:(...r)=>r.every((e)=>e===null||e===void 0),notnull:(...r)=>r.every((e)=>e!==null&&e!==void 0),empty:(...r)=>r.every((e)=>e===""),notempty:(...r)=>r.every((e)=>e!==""),nullorempty:(...r)=>r.every((e)=>e===null||e===void 0||e===""),notnullorempty:(...r)=>r.every((e)=>e!==null&&e!==void 0&&e!=="")},E={and:()=>"boolean",or:()=>"boolean",xor:()=>"boolean",true:()=>"boolean",false:()=>"boolean",lt:()=>"number",le:()=>"number",gt:()=>"number",ge:()=>"number"};var or=()=>({each:{filters:[/select|model/],fn:async(r)=>{let e=r.value;delete r.parent[r.key];let o=await V(r),n=await z(r);if(!Array.isArray(o))throw Error('Key "each" requires a source list');if(n===void 0)throw Error('Key "each" must define a model');if(e.extend?.model)n=$.mergeAll([e.model,...Array.isArray(e.extend.model)?e.extend.model:[e.extend.model]]);let i=[];for(let t=0;t<o.length;t++){let s=c(n);if(await er.processFields(s,{...r.options,root:{...r.root,index:t,item:o[t],instance:s}}),e.extend?.result){let f=e.extend.result;s=$.mergeAll([s,...Array.isArray(f)?f:[f]])}i.push(await rr(r,s))}return i}}});var nr=require("@homedev/select"),tr=()=>({concat:async(r)=>{let e=[];for(let o of Array.isArray(r.value)?r.value:[r.value])e.push(...await nr.select(r.root,o));return e.filter((o)=>o!==void 0)}});var sr=require("@homedev/fields"),ir=require("@homedev/merge"),fr=require("@homedev/navigate"),mr=require("@homedev/select");var ar=()=>({extends:async(r)=>{let e=async(o,n)=>{for(let i of Array.isArray(n)?n:[n]){let t=await mr.select(r.root,i),s=c(t);if(s[r.key])await e(s,s[r.key]);await sr.processFields(s,{...r.options}),ir.merge(s,o),delete o[r.key]}};return await e(r.parent,r.value),fr.NavigateResult.Explore()}});var pr=require("@homedev/fields"),d=require("@homedev/navigate"),lr=(r)=>({skip:{types:{0:"boolean"},fn:(e)=>e.value?d.NavigateResult.DeleteParent():d.NavigateResult.DeleteItem()},metadata:({path:e,value:o})=>{return r.metadata(e,o),d.NavigateResult.DeleteItem()},if:{types:{0:"boolean"},fn:async(e)=>{let o=e.parent[".then"],n=e.parent[".else"];if(o!==void 0)delete e.parent[".then"];if(n!==void 0)delete e.parent[".else"];let i=e.value?o:n;if(i===void 0)return d.NavigateResult.DeleteItem();if(typeof i==="string")return(await pr.processFields({value:i},{...e.options,root:{...e.root}})).value;return d.NavigateResult.ReplaceParent(i,!0)}},switch:(e)=>{let o=e.value;if(!o.cases)throw Error("Missing cases for switch");if(o.cases[o.from]!==void 0)return d.NavigateResult.ReplaceParent(o.cases[o.from],!0);if(o.default!==void 0)return d.NavigateResult.ReplaceParent(o.default,!0);return d.NavigateResult.DeleteParent()}});var yr=require("@homedev/merge"),ur=require("@homedev/select"),dr=()=>({from:async({root:r,parent:e,value:o})=>{let n=await ur.select(r,o);if(n===null||n===void 0)throw Error(`Unable to resolve reference: ${o}`);if(e.content){if(Array.isArray(e.content)&&Array.isArray(n))return[...n,...e.content];return yr.merge(n,e.content),e.content}return n}});var cr=require("@homedev/navigate"),T=A(require("node:vm")),gr=(r)=>({modules:async(e)=>{for(let[o,n]of Object.entries(e.value)){let i=T.default.createContext({console,objector:r,document:e.root}),t=new T.default.SourceTextModule(n,{identifier:o,context:i});await t.link((s)=>{throw Error(`Module ${s} is not allowed`)}),await t.evaluate(),r.sources(Object.fromEntries(Object.entries(t.namespace).map(([s,f])=>[`${o}.${s}`,(m)=>f(m,...m.args)])))}return cr.NavigateResult.DeleteItem()}});var w=require("@homedev/files"),U=A(require("fs/promises")),M=A(require("path")),wr=(r)=>({include:async(e)=>{let{file:o}=e.options.globalContext;return await w.globMap(e.args[0],{cwd:M.default.dirname(o),filter:(n)=>M.default.basename(o)!==n,map:async(n)=>r.load(n,M.default.dirname(o),{parent:e.root})})},exists:async({args:[e]})=>await w.exists(e),file:async(e)=>await U.default.readFile(await w.locate(e.args[0],r.getIncludeDirectories())).then((o)=>o.toString()),scan:async(e)=>{let o=[],i=(()=>{let f=e.args[2]??["**/node_modules/**"],m=typeof f==="string"?f.split(",").map((p)=>p.trim()):f;if(!Array.isArray(m))throw Error("Scan exclusion must be a list");return m})(),{file:t}=e.options.globalContext,s=e.args[1]?await w.locate(e.args[1],r.getIncludeDirectories()):M.default.dirname(t);for await(let f of U.default.glob(e.args[0],{cwd:s,exclude:(m)=>i.some((p)=>M.default.matchesGlob(m,p))}))o.push(f);return o}});var br=require("@homedev/fields"),Fr=()=>br.makeFieldProcessorMap({env:(r)=>process.env[r]});var Ar=require("@homedev/fields"),y=require("@homedev/string-utils"),N=A(require("yaml"));var S=(r,e=0,o)=>{let n=" ".repeat(e),i=" ".repeat(e+1);if(r===null||r===void 0)return"null";else if(typeof r==="boolean")return String(r);else if(typeof r==="number")return String(r);else if(typeof r==="string")return`"${r.replace(/\\/g,"\\\\").replace(/"/g,"\\\"").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t")}"`;else if(Array.isArray(r)){if(r.length===0)return"[]";return`[
2
- ${r.map((s)=>`${i}${S(s,e+1)},`).join(`
1
+ var vt=Object.create;var{getPrototypeOf:ht,defineProperty:j,getOwnPropertyNames:K,getOwnPropertyDescriptor:kt}=Object,H=Object.prototype.hasOwnProperty,u=(e,r,t)=>{for(let o of K(r))if(!H.call(e,o)&&o!=="default")j(e,o,{get:()=>r[o],enumerable:!0});if(t){for(let o of K(r))if(!H.call(t,o)&&o!=="default")j(t,o,{get:()=>r[o],enumerable:!0});return t}},f=(e,r,t)=>{t=e!=null?vt(ht(e)):{};let o=r||!e||!e.__esModule?j(t,"default",{value:e,enumerable:!0}):t;for(let a of K(e))if(!H.call(o,a))j(o,a,{get:()=>e[a],enumerable:!0});return o},Me=new WeakMap,Ot=(e)=>{var r=Me.get(e),t;if(r)return r;if(r=j({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")K(e).map((o)=>!H.call(r,o)&&j(r,o,{get:()=>e[o],enumerable:!(t=kt(e,o))||t.enumerable}));return Me.set(e,r),r},N=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var Q=(e,r)=>{for(var t in r)j(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})};var F=N((Ho,je)=>{var{defineProperty:oe,getOwnPropertyNames:At,getOwnPropertyDescriptor:Pt}=Object,Mt=Object.prototype.hasOwnProperty,$e=new WeakMap,$t=(e)=>{var r=$e.get(e),t;if(r)return r;if(r=oe({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")At(e).map((o)=>!Mt.call(r,o)&&oe(r,o,{get:()=>e[o],enumerable:!(t=Pt(e,o))||t.enumerable}));return $e.set(e,r),r},Nt=(e,r)=>{for(var t in r)oe(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},Ne={};Nt(Ne,{splitWithQuotes:()=>Ct,splitNested:()=>jt});je.exports=$t(Ne);var jt=(e,r,t="(",o=")")=>{let a=0,n="",s=[];for(let i of e){if(n+=i,i===t)a++;if(i===o)a--;if(a===0&&i===r)s.push(n.slice(0,-1)),n=""}if(n)s.push(n);return s},Ct=(e,r=",")=>{let t=[],o=e.length,a=r.length,n=0,s=(i)=>{if(i+a>o)return!1;for(let p=0;p<a;p++)if(e[i+p]!==r[p])return!1;return!0};while(n<o){while(n<o&&e[n]===" ")n++;if(n>=o)break;let i="",p=e[n]==='"'||e[n]==="'";if(p){let m=e[n++];while(n<o&&e[n]!==m)i+=e[n++];if(n<o)n++}else{while(n<o&&!s(n)){let m=e[n];if(m==='"'||m==="'"){i+=m,n++;while(n<o&&e[n]!==m)i+=e[n++];if(n<o)i+=e[n++]}else i+=e[n++]}i=i.trim()}if(i)t.push({value:i,quoted:p});if(s(n))n+=a}return t}});var w=N((Qo,_e)=>{var{defineProperty:ne,getOwnPropertyNames:Rt,getOwnPropertyDescriptor:Et}=Object,Dt=Object.prototype.hasOwnProperty,Ce=new WeakMap,_t=(e)=>{var r=Ce.get(e),t;if(r)return r;if(r=ne({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")Rt(e).map((o)=>!Dt.call(r,o)&&ne(r,o,{get:()=>e[o],enumerable:!(t=Et(e,o))||t.enumerable}));return Ce.set(e,r),r},Wt=(e,r)=>{for(var t in r)ne(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},Re={};Wt(Re,{navigate:()=>De,find:()=>It,NavigateResult:()=>h,NavigateAction:()=>Ee});_e.exports=_t(Re);var Ee;((e)=>{e[e.Explore=0]="Explore",e[e.SkipSiblings=1]="SkipSiblings",e[e.NoExplore=2]="NoExplore",e[e.ReplaceParent=3]="ReplaceParent",e[e.DeleteParent=4]="DeleteParent",e[e.MergeParent=5]="MergeParent",e[e.ReplaceItem=6]="ReplaceItem",e[e.DeleteItem=7]="DeleteItem"})(Ee||={});class h{action;by;skipSibilings;reexplore;constructor(e,r,t,o){this.action=e,this.by=r,this.skipSibilings=t,this.reexplore=o}static ReplaceParent(e,r){return new h(3,e,void 0,r)}static SkipSiblings(){return new h(1)}static Explore(){return new h(0)}static NoExplore(){return new h(2)}static DeleteParent(){return new h(4)}static MergeParent(e){return new h(5,e)}static ReplaceItem(e,r){return new h(6,e,r)}static DeleteItem(e){return new h(7,void 0,e)}}var De=async(e,r)=>{let t=async(a)=>{let n=a.key===null,s=n?{action:0}:await r(a);if(a.value&&typeof a.value==="object"&&s.action==0){if(!n)a.path.push(a.key),a.parents.push(a.parent);while(await o(a));if(!n)a.parents.pop(),a.path.pop()}return s},o=async(a)=>{for(let[n,s]of Object.entries(a.value)){let i=await t({key:n,value:s,path:a.path,parent:a.value,parents:a.parents});switch(i.action){case 3:if(!a.key)throw Error("Cannot replace root");if(a.parent[a.key]=i.by,i.reexplore)return a.value=i.by,!0;return;case 4:delete a.parent[a.key];return;case 5:delete a.value[n],Object.assign(a.value,i.by);break;case 1:return;case 6:if(a.value[n]=i.by,i.skipSibilings)return;break;case 7:if(delete a.value[n],i.skipSibilings)return;break}}};await t({key:null,value:e,path:[],parent:null,parents:[]})},It=async(e,r)=>{let t=[];return await De(e,(o)=>{if(r([...o.path,o.key].join("."),o.value))t.push(o.value);return h.Explore()}),t}});var b=N((Fo,Te)=>{var{defineProperty:ie,getOwnPropertyNames:Tt,getOwnPropertyDescriptor:Lt}=Object,Ut=Object.prototype.hasOwnProperty,We=new WeakMap,Jt=(e)=>{var r=We.get(e),t;if(r)return r;if(r=ie({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")Tt(e).map((o)=>!Ut.call(r,o)&&ie(r,o,{get:()=>e[o],enumerable:!(t=Lt(e,o))||t.enumerable}));return We.set(e,r),r},St=(e,r)=>{for(var t in r)ie(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},Ie={};St(Ie,{select:()=>se});Te.exports=Jt(Ie);var xt=F(),ae=(e,r,t,o)=>{if(e.startsWith("{")){let a=e.substring(1,e.length-1);return se(r,a,t).toString()}return o?e:void 0},Gt=(e,r,t,o)=>{let a=ae(r,t,o);if(a)return se(e,a,o);let n=/^\[([^=\]]*)([=]*)([^\]]*)\]$/.exec(r);if(n){let[i,p,m,c]=n,y=ae(p.trim(),t,o,!0),$=ae(c.trim(),t,o,!0);if(Array.isArray(e))switch(m){case"==":case"=":return e.find((A)=>A[y]==$)}}let s=/^([^[\]]*)\[([^\]]*)]/.exec(r);if(s)return e[s[1]][s[2]];return e[r]},se=(e,r,t)=>{let o=void 0,a=void 0;r??="";let n=(c)=>c?.endsWith("?")?[c.substring(0,c.length-1),!0]:[c,!1],s=(c,y)=>{let[$,A]=n(y.pop());if($){let G=Gt(c,$,e,t);if(G===void 0){if(A||t?.defaultValue!==void 0||t?.optional)return;throw Error(`Unknown path element: "${$}" in "${r}"`)}return o=c,a=$,s(G,y)}if(t?.set&&a)o[a]=t?.set;return c},i=xt.splitNested(r,t?.separator??".","{","}"),p=i.length>0&&i[i.length-1].startsWith("?=")?i.pop()?.substring(2):void 0;i.reverse();let m=s(e,i);if(m===void 0)return p??t?.defaultValue;return m}});var v=N((Yo,Ve)=>{var{defineProperty:le,getOwnPropertyNames:Kt,getOwnPropertyDescriptor:Ht}=Object,Qt=Object.prototype.hasOwnProperty,Le=new WeakMap,Ft=(e)=>{var r=Le.get(e),t;if(r)return r;if(r=le({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")Kt(e).map((o)=>!Qt.call(r,o)&&le(r,o,{get:()=>e[o],enumerable:!(t=Ht(e,o))||t.enumerable}));return Le.set(e,r),r},Yt=(e,r)=>{for(var t in r)le(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},xe={};Yt(xe,{processFields:()=>Xe,makeFieldProcessorMap:()=>to,makeFieldProcessorList:()=>ro,makeFieldProcessor:()=>pe,getProcessor:()=>ue,getArgs:()=>Qe});Ve.exports=Ft(xe);var Zt=F(),Ue=w(),Ge=b(),Je=(e,r)=>{if(typeof e.value==="string"){if(e.quoted)return e.value;if(e.value.startsWith("[")&&e.value.endsWith("]")){let t=e.value.slice(1,-1);if(t.trim()==="")return[];return t.split(";").map((o)=>{let a=o.trim();if(!isNaN(+a))return+a;return a})}if(e.value.startsWith("{")&&e.value.endsWith("}")){if(e.value.slice(1,-1).trim()==="")return{}}if(e.value==="null")return null;if(e.value==="undefined")return;if(e.value.startsWith("@"))return e.value.slice(1);if(!isNaN(+e.value))return+e.value}return r(e.value)},Y=(e,r,t,o,a,n)=>{let s=o?.(e)??e,i=a(s);if(i[0])return i[1];if(!r){let p=Ge.select(t,e),m=a(p);if(m[0])return m[1]}throw Error(n)},Ke=(e,r,t,o,a)=>{let n=typeof e.types==="function"?e.types(o,r.value,a):e.types?.[o];if(!n||n==="ref")return Je(r,(i)=>Ge.select(t,i));let s=Je(r,()=>r.value);if(Array.isArray(n)){if(!n.includes(s))throw Error(`Argument ${o.toString()} must be one of [${n.join(", ")}]: ${s}`);return s}if(typeof n==="string"){if(n.endsWith("?")){let i=n.slice(0,-1);if(r.value==="null")return Ue.NavigateResult.ReplaceItem(null);if(r.value==="undefined")return Ue.NavigateResult.ReplaceItem(void 0);if(r.value==="")return"";n=i}switch(n){case"any":return s;case"array":return Y(s,r.quoted,t,null,(i)=>[Array.isArray(i),i],`Argument ${o.toString()} must be an array: ${s}`);case"object":return Y(s,r.quoted,t,null,(i)=>[typeof i==="object"&&i!==null,i],`Argument ${o.toString()} must be an object: ${s}`);case"number":return Y(s,r.quoted,t,(i)=>Number(i),(i)=>[!isNaN(i),i],`Argument ${o.toString()} must be a number: ${s}`);case"boolean":return Y(s,r.quoted,t,null,(i)=>{if([!0,"true","1",1,"yes","on"].includes(i))return[!0,!0];if([!1,"false","0",0,"no","off"].includes(i))return[!0,!1];if([null,"null","undefined",void 0,""].includes(i))return[!0,!1];if(Array.isArray(i))return[!0,i.length>0];return[!1,!1]},`Argument ${o.toString()} must be a boolean: ${s}`);case"string":return s.toString();default:throw Error(`Unknown type for argument ${o.toString()}: ${n}`)}}return n(s,t,o,r.quoted)},ue=(e,r)=>{let t=e[r];if(t===void 0)throw Error(`Unhandled field processor type: ${r}`);return typeof t==="function"?{options:{},fn:t}:{options:t,fn:t.fn}},He=(e)=>!e.quoted&&e.value.startsWith("."),Xt=(e)=>{let r={};for(let t of e){if(!He(t))continue;let o=t.value.indexOf("="),a=o>-1?t.value.slice(1,o):t.value.slice(1),n=o>-1?t.value.slice(o+1):"";if(n.length>=2){let s=n[0],i=n[n.length-1];if(s==='"'&&i==='"'||s==="'"&&i==="'")n=n.slice(1,-1)}if(!r[a])r[a]=[];r[a].push(n)}return r},Qe=(e,r,t)=>{let o=Zt.splitWithQuotes(e??""),a=Xt(o),n=o.filter((i)=>!He(i)),s=r.options.processArgs===!1?[]:n.map((i,p)=>Ke(r.options,i,t,p,n));return{rawArgs:n,parsedArgs:s,tags:a}},E=w(),Se=w(),Vt=(e,r)=>r.keys!==void 0&&e.key.startsWith(".")&&r.keys[e.key.substring(1)]!==void 0,Bt=async(e,r,t,o)=>{let{key:a,parent:n}=e,s=ue(o.keys,a.substring(1));if(s.options.processArgs!==!1&&(typeof s.options.types==="function"||s.options.types?.[0]!==void 0))e.value=Ke(s.options,{value:e.value,quoted:!1},t,0,[]);if(typeof e.value!=="string")await Xe(e.value,{...o,root:{...t,parent:e.parent,parents:e.parents},filters:[...o.filters??[],...s.options.filters??[]]});let i=await s.fn({path:r,root:t,parent:n,key:a,options:o,value:e.value,args:[e.value],rawArgs:[],tags:{}});return i instanceof Se.NavigateResult?i:Se.NavigateResult.ReplaceParent(i)},Z=w(),qt=b(),Fe=(e)=>{let r=[],t=0;while(t<e.length)if(e[t]==="$"&&e[t+1]==="("&&(t===0||e[t-1]!=="\\")){let o=t;t+=2;let a=1;for(;t<e.length;t++)if(e[t]==="(")a++;else if(e[t]===")"){if(a--,a===0){r.push([o,t]);break}}if(a!==0)throw Error(`Unmatched opening $( at position ${o.toString()}`);t++}else t++;return r};class fe{value;constructor(e){this.value=e}}var Ye=async(e,r,t)=>{for(let o=r.length-1;o>=0;o--){let[a,n]=r[o],s=e.slice(a+2,n),i=await Ye(s,Fe(s),t);if(typeof i==="object")return i;let p=await t(i,e);if(p instanceof fe)return p.value;e=e.slice(0,a)+p+e.slice(n+1)}return e},zt=async(e,r)=>Ye(e,Fe(e),r),eo=async(e,r,t,o)=>{let a=await(async()=>{let n=/([\w\d.-_/]+):(.+)/.exec(e);if(!n)return await qt.select(r,e);let[s,i,p]=n,m=ue(o.sources,i),c=Qe(p,m,r);return await m.fn({args:c.parsedArgs,rawArgs:c.rawArgs,tags:c.tags,key:i,options:o,root:r,path:t,value:null})})();if(a===null||a===void 0)return"";if(typeof a==="object")return new fe(a);return a},Ze=async(e,r,t,o)=>{let a=await zt(r,(n)=>eo(n,t,e,o));if(a instanceof Z.NavigateResult)return a;if(a===r)return Z.NavigateResult.Explore();if(typeof a==="string"){let n=await Ze(e,a,t,o);if(n.action!==Z.NavigateAction.Explore)return n}return Z.NavigateResult.ReplaceItem(a)},Xe=async(e,r)=>{return r??={},await E.navigate(e,async(t)=>{let o=[...t.path,t.key].join(".");if(r?.filters?.length&&r.filters.some((i)=>i.test(o)))return E.NavigateResult.NoExplore();let a=t.path.length===0,n=t.parents.length>0?t.parents.toReversed():[];if(a){if(n.length>0)throw Error("Root object should not have a parent");n=r?.root?.parents?[r.root.parent,...r.root.parents.toReversed()]:[]}let s={...e,...r.root,this:t.parent,parent:n.length>0?n[0]:null,parents:n};try{if(t.key.startsWith("$"))return E.NavigateResult.NoExplore();let i=E.NavigateResult.Explore();if(typeof t.value==="string")switch(i=await Ze(o,t.value,s,r),i.action){case E.NavigateAction.Explore:break;case E.NavigateAction.ReplaceItem:t.value=i.by;break;default:return i}if(Vt(t,r))i=await Bt(t,o,s,r);return i}catch(i){throw Error(`${i.message}
2
+ (${o})`)}}),e},pe=(e,r)=>r?{fn:(t)=>e(...t.args),types:r}:(t)=>e(...t.args),ro=(e,r)=>Object.fromEntries(e.map((t)=>[t.name,pe(t,r?.types?.[t.name])])),to=(e,r)=>Object.fromEntries((r?.keys??Object.keys(e)).map((t)=>[t,pe(e[t],r?.types?.[t])]))});var X=N((Zo,lr)=>{var oo=Object.create,{getPrototypeOf:no,defineProperty:T,getOwnPropertyNames:er,getOwnPropertyDescriptor:ao}=Object,rr=Object.prototype.hasOwnProperty,P=(e,r,t)=>{t=e!=null?oo(no(e)):{};let o=r||!e||!e.__esModule?T(t,"default",{value:e,enumerable:!0}):t;for(let a of er(e))if(!rr.call(o,a))T(o,a,{get:()=>e[a],enumerable:!0});return o},Be=new WeakMap,io=(e)=>{var r=Be.get(e),t;if(r)return r;if(r=T({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")er(e).map((o)=>!rr.call(r,o)&&T(r,o,{get:()=>e[o],enumerable:!(t=ao(e,o))||t.enumerable}));return Be.set(e,r),r},so=(e,r)=>{for(var t in r)T(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},tr={};so(tr,{writeOutputs:()=>go,writeOutput:()=>sr,writeFormat:()=>ar,locate:()=>nr,loadFormat:()=>po,globMap:()=>yo,exists:()=>or});lr.exports=io(tr);var qe=P(require("fs/promises")),or=async(e)=>{try{return await qe.default.access(e,qe.default.constants.R_OK),!0}catch{return!1}},ce=P(require("path")),nr=async(e,r)=>{let t=!ce.default.isAbsolute(e)&&r?["",...r]:[""];for(let o of t){let a=ce.default.join(o,e);if(await or(a))return ce.default.resolve(a)}throw Error(`File not found: "${e}"`)},lo=P(require("fs/promises")),uo=P(require("path")),fo=P(require("yaml")),po=async(e,r)=>{let t=await nr(e,r?.dirs),o=await lo.default.readFile(t),a=uo.default.dirname(t),n={"[.](yml|yaml)$":fo.default.parse,"[.]json$":JSON.parse,...r?.parsers},s=Object.entries(n).find((i)=>t.match(i[0]));if(!s)throw Error(`Unhandled file type: ${e}`);return{content:s[1](o.toString()),fullPath:t,folderPath:a}},me=P(require("fs/promises")),co=P(require("yaml")),ar=async(e,r,t="text")=>{switch(t){case"yaml":await me.default.writeFile(e,co.default.stringify(r));break;case"json":await me.default.writeFile(e,JSON.stringify(r));break;case"text":default:await me.default.writeFile(e,r.toString())}},mo=P(require("fs/promises")),yo=async(e,r)=>{if(typeof e==="string"&&!e.includes("*"))return await r.map(e,0,[]);let t=await Array.fromAsync(mo.default.glob(e,{cwd:r.cwd})),o=r.filter?t.filter(r.filter):t;return await Promise.all(o.map(r.map))},ir=P(require("fs/promises")),ze=P(require("path")),go=async(e,r)=>{if(r?.targetDirectory&&r?.removeFirst)try{await ir.default.rm(r?.targetDirectory,{recursive:!0,force:!0})}catch(t){throw Error(`Failed to clean the output directory: ${t.message}`)}for(let t of e)await sr(t,r)},sr=async(e,r)=>{let t=ze.default.join(r?.targetDirectory??".",e.name),o=ze.default.dirname(t);if(r?.classes){if(e.class!==void 0&&!r.classes.includes(e.class))return;if(r.classRequired&&e.class===void 0)throw Error(`Output "${e.name}" is missing class field`)}if(r?.writing?.(e)===!1)return;try{await ir.default.mkdir(o,{recursive:!0})}catch(a){throw Error(`Failed to create target directory "${o}" for output "${t}": ${a.message}`)}try{await ar(t,e.value,e.type??"text")}catch(a){throw Error(`Failed to write output "${t}": ${a.message}`)}}});var D=N((Xo,pr)=>{var{defineProperty:ye,getOwnPropertyNames:wo,getOwnPropertyDescriptor:bo}=Object,vo=Object.prototype.hasOwnProperty,ur=new WeakMap,ho=(e)=>{var r=ur.get(e),t;if(r)return r;if(r=ye({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")wo(e).map((o)=>!vo.call(r,o)&&ye(r,o,{get:()=>e[o],enumerable:!(t=bo(e,o))||t.enumerable}));return ur.set(e,r),r},ko=(e,r)=>{for(var t in r)ye(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},fr={};ko(fr,{mergeAll:()=>Oo,merge:()=>ge});pr.exports=ho(fr);var ge=(e,r,t)=>{for(let o of Object.keys(r)){if(e[o]===void 0)continue;let a=r[o],n=e[o];if(typeof n!==typeof a||Array.isArray(n)!==Array.isArray(a)){let i=t?.mismatch?.(o,n,a,e,r);if(i!==void 0){r[o]=i;continue}throw Error(`Type mismatch: ${o}`)}let s=t?.mode?.(o,n,a,e,r)??r[".merge"]??"merge";switch(s){case"source":r[o]=n;continue;case"target":continue;case"skip":delete r[o],delete e[o];continue;case"merge":break;default:throw Error(`Unknown merge mode: ${s}`)}if(typeof n==="object")if(Array.isArray(n))a.push(...n);else{if(t?.navigate?.(o,n,a,e,r)===!1)continue;ge(n,a,t)}else{if(n===a)continue;let i=t?.conflict?.(o,n,a,e,r);r[o]=i===void 0?a:i}}for(let o of Object.keys(e))if(r[o]===void 0)r[o]=e[o]},Oo=(e,r)=>{let t={};for(let o of e.toReversed())ge(o,t,r);return t}});var U=N((Dn,Yr)=>{var{defineProperty:he,getOwnPropertyNames:Ao,getOwnPropertyDescriptor:Po}=Object,Mo=Object.prototype.hasOwnProperty,Hr=new WeakMap,$o=(e)=>{var r=Hr.get(e),t;if(r)return r;if(r=he({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")Ao(e).map((o)=>!Mo.call(r,o)&&he(r,o,{get:()=>e[o],enumerable:!(t=Po(e,o))||t.enumerable}));return Hr.set(e,r),r},No=(e,r)=>{for(var t in r)he(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},Qr={};No(Qr,{tokenize:()=>_o,snake:()=>Ro,pascal:()=>Fr,padBlock:()=>Do,changeCase:()=>Eo,capital:()=>jo,camel:()=>Co});Yr.exports=$o(Qr);var Fr=(e)=>e.replace(/((?:[_ ]+)\w|^\w)/g,(r,t)=>t.toUpperCase()).replace(/[_ ]/g,""),jo=(e)=>e.replace(/((?:[ ]+)\w|^\w)/g,(r,t)=>t.toUpperCase()),Co=(e)=>Fr(e).replace(/((?:[ ]+\w)|^\w)/g,(r,t)=>t.toLowerCase()),Ro=(e,r)=>e.replace(/([a-z])([A-Z])/g,`$1${r}$2`).replace(/\s+/g,r),Eo=(e,r)=>{switch(r){case"upper":return e.toUpperCase();case"lower":return e.toLowerCase();default:return e}},Do=(e,r,t=`
3
+ `,o=" ")=>{let a=o.repeat(r);return e.split(t).map((n)=>a+n).join(t)},_o=(e,r,t=/\${([^}]+)}/g)=>{return e.replace(t,(o,a)=>r[a]??"")}});var q=N((Ln,qr)=>{var{defineProperty:ke,getOwnPropertyNames:Wo,getOwnPropertyDescriptor:Io}=Object,To=Object.prototype.hasOwnProperty,Vr=new WeakMap,Lo=(e)=>{var r=Vr.get(e),t;if(r)return r;if(r=ke({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")Wo(e).map((o)=>!To.call(r,o)&&ke(r,o,{get:()=>e[o],enumerable:!(t=Io(e,o))||t.enumerable}));return Vr.set(e,r),r},Uo=(e,r)=>{for(var t in r)ke(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},Br={};Uo(Br,{toObjectWithKey:()=>So,toObject:()=>xo,toList:()=>Jo});qr.exports=Lo(Br);var Jo=(e,r="name")=>Object.entries(e).map(([t,o])=>({[r]:t,...o})),So=(e,r="name")=>Object.fromEntries(e.map((t)=>[t[r],t])),xo=(e,r="name")=>Object.fromEntries(e.map((t)=>{let{[r]:o,...a}=t;return[o,a]}))});var dt={};Q(dt,{default:()=>Go,Objector:()=>ee});module.exports=Ot(dt);var wt=f(v(),1),re=f(X(),1),bt=f(D(),1),Ae=f(require("path"));var cr=f(w(),1),mr=(e)=>({output:(r)=>{delete r.parent[r.key];for(let t of Array.isArray(r.value)?r.value:[r.value])if(typeof t==="string")e.output({name:t,value:r.parent});else e.output({...t,value:t.value??r.parent});return cr.NavigateResult.SkipSiblings()}});var yr=f(w(),1),gr=f(require("path")),dr=(e)=>({load:async(r)=>{let t=r.options.globalContext;for(let{file:o}of Array.isArray(r.value)?r.value:[r.value]){if(!o)throw Error("File reference required");await e.load(o,t.file&&gr.default.dirname(t.file))}return yr.NavigateResult.DeleteItem()}});var Mr=f(v(),1),we=f(D(),1);var wr=f(b(),1),br=(e)=>{if(typeof e.value==="string")return e.parent;let r=e.value.model;if(!r)return e.parent;if(typeof r==="string")return wr.select(e.root,r);return r};var de=f(b(),1),vr=(e)=>{if(typeof e.value==="string")return de.select(e.root,e.value);if(Array.isArray(e.value))return e.value;let r=e.value;if(typeof r.from==="string")return de.select(e.root,r.from);return r.from};var hr=f(v(),1),kr=f(b(),1),Or=async(e,r)=>{let t=e.value;if(t.selector===void 0)return r;if(typeof t.selector!=="string"){let o=JSON.parse(JSON.stringify(t.selector));return await hr.processFields(o,{...e.options,root:{...e.root,result:r}}),o}return await kr.select({...e.root,result:r},t.selector)};var Ar={};Q(Ar,{deepClone:()=>k});var k=(e)=>globalThis.structuredClone!==void 0?structuredClone(e):JSON.parse(JSON.stringify(e));var Pr={};Q(Pr,{conditionPredicatesTypes:()=>L,conditionPredicates:()=>O});var O={and:(...e)=>e.every((r)=>!!r),or:(...e)=>e.some((r)=>!!r),xor:(...e)=>e.filter((r)=>!!r).length===1,true:(...e)=>e.every((r)=>!!r),false:(...e)=>e.every((r)=>!r),eq:(...e)=>e.every((r)=>r===e[0]),ne:(...e)=>e.some((r)=>r!==e[0]),lt:(...e)=>typeof e[0]==="number"&&e.slice(1).every((r)=>typeof r==="number"&&e[0]<r),le:(...e)=>typeof e[0]==="number"&&e.slice(1).every((r)=>typeof r==="number"&&e[0]<=r),gt:(...e)=>typeof e[0]==="number"&&e.slice(1).every((r)=>typeof r==="number"&&e[0]>r),ge:(...e)=>typeof e[0]==="number"&&e.slice(1).every((r)=>typeof r==="number"&&e[0]>=r),in:(e,r)=>{if(Array.isArray(r))return r.includes(e);if(typeof e==="string")return e.includes(r);if(Array.isArray(e))return e.includes(r);return!1},notin:(e,r)=>!O.in(e,r),contains:(e,r)=>e.includes(r),notcontains:(e,r)=>!e.includes(r),containsi:(e,r)=>e.toLowerCase().includes(r.toLowerCase()),notcontainsi:(e,r)=>!e.toLowerCase().includes(r.toLowerCase()),null:(...e)=>e.every((r)=>r===null||r===void 0),notnull:(...e)=>e.every((r)=>r!==null&&r!==void 0),empty:(...e)=>e.every((r)=>r===""),notempty:(...e)=>e.every((r)=>r!==""),nullorempty:(...e)=>e.every((r)=>r===null||r===void 0||r===""),notnullorempty:(...e)=>e.every((r)=>r!==null&&r!==void 0&&r!=="")},L={and:()=>"boolean",or:()=>"boolean",xor:()=>"boolean",true:()=>"boolean",false:()=>"boolean",lt:()=>"number",le:()=>"number",gt:()=>"number",ge:()=>"number"};var $r=()=>({each:{filters:[/select|model/],fn:async(e)=>{let r=e.value;delete e.parent[e.key];let t=await vr(e),o=await br(e);if(!Array.isArray(t))throw Error('Key "each" requires a source list');if(o===void 0)throw Error('Key "each" must define a model');if(r.extend?.model)o=we.mergeAll([r.model,...Array.isArray(r.extend.model)?r.extend.model:[r.extend.model]]);let a=[];for(let n=0;n<t.length;n++){let s=k(o);if(await Mr.processFields(s,{...e.options,root:{...e.root,index:n,item:t[n],instance:s}}),r.extend?.result){let i=r.extend.result;s=we.mergeAll([s,...Array.isArray(i)?i:[i]])}a.push(await Or(e,s))}return a}}});var Nr=f(b(),1),jr=()=>({concat:async(e)=>{let r=[];for(let t of Array.isArray(e.value)?e.value:[e.value])r.push(...await Nr.select(e.root,t));return r.filter((t)=>t!==void 0)}});var Cr=f(v(),1),Rr=f(D(),1),Er=f(w(),1),Dr=f(b(),1);var _r=()=>({extends:async(e)=>{let r=async(t,o)=>{for(let a of Array.isArray(o)?o:[o]){let n=await Dr.select(e.root,a),s=k(n);if(s[e.key])await r(s,s[e.key]);await Cr.processFields(s,{...e.options}),Rr.merge(s,t),delete t[e.key]}};return await r(e.parent,e.value),Er.NavigateResult.Explore()}});var Wr=f(v(),1),M=f(w(),1),Ir=(e)=>({skip:{types:{0:"boolean"},fn:(r)=>r.value?M.NavigateResult.DeleteParent():M.NavigateResult.DeleteItem()},metadata:({path:r,value:t})=>{return e.metadata(r,t),M.NavigateResult.DeleteItem()},if:{types:{0:"boolean"},fn:async(r)=>{let t=r.parent[".then"],o=r.parent[".else"];if(t!==void 0)delete r.parent[".then"];if(o!==void 0)delete r.parent[".else"];let a=r.value?t:o;if(a===void 0)return M.NavigateResult.DeleteItem();if(typeof a==="string")return(await Wr.processFields({value:a},{...r.options,root:{...r.root}})).value;return M.NavigateResult.ReplaceParent(a,!0)}},switch:(r)=>{let t=r.value;if(!t.cases)throw Error("Missing cases for switch");if(t.cases[t.from]!==void 0)return M.NavigateResult.ReplaceParent(t.cases[t.from],!0);if(t.default!==void 0)return M.NavigateResult.ReplaceParent(t.default,!0);return M.NavigateResult.DeleteParent()}});var Tr=f(D(),1),Lr=f(b(),1),Ur=()=>({from:async({root:e,parent:r,value:t})=>{let o=await Lr.select(e,t);if(o===null||o===void 0)throw Error(`Unable to resolve reference: ${t}`);if(r.content){if(Array.isArray(r.content)&&Array.isArray(o))return[...o,...r.content];return Tr.merge(o,r.content),r.content}return o}});var Jr=f(w(),1),be=f(require("node:vm")),Sr=(e)=>({modules:async(r)=>{for(let[t,o]of Object.entries(r.value)){let a=be.default.createContext({console,objector:e,document:r.root}),n=new be.default.SourceTextModule(o,{identifier:t,context:a});await n.link((s)=>{throw Error(`Module ${s} is not allowed`)}),await n.evaluate(),e.sources(Object.fromEntries(Object.entries(n.namespace).map(([s,i])=>[`${t}.${s}`,(p)=>i(p,...p.args)])))}return Jr.NavigateResult.DeleteItem()}});var C=f(X(),1),ve=f(require("fs/promises")),_=f(require("path")),xr=(e)=>({include:async(r)=>{let{file:t}=r.options.globalContext;return await C.globMap(r.args[0],{cwd:_.default.dirname(t),filter:(o)=>_.default.basename(t)!==o,map:async(o)=>e.load(o,_.default.dirname(t),{parent:r.root})})},exists:async({args:[r]})=>await C.exists(r),file:async(r)=>await ve.default.readFile(await C.locate(r.args[0],e.getIncludeDirectories())).then((t)=>t.toString()),scan:async(r)=>{let t=[],a=(()=>{let i=r.args[2]??["**/node_modules/**"],p=typeof i==="string"?i.split(",").map((m)=>m.trim()):i;if(!Array.isArray(p))throw Error("Scan exclusion must be a list");return p})(),{file:n}=r.options.globalContext,s=r.args[1]?await C.locate(r.args[1],e.getIncludeDirectories()):_.default.dirname(n);for await(let i of ve.default.glob(r.args[0],{cwd:s,exclude:(p)=>a.some((m)=>_.default.matchesGlob(p,m))}))t.push(i);return t}});var Gr=f(v(),1),Kr=()=>Gr.makeFieldProcessorMap({env:(e)=>process.env[e]});var Zr=f(v(),1),d=f(U(),1),B=f(require("yaml"));var V=(e,r=0,t)=>{let o=" ".repeat(r),a=" ".repeat(r+1);if(e===null||e===void 0)return"null";else if(typeof e==="boolean")return String(e);else if(typeof e==="number")return String(e);else if(typeof e==="string")return`"${e.replace(/\\/g,"\\\\").replace(/"/g,"\\\"").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t")}"`;else if(Array.isArray(e)){if(e.length===0)return"[]";return`[
4
+ ${e.map((s)=>`${a}${V(s,r+1)},`).join(`
3
5
  `)}
4
- ${n}]`}else if(typeof r==="object"){let t=Object.entries(r).sort((f,m)=>o?.sortKeys?f[0].localeCompare(m[0]):0);if(t.length===0)return"{}";return`{
5
- ${t.map(([f,m])=>`${i}${f} = ${S(m,e+1,o)}`).join(`
6
+ ${o}]`}else if(typeof e==="object"){let n=Object.entries(e).sort((i,p)=>t?.sortKeys?i[0].localeCompare(p[0]):0);if(n.length===0)return"{}";return`{
7
+ ${n.map(([i,p])=>`${a}${i} = ${V(p,r+1,t)}`).join(`
6
8
  `)}
7
- ${n}}`}else return String(r)},O=(r)=>{if(!r)return r;return r.replaceAll("\\n",`
8
- `).replaceAll("\\$","$").replaceAll("\\t","\t")};var Mr=()=>({substring:{types:{0:"ref",1:"number",2:"number"},fn:(r)=>r.args[0].substring(r.args[1],r.args[2])},repeat:{types:{0:"ref",1:"number"},fn:({args:[r,e]})=>r.repeat(e)},uuid:(r)=>crypto.randomUUID(),pad:{types:{0:"ref",1:"number",2:"string"},fn:({args:[r,e],tags:o})=>{let n=o.join?.[0]??`
9
- `,i=o.padChar?.[0]??" ";return y.padBlock(r,e??2,n,i)}},formatAs:{types:{1:["json","yaml","terraform"]},fn:({args:[r,e],tags:o})=>{switch(e){case"json":return JSON.stringify(r,null,2);case"yaml":return N.default.stringify(r,null,{indent:2});case"terraform":{let n=!!(o?.sort?.length||o?.sortKeys?.length);return S(r,0,{sortKeys:n})}}throw Error("Unsupported format: "+String(e))}},...Ar.makeFieldProcessorMap({pascal:y.pascal,camel:y.camel,capital:y.capital,fromYaml:N.default.parse,fromJson:JSON.parse,toYaml:(r,e)=>N.default.stringify(r,null,{indent:e??2}),toJson:(r,e)=>JSON.stringify(r,null,e!==0?e??2:void 0),concat:(...r)=>r.join(""),len:(r)=>r.length,reverse:(r)=>r.split("").reverse().join(""),trim:(r)=>r.trim(),ltrim:(r)=>r.trimStart(),rtrim:(r)=>r.trimEnd(),lower:(r)=>r.toLowerCase(),upper:(r)=>r.toUpperCase(),snake:(r,e)=>y.changeCase(y.snake(r,"_"),e),kebab:(r,e)=>y.changeCase(y.snake(r,"-"),e),encode:(r,e)=>Buffer.from(r).toString(e??"base64"),decode:(r,e)=>Buffer.from(r,e??"base64").toString()})});var Pr=require("@homedev/fields"),D=require("@homedev/object-utils"),h=require("@homedev/select"),kr=require("@homedev/string-utils");var Cr=()=>({...Pr.makeFieldProcessorMap({merge:(...r)=>r.flatMap((e)=>e)}),join:({args:[r],root:e,tags:o})=>{let n=o.key?.[0],i=o.separator?.[0]??o.sep?.[0],t=o.finalize?.length>0,s=O(i);if(typeof r==="string"){if(t&&r.length&&s)return r+s;return r}if(!Array.isArray(r))throw Error("Object is not a list");let f=((n?.length)?r.map((u)=>h.select({...e,...u},n)):r).join(s),m=o.pad?.[0]??"0",p=o.padChar?.[0]??" ",a=t&&f.length&&s?f+s:f;return m?kr.padBlock(a,parseInt(m),`
10
- `,p):a},list:({args:r})=>D.toList(r[0],r[1]),object:({args:r})=>D.toObject(r[0],r[1]),range:({args:[r,e,o]})=>{let n=parseInt(r),i=parseInt(e),t=parseInt(o)||1;if(isNaN(n))throw Error("Invalid range: start value '"+String(r)+"' is not a number");if(isNaN(i))throw Error("Invalid range: end value '"+String(e)+"' is not a number");if(t===0)throw Error("Invalid range: step cannot be zero");if((i-n)/t<0)throw Error("Invalid range: step "+String(t)+" has wrong direction for range "+String(n)+" to "+String(i));return Array.from({length:Math.floor((i-n)/t)+1},(s,f)=>n+f*t)},filter:{types:(r,e,o)=>{switch(r){case 0:return"array";case 1:return Object.keys(g)}return E[o[1].value]?.(r-2,e,o.slice(2))},fn:({args:[r,e,o],root:n,tags:i})=>{if(r===null||r===void 0)throw Error("Filter source cannot be null or undefined");if(!Array.isArray(r))throw Error("Filter source must be an array");let t=i.key?.[0],s=g[e];if(t){let m=Array(r.length);for(let a=0;a<r.length;a++)try{m[a]=h.select({...n,...r[a]},t)}catch{m[a]=Symbol("invalid")}let p=[];for(let a=0;a<r.length;a++){let u=m[a];if(typeof u!=="symbol"&&o===void 0?s(u):s(u,o))p.push(r[a])}return p}let f=[];for(let m of r)if(o===void 0?s(m):s(m,o))f.push(m);return f}}});var Or=require("@homedev/fields"),Rr=require("@homedev/object-utils"),R=require("@homedev/select"),jr=require("@homedev/string-utils");var Er=()=>({each:{processArgs:!1,fn:async({rawArgs:[r,e,...o],root:n,options:i,tags:t})=>{let s=async(l)=>l.quoted?O(l.value):await R.select(n,l.value),f=await R.select(n,r.value),m=await s(e),p=t.key?.[0],a=Array.isArray(f)?f:Rr.toList(f),u=[],Kr=await Promise.all(o.map(async(l)=>await s(l))),b={...n,item:void 0,index:0,params:Kr,instance:void 0,parent:n.this,tags:t},Br={...i,root:b};for(let l=0;l<a.length;l++){let F=c(m),k={instance:F},I=typeof m==="string"?k:F;if(b.item=a[l],b.index=l,b.instance=F,t?.root?.[0])Object.assign(b,await R.select(b,t.root[0]));if(await Or.processFields(I,Br),p!==void 0)u.push(await R.select(k.instance,p));else u.push(k.instance)}if(t.join?.length){if(u.length===0)return"";let l=O(t.join[0]),F=t.pad?.[0]??"0",k=t.padChar?.[0]??" ",I=t.finalize?.length&&l?l:"",Y=`${u.join(l)}${I}`;return F?jr.padBlock(Y,parseInt(F),`
11
- `,k):Y}return u}}});var Sr=require("@homedev/select"),j=async(r,e,o)=>r.rawArgs[e].quoted?r.rawArgs[e].value:await Sr.select(r.root,r.rawArgs[e].value,{defaultValue:o}),Nr=()=>({switch:{processArgs:!1,fn:async(r)=>{let e=await j(r,0,!1),o=await j(r,1);if(o[e]===void 0){if(r.rawArgs.length>2)return j(r,2);throw Error(`Unhandled switch case: ${e}`)}return o[e]}}});var Dr=require("@homedev/fields"),Lr=()=>Dr.makeFieldProcessorMap({log:console.log});var Ir=require("@homedev/fields");var Jr=()=>({if:{types:{0:"boolean"},fn:(r)=>r.args[0]?r.args[1]:r.args[2]},check:{types:{0:Object.keys(g)},fn:(r)=>g[r.args[0]](...r.args.slice(1))},...Ir.makeFieldProcessorMap(g,{types:E})});var $r=require("@homedev/navigate");var Tr=()=>({default:{processArgs:!1,fn:async(r)=>{for(let e=0;e<r.rawArgs.length;e++)if(r.rawArgs[e]?.value!==void 0){let n=await j(r,e,null);if(n!==null)return n}if(r.tags.nullable?.length)return $r.NavigateResult.DeleteItem();if(r.tags.fail?.length)throw Error(`No valid value found for default (${r.rawArgs.map((e)=>e.value).join(", ")})`);return""}}});var P=require("@homedev/navigate"),Ur=()=>({convert:({args:[r,e,o]})=>{switch(e){case"string":return String(r);case"number":{let n=Number(r);if(!isNaN(n))return P.NavigateResult.ReplaceItem(n);break}case"boolean":if(r==="true"||r===!0||r===1||r==="1"||r==="yes"||r==="on")return P.NavigateResult.ReplaceItem(!0);else if(r==="false"||r===!1||r===0||r==="0"||r==="no"||r==="off")return P.NavigateResult.ReplaceItem(!1);break;default:throw Error(`Unsupported type for convert: ${e}`)}if(o!==void 0)return P.NavigateResult.ReplaceItem(o);throw Error(`Failed to convert value to ${e}`)},isType:({args:[r,e]})=>{let n=(()=>{switch(e){case"string":return typeof r==="string";case"number":return typeof r==="number";case"boolean":return typeof r==="boolean";case"object":return r!==null&&typeof r==="object"&&!Array.isArray(r);case"array":return Array.isArray(r);case"null":return r===null;case"undefined":return r===void 0;case"function":return typeof r==="function";default:throw Error(`Unknown type for isType: ${e}`)}})();return P.NavigateResult.ReplaceItem(n)},typeOf:({args:[r]})=>{if(r===null)return"null";else if(Array.isArray(r))return"array";else return typeof r}});var hr=(r)=>r.keys(H(r)).keys(X(r)).keys(or()).keys(dr()).keys(tr()).keys(ar()).keys(lr(r)).keys(gr(r)).sources(wr(r)).sources(Fr()).sources(Mr()).sources(Ur()).sources(Cr()).sources(Er()).sources(Nr()).sources(Lr()).sources(Jr()).sources(Tr());class _r{includeDirectories=[];includes=[];outputs=[];vars={};cache={};fields={sources:{},keys:{}};objectMetadata={};constructor(){this.use(hr)}use(r){return r(this),this}includeDirectory(...r){return this.includeDirectories.push(...r),this}getIncludeDirectories(){return this.includeDirectories}include(...r){return this.includes.push(...r),this}keys(r){return Object.assign(this.fields.keys,{...this.fields.keys,...r}),this}sources(r){return Object.assign(this.fields.sources,{...this.fields.sources,...r}),this}variables(r){return this.vars={...this.vars,...r},this}getOutputs(){return this.outputs}output(r){return this.outputs.push(r),this}metadata(r,e){return this.objectMetadata[r]=e,this}getMetadata(r){return this.objectMetadata[r]}getAllMetadata(){return this.objectMetadata}filter(r){return this.fields.filters??=[],this.fields.filters?.push(r),this}async docIncludes(r,e){let o=[];if(r.content.includes)o.push(...r.content.includes),delete r.content.includes;o.push(...this.includes),this.includes.length=0;for(let n of o)Yr.merge(await this.load(n,r.folderPath,{parent:r.content,...e},!0),r.content)}async loadObject(r,e,o){return await qr.processFields(r,{...this.fields,globalContext:{file:o?.fullPath??"@internal"},root:{...this.fields.root,...this.vars,$document:{root:{content:r},fileName:o?.fileName??"@internal",folder:o?.folderPath??"@internal",fullPath:o?.fullPath??"@internal",...e}}}),r}async load(r,e,o,n){let i=e?[e]:[];i.push(...this.includeDirectories.map((a)=>q.default.isAbsolute(a)?a:q.default.join(e??process.cwd(),a)));let t=await L.loadFormat(r,{dirs:i});if(!t.content)return null;let s=t.fullPath,f=this.cache[s]??t.content,m=c(f);t.content=m,await this.docIncludes(t,o);let p;if(n!==!0)p=await this.loadObject(t.content,o,{fileName:t.fullPath,folderPath:t.folderPath,fullPath:t.fullPath});else p=t.content;return this.cache[s]??=f,p}async writeOutputs(r){await L.writeOutputs(this.getOutputs(),r)}}
9
+ ${o}}`}else return String(e)},J=(e)=>{if(!e)return e;return e.replaceAll("\\n",`
10
+ `).replaceAll("\\$","$").replaceAll("\\t","\t")};var Xr=()=>({substring:{types:{0:"ref",1:"number",2:"number"},fn:(e)=>e.args[0].substring(e.args[1],e.args[2])},repeat:{types:{0:"ref",1:"number"},fn:({args:[e,r]})=>e.repeat(r)},uuid:(e)=>crypto.randomUUID(),pad:{types:{0:"ref",1:"number",2:"string"},fn:({args:[e,r],tags:t})=>{let o=t.join?.[0]??`
11
+ `,a=t.padChar?.[0]??" ";return d.padBlock(e,r??2,o,a)}},formatAs:{types:{1:["json","yaml","terraform"]},fn:({args:[e,r],tags:t})=>{switch(r){case"json":return JSON.stringify(e,null,2);case"yaml":return B.default.stringify(e,null,{indent:2});case"terraform":{let o=!!(t?.sort?.length||t?.sortKeys?.length);return V(e,0,{sortKeys:o})}}throw Error("Unsupported format: "+String(r))}},...Zr.makeFieldProcessorMap({pascal:d.pascal,camel:d.camel,capital:d.capital,fromYaml:B.default.parse,fromJson:JSON.parse,toYaml:(e,r)=>B.default.stringify(e,null,{indent:r??2}),toJson:(e,r)=>JSON.stringify(e,null,r!==0?r??2:void 0),concat:(...e)=>e.join(""),len:(e)=>e.length,reverse:(e)=>e.split("").reverse().join(""),trim:(e)=>e.trim(),ltrim:(e)=>e.trimStart(),rtrim:(e)=>e.trimEnd(),lower:(e)=>e.toLowerCase(),upper:(e)=>e.toUpperCase(),snake:(e,r)=>d.changeCase(d.snake(e,"_"),r),kebab:(e,r)=>d.changeCase(d.snake(e,"-"),r),encode:(e,r)=>Buffer.from(e).toString(r??"base64"),decode:(e,r)=>Buffer.from(e,r??"base64").toString()})});var zr=f(v(),1),z=f(q(),1),Oe=f(b(),1),et=f(U(),1);var rt=()=>({...zr.makeFieldProcessorMap({merge:(...e)=>e.flatMap((r)=>r)}),join:({args:[e],root:r,tags:t})=>{let o=t.key?.[0],a=t.separator?.[0]??t.sep?.[0],n=t.finalize?.length>0,s=J(a);if(typeof e==="string"){if(n&&e.length&&s)return e+s;return e}if(!Array.isArray(e))throw Error("Object is not a list");let i=((o?.length)?e.map((y)=>Oe.select({...r,...y},o)):e).join(s),p=t.pad?.[0]??"0",m=t.padChar?.[0]??" ",c=n&&i.length&&s?i+s:i;return p?et.padBlock(c,parseInt(p),`
12
+ `,m):c},list:({args:e})=>z.toList(e[0],e[1]),object:({args:e})=>z.toObject(e[0],e[1]),range:({args:[e,r,t]})=>{let o=parseInt(e),a=parseInt(r),n=parseInt(t)||1;if(isNaN(o))throw Error("Invalid range: start value '"+String(e)+"' is not a number");if(isNaN(a))throw Error("Invalid range: end value '"+String(r)+"' is not a number");if(n===0)throw Error("Invalid range: step cannot be zero");if((a-o)/n<0)throw Error("Invalid range: step "+String(n)+" has wrong direction for range "+String(o)+" to "+String(a));return Array.from({length:Math.floor((a-o)/n)+1},(s,i)=>o+i*n)},filter:{types:(e,r,t)=>{switch(e){case 0:return"array";case 1:return Object.keys(O)}return L[t[1].value]?.(e-2,r,t.slice(2))},fn:({args:[e,r,t],root:o,tags:a})=>{if(e===null||e===void 0)throw Error("Filter source cannot be null or undefined");if(!Array.isArray(e))throw Error("Filter source must be an array");let n=a.key?.[0],s=O[r];if(n){let p=Array(e.length);for(let c=0;c<e.length;c++)try{p[c]=Oe.select({...o,...e[c]},n)}catch{p[c]=Symbol("invalid")}let m=[];for(let c=0;c<e.length;c++){let y=p[c];if(typeof y!=="symbol"&&t===void 0?s(y):s(y,t))m.push(e[c])}return m}let i=[];for(let p of e)if(t===void 0?s(p):s(p,t))i.push(p);return i}}});var tt=f(v(),1),ot=f(q(),1),S=f(b(),1),nt=f(U(),1);var at=()=>({each:{processArgs:!1,fn:async({rawArgs:[e,r,...t],root:o,options:a,tags:n})=>{let s=async(g)=>g.quoted?J(g.value):await S.select(o,g.value),i=await S.select(o,e.value),p=await s(r),m=n.key?.[0],c=Array.isArray(i)?i:ot.toList(i),y=[],$=await Promise.all(t.map(async(g)=>await s(g))),A={...o,item:void 0,index:0,params:$,instance:void 0,parent:o.this,tags:n},G={...a,root:A};for(let g=0;g<c.length;g++){let R=k(p),I={instance:R},te=typeof p==="string"?I:R;if(A.item=c[g],A.index=g,A.instance=R,n?.root?.[0])Object.assign(A,await S.select(A,n.root[0]));if(await tt.processFields(te,G),m!==void 0)y.push(await S.select(I.instance,m));else y.push(I.instance)}if(n.join?.length){if(y.length===0)return"";let g=J(n.join[0]),R=n.pad?.[0]??"0",I=n.padChar?.[0]??" ",te=n.finalize?.length&&g?g:"",Pe=`${y.join(g)}${te}`;return R?nt.padBlock(Pe,parseInt(R),`
13
+ `,I):Pe}return y}}});var it=f(b(),1),x=async(e,r,t)=>e.rawArgs[r].quoted?e.rawArgs[r].value:await it.select(e.root,e.rawArgs[r].value,{defaultValue:t}),st=()=>({switch:{processArgs:!1,fn:async(e)=>{let r=await x(e,0,!1),t=await x(e,1);if(t[r]===void 0){if(e.rawArgs.length>2)return x(e,2);throw Error(`Unhandled switch case: ${r}`)}return t[r]}}});var lt=f(v(),1),ut=()=>lt.makeFieldProcessorMap({log:console.log});var ft=f(v(),1);var pt=()=>({if:{types:{0:"boolean"},fn:(e)=>e.args[0]?e.args[1]:e.args[2]},check:{types:{0:Object.keys(O)},fn:(e)=>O[e.args[0]](...e.args.slice(1))},...ft.makeFieldProcessorMap(O,{types:L})});var ct=f(w(),1);var mt=()=>({default:{processArgs:!1,fn:async(e)=>{for(let r=0;r<e.rawArgs.length;r++)if(e.rawArgs[r]?.value!==void 0){let o=await x(e,r,null);if(o!==null)return o}if(e.tags.nullable?.length)return ct.NavigateResult.DeleteItem();if(e.tags.fail?.length)throw Error(`No valid value found for default (${e.rawArgs.map((r)=>r.value).join(", ")})`);return""}}});var W=f(w(),1),yt=()=>({convert:({args:[e,r,t]})=>{switch(r){case"string":return String(e);case"number":{let o=Number(e);if(!isNaN(o))return W.NavigateResult.ReplaceItem(o);break}case"boolean":if(e==="true"||e===!0||e===1||e==="1"||e==="yes"||e==="on")return W.NavigateResult.ReplaceItem(!0);else if(e==="false"||e===!1||e===0||e==="0"||e==="no"||e==="off")return W.NavigateResult.ReplaceItem(!1);break;default:throw Error(`Unsupported type for convert: ${r}`)}if(t!==void 0)return W.NavigateResult.ReplaceItem(t);throw Error(`Failed to convert value to ${r}`)},isType:({args:[e,r]})=>{let o=(()=>{switch(r){case"string":return typeof e==="string";case"number":return typeof e==="number";case"boolean":return typeof e==="boolean";case"object":return e!==null&&typeof e==="object"&&!Array.isArray(e);case"array":return Array.isArray(e);case"null":return e===null;case"undefined":return e===void 0;case"function":return typeof e==="function";default:throw Error(`Unknown type for isType: ${r}`)}})();return W.NavigateResult.ReplaceItem(o)},typeOf:({args:[e]})=>{if(e===null)return"null";else if(Array.isArray(e))return"array";else return typeof e}});var gt=(e)=>e.keys(mr(e)).keys(dr(e)).keys($r()).keys(Ur()).keys(jr()).keys(_r()).keys(Ir(e)).keys(Sr(e)).sources(xr(e)).sources(Kr()).sources(Xr()).sources(yt()).sources(rt()).sources(at()).sources(st()).sources(ut()).sources(pt()).sources(mt());var l={};Q(l,{deepClone:()=>k,conditionPredicates:()=>O,Objector:()=>ee});u(l,f(v(),1),module.exports);u(l,f(X(),1),module.exports);u(l,f(U(),1),module.exports);u(l,f(q(),1),module.exports);u(l,f(b(),1),module.exports);u(l,f(F(),1),module.exports);u(l,f(D(),1),module.exports);u(l,f(w(),1),module.exports);class ee{includeDirectories=[];includes=[];outputs=[];vars={};cache={};fields={sources:{},keys:{}};objectMetadata={};constructor(){this.use(gt)}use(e){return e(this),this}includeDirectory(...e){return this.includeDirectories.push(...e),this}getIncludeDirectories(){return this.includeDirectories}include(...e){return this.includes.push(...e),this}keys(e){return Object.assign(this.fields.keys,{...this.fields.keys,...e}),this}sources(e){return Object.assign(this.fields.sources,{...this.fields.sources,...e}),this}variables(e){return this.vars={...this.vars,...e},this}getOutputs(){return this.outputs}output(e){return this.outputs.push(e),this}metadata(e,r){return this.objectMetadata[e]=r,this}getMetadata(e){return this.objectMetadata[e]}getAllMetadata(){return this.objectMetadata}filter(e){return this.fields.filters??=[],this.fields.filters?.push(e),this}async docIncludes(e,r){let t=[];if(e.content.includes)t.push(...e.content.includes),delete e.content.includes;t.push(...this.includes),this.includes.length=0;for(let o of t)bt.merge(await this.load(o,e.folderPath,{parent:e.content,...r},!0),e.content)}async loadObject(e,r,t){return await wt.processFields(e,{...this.fields,globalContext:{file:t?.fullPath??"@internal"},root:{...this.fields.root,...this.vars,$document:{root:{content:e},fileName:t?.fileName??"@internal",folder:t?.folderPath??"@internal",fullPath:t?.fullPath??"@internal",...r}}}),e}async load(e,r,t,o){let a=r?[r]:[];a.push(...this.includeDirectories.map((c)=>Ae.default.isAbsolute(c)?c:Ae.default.join(r??process.cwd(),c)));let n=await re.loadFormat(e,{dirs:a});if(!n.content)return null;let s=n.fullPath,i=this.cache[s]??n.content,p=k(i);n.content=p,await this.docIncludes(n,t);let m;if(o!==!0)m=await this.loadObject(n.content,t,{fileName:n.fullPath,folderPath:n.folderPath,fullPath:n.fullPath});else m=n.content;return this.cache[s]??=i,m}async writeOutputs(e){await re.writeOutputs(this.getOutputs(),e)}}var Go=l;
package/package.json CHANGED
@@ -1,20 +1,12 @@
1
1
  {
2
2
  "name": "@homedev/objector",
3
- "version": "1.2.28",
3
+ "version": "1.2.30",
4
4
  "description": "object extensions for YAML/JSON",
5
5
  "author": "julzor",
6
6
  "license": "ISC",
7
7
  "main": "dist/index.js",
8
8
  "type": "module",
9
9
  "dependencies": {
10
- "@homedev/fields": "^1.2.12",
11
- "@homedev/files": "^1.0.4",
12
- "@homedev/merge": "^1.0.3",
13
- "@homedev/navigate": "^1.1.3",
14
- "@homedev/object-utils": "^1.0.3",
15
- "@homedev/select": "^1.1.3",
16
- "@homedev/split": "^1.1.4",
17
- "@homedev/string-utils": "^1.0.9",
18
10
  "yaml": "^2.8.2"
19
11
  },
20
12
  "typings": "dist/index.d.ts"
package/dist/index.d.ts DELETED
@@ -1,42 +0,0 @@
1
- import { FieldProcessorMap } from '@homedev/fields';
2
- import { Output } from '@homedev/files';
3
- import { WriteOutputsOption } from '@homedev/files';
4
-
5
- declare interface LoadObjectOptions {
6
- fileName: string;
7
- fullPath: string;
8
- folderPath: string;
9
- }
10
-
11
- /**
12
- * @public
13
- */
14
- export declare class Objector {
15
- private includeDirectories;
16
- private includes;
17
- private outputs;
18
- private vars;
19
- private cache;
20
- private fields;
21
- private objectMetadata;
22
- constructor();
23
- use(handler: (o: Objector) => void): this;
24
- includeDirectory(...dirs: string[]): this;
25
- getIncludeDirectories(): string[];
26
- include(...files: string[]): this;
27
- keys(keys: FieldProcessorMap): this;
28
- sources(sources: FieldProcessorMap): this;
29
- variables(vars: Record<string, any>): this;
30
- getOutputs(): Output[];
31
- output(o: Output): this;
32
- metadata(path: string, o: any): this;
33
- getMetadata(path: string): any;
34
- getAllMetadata(): Record<string, any>;
35
- filter(f: RegExp): this;
36
- private docIncludes;
37
- loadObject<T = any>(data: T, container?: any, options?: LoadObjectOptions): Promise<T>;
38
- load<T = any>(fileName: string, cwd?: string, container?: any, noProcess?: boolean): Promise<T | null>;
39
- writeOutputs(options?: WriteOutputsOption): Promise<void>;
40
- }
41
-
42
- export { }