@homedev/objector 1.2.36 → 1.2.38

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
@@ -167,7 +167,7 @@ export default libs;
167
167
 
168
168
  declare interface LoadContext {
169
169
  included: string[];
170
- current: any;
170
+ document: any;
171
171
  }
172
172
 
173
173
  /**
@@ -306,6 +306,7 @@ declare const nonNullMap: <T, U>(arr: T[] | undefined, fn: (item: T, index: numb
306
306
  * @public
307
307
  */
308
308
  export declare class Objector {
309
+ private currentConfig;
309
310
  private includeDirectories;
310
311
  private includes;
311
312
  private outputs;
@@ -313,8 +314,12 @@ export declare class Objector {
313
314
  private cache;
314
315
  private fields;
315
316
  private objectMetadata;
317
+ private subDocuments;
318
+ private currentContext;
316
319
  constructor();
317
320
  use(handler: (o: Objector) => void): this;
321
+ config(c: Partial<ObjectorConfig>): this;
322
+ getConfig(): ObjectorConfig;
318
323
  includeDirectory(...dirs: string[]): this;
319
324
  getIncludeDirectories(): string[];
320
325
  include(...files: string[]): this;
@@ -326,11 +331,19 @@ export declare class Objector {
326
331
  metadata(path: string, o: any): this;
327
332
  getMetadata(path: string): any;
328
333
  getAllMetadata(): Record<string, any>;
334
+ subDocument(name: string, value: any): this;
335
+ getSubDocument(name: string): any;
336
+ getCurrentContext(): LoadContext | null;
329
337
  filter(f: RegExp): this;
330
338
  private docIncludes;
331
- loadObject<T = any>(data: T, container?: any, options?: LoadObjectOptions, ld?: LoadContext): Promise<T>;
339
+ loadObject<T = any>(data: T, container?: any, options?: LoadObjectOptions): Promise<T>;
332
340
  load<T = any>(fileName: string, cwd?: string, container?: any, noProcess?: boolean, ld?: LoadContext): Promise<T | null>;
333
- writeOutputs(options?: WriteOutputsOption): Promise<void>;
341
+ writeOutputs(options?: WriteOutputsOption, root?: any): Promise<void>;
342
+ loadSubDocument(name: string, root?: any): Promise<any>;
343
+ }
344
+
345
+ declare interface ObjectorConfig {
346
+ delayedOutputs?: boolean;
334
347
  }
335
348
 
336
349
  declare interface Output {
package/dist/index.js CHANGED
@@ -1,13 +1,13 @@
1
- var st=Object.create;var{getPrototypeOf:it,defineProperty:W,getOwnPropertyNames:re}=Object;var te=Object.prototype.hasOwnProperty,u=(e,r,t)=>{for(let o of re(r))if(!te.call(e,o)&&o!=="default")W(e,o,{get:()=>r[o],enumerable:!0});if(t){for(let o of re(r))if(!te.call(t,o)&&o!=="default")W(t,o,{get:()=>r[o],enumerable:!0});return t}},m=(e,r,t)=>{t=e!=null?st(it(e)):{};let o=r||!e||!e.__esModule?W(t,"default",{value:e,enumerable:!0}):t;for(let n of re(e))if(!te.call(o,n))W(o,n,{get:()=>e[n],enumerable:!0});return o};var I=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var C=(e,r)=>{for(var t in r)W(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})};var Y=I((no,Oe)=>{var{defineProperty:oe,getOwnPropertyNames:lt,getOwnPropertyDescriptor:ut}=Object,ft=Object.prototype.hasOwnProperty,ke=new WeakMap,pt=(e)=>{var r=ke.get(e),t;if(r)return r;if(r=oe({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")lt(e).map((o)=>!ft.call(r,o)&&oe(r,o,{get:()=>e[o],enumerable:!(t=ut(e,o))||t.enumerable}));return ke.set(e,r),r},mt=(e,r)=>{for(var t in r)oe(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},Ae={};mt(Ae,{splitWithQuotes:()=>yt,splitNested:()=>ct});Oe.exports=pt(Ae);var ct=(e,r,t="(",o=")")=>{let n=0,a="",i=[];for(let s of e){if(a+=s,s===t)n++;if(s===o)n--;if(n===0&&s===r)i.push(a.slice(0,-1)),a=""}if(a)i.push(a);return i},yt=(e,r=",")=>{let t=[],o=e.length,n=r.length,a=0,i=(s)=>{if(s+n>o)return!1;for(let f=0;f<n;f++)if(e[s+f]!==r[f])return!1;return!0};while(a<o){while(a<o&&e[a]===" ")a++;if(a>=o)break;let s="",f=e[a]==='"'||e[a]==="'";if(f){let c=e[a++];while(a<o&&e[a]!==c)s+=e[a++];if(a<o)a++}else{while(a<o&&!i(a)){let c=e[a];if(c==='"'||c==="'"){s+=c,a++;while(a<o&&e[a]!==c)s+=e[a++];if(a<o)s+=e[a++]}else s+=e[a++]}s=s.trim()}if(s)t.push({value:s,quoted:f});if(i(a))a+=n}return t}});var d=I((ao,Ce)=>{var{defineProperty:ne,getOwnPropertyNames:gt,getOwnPropertyDescriptor:wt}=Object,dt=Object.prototype.hasOwnProperty,Me=new WeakMap,bt=(e)=>{var r=Me.get(e),t;if(r)return r;if(r=ne({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")gt(e).map((o)=>!dt.call(r,o)&&ne(r,o,{get:()=>e[o],enumerable:!(t=wt(e,o))||t.enumerable}));return Me.set(e,r),r},vt=(e,r)=>{for(var t in r)ne(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},$e={};vt($e,{navigate:()=>Ne,find:()=>ht,NavigateResult:()=>h,NavigateAction:()=>Pe});Ce.exports=bt($e);var Pe;((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"})(Pe||={});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 Ne=async(e,r)=>{let t=async(n)=>{let a=n.key===null,i=a?{action:0}:await r(n);if(n.value&&typeof n.value==="object"&&i.action==0){if(!a)n.path.push(n.key),n.parents.push(n.parent);while(await o(n));if(!a)n.parents.pop(),n.path.pop()}return i},o=async(n)=>{for(let[a,i]of Object.entries(n.value)){let s=await t({key:a,value:i,path:n.path,parent:n.value,parents:n.parents});switch(s.action){case 3:if(!n.key)throw Error("Cannot replace root");if(n.parent[n.key]=s.by,s.reexplore)return n.value=s.by,!0;return;case 4:delete n.parent[n.key];return;case 5:delete n.value[a],Object.assign(n.value,s.by);break;case 1:return;case 6:if(n.value[a]=s.by,s.skipSibilings)return;break;case 7:if(delete n.value[a],s.skipSibilings)return;break}}};await t({key:null,value:e,path:[],parent:null,parents:[]})},ht=async(e,r)=>{let t=[];return await Ne(e,(o)=>{if(r([...o.path,o.key].join("."),o.value))t.push(o.value);return h.Explore()}),t}});var b=I((so,je)=>{var{defineProperty:se,getOwnPropertyNames:kt,getOwnPropertyDescriptor:At}=Object,Ot=Object.prototype.hasOwnProperty,Re=new WeakMap,Mt=(e)=>{var r=Re.get(e),t;if(r)return r;if(r=se({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")kt(e).map((o)=>!Ot.call(r,o)&&se(r,o,{get:()=>e[o],enumerable:!(t=At(e,o))||t.enumerable}));return Re.set(e,r),r},$t=(e,r)=>{for(var t in r)se(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},Ee={};$t(Ee,{select:()=>ie});je.exports=Mt(Ee);var Pt=Y(),ae=(e,r,t,o)=>{if(e.startsWith("{")){let n=e.substring(1,e.length-1);return ie(r,n,t).toString()}return o?e:void 0},Nt=(e,r,t,o)=>{let n=ae(r,t,o);if(n)return ie(e,n,o);let a=/^\[([^=\]]*)([=]*)([^\]]*)\]$/.exec(r);if(a){let[s,f,c,p]=a,y=ae(f.trim(),t,o,!0),P=ae(p.trim(),t,o,!0);if(Array.isArray(e))switch(c){case"==":case"=":return e.find((O)=>O[y]==P)}}let i=/^([^[\]]*)\[([^\]]*)]/.exec(r);if(i)return e[i[1]][i[2]];return e[r]},ie=(e,r,t)=>{let o=void 0,n=void 0;r??="";let a=(p)=>p?.endsWith("?")?[p.substring(0,p.length-1),!0]:[p,!1],i=(p,y)=>{let[P,O]=a(y.pop());if(P){let K=Nt(p,P,e,t);if(K===void 0){if(O||t?.defaultValue!==void 0||t?.optional)return;throw Error(`Unknown path element: "${P}" in "${r}"`)}return o=p,n=P,i(K,y)}if(t?.set&&n)o[n]=t?.set;return p},s=Pt.splitNested(r,t?.separator??".","{","}"),f=s.length>0&&s[s.length-1].startsWith("?=")?s.pop()?.substring(2):void 0;s.reverse();let c=i(e,s);if(c===void 0)return f??t?.defaultValue;return c}});var v=I((io,Ye)=>{var{defineProperty:le,getOwnPropertyNames:Ct,getOwnPropertyDescriptor:Rt}=Object,Et=Object.prototype.hasOwnProperty,De=new WeakMap,jt=(e)=>{var r=De.get(e),t;if(r)return r;if(r=le({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")Ct(e).map((o)=>!Et.call(r,o)&&le(r,o,{get:()=>e[o],enumerable:!(t=Rt(e,o))||t.enumerable}));return De.set(e,r),r},Dt=(e,r)=>{for(var t in r)le(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},Te={};Dt(Te,{processFields:()=>Ke,makeFieldProcessorMap:()=>xt,makeFieldProcessorList:()=>St,makeFieldProcessor:()=>pe,getProcessor:()=>ue,getArgs:()=>Se});Ye.exports=jt(Te);var Lt=Y(),Le=d(),_e=b(),We=(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 n=o.trim();if(!isNaN(+n))return+n;return n})}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)},H=(e,r,t,o,n,a)=>{let i=o?.(e)??e,s=n(i);if(s[0])return s[1];if(!r){let f=_e.select(t,e),c=n(f);if(c[0])return c[1]}throw Error(a)},Ue=(e,r,t,o,n)=>{let a=typeof e.types==="function"?e.types(o,r.value,n):e.types?.[o];if(!a||a==="ref")return We(r,(s)=>_e.select(t,s));let i=We(r,()=>r.value);if(Array.isArray(a)){if(!a.includes(i))throw Error(`Argument ${o.toString()} must be one of [${a.join(", ")}]: ${i}`);return i}if(typeof a==="string"){if(a.endsWith("?")){let s=a.slice(0,-1);if(r.value==="null")return Le.NavigateResult.ReplaceItem(null);if(r.value==="undefined")return Le.NavigateResult.ReplaceItem(void 0);if(r.value==="")return"";a=s}switch(a){case"any":return i;case"array":return H(i,r.quoted,t,null,(s)=>[Array.isArray(s),s],`Argument ${o.toString()} must be an array: ${i}`);case"object":return H(i,r.quoted,t,null,(s)=>[typeof s==="object"&&s!==null,s],`Argument ${o.toString()} must be an object: ${i}`);case"number":return H(i,r.quoted,t,(s)=>Number(s),(s)=>[!isNaN(s),s],`Argument ${o.toString()} must be a number: ${i}`);case"boolean":return H(i,r.quoted,t,null,(s)=>{if([!0,"true","1",1,"yes","on"].includes(s))return[!0,!0];if([!1,"false","0",0,"no","off"].includes(s))return[!0,!1];if([null,"null","undefined",void 0,""].includes(s))return[!0,!1];if(Array.isArray(s))return[!0,s.length>0];return[!1,!1]},`Argument ${o.toString()} must be a boolean: ${i}`);case"string":return i.toString();default:throw Error(`Unknown type for argument ${o.toString()}: ${a}`)}}return a(i,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}},Je=(e)=>!e.quoted&&e.value.startsWith("."),Wt=(e)=>{let r={};for(let t of e){if(!Je(t))continue;let o=t.value.indexOf("="),n=o>-1?t.value.slice(1,o):t.value.slice(1),a=o>-1?t.value.slice(o+1):"";if(a.length>=2){let i=a[0],s=a[a.length-1];if(i==='"'&&s==='"'||i==="'"&&s==="'")a=a.slice(1,-1)}if(!r[n])r[n]=[];r[n].push(a)}return r},Se=(e,r,t)=>{let o=Lt.splitWithQuotes(e??""),n=Wt(o),a=o.filter((s)=>!Je(s)),i=r.options.processArgs===!1?[]:a.map((s,f)=>Ue(r.options,s,t,f,a));return{rawArgs:a,parsedArgs:i,tags:n}},R=d(),Ie=d(),It=(e,r)=>r.keys!==void 0&&e.key.startsWith(".")&&r.keys[e.key.substring(1)]!==void 0,Tt=async(e,r,t,o)=>{let{key:n,parent:a}=e,i=ue(o.keys,n.substring(1));if(i.options.processArgs!==!1&&(typeof i.options.types==="function"||i.options.types?.[0]!==void 0))e.value=Ue(i.options,{value:e.value,quoted:!1},t,0,[]);if(typeof e.value!=="string")await Ke(e.value,{...o,root:{...t,parent:e.parent,parents:e.parents},filters:[...o.filters??[],...i.options.filters??[]]});let s=await i.fn({path:r,root:t,parent:a,key:n,options:o,value:e.value,args:[e.value],rawArgs:[],tags:{}});return s instanceof Ie.NavigateResult?s:Ie.NavigateResult.ReplaceParent(s)},Q=d(),_t=b(),xe=(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 n=1;for(;t<e.length;t++)if(e[t]==="(")n++;else if(e[t]===")"){if(n--,n===0){r.push([o,t]);break}}if(n!==0)throw Error(`Unmatched opening $( at position ${o.toString()}`);t++}else t++;return r};class fe{value;constructor(e){this.value=e}}var Be=async(e,r,t)=>{for(let o=r.length-1;o>=0;o--){let[n,a]=r[o],i=e.slice(n+2,a),s=await Be(i,xe(i),t);if(typeof s==="object")return s;let f=await t(s,e);if(f instanceof fe)return f.value;e=e.slice(0,n)+f+e.slice(a+1)}return e},Ut=async(e,r)=>Be(e,xe(e),r),Jt=async(e,r,t,o)=>{let n=await(async()=>{let a=/([\w\d.-_/]+):(.+)/.exec(e);if(!a)return await _t.select(r,e);let[i,s,f]=a,c=ue(o.sources,s),p=Se(f,c,r);return await c.fn({args:p.parsedArgs,rawArgs:p.rawArgs,tags:p.tags,key:s,options:o,root:r,path:t,value:null})})();if(n===null||n===void 0)return"";if(typeof n==="object")return new fe(n);return n},Ge=async(e,r,t,o)=>{let n=await Ut(r,(a)=>Jt(a,t,e,o));if(n instanceof Q.NavigateResult)return n;if(n===r)return Q.NavigateResult.Explore();if(typeof n==="string"){let a=await Ge(e,n,t,o);if(a.action!==Q.NavigateAction.Explore)return a}return Q.NavigateResult.ReplaceItem(n)},Ke=async(e,r)=>{return r??={},await R.navigate(e,async(t)=>{let o=[...t.path,t.key].join(".");if(r?.filters?.length&&r.filters.some((s)=>s.test(o)))return R.NavigateResult.NoExplore();let n=t.path.length===0,a=t.parents.length>0?t.parents.toReversed():[];if(n){if(a.length>0)throw Error("Root object should not have a parent");a=r?.root?.parents?[r.root.parent,...r.root.parents.toReversed()]:[]}let i={...e,...r.root,this:t.parent,parent:a.length>0?a[0]:null,parents:a};try{if(t.key.startsWith("$"))return R.NavigateResult.NoExplore();let s=R.NavigateResult.Explore();if(typeof t.value==="string")switch(s=await Ge(o,t.value,i,r),s.action){case R.NavigateAction.Explore:break;case R.NavigateAction.ReplaceItem:t.value=s.by;break;default:return s}if(It(t,r))s=await Tt(t,o,i,r);return s}catch(s){throw Error(`${s.message}
2
- (${o})`)}}),e},pe=(e,r)=>r?{fn:(t)=>e(...t.args),types:r}:(t)=>e(...t.args),St=(e,r)=>Object.fromEntries(e.map((t)=>[t.name,pe(t,r?.types?.[t.name])])),xt=(e,r)=>Object.fromEntries((r?.keys??Object.keys(e)).map((t)=>[t,pe(e[t],r?.types?.[t])]))});var S=I((sn,Wr)=>{var{defineProperty:be,getOwnPropertyNames:Yt,getOwnPropertyDescriptor:Ht}=Object,Qt=Object.prototype.hasOwnProperty,jr=new WeakMap,Zt=(e)=>{var r=jr.get(e),t;if(r)return r;if(r=be({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")Yt(e).map((o)=>!Qt.call(r,o)&&be(r,o,{get:()=>e[o],enumerable:!(t=Ht(e,o))||t.enumerable}));return jr.set(e,r),r},Xt=(e,r)=>{for(var t in r)be(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},Dr={};Xt(Dr,{tokenize:()=>ro,snake:()=>qt,pascal:()=>Lr,padBlock:()=>eo,changeCase:()=>zt,capital:()=>Vt,camel:()=>Ft});Wr.exports=Zt(Dr);var Lr=(e)=>e.replace(/((?:[_ ]+)\w|^\w)/g,(r,t)=>t.toUpperCase()).replace(/[_ ]/g,""),Vt=(e)=>e.replace(/((?:[ ]+)\w|^\w)/g,(r,t)=>t.toUpperCase()),Ft=(e)=>Lr(e).replace(/((?:[ ]+\w)|^\w)/g,(r,t)=>t.toLowerCase()),qt=(e,r)=>e.replace(/([a-z])([A-Z])/g,`$1${r}$2`).replace(/\s+/g,r),zt=(e,r)=>{switch(r){case"upper":return e.toUpperCase();case"lower":return e.toLowerCase();default:return e}},eo=(e,r,t=`
3
- `,o=" ")=>{let n=o.repeat(r);return e.split(t).map((a)=>n+a).join(t)},ro=(e,r,t=/\${([^}]+)}/g)=>{return e.replace(t,(o,n)=>r[n]??"")}});var at=m(v(),1);var ze={};C(ze,{writeOutputs:()=>V,writeOutput:()=>ye,writeFormat:()=>ce,locate:()=>E,loadFormat:()=>Z,importList:()=>ge,importGlob:()=>qe,globMap:()=>X,exists:()=>T});import He from"fs/promises";import me from"path";import Bt from"path";import Gt from"fs/promises";import Ve from"fs/promises";import Qe from"path";import Ze from"path";import Xe from"path";var T=async(e)=>{try{return await He.access(e,He.constants.R_OK),!0}catch{return!1}},E=async(e,r)=>{let t=!me.isAbsolute(e)&&r?["",...r]:[""];for(let o of t){let n=me.join(o,e);if(await T(n))return me.resolve(n)}throw Error(`File not found: "${e}"`)},Z=async(e,r)=>{let t=await E(e,r?.dirs),o=await Bun.file(t).text(),n=Bt.dirname(t),a={"[.]json$":JSON.parse,"[.](yml|yaml)$":Bun.YAML.parse,"[.]toml$":Bun.TOML.parse,...r?.parsers},i=Object.entries(a).find((s)=>t.match(s[0]));if(!i)throw Error(`Unhandled file type: ${e}`);return{content:i[1](o),fullPath:t,folderPath:n}},ce=async(e,r,t="text")=>{switch(t){case"yaml":await Bun.write(e,Bun.YAML.stringify(r));break;case"json":await Bun.write(e,JSON.stringify(r));break;case"text":default:await Bun.write(e,r.toString())}},X=async(e,r)=>{if(typeof e==="string"&&!e.includes("*"))return await r.map(e,0,[]);let t=await Array.fromAsync(Gt.glob(e,{cwd:r.cwd})),o=r.filter?t.filter(r.filter):t;return await Promise.all(o.map(r.map))},V=async(e,r)=>{if(r?.targetDirectory&&r?.removeFirst)try{await Ve.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 ye(t,r)},ye=async(e,r)=>{let t=Qe.join(r?.targetDirectory??".",e.name),o=Qe.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 Ve.mkdir(o,{recursive:!0})}catch(n){throw Error(`Failed to create target directory "${o}" for output "${t}": ${n.message}`)}try{await ce(t,e.value,e.type??"text")}catch(n){throw Error(`Failed to write output "${t}": ${n.message}`)}},Fe=(e)=>e?Xe.isAbsolute(e)?e:Xe.join(process.cwd(),e):process.cwd(),ge=async(e,r)=>{let t=[];for(let o of e)try{let n=!Ze.isAbsolute(o)?Ze.join(Fe(r?.cwd),o):o;if(r?.filter?.(n)===!1)continue;let a=await import(n);if(r?.resolveDefault==="only"&&!a.default)throw Error(`Module ${o} does not have a default export`);let i=r?.resolveDefault?a.default??a:a,s=r?.map?await r.map(i,o):i;if(s!==void 0)t.push(s)}catch(n){if(r?.fail?.(o,n)===!1)continue;throw Error(`Failed to import module ${o}: ${n.message??n}`)}return t},qe=async(e,r)=>{let t=[];for(let o of e){let n=await Array.fromAsync(new Bun.Glob(o).scan({cwd:Fe(r?.cwd),absolute:!0}));t.push(...await ge(n,r))}return t};var er={};C(er,{mergeAll:()=>_,merge:()=>M});var M=(e,r,t)=>{for(let o of Object.keys(r)){if(e[o]===void 0)continue;let n=r[o],a=e[o];if(typeof a!==typeof n||Array.isArray(a)!==Array.isArray(n)){let s=t?.mismatch?.(o,a,n,e,r);if(s!==void 0){r[o]=s;continue}throw Error(`Type mismatch: ${o}`)}let i=t?.mode?.(o,a,n,e,r)??r[".merge"]??"merge";switch(i){case"source":r[o]=a;continue;case"target":continue;case"skip":delete r[o],delete e[o];continue;case"merge":break;default:throw Error(`Unknown merge mode: ${i}`)}if(typeof a==="object")if(Array.isArray(a))n.push(...a);else{if(t?.navigate?.(o,a,n,e,r)===!1)continue;M(a,n,t)}else{if(a===n)continue;let s=t?.conflict?.(o,a,n,e,r);r[o]=s===void 0?n:s}}for(let o of Object.keys(e))if(r[o]===void 0)r[o]=e[o]},_=(e,r)=>{let t={};for(let o of e.toReversed())M(o,t,r);return t};import z from"path";var rr=m(d(),1),tr=(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 rr.NavigateResult.SkipSiblings()}});var or=m(d(),1);import Kt from"path";var nr=(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&&Kt.dirname(t.file))}return or.NavigateResult.DeleteItem()}});var cr=m(v(),1);var ar=m(b(),1),sr=(e)=>{if(typeof e.value==="string")return e.parent;let r=e.value.model;if(!r)return e.parent;if(typeof r==="string")return ar.select(e.root,r);return r};var we=m(b(),1),ir=(e)=>{if(typeof e.value==="string")return we.select(e.root,e.value);if(Array.isArray(e.value))return e.value;let r=e.value;if(typeof r.from==="string")return we.select(e.root,r.from);return r.from};var lr=m(v(),1),ur=m(b(),1),fr=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 lr.processFields(o,{...e.options,root:{...e.root,result:r}}),o}return await ur.select({...e.root,result:r},t.selector)};var pr={};C(pr,{deepClone:()=>k});var k=(e)=>globalThis.structuredClone!==void 0?structuredClone(e):JSON.parse(JSON.stringify(e));var mr={};C(mr,{conditionPredicatesTypes:()=>U,conditionPredicates:()=>A});var A={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)=>!A.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!=="")},U={and:()=>"boolean",or:()=>"boolean",xor:()=>"boolean",true:()=>"boolean",false:()=>"boolean",lt:()=>"number",le:()=>"number",gt:()=>"number",ge:()=>"number"};var yr=()=>({each:{filters:[/select|model/],fn:async(e)=>{let r=e.value;delete e.parent[e.key];let t=await ir(e),o=await sr(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=_([r.model,...Array.isArray(r.extend.model)?r.extend.model:[r.extend.model]]);let n=[];for(let a=0;a<t.length;a++){let i=k(o);if(await cr.processFields(i,{...e.options,root:{...e.root,index:a,item:t[a],instance:i}}),r.extend?.result){let s=r.extend.result;i=_([i,...Array.isArray(s)?s:[s]])}n.push(await fr(e,i))}return n}}});var gr=m(b(),1),wr=()=>({concat:async(e)=>{let r=[];for(let t of Array.isArray(e.value)?e.value:[e.value])r.push(...await gr.select(e.root,t));return r.filter((t)=>t!==void 0)}});var dr=m(v(),1);var de=m(d(),1),br=m(b(),1);var vr=()=>({extends:async(e)=>{let r=async(t,o)=>{for(let n of Array.isArray(o)?o:[o]){let a=await br.select(e.root,n),i=k(a);if(i[e.key])await r(i,i[e.key]);await dr.processFields(i,{...e.options}),M(i,t),delete t[e.key]}};return await r(e.parent,e.value),de.NavigateResult.Explore()},group:(e)=>{let r=e.root.parent,t=e.value,{items:o,...n}=t;return t.items.forEach((a)=>r.push({...n,...a})),de.NavigateResult.DeleteParent()}});var hr=m(v(),1),$=m(d(),1),kr=(e)=>({skip:{types:{0:"boolean"},fn:(r)=>r.value?$.NavigateResult.DeleteParent():$.NavigateResult.DeleteItem()},metadata:({path:r,value:t})=>{return e.metadata(r,t),$.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 n=r.value?t:o;if(n===void 0)return $.NavigateResult.DeleteItem();if(typeof n==="string")return(await hr.processFields({value:n},{...r.options,root:{...r.root}})).value;return $.NavigateResult.ReplaceParent(n,!0)}},switch:(r)=>{let t=r.value;if(!t.cases)throw Error("Missing cases for switch");if(t.cases[t.from]!==void 0)return $.NavigateResult.ReplaceParent(t.cases[t.from],!0);if(t.default!==void 0)return $.NavigateResult.ReplaceParent(t.default,!0);return $.NavigateResult.DeleteParent()}});var Ar=m(b(),1),Or=()=>({from:async({root:e,parent:r,value:t})=>{let o=await Ar.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 M(o,r.content),r.content}return o}});var $r=m(d(),1);import Mr from"node:vm";var Pr=(e)=>({modules:async(r)=>{for(let[t,o]of Object.entries(r.value)){let n=Mr.createContext({console,objector:e,document:r.root}),a=new Mr.SourceTextModule(o,{identifier:t,context:n});await a.link((i)=>{throw Error(`Module ${i} is not allowed`)}),await a.evaluate(),e.sources(Object.fromEntries(Object.entries(a.namespace).map(([i,s])=>[`${t}.${i}`,(f)=>s(f,...f.args)])))}return $r.NavigateResult.DeleteItem()}});import Nr from"fs/promises";import J from"path";var Cr=(e)=>({include:async(r)=>{let{file:t}=r.options.globalContext;return await X(r.args[0],{cwd:J.dirname(t),filter:(o)=>J.basename(t)!==o,map:async(o)=>e.load(o,J.dirname(t),{parent:r.root})})},exists:async({args:[r]})=>await T(r),file:async(r)=>await Nr.readFile(await E(r.args[0],e.getIncludeDirectories())).then((t)=>t.toString()),scan:async(r)=>{let t=[],n=(()=>{let s=r.args[2]??["**/node_modules/**"],f=typeof s==="string"?s.split(",").map((c)=>c.trim()):s;if(!Array.isArray(f))throw Error("Scan exclusion must be a list");return f})(),{file:a}=r.options.globalContext,i=r.args[1]?await E(r.args[1],e.getIncludeDirectories()):J.dirname(a);for await(let s of Nr.glob(r.args[0],{cwd:i,exclude:(f)=>n.some((c)=>J.matchesGlob(f,c))}))t.push(s);return t}});var Rr=m(v(),1),Er=()=>Rr.makeFieldProcessorMap({env:(e)=>process.env[e]});var Ir=m(v(),1),w=m(S(),1);var F=(e,r=0,t)=>{let o=" ".repeat(r),n=" ".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`[
1
+ var at=Object.create;var{getPrototypeOf:it,defineProperty:W,getOwnPropertyNames:re}=Object;var te=Object.prototype.hasOwnProperty,u=(e,r,t)=>{for(let o of re(r))if(!te.call(e,o)&&o!=="default")W(e,o,{get:()=>r[o],enumerable:!0});if(t){for(let o of re(r))if(!te.call(t,o)&&o!=="default")W(t,o,{get:()=>r[o],enumerable:!0});return t}},m=(e,r,t)=>{t=e!=null?at(it(e)):{};let o=r||!e||!e.__esModule?W(t,"default",{value:e,enumerable:!0}):t;for(let n of re(e))if(!te.call(o,n))W(o,n,{get:()=>e[n],enumerable:!0});return o};var I=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var C=(e,r)=>{for(var t in r)W(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})};var H=I((no,Oe)=>{var{defineProperty:oe,getOwnPropertyNames:lt,getOwnPropertyDescriptor:ut}=Object,ft=Object.prototype.hasOwnProperty,ke=new WeakMap,pt=(e)=>{var r=ke.get(e),t;if(r)return r;if(r=oe({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")lt(e).map((o)=>!ft.call(r,o)&&oe(r,o,{get:()=>e[o],enumerable:!(t=ut(e,o))||t.enumerable}));return ke.set(e,r),r},mt=(e,r)=>{for(var t in r)oe(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},Ae={};mt(Ae,{splitWithQuotes:()=>yt,splitNested:()=>ct});Oe.exports=pt(Ae);var ct=(e,r,t="(",o=")")=>{let n=0,s="",i=[];for(let a of e){if(s+=a,a===t)n++;if(a===o)n--;if(n===0&&a===r)i.push(s.slice(0,-1)),s=""}if(s)i.push(s);return i},yt=(e,r=",")=>{let t=[],o=e.length,n=r.length,s=0,i=(a)=>{if(a+n>o)return!1;for(let f=0;f<n;f++)if(e[a+f]!==r[f])return!1;return!0};while(s<o){while(s<o&&e[s]===" ")s++;if(s>=o)break;let a="",f=e[s]==='"'||e[s]==="'";if(f){let c=e[s++];while(s<o&&e[s]!==c)a+=e[s++];if(s<o)s++}else{while(s<o&&!i(s)){let c=e[s];if(c==='"'||c==="'"){a+=c,s++;while(s<o&&e[s]!==c)a+=e[s++];if(s<o)a+=e[s++]}else a+=e[s++]}a=a.trim()}if(a)t.push({value:a,quoted:f});if(i(s))s+=n}return t}});var w=I((so,Ce)=>{var{defineProperty:ne,getOwnPropertyNames:gt,getOwnPropertyDescriptor:dt}=Object,wt=Object.prototype.hasOwnProperty,Me=new WeakMap,bt=(e)=>{var r=Me.get(e),t;if(r)return r;if(r=ne({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")gt(e).map((o)=>!wt.call(r,o)&&ne(r,o,{get:()=>e[o],enumerable:!(t=dt(e,o))||t.enumerable}));return Me.set(e,r),r},vt=(e,r)=>{for(var t in r)ne(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},$e={};vt($e,{navigate:()=>Ne,find:()=>ht,NavigateResult:()=>k,NavigateAction:()=>Pe});Ce.exports=bt($e);var Pe;((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"})(Pe||={});class k{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 k(3,e,void 0,r)}static SkipSiblings(){return new k(1)}static Explore(){return new k(0)}static NoExplore(){return new k(2)}static DeleteParent(){return new k(4)}static MergeParent(e){return new k(5,e)}static ReplaceItem(e,r){return new k(6,e,r)}static DeleteItem(e){return new k(7,void 0,e)}}var Ne=async(e,r)=>{let t=async(n)=>{let s=n.key===null,i=s?{action:0}:await r(n);if(n.value&&typeof n.value==="object"&&i.action==0){if(!s)n.path.push(n.key),n.parents.push(n.parent);while(await o(n));if(!s)n.parents.pop(),n.path.pop()}return i},o=async(n)=>{for(let[s,i]of Object.entries(n.value)){let a=await t({key:s,value:i,path:n.path,parent:n.value,parents:n.parents});switch(a.action){case 3:if(!n.key)throw Error("Cannot replace root");if(n.parent[n.key]=a.by,a.reexplore)return n.value=a.by,!0;return;case 4:delete n.parent[n.key];return;case 5:delete n.value[s],Object.assign(n.value,a.by);break;case 1:return;case 6:if(n.value[s]=a.by,a.skipSibilings)return;break;case 7:if(delete n.value[s],a.skipSibilings)return;break}}};await t({key:null,value:e,path:[],parent:null,parents:[]})},ht=async(e,r)=>{let t=[];return await Ne(e,(o)=>{if(r([...o.path,o.key].join("."),o.value))t.push(o.value);return k.Explore()}),t}});var b=I((ao,je)=>{var{defineProperty:ae,getOwnPropertyNames:kt,getOwnPropertyDescriptor:At}=Object,Ot=Object.prototype.hasOwnProperty,Re=new WeakMap,Mt=(e)=>{var r=Re.get(e),t;if(r)return r;if(r=ae({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")kt(e).map((o)=>!Ot.call(r,o)&&ae(r,o,{get:()=>e[o],enumerable:!(t=At(e,o))||t.enumerable}));return Re.set(e,r),r},$t=(e,r)=>{for(var t in r)ae(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},Ee={};$t(Ee,{select:()=>ie});je.exports=Mt(Ee);var Pt=H(),se=(e,r,t,o)=>{if(e.startsWith("{")){let n=e.substring(1,e.length-1);return ie(r,n,t).toString()}return o?e:void 0},Nt=(e,r,t,o)=>{let n=se(r,t,o);if(n)return ie(e,n,o);let s=/^\[([^=\]]*)([=]*)([^\]]*)\]$/.exec(r);if(s){let[a,f,c,p]=s,y=se(f.trim(),t,o,!0),P=se(p.trim(),t,o,!0);if(Array.isArray(e))switch(c){case"==":case"=":return e.find((O)=>O[y]==P)}}let i=/^([^[\]]*)\[([^\]]*)]/.exec(r);if(i)return e[i[1]][i[2]];return e[r]},ie=(e,r,t)=>{let o=void 0,n=void 0;r??="";let s=(p)=>p?.endsWith("?")?[p.substring(0,p.length-1),!0]:[p,!1],i=(p,y)=>{let[P,O]=s(y.pop());if(P){let Y=Nt(p,P,e,t);if(Y===void 0){if(O||t?.defaultValue!==void 0||t?.optional)return;throw Error(`Unknown path element: "${P}" in "${r}"`)}return o=p,n=P,i(Y,y)}if(t?.set&&n)o[n]=t?.set;return p},a=Pt.splitNested(r,t?.separator??".","{","}"),f=a.length>0&&a[a.length-1].startsWith("?=")?a.pop()?.substring(2):void 0;a.reverse();let c=i(e,a);if(c===void 0)return f??t?.defaultValue;return c}});var v=I((io,He)=>{var{defineProperty:le,getOwnPropertyNames:Ct,getOwnPropertyDescriptor:Rt}=Object,Et=Object.prototype.hasOwnProperty,De=new WeakMap,jt=(e)=>{var r=De.get(e),t;if(r)return r;if(r=le({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")Ct(e).map((o)=>!Et.call(r,o)&&le(r,o,{get:()=>e[o],enumerable:!(t=Rt(e,o))||t.enumerable}));return De.set(e,r),r},Dt=(e,r)=>{for(var t in r)le(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},Te={};Dt(Te,{processFields:()=>Ye,makeFieldProcessorMap:()=>Bt,makeFieldProcessorList:()=>St,makeFieldProcessor:()=>pe,getProcessor:()=>ue,getArgs:()=>Se});He.exports=jt(Te);var Lt=H(),Le=w(),_e=b(),We=(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 n=o.trim();if(!isNaN(+n))return+n;return n})}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)},Q=(e,r,t,o,n,s)=>{let i=o?.(e)??e,a=n(i);if(a[0])return a[1];if(!r){let f=_e.select(t,e),c=n(f);if(c[0])return c[1]}throw Error(s)},Ue=(e,r,t,o,n)=>{let s=typeof e.types==="function"?e.types(o,r.value,n):e.types?.[o];if(!s||s==="ref")return We(r,(a)=>_e.select(t,a));let i=We(r,()=>r.value);if(Array.isArray(s)){if(!s.includes(i))throw Error(`Argument ${o.toString()} must be one of [${s.join(", ")}]: ${i}`);return i}if(typeof s==="string"){if(s.endsWith("?")){let a=s.slice(0,-1);if(r.value==="null")return Le.NavigateResult.ReplaceItem(null);if(r.value==="undefined")return Le.NavigateResult.ReplaceItem(void 0);if(r.value==="")return"";s=a}switch(s){case"any":return i;case"array":return Q(i,r.quoted,t,null,(a)=>[Array.isArray(a),a],`Argument ${o.toString()} must be an array: ${i}`);case"object":return Q(i,r.quoted,t,null,(a)=>[typeof a==="object"&&a!==null,a],`Argument ${o.toString()} must be an object: ${i}`);case"number":return Q(i,r.quoted,t,(a)=>Number(a),(a)=>[!isNaN(a),a],`Argument ${o.toString()} must be a number: ${i}`);case"boolean":return Q(i,r.quoted,t,null,(a)=>{if([!0,"true","1",1,"yes","on"].includes(a))return[!0,!0];if([!1,"false","0",0,"no","off"].includes(a))return[!0,!1];if([null,"null","undefined",void 0,""].includes(a))return[!0,!1];if(Array.isArray(a))return[!0,a.length>0];return[!1,!1]},`Argument ${o.toString()} must be a boolean: ${i}`);case"string":return i.toString();default:throw Error(`Unknown type for argument ${o.toString()}: ${s}`)}}return s(i,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}},Je=(e)=>!e.quoted&&e.value.startsWith("."),Wt=(e)=>{let r={};for(let t of e){if(!Je(t))continue;let o=t.value.indexOf("="),n=o>-1?t.value.slice(1,o):t.value.slice(1),s=o>-1?t.value.slice(o+1):"";if(s.length>=2){let i=s[0],a=s[s.length-1];if(i==='"'&&a==='"'||i==="'"&&a==="'")s=s.slice(1,-1)}if(!r[n])r[n]=[];r[n].push(s)}return r},Se=(e,r,t)=>{let o=Lt.splitWithQuotes(e??""),n=Wt(o),s=o.filter((a)=>!Je(a)),i=r.options.processArgs===!1?[]:s.map((a,f)=>Ue(r.options,a,t,f,s));return{rawArgs:s,parsedArgs:i,tags:n}},R=w(),Ie=w(),It=(e,r)=>r.keys!==void 0&&e.key.startsWith(".")&&r.keys[e.key.substring(1)]!==void 0,Tt=async(e,r,t,o)=>{let{key:n,parent:s}=e,i=ue(o.keys,n.substring(1));if(i.options.processArgs!==!1&&(typeof i.options.types==="function"||i.options.types?.[0]!==void 0))e.value=Ue(i.options,{value:e.value,quoted:!1},t,0,[]);if(typeof e.value!=="string")await Ye(e.value,{...o,root:{...t,parent:e.parent,parents:e.parents},filters:[...o.filters??[],...i.options.filters??[]]});let a=await i.fn({path:r,root:t,parent:s,key:n,options:o,value:e.value,args:[e.value],rawArgs:[],tags:{}});return a instanceof Ie.NavigateResult?a:Ie.NavigateResult.ReplaceParent(a)},x=w(),_t=b(),Be=(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 n=1;for(;t<e.length;t++)if(e[t]==="(")n++;else if(e[t]===")"){if(n--,n===0){r.push([o,t]);break}}if(n!==0)throw Error(`Unmatched opening $( at position ${o.toString()}`);t++}else t++;return r};class fe{value;constructor(e){this.value=e}}var Ge=async(e,r,t)=>{for(let o=r.length-1;o>=0;o--){let[n,s]=r[o],i=e.slice(n+2,s),a=await Ge(i,Be(i),t);if(typeof a==="object")return a;let f=await t(a,e);if(f instanceof fe)return f.value;e=e.slice(0,n)+f+e.slice(s+1)}return e},Ut=async(e,r)=>Ge(e,Be(e),r),Jt=async(e,r,t,o)=>{let n=await(async()=>{let s=/([\w\d.-_/]+):(.+)/.exec(e);if(!s)return await _t.select(r,e);let[i,a,f]=s,c=ue(o.sources,a),p=Se(f,c,r);return await c.fn({args:p.parsedArgs,rawArgs:p.rawArgs,tags:p.tags,key:a,options:o,root:r,path:t,value:null})})();if(n===null||n===void 0)return"";if(typeof n==="object")return new fe(n);return n},Ke=async(e,r,t,o)=>{let n=await Ut(r,(s)=>Jt(s,t,e,o));if(n instanceof x.NavigateResult)return n;if(n===r)return x.NavigateResult.Explore();if(typeof n==="string"){let s=await Ke(e,n,t,o);if(s.action!==x.NavigateAction.Explore)return s}return x.NavigateResult.ReplaceItem(n)},Ye=async(e,r)=>{return r??={},await R.navigate(e,async(t)=>{let o=[...t.path,t.key].join(".");if(r?.filters?.length&&r.filters.some((a)=>a.test(o)))return R.NavigateResult.NoExplore();let n=t.path.length===0,s=t.parents.length>0?t.parents.toReversed():[];if(n){if(s.length>0)throw Error("Root object should not have a parent");s=r?.root?.parents?[r.root.parent,...r.root.parents.toReversed()]:[]}let i={...e,...r.root,this:t.parent,parent:s.length>0?s[0]:null,parents:s};try{if(t.key.startsWith("$"))return R.NavigateResult.NoExplore();let a=R.NavigateResult.Explore();if(typeof t.value==="string")switch(a=await Ke(o,t.value,i,r),a.action){case R.NavigateAction.Explore:break;case R.NavigateAction.ReplaceItem:t.value=a.by;break;default:return a}if(It(t,r))a=await Tt(t,o,i,r);return a}catch(a){throw Error(`${a.message}
2
+ (${o})`)}}),e},pe=(e,r)=>r?{fn:(t)=>e(...t.args),types:r}:(t)=>e(...t.args),St=(e,r)=>Object.fromEntries(e.map((t)=>[t.name,pe(t,r?.types?.[t.name])])),Bt=(e,r)=>Object.fromEntries((r?.keys??Object.keys(e)).map((t)=>[t,pe(e[t],r?.types?.[t])]))});var S=I((an,Wr)=>{var{defineProperty:be,getOwnPropertyNames:Ht,getOwnPropertyDescriptor:Qt}=Object,xt=Object.prototype.hasOwnProperty,jr=new WeakMap,Zt=(e)=>{var r=jr.get(e),t;if(r)return r;if(r=be({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")Ht(e).map((o)=>!xt.call(r,o)&&be(r,o,{get:()=>e[o],enumerable:!(t=Qt(e,o))||t.enumerable}));return jr.set(e,r),r},Xt=(e,r)=>{for(var t in r)be(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},Dr={};Xt(Dr,{tokenize:()=>ro,snake:()=>qt,pascal:()=>Lr,padBlock:()=>eo,changeCase:()=>zt,capital:()=>Vt,camel:()=>Ft});Wr.exports=Zt(Dr);var Lr=(e)=>e.replace(/((?:[_ ]+)\w|^\w)/g,(r,t)=>t.toUpperCase()).replace(/[_ ]/g,""),Vt=(e)=>e.replace(/((?:[ ]+)\w|^\w)/g,(r,t)=>t.toUpperCase()),Ft=(e)=>Lr(e).replace(/((?:[ ]+\w)|^\w)/g,(r,t)=>t.toLowerCase()),qt=(e,r)=>e.replace(/([a-z])([A-Z])/g,`$1${r}$2`).replace(/\s+/g,r),zt=(e,r)=>{switch(r){case"upper":return e.toUpperCase();case"lower":return e.toLowerCase();default:return e}},eo=(e,r,t=`
3
+ `,o=" ")=>{let n=o.repeat(r);return e.split(t).map((s)=>n+s).join(t)},ro=(e,r,t=/\${([^}]+)}/g)=>{return e.replace(t,(o,n)=>r[n]??"")}});var st=m(v(),1);var ze={};C(ze,{writeOutputs:()=>V,writeOutput:()=>ye,writeFormat:()=>ce,locate:()=>E,loadFormat:()=>Z,importList:()=>ge,importGlob:()=>qe,globMap:()=>X,exists:()=>T});import Qe from"fs/promises";import me from"path";import Gt from"path";import Kt from"fs/promises";import Ve from"fs/promises";import xe from"path";import Ze from"path";import Xe from"path";var T=async(e)=>{try{return await Qe.access(e,Qe.constants.R_OK),!0}catch{return!1}},E=async(e,r)=>{let t=!me.isAbsolute(e)&&r?["",...r]:[""];for(let o of t){let n=me.join(o,e);if(await T(n))return me.resolve(n)}throw Error(`File not found: "${e}"`)},Z=async(e,r)=>{let t=await E(e,r?.dirs),o=await Bun.file(t).text(),n=Gt.dirname(t),s={"[.]json$":JSON.parse,"[.](yml|yaml)$":Bun.YAML.parse,"[.]toml$":Bun.TOML.parse,...r?.parsers},i=Object.entries(s).find((a)=>t.match(a[0]));if(!i)throw Error(`Unhandled file type: ${e}`);return{content:i[1](o),fullPath:t,folderPath:n}},ce=async(e,r,t="text")=>{switch(t){case"yaml":await Bun.write(e,Bun.YAML.stringify(r));break;case"json":await Bun.write(e,JSON.stringify(r));break;case"text":default:await Bun.write(e,r.toString())}},X=async(e,r)=>{if(typeof e==="string"&&!e.includes("*"))return await r.map(e,0,[]);let t=await Array.fromAsync(Kt.glob(e,{cwd:r.cwd})),o=r.filter?t.filter(r.filter):t;return await Promise.all(o.map(r.map))},V=async(e,r)=>{if(r?.targetDirectory&&r?.removeFirst)try{await Ve.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 ye(t,r)},ye=async(e,r)=>{let t=xe.join(r?.targetDirectory??".",e.name),o=xe.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 Ve.mkdir(o,{recursive:!0})}catch(n){throw Error(`Failed to create target directory "${o}" for output "${t}": ${n.message}`)}try{await ce(t,e.value,e.type??"text")}catch(n){throw Error(`Failed to write output "${t}": ${n.message}`)}},Fe=(e)=>e?Xe.isAbsolute(e)?e:Xe.join(process.cwd(),e):process.cwd(),ge=async(e,r)=>{let t=[];for(let o of e)try{let n=!Ze.isAbsolute(o)?Ze.join(Fe(r?.cwd),o):o;if(r?.filter?.(n)===!1)continue;let s=await import(n);if(r?.resolveDefault==="only"&&!s.default)throw Error(`Module ${o} does not have a default export`);let i=r?.resolveDefault?s.default??s:s,a=r?.map?await r.map(i,o):i;if(a!==void 0)t.push(a)}catch(n){if(r?.fail?.(o,n)===!1)continue;throw Error(`Failed to import module ${o}: ${n.message??n}`)}return t},qe=async(e,r)=>{let t=[];for(let o of e){let n=await Array.fromAsync(new Bun.Glob(o).scan({cwd:Fe(r?.cwd),absolute:!0}));t.push(...await ge(n,r))}return t};var er={};C(er,{mergeAll:()=>_,merge:()=>M});var M=(e,r,t)=>{for(let o of Object.keys(r)){if(e[o]===void 0)continue;let n=r[o],s=e[o];if(typeof s!==typeof n||Array.isArray(s)!==Array.isArray(n)){let a=t?.mismatch?.(o,s,n,e,r);if(a!==void 0){r[o]=a;continue}throw Error(`Type mismatch: ${o}`)}let i=t?.mode?.(o,s,n,e,r)??r[".merge"]??"merge";switch(i){case"source":r[o]=s;continue;case"target":continue;case"skip":delete r[o],delete e[o];continue;case"merge":break;default:throw Error(`Unknown merge mode: ${i}`)}if(typeof s==="object")if(Array.isArray(s))n.push(...s);else{if(t?.navigate?.(o,s,n,e,r)===!1)continue;M(s,n,t)}else{if(s===n)continue;let a=t?.conflict?.(o,s,n,e,r);r[o]=a===void 0?n:a}}for(let o of Object.keys(e))if(r[o]===void 0)r[o]=e[o]},_=(e,r)=>{let t={};for(let o of e.toReversed())M(o,t,r);return t};import z from"path";var rr=m(w(),1),tr=(e)=>({output:(r)=>{let t=(o)=>{if(e.getConfig().delayedOutputs)e.subDocument(`output.${o.name}`,o);else e.output(o)};delete r.parent[r.key];for(let o of Array.isArray(r.value)?r.value:[r.value])if(typeof o==="string")t({name:o,value:r.parent});else t({...o,value:o.value??r.parent.value});return rr.NavigateResult.SkipSiblings()}});var or=m(w(),1);import Yt from"path";var nr=(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&&Yt.dirname(t.file))}return or.NavigateResult.DeleteItem()}});var cr=m(v(),1);var sr=m(b(),1),ar=(e)=>{if(typeof e.value==="string")return e.parent;let r=e.value.model;if(!r)return e.parent;if(typeof r==="string")return sr.select(e.root,r);return r};var de=m(b(),1),ir=(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 lr=m(v(),1),ur=m(b(),1),fr=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 lr.processFields(o,{...e.options,root:{...e.root,result:r}}),o}return await ur.select({...e.root,result:r},t.selector)};var pr={};C(pr,{deepClone:()=>h});var h=(e)=>globalThis.structuredClone!==void 0?structuredClone(e):JSON.parse(JSON.stringify(e));var mr={};C(mr,{conditionPredicatesTypes:()=>U,conditionPredicates:()=>A});var A={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)=>!A.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!=="")},U={and:()=>"boolean",or:()=>"boolean",xor:()=>"boolean",true:()=>"boolean",false:()=>"boolean",lt:()=>"number",le:()=>"number",gt:()=>"number",ge:()=>"number"};var yr=()=>({each:{filters:[/select|model/],fn:async(e)=>{let r=e.value;delete e.parent[e.key];let t=await ir(e),o=await ar(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=_([r.model,...Array.isArray(r.extend.model)?r.extend.model:[r.extend.model]]);let n=[];for(let s=0;s<t.length;s++){let i=h(o);if(await cr.processFields(i,{...e.options,root:{...e.root,index:s,item:t[s],instance:i}}),r.extend?.result){let a=r.extend.result;i=_([i,...Array.isArray(a)?a:[a]])}n.push(await fr(e,i))}return n}}});var gr=m(b(),1),dr=()=>({concat:async(e)=>{let r=[];for(let t of Array.isArray(e.value)?e.value:[e.value])r.push(...await gr.select(e.root,t));return r.filter((t)=>t!==void 0)}});var wr=m(v(),1);var we=m(w(),1),br=m(b(),1);var vr=()=>({extends:async(e)=>{let r=async(t,o)=>{for(let n of Array.isArray(o)?o:[o]){let s=await br.select(e.root,n),i=h(s);if(i[e.key])await r(i,i[e.key]);await wr.processFields(i,{...e.options}),M(i,t),delete t[e.key]}};return await r(e.parent,e.value),we.NavigateResult.Explore()},group:(e)=>{let r=e.root.parent,t=e.value,{items:o,...n}=t;return t.items.forEach((s)=>r.push({...n,...s})),we.NavigateResult.DeleteParent()}});var hr=m(v(),1),$=m(w(),1),kr=(e)=>({skip:{types:{0:"boolean"},fn:(r)=>r.value?$.NavigateResult.DeleteParent():$.NavigateResult.DeleteItem()},metadata:({path:r,value:t})=>{return e.metadata(r,t),$.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 n=r.value?t:o;if(n===void 0)return $.NavigateResult.DeleteItem();if(typeof n==="string")return(await hr.processFields({value:n},{...r.options,root:{...r.root}})).value;return $.NavigateResult.ReplaceParent(n,!0)}},switch:(r)=>{let t=r.value;if(!t.cases)throw Error("Missing cases for switch");if(t.cases[t.from]!==void 0)return $.NavigateResult.ReplaceParent(t.cases[t.from],!0);if(t.default!==void 0)return $.NavigateResult.ReplaceParent(t.default,!0);return $.NavigateResult.DeleteParent()},subDocument:(r)=>{return e.subDocument(r.value,r.parent),delete r.parent[r.key],$.NavigateResult.DeleteParent()}});var Ar=m(b(),1),Or=()=>({from:async({root:e,parent:r,value:t})=>{let o=await Ar.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 M(o,r.content),r.content}return o}});var $r=m(w(),1);import Mr from"node:vm";var Pr=(e)=>({modules:async(r)=>{for(let[t,o]of Object.entries(r.value)){let n=Mr.createContext({console,objector:e,document:r.root}),s=new Mr.SourceTextModule(o,{identifier:t,context:n});await s.link((i)=>{throw Error(`Module ${i} is not allowed`)}),await s.evaluate(),e.sources(Object.fromEntries(Object.entries(s.namespace).map(([i,a])=>[`${t}.${i}`,(f)=>a(f,...f.args)])))}return $r.NavigateResult.DeleteItem()}});import Nr from"fs/promises";import J from"path";var Cr=(e)=>({include:async(r)=>{let{file:t}=r.options.globalContext;return await X(r.args[0],{cwd:J.dirname(t),filter:(o)=>J.basename(t)!==o,map:async(o)=>e.load(o,J.dirname(t),{parent:r.root})})},exists:async({args:[r]})=>await T(r),file:async(r)=>await Nr.readFile(await E(r.args[0],e.getIncludeDirectories())).then((t)=>t.toString()),scan:async(r)=>{let t=[],n=(()=>{let a=r.args[2]??["**/node_modules/**"],f=typeof a==="string"?a.split(",").map((c)=>c.trim()):a;if(!Array.isArray(f))throw Error("Scan exclusion must be a list");return f})(),{file:s}=r.options.globalContext,i=r.args[1]?await E(r.args[1],e.getIncludeDirectories()):J.dirname(s);for await(let a of Nr.glob(r.args[0],{cwd:i,exclude:(f)=>n.some((c)=>J.matchesGlob(f,c))}))t.push(a);return t}});var Rr=m(v(),1),Er=()=>Rr.makeFieldProcessorMap({env:(e)=>process.env[e]});var Ir=m(v(),1),d=m(S(),1);var F=(e,r=0,t)=>{let o=" ".repeat(r),n=" ".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
4
  ${e.map((i)=>`${n}${F(i,r+1)},`).join(`
5
5
  `)}
6
- ${o}]`}else if(typeof e==="object"){let a=Object.entries(e).sort((s,f)=>t?.sortKeys?s[0].localeCompare(f[0]):0);if(a.length===0)return"{}";return`{
7
- ${a.map(([s,f])=>`${n}${s} = ${F(f,r+1,t)}`).join(`
6
+ ${o}]`}else if(typeof e==="object"){let s=Object.entries(e).sort((a,f)=>t?.sortKeys?a[0].localeCompare(f[0]):0);if(s.length===0)return"{}";return`{
7
+ ${s.map(([a,f])=>`${n}${a} = ${F(f,r+1,t)}`).join(`
8
8
  `)}
9
- ${o}}`}else return String(e)},x=(e)=>{if(!e)return e;return e.replaceAll("\\n",`
9
+ ${o}}`}else return String(e)},B=(e)=>{if(!e)return e;return e.replaceAll("\\n",`
10
10
  `).replaceAll("\\$","$").replaceAll("\\t","\t")};var Tr=()=>({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
- `,n=t.padChar?.[0]??" ";return w.padBlock(e,r??2,o,n)}},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 Bun.YAML.stringify(e,null,2);case"terraform":{let o=!!(t?.sort?.length||t?.sortKeys?.length);return F(e,0,{sortKeys:o})}}throw Error("Unsupported format: "+String(r))}},...Ir.makeFieldProcessorMap({pascal:w.pascal,camel:w.camel,capital:w.capital,fromYaml:Bun.YAML.parse,fromJson:JSON.parse,toYaml:(e,r)=>Bun.YAML.stringify(e,null,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)=>w.changeCase(w.snake(e,"_"),r),kebab:(e,r)=>w.changeCase(w.snake(e,"-"),r),encode:(e,r)=>Buffer.from(e).toString(r??"base64"),decode:(e,r)=>Buffer.from(e,r??"base64").toString()})});var Gr=m(v(),1);var Br={};C(Br,{toObjectWithKey:()=>_r,toObject:()=>q,toList:()=>j,sortBy:()=>Sr,nonNullMap:()=>Ur,defined:()=>Jr,asyncMap:()=>xr});var j=(e,r="name")=>Object.entries(e).map(([t,o])=>({[r]:t,...o})),_r=(e,r="name")=>Object.fromEntries(e.map((t)=>[t[r],t])),q=(e,r="name")=>Object.fromEntries(e.map((t)=>{let{[r]:o,...n}=t;return[o,n]})),Ur=(e,r)=>e?.filter((t)=>t!==null&&t!==void 0).map(r)??[],Jr=(e,r="Value is undefined")=>{if(e===void 0)throw Error(r);return e},Sr=(e,r,t=(o,n)=>o-n)=>e.slice().sort((o,n)=>t(r(o),r(n))),xr=async(e,r)=>Promise.all(e.map(r));var ve=m(b(),1),Kr=m(S(),1);var Yr=()=>({...Gr.makeFieldProcessorMap({merge:(...e)=>e.flatMap((r)=>r)}),join:({args:[e],root:r,tags:t})=>{let o=t.key?.[0],n=t.separator?.[0]??t.sep?.[0],a=t.finalize?.length>0,i=x(n);if(typeof e==="string"){if(a&&e.length&&i)return e+i;return e}if(!Array.isArray(e))throw Error("Object is not a list");let s=((o?.length)?e.map((y)=>ve.select({...r,...y},o)):e).join(i),f=t.pad?.[0]??"0",c=t.padChar?.[0]??" ",p=a&&s.length&&i?s+i:s;return f?Kr.padBlock(p,parseInt(f),`
12
- `,c):p},list:({args:e})=>j(e[0],e[1]),object:({args:e})=>q(e[0],e[1]),range:({args:[e,r,t]})=>{let o=parseInt(e),n=parseInt(r),a=parseInt(t)||1;if(isNaN(o))throw Error("Invalid range: start value '"+String(e)+"' is not a number");if(isNaN(n))throw Error("Invalid range: end value '"+String(r)+"' is not a number");if(a===0)throw Error("Invalid range: step cannot be zero");if((n-o)/a<0)throw Error("Invalid range: step "+String(a)+" has wrong direction for range "+String(o)+" to "+String(n));return Array.from({length:Math.floor((n-o)/a)+1},(i,s)=>o+s*a)},filter:{types:(e,r,t)=>{switch(e){case 0:return"array";case 1:return Object.keys(A)}return U[t[1].value]?.(e-2,r,t.slice(2))},fn:({args:[e,r,t],root:o,tags:n})=>{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 a=n.key?.[0],i=A[r];if(a){let f=Array(e.length);for(let p=0;p<e.length;p++)try{f[p]=ve.select({...o,...e[p]},a)}catch{f[p]=Symbol("invalid")}let c=[];for(let p=0;p<e.length;p++){let y=f[p];if(typeof y!=="symbol"&&t===void 0?i(y):i(y,t))c.push(e[p])}return c}let s=[];for(let f of e)if(t===void 0?i(f):i(f,t))s.push(f);return s}}});var Hr=m(v(),1);var B=m(b(),1),Qr=m(S(),1);var Zr=()=>({each:{processArgs:!1,fn:async({rawArgs:[e,r,...t],root:o,options:n,tags:a})=>{let i=async(g)=>g.quoted?x(g.value):await B.select(o,g.value),s=await B.select(o,e.value),f=await i(r),c=a.key?.[0],p=Array.isArray(s)?s:j(s),y=[],P=await Promise.all(t.map(async(g)=>await i(g))),O={...o,item:void 0,index:0,params:P,instance:void 0,parent:o.this,tags:a},K={...n,root:O};for(let g=0;g<p.length;g++){let N=k(f),L={instance:N},ee=typeof f==="string"?L:N;if(O.item=p[g],O.index=g,O.instance=N,a?.root?.[0])Object.assign(O,await B.select(O,a.root[0]));if(await Hr.processFields(ee,K),c!==void 0)y.push(await B.select(L.instance,c));else y.push(L.instance)}if(a.join?.length){if(y.length===0)return"";let g=x(a.join[0]),N=a.pad?.[0]??"0",L=a.padChar?.[0]??" ",ee=a.finalize?.length&&g?g:"",he=`${y.join(g)}${ee}`;return N?Qr.padBlock(he,parseInt(N),`
13
- `,L):he}return y}}});var Xr=m(b(),1),G=async(e,r,t)=>e.rawArgs[r].quoted?e.rawArgs[r].value:await Xr.select(e.root,e.rawArgs[r].value,{defaultValue:t}),Vr=()=>({switch:{processArgs:!1,fn:async(e)=>{let r=await G(e,0,!1),t=await G(e,1);if(t[r]===void 0){if(e.rawArgs.length>2)return G(e,2);throw Error(`Unhandled switch case: ${r}`)}return t[r]}}});var Fr=m(v(),1),qr=()=>Fr.makeFieldProcessorMap({log:console.log});var zr=m(v(),1);var et=()=>({if:{types:{0:"boolean"},fn:(e)=>e.args[0]?e.args[1]:e.args[2]},check:{types:{0:Object.keys(A)},fn:(e)=>A[e.args[0]](...e.args.slice(1))},...zr.makeFieldProcessorMap(A,{types:U})});var rt=m(d(),1);var tt=()=>({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 G(e,r,null);if(o!==null)return o}if(e.tags.nullable?.length)return rt.NavigateResult.DeleteItem();if(e.tags.fail?.length)throw Error(`No valid value found for default (${e.rawArgs.map((r)=>r.value).join(", ")})`);return""}}});var D=m(d(),1),ot=()=>({convert:({args:[e,r,t]})=>{switch(r){case"string":return String(e);case"number":{let o=Number(e);if(!isNaN(o))return D.NavigateResult.ReplaceItem(o);break}case"boolean":if(e==="true"||e===!0||e===1||e==="1"||e==="yes"||e==="on")return D.NavigateResult.ReplaceItem(!0);else if(e==="false"||e===!1||e===0||e==="0"||e==="no"||e==="off")return D.NavigateResult.ReplaceItem(!1);break;default:throw Error(`Unsupported type for convert: ${r}`)}if(t!==void 0)return D.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 D.NavigateResult.ReplaceItem(o)},typeOf:({args:[e]})=>{if(e===null)return"null";else if(Array.isArray(e))return"array";else return typeof e}});var nt=(e)=>e.keys(tr(e)).keys(nr(e)).keys(yr()).keys(Or()).keys(wr()).keys(vr()).keys(kr(e)).keys(Pr(e)).sources(Cr(e)).sources(Er()).sources(Tr()).sources(ot()).sources(Yr()).sources(Zr()).sources(Vr()).sources(qr()).sources(et()).sources(tt());var l={};C(l,{writeOutputs:()=>V,writeOutput:()=>ye,writeFormat:()=>ce,toObjectWithKey:()=>_r,toObject:()=>q,toList:()=>j,sortBy:()=>Sr,nonNullMap:()=>Ur,mergeAll:()=>_,merge:()=>M,locate:()=>E,loadFormat:()=>Z,importList:()=>ge,importGlob:()=>qe,globMap:()=>X,exists:()=>T,defined:()=>Jr,deepClone:()=>k,conditionPredicates:()=>A,asyncMap:()=>xr});u(l,m(v(),1));u(l,m(d(),1));u(l,m(b(),1));u(l,m(Y(),1));u(l,m(S(),1));var ga=l;class to{includeDirectories=[];includes=[];outputs=[];vars={};cache={};fields={sources:{},keys:{}};objectMetadata={};constructor(){this.use(nt)}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,t){let o=[];if(e.content.includes)o.push(...e.content.includes),delete e.content.includes;o.push(...this.includes),this.includes.length=0;let n=[];for(let a of o)if(a.includes("*")){let i=new Bun.Glob(a);for await(let s of i.scan({cwd:e.folderPath,absolute:!0}))if(!t.included.includes(s))t.included.push(s),n.push(s)}else if(a.endsWith("/")){let i=z.isAbsolute(a)?a:z.join(e.folderPath,a);this.includeDirectories.push(i)}else n.push(a);for(let a of n)M(await this.load(a,e.folderPath,{parent:e.content,...r},!0,t),e.content)}async loadObject(e,r,t,o){return await at.processFields(e,{...this.fields,globalContext:{file:t?.fullPath??"@internal",load:o},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,n){let a=r?[r]:[];n??={included:[],current:null},a.push(...this.includeDirectories.map((y)=>z.isAbsolute(y)?y:z.join(r??process.cwd(),y)));let i=await Z(e,{dirs:a});if(!i.content)return null;let s=i.fullPath,f=this.cache[s]??i.content,c=k(f);i.content=c,await this.docIncludes(i,t,n);let p;if(o!==!0)p=await this.loadObject(i.content,t,{fileName:i.fullPath,folderPath:i.folderPath,fullPath:i.fullPath},n);else p=i.content;return n.current=p,this.cache[s]??=f,p}async writeOutputs(e){await V(this.getOutputs(),e)}}export{ga as default,to as Objector};
11
+ `,n=t.padChar?.[0]??" ";return d.padBlock(e,r??2,o,n)}},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 Bun.YAML.stringify(e,null,2);case"terraform":{let o=!!(t?.sort?.length||t?.sortKeys?.length);return F(e,0,{sortKeys:o})}}throw Error("Unsupported format: "+String(r))}},...Ir.makeFieldProcessorMap({pascal:d.pascal,camel:d.camel,capital:d.capital,fromYaml:Bun.YAML.parse,fromJson:JSON.parse,toYaml:(e,r)=>Bun.YAML.stringify(e,null,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 Kr=m(v(),1);var Gr={};C(Gr,{toObjectWithKey:()=>_r,toObject:()=>q,toList:()=>j,sortBy:()=>Sr,nonNullMap:()=>Ur,defined:()=>Jr,asyncMap:()=>Br});var j=(e,r="name")=>Object.entries(e).map(([t,o])=>({[r]:t,...o})),_r=(e,r="name")=>Object.fromEntries(e.map((t)=>[t[r],t])),q=(e,r="name")=>Object.fromEntries(e.map((t)=>{let{[r]:o,...n}=t;return[o,n]})),Ur=(e,r)=>e?.filter((t)=>t!==null&&t!==void 0).map(r)??[],Jr=(e,r="Value is undefined")=>{if(e===void 0)throw Error(r);return e},Sr=(e,r,t=(o,n)=>o-n)=>e.slice().sort((o,n)=>t(r(o),r(n))),Br=async(e,r)=>Promise.all(e.map(r));var ve=m(b(),1),Yr=m(S(),1);var Hr=()=>({...Kr.makeFieldProcessorMap({merge:(...e)=>e.flatMap((r)=>r)}),join:({args:[e],root:r,tags:t})=>{let o=t.key?.[0],n=t.separator?.[0]??t.sep?.[0],s=t.finalize?.length>0,i=B(n);if(typeof e==="string"){if(s&&e.length&&i)return e+i;return e}if(!Array.isArray(e))throw Error("Object is not a list");let a=((o?.length)?e.map((y)=>ve.select({...r,...y},o)):e).join(i),f=t.pad?.[0]??"0",c=t.padChar?.[0]??" ",p=s&&a.length&&i?a+i:a;return f?Yr.padBlock(p,parseInt(f),`
12
+ `,c):p},list:({args:e})=>j(e[0],e[1]),object:({args:e})=>q(e[0],e[1]),range:({args:[e,r,t]})=>{let o=parseInt(e),n=parseInt(r),s=parseInt(t)||1;if(isNaN(o))throw Error("Invalid range: start value '"+String(e)+"' is not a number");if(isNaN(n))throw Error("Invalid range: end value '"+String(r)+"' is not a number");if(s===0)throw Error("Invalid range: step cannot be zero");if((n-o)/s<0)throw Error("Invalid range: step "+String(s)+" has wrong direction for range "+String(o)+" to "+String(n));return Array.from({length:Math.floor((n-o)/s)+1},(i,a)=>o+a*s)},filter:{types:(e,r,t)=>{switch(e){case 0:return"array";case 1:return Object.keys(A)}return U[t[1].value]?.(e-2,r,t.slice(2))},fn:({args:[e,r,t],root:o,tags:n})=>{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 s=n.key?.[0],i=A[r];if(s){let f=Array(e.length);for(let p=0;p<e.length;p++)try{f[p]=ve.select({...o,...e[p]},s)}catch{f[p]=Symbol("invalid")}let c=[];for(let p=0;p<e.length;p++){let y=f[p];if(typeof y!=="symbol"&&t===void 0?i(y):i(y,t))c.push(e[p])}return c}let a=[];for(let f of e)if(t===void 0?i(f):i(f,t))a.push(f);return a}}});var Qr=m(v(),1);var G=m(b(),1),xr=m(S(),1);var Zr=()=>({each:{processArgs:!1,fn:async({rawArgs:[e,r,...t],root:o,options:n,tags:s})=>{let i=async(g)=>g.quoted?B(g.value):await G.select(o,g.value),a=await G.select(o,e.value),f=await i(r),c=s.key?.[0],p=Array.isArray(a)?a:j(a),y=[],P=await Promise.all(t.map(async(g)=>await i(g))),O={...o,item:void 0,index:0,params:P,instance:void 0,parent:o.this,tags:s},Y={...n,root:O};for(let g=0;g<p.length;g++){let N=h(f),L={instance:N},ee=typeof f==="string"?L:N;if(O.item=p[g],O.index=g,O.instance=N,s?.root?.[0])Object.assign(O,await G.select(O,s.root[0]));if(await Qr.processFields(ee,Y),c!==void 0)y.push(await G.select(L.instance,c));else y.push(L.instance)}if(s.join?.length){if(y.length===0)return"";let g=B(s.join[0]),N=s.pad?.[0]??"0",L=s.padChar?.[0]??" ",ee=s.finalize?.length&&g?g:"",he=`${y.join(g)}${ee}`;return N?xr.padBlock(he,parseInt(N),`
13
+ `,L):he}return y}}});var Xr=m(b(),1),K=async(e,r,t)=>e.rawArgs[r].quoted?e.rawArgs[r].value:await Xr.select(e.root,e.rawArgs[r].value,{defaultValue:t}),Vr=()=>({switch:{processArgs:!1,fn:async(e)=>{let r=await K(e,0,!1),t=await K(e,1);if(t[r]===void 0){if(e.rawArgs.length>2)return K(e,2);throw Error(`Unhandled switch case: ${r}`)}return t[r]}}});var Fr=m(v(),1),qr=()=>Fr.makeFieldProcessorMap({log:console.log});var zr=m(v(),1);var et=()=>({if:{types:{0:"boolean"},fn:(e)=>e.args[0]?e.args[1]:e.args[2]},check:{types:{0:Object.keys(A)},fn:(e)=>A[e.args[0]](...e.args.slice(1))},...zr.makeFieldProcessorMap(A,{types:U})});var rt=m(w(),1);var tt=(e)=>({default:{processArgs:!1,fn:async(r)=>{for(let t=0;t<r.rawArgs.length;t++)if(r.rawArgs[t]?.value!==void 0){let n=await K(r,t,null);if(n!==null)return n}if(r.tags.nullable?.length)return rt.NavigateResult.DeleteItem();if(r.tags.fail?.length)throw Error(`No valid value found for default (${r.rawArgs.map((t)=>t.value).join(", ")})`);return""}},subDocument:async(r)=>e.loadSubDocument(r.args[0],r.options.root)});var D=m(w(),1),ot=()=>({convert:({args:[e,r,t]})=>{switch(r){case"string":return String(e);case"number":{let o=Number(e);if(!isNaN(o))return D.NavigateResult.ReplaceItem(o);break}case"boolean":if(e==="true"||e===!0||e===1||e==="1"||e==="yes"||e==="on")return D.NavigateResult.ReplaceItem(!0);else if(e==="false"||e===!1||e===0||e==="0"||e==="no"||e==="off")return D.NavigateResult.ReplaceItem(!1);break;default:throw Error(`Unsupported type for convert: ${r}`)}if(t!==void 0)return D.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 D.NavigateResult.ReplaceItem(o)},typeOf:({args:[e]})=>{if(e===null)return"null";else if(Array.isArray(e))return"array";else return typeof e}});var nt=(e)=>e.keys(tr(e)).keys(nr(e)).keys(yr()).keys(Or()).keys(dr()).keys(vr()).keys(kr(e)).keys(Pr(e)).sources(Cr(e)).sources(Er()).sources(Tr()).sources(ot()).sources(Hr()).sources(Zr()).sources(Vr()).sources(qr()).sources(et()).sources(tt(e));var l={};C(l,{writeOutputs:()=>V,writeOutput:()=>ye,writeFormat:()=>ce,toObjectWithKey:()=>_r,toObject:()=>q,toList:()=>j,sortBy:()=>Sr,nonNullMap:()=>Ur,mergeAll:()=>_,merge:()=>M,locate:()=>E,loadFormat:()=>Z,importList:()=>ge,importGlob:()=>qe,globMap:()=>X,exists:()=>T,defined:()=>Jr,deepClone:()=>h,conditionPredicates:()=>A,asyncMap:()=>Br});u(l,m(v(),1));u(l,m(w(),1));u(l,m(b(),1));u(l,m(H(),1));u(l,m(S(),1));var gs=l;class to{currentConfig={};includeDirectories=[];includes=[];outputs=[];vars={};cache={};fields={sources:{},keys:{}};objectMetadata={};subDocuments={};currentContext=null;constructor(){this.use(nt)}use(e){return e(this),this}config(e){return Object.assign(this.currentConfig,e),this}getConfig(){return this.currentConfig}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}subDocument(e,r){return this.subDocuments[e]=r,this}getSubDocument(e){return this.subDocuments[e]}getCurrentContext(){return this.currentContext}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;let o=[];for(let n of t)if(n.includes("*")){let s=new Bun.Glob(n);for await(let i of s.scan({cwd:e.folderPath,absolute:!0}))if(!this.currentContext?.included.includes(i))o.push(i)}else if(n.endsWith("/")){let s=z.isAbsolute(n)?n:z.join(e.folderPath,n);this.includeDirectories.push(s)}else o.push(n);for(let n of o)M(await this.load(n,e.folderPath,{parent:e.content,...r},!0),e.content)}async loadObject(e,r,t){return await st.processFields(e,{...this.fields,globalContext:{file:t?.fullPath??"@internal"},root:{...r,...this.fields.root,...this.vars,context:this.currentContext,$document:{root:{content:e},fileName:t?.fileName??"@internal",folder:t?.folderPath??"@internal",fullPath:t?.fullPath??"@internal"}}}),e}async load(e,r,t,o,n){let s=r?[r]:[];if(n)this.currentContext=n;this.currentContext??={included:[],document:null},s.push(...this.includeDirectories.map((y)=>z.isAbsolute(y)?y:z.join(r??process.cwd(),y)));let i=await Z(e,{dirs:s});if(this.currentContext.included.push(i.fullPath),!i.content)return null;let a=i.fullPath,f=this.cache[a]??i.content,c=h(f);i.content=c,await this.docIncludes(i,t);let p;if(o!==!0)p=await this.loadObject(i.content,t,{fileName:i.fullPath,folderPath:i.folderPath,fullPath:i.fullPath});else p=i.content;return this.currentContext.document=p,this.cache[a]??=f,p}async writeOutputs(e,r){for(let t of Object.entries(this.subDocuments))if(t[0].startsWith("output."))this.output(await this.loadSubDocument(t[0],r));await V(this.getOutputs(),e)}async loadSubDocument(e,r){r??=this.currentContext?.document;let t=this.getSubDocument(e);if(t===void 0)throw Error(`Sub document ${e} not found`);let o=await this.loadObject(h(t),r);if(r)r[e]=o;return o}}export{gs as default,to as Objector};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@homedev/objector",
3
- "version": "1.2.36",
3
+ "version": "1.2.38",
4
4
  "description": "object extensions for YAML/JSON",
5
5
  "author": "julzor",
6
6
  "license": "ISC",