@homedev/objector 1.2.58 → 1.2.60

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
@@ -57,6 +57,10 @@ export declare const changeCase: (v: string, arg?: string) => string;
57
57
  */
58
58
  export declare const conditionPredicates: Record<string, (...args: any[]) => boolean>;
59
59
 
60
+ export declare const decoder: (options?: DecoderOptions) => (_: any, ctx: ClassMethodDecoratorContext<ObjectorPlugin, (data: string) => unknown>) => void;
61
+
62
+ declare type DecoderOptions = ObjectorDecoratorOptions;
63
+
60
64
  /**
61
65
  * Deep clones an object using structuredClone (faster) with JSON fallback
62
66
  * - Uses structuredClone for better performance and broader type support (Date, RegExp, etc.)
@@ -85,10 +89,14 @@ declare interface Encoder {
85
89
  options?: EncoderOptions;
86
90
  }
87
91
 
92
+ export declare const encoder: (options?: EncoderOptions_2) => (_: any, ctx: ClassMethodDecoratorContext<ObjectorPlugin, (data: unknown) => string | Promise<string>>) => void;
93
+
88
94
  declare interface EncoderOptions {
89
95
  includeTags?: boolean;
90
96
  }
91
97
 
98
+ declare type EncoderOptions_2 = ObjectorDecoratorOptions;
99
+
92
100
  export declare const exists: (fileName: string) => Promise<boolean>;
93
101
 
94
102
  export declare interface FieldContext {
@@ -197,6 +205,10 @@ export declare interface ImportOptions {
197
205
  map?: (module: any, name: string) => any;
198
206
  }
199
207
 
208
+ export declare const key: (options?: KeyOptions) => (_: any, ctx: ClassMethodDecoratorContext<ObjectorPlugin, (value: any) => any>) => void;
209
+
210
+ declare type KeyOptions = ObjectorDecoratorOptions;
211
+
200
212
  /**
201
213
  * @public
202
214
  */
@@ -247,7 +259,7 @@ export declare interface LoadResult<T> {
247
259
 
248
260
  export declare const locate: (fileName: string, dirs?: string[]) => Promise<string>;
249
261
 
250
- declare type LogFunction = (className: string, ...args: any[]) => void;
262
+ export declare type LogFunction = (className: string, ...args: any[]) => void;
251
263
 
252
264
  export declare class Logger {
253
265
  options: LoggerOptions;
@@ -257,9 +269,10 @@ export declare class Logger {
257
269
  error(...args: any[]): void;
258
270
  warn(...args: any[]): void;
259
271
  debug(...args: any[]): void;
272
+ verbose(...args: any[]): void;
260
273
  }
261
274
 
262
- declare interface LoggerOptions {
275
+ export declare interface LoggerOptions {
263
276
  level: string;
264
277
  showClass: boolean;
265
278
  levels: string[];
@@ -269,6 +282,10 @@ declare interface LoggerOptions {
269
282
  logFunction: LogFunction;
270
283
  }
271
284
 
285
+ export declare const macro: (options?: MacroOptions) => (_: any, ctx: ClassMethodDecoratorContext<ObjectorPlugin, (...args: any[]) => any>) => void;
286
+
287
+ declare type MacroOptions = ObjectorDecoratorOptions;
288
+
272
289
  export declare const makeFieldProcessor: (fn: SourceFunc, types?: FieldProcessorTypeChecker) => FieldProcessorTypedFunc;
273
290
 
274
291
  export declare const makeFieldProcessorList: <T = unknown>(source: SourceFunc[], options?: {
@@ -410,7 +427,7 @@ export declare class Objector {
410
427
  private dataEncoders;
411
428
  private dataDecoders;
412
429
  constructor();
413
- use(handler: (o: Objector) => void): this;
430
+ use(handler: ObjectorPluginConstructor | ObjectorPluginFunction): this;
414
431
  includeDirectory(...dirs: string[]): this;
415
432
  getIncludeDirectories(): string[];
416
433
  include(...files: string[]): this;
@@ -441,6 +458,34 @@ export declare class Objector {
441
458
  writeAll(option?: WriteOutputsOption): Promise<void>;
442
459
  }
443
460
 
461
+ declare interface ObjectorDecoratorOptions {
462
+ name?: string;
463
+ }
464
+
465
+ export declare class ObjectorPlugin {
466
+ protected readonly o: Objector;
467
+ protected readonly context: {
468
+ path: string;
469
+ root: any;
470
+ options: ProcessFieldsOptions;
471
+ value?: string | object | number | null;
472
+ key?: string;
473
+ args?: any[];
474
+ rawArgs?: {
475
+ value: string;
476
+ quoted: boolean;
477
+ }[];
478
+ tags?: Record<string, string[]>;
479
+ parent?: any;
480
+ config?: Record<string, any>;
481
+ };
482
+ constructor(o: Objector);
483
+ }
484
+
485
+ export declare type ObjectorPluginConstructor = new (o: Objector, ...args: any[]) => ObjectorPlugin;
486
+
487
+ declare type ObjectorPluginFunction = (o: Objector) => void;
488
+
444
489
  export declare interface Output {
445
490
  name: string;
446
491
  type?: 'json' | 'yaml' | 'text';
@@ -498,6 +543,10 @@ export declare interface ProcessFieldsOptions {
498
543
  configParser?: (configText: string) => any;
499
544
  }
500
545
 
546
+ export declare const section: (options?: SectionOptions) => (_: any, ctx: ClassMethodDecoratorContext<ObjectorPlugin, (section: FieldProcessorSection) => any>) => void;
547
+
548
+ declare type SectionOptions = ObjectorDecoratorOptions;
549
+
501
550
  /**
502
551
  * Selects a value from a nested object using a path string with advanced querying capabilities
503
552
  *
@@ -541,6 +590,10 @@ export declare interface SelectOptions {
541
590
  optional?: boolean;
542
591
  }
543
592
 
593
+ export declare const sharedFunction: (options?: SharedFunctionOptions) => (_: any, ctx: ClassMethodDecoratorContext<ObjectorPlugin, (...args: any[]) => any>) => void;
594
+
595
+ declare type SharedFunctionOptions = ObjectorDecoratorOptions;
596
+
544
597
  /**
545
598
  * Converts a string to snake_case or custom_case.
546
599
  * Inserts the separator between lowercase and uppercase characters.
@@ -657,6 +710,10 @@ export declare const toObject: <T extends Record<string, unknown>>(from: T[], ke
657
710
  */
658
711
  export declare const toObjectWithKey: <T extends Record<string, unknown>>(from: T[], key?: string) => Record<string, T>;
659
712
 
713
+ export declare const variable: (options?: VariableOptions) => (_: any, ctx: ClassFieldDecoratorContext<ObjectorPlugin, any>) => void;
714
+
715
+ declare type VariableOptions = ObjectorDecoratorOptions;
716
+
660
717
  export declare const writeFormat: (filePath: string, content: any, options?: WriteFormatOptions) => Promise<void>;
661
718
 
662
719
  /**
package/dist/index.js CHANGED
@@ -1,23 +1,23 @@
1
- var pt=Object.create;var{getPrototypeOf:ct,defineProperty:V,getOwnPropertyNames:rr}=Object;var ke=Object.prototype.hasOwnProperty;function Fe(e){return this[e]}var F=(e,r,t)=>{var n=rr(r);for(let o of n)if(!ke.call(e,o)&&o!=="default")V(e,o,{get:Fe.bind(r,o),enumerable:!0});if(t){for(let o of n)if(!ke.call(t,o)&&o!=="default")V(t,o,{get:Fe.bind(r,o),enumerable:!0});return t}},gt,mt,yt=(e,r,t)=>{var n=e!=null&&typeof e==="object";if(n){var o=r?gt??=new WeakMap:mt??=new WeakMap,s=o.get(e);if(s)return s}t=e!=null?pt(ct(e)):{};let a=r||!e||!e.__esModule?V(t,"default",{value:e,enumerable:!0}):t;for(let i of rr(e))if(!ke.call(a,i))V(a,i,{get:Fe.bind(e,i),enumerable:!0});if(n)o.set(e,a);return a};var dt=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var wt=(e)=>e;function ht(e,r){this[e]=wt.bind(null,r)}var j=(e,r)=>{for(var t in r)V(e,t,{get:r[t],enumerable:!0,configurable:!0,set:ht.bind(r,t)})};var at=dt((Ii,it)=>{var{defineProperty:He,getOwnPropertyNames:On,getOwnPropertyDescriptor:Mn}=Object,An=Object.prototype.hasOwnProperty,ot=new WeakMap,En=(e)=>{var r=ot.get(e),t;if(r)return r;if(r=He({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")On(e).map((n)=>!An.call(r,n)&&He(r,n,{get:()=>e[n],enumerable:!(t=Mn(e,n))||t.enumerable}));return ot.set(e,r),r},kn=(e,r)=>{for(var t in r)He(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(n)=>r[t]=()=>n})},st={};kn(st,{splitWithQuotes:()=>Sn,splitNested:()=>Fn});it.exports=En(st);var Fn=(e,r,t="(",n=")")=>{let o=0,s="",a=[];for(let i of e){if(s+=i,i===t)o++;if(i===n)o--;if(o===0&&i===r)a.push(s.slice(0,-1)),s=""}if(s)a.push(s);return a},Sn=(e,r=",")=>{let t=[],n=e.length,o=r.length,s=0,a=(i)=>{if(i+o>n)return!1;for(let l=0;l<o;l++)if(e[i+l]!==r[l])return!1;return!0};while(s<n){while(s<n&&e[s]===" ")s++;if(s>=n)break;let i="",l=e[s]==='"'||e[s]==="'";if(l){let g=e[s++];while(s<n&&e[s]!==g)i+=e[s++];if(s<n)s++}else{while(s<n&&!a(s)){let g=e[s];if(g==='"'||g==="'"){i+=g,s++;while(s<n&&e[s]!==g)i+=e[s++];if(s<n)i+=e[s++]}else i+=e[s++]}i=i.trim()}if(i)t.push({value:i,quoted:l});if(a(s))s+=o}return t}});var R={};j(R,{writeOutputs:()=>z,writeOutput:()=>ce,writeFormat:()=>pe,tokenize:()=>Ke,toObjectWithKey:()=>Ie,toObject:()=>ee,toList:()=>U,stripIndent:()=>Ze,sortBy:()=>Te,snake:()=>G,select:()=>A,processFields:()=>S,pascal:()=>X,padBlock:()=>C,nonNullMap:()=>_e,navigate:()=>ye,mergeAll:()=>Y,merge:()=>N,makeFieldProcessorMap:()=>D,makeFieldProcessorList:()=>je,makeFieldProcessor:()=>x,locate:()=>_,loadFormat:()=>P,importList:()=>ge,importGlob:()=>Ce,globMap:()=>J,getProcessor:()=>q,getArgs:()=>fe,find:()=>Qe,exists:()=>B,defined:()=>Ue,deepClone:()=>$,conditionPredicates:()=>W,changeCase:()=>K,capital:()=>ne,camel:()=>oe,asyncMap:()=>Be,Objector:()=>lt,NavigateResult:()=>b,NavigateAction:()=>me,Logger:()=>qe,AsyncFunction:()=>Ge});var $e={};j($e,{processFields:()=>S,makeFieldProcessorMap:()=>D,makeFieldProcessorList:()=>je,makeFieldProcessor:()=>x,getProcessor:()=>q,getArgs:()=>fe});var bt=Object.create,{getPrototypeOf:vt,defineProperty:tr,getOwnPropertyNames:Ot}=Object,Mt=Object.prototype.hasOwnProperty,At=(e,r,t)=>{t=e!=null?bt(vt(e)):{};let n=r||!e||!e.__esModule?tr(t,"default",{value:e,enumerable:!0}):t;for(let o of Ot(e))if(!Mt.call(n,o))tr(n,o,{get:()=>e[o],enumerable:!0});return n},Et=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),kt=Et((e,r)=>{var{defineProperty:t,getOwnPropertyNames:n,getOwnPropertyDescriptor:o}=Object,s=Object.prototype.hasOwnProperty,a=new WeakMap,i=(u)=>{var c=a.get(u),h;if(c)return c;if(c=t({},"__esModule",{value:!0}),u&&typeof u==="object"||typeof u==="function")n(u).map((p)=>!s.call(c,p)&&t(c,p,{get:()=>u[p],enumerable:!(h=o(u,p))||h.enumerable}));return a.set(u,c),c},l=(u,c)=>{for(var h in c)t(u,h,{get:c[h],enumerable:!0,configurable:!0,set:(p)=>c[h]=()=>p})},g={};l(g,{splitWithQuotes:()=>d,splitNested:()=>y}),r.exports=i(g);var y=(u,c,h="(",p=")")=>{let w=0,f="",O=[];for(let m of u){if(f+=m,m===h)w++;if(m===p)w--;if(w===0&&m===c)O.push(f.slice(0,-1)),f=""}if(f)O.push(f);return O},d=(u,c=",")=>{let h=[],p=u.length,w=c.length,f=0,O=(m)=>{if(m+w>p)return!1;for(let M=0;M<w;M++)if(u[m+M]!==c[M])return!1;return!0};while(f<p){while(f<p&&u[f]===" ")f++;if(f>=p)break;let m="",M=u[f]==='"'||u[f]==="'";if(M){let v=u[f++];while(f<p&&u[f]!==v)m+=u[f++];if(f<p)f++}else{while(f<p&&!O(f)){let v=u[f];if(v==='"'||v==="'"){m+=v,f++;while(f<p&&u[f]!==v)m+=u[f++];if(f<p)m+=u[f++]}else m+=u[f++]}m=m.trim()}if(m)h.push({value:m,quoted:M});if(O(f))f+=w}return h}}),Ft=At(kt(),1),I;((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"})(I||={});class E{action;by;skipSiblings;reexplore;constructor(e,r,t,n){this.action=e,this.by=r,this.skipSiblings=t,this.reexplore=n}static _explore=new E(0);static _noExplore=new E(2);static _skipSiblings=new E(1);static _deleteParent=new E(4);static ReplaceParent(e,r){return new E(3,e,void 0,r)}static SkipSiblings(){return E._skipSiblings}static Explore(){return E._explore}static NoExplore(){return E._noExplore}static DeleteParent(){return E._deleteParent}static MergeParent(e){return new E(5,e)}static ReplaceItem(e,r){return new E(6,e,r)}static DeleteItem(e){return new E(7,void 0,e)}}var St=async(e,r)=>{let t=new WeakSet,n=[],o=[],s=async(i,l,g)=>{let y=i===null,d=y?E.Explore():await r({key:i,value:l,path:n,parent:g,parents:o});if(l&&typeof l==="object"&&d.action===0){if(t.has(l))return d;if(t.add(l),!y)n.push(i),o.push(g);let u=l;while(await a(u,i,g))u=g[i];if(!y)o.pop(),n.pop()}return d},a=async(i,l,g)=>{let y=Object.keys(i),d=y.length;for(let u=0;u<d;u++){let c=y[u],h=i[c],p=await s(c,h,i),w=p.action;if(w===0||w===2)continue;if(w===6){if(i[c]=p.by,p.skipSiblings)return;continue}if(w===7){if(delete i[c],p.skipSiblings)return;continue}if(w===1)return;if(w===3){if(l===null)throw Error("Cannot replace root object");if(g[l]=p.by,p.reexplore)return!0;return}if(w===4){if(l===null)throw Error("Cannot delete root object");delete g[l];return}if(w===5)delete i[c],Object.assign(i,p.by)}};await s(null,e,null)},Dt=Object.create,{getPrototypeOf:jt,defineProperty:nr,getOwnPropertyNames:$t}=Object,Rt=Object.prototype.hasOwnProperty,Wt=(e,r,t)=>{t=e!=null?Dt(jt(e)):{};let n=r||!e||!e.__esModule?nr(t,"default",{value:e,enumerable:!0}):t;for(let o of $t(e))if(!Rt.call(n,o))nr(n,o,{get:()=>e[o],enumerable:!0});return n},Nt=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),Ct=Nt((e,r)=>{var{defineProperty:t,getOwnPropertyNames:n,getOwnPropertyDescriptor:o}=Object,s=Object.prototype.hasOwnProperty,a=new WeakMap,i=(u)=>{var c=a.get(u),h;if(c)return c;if(c=t({},"__esModule",{value:!0}),u&&typeof u==="object"||typeof u==="function")n(u).map((p)=>!s.call(c,p)&&t(c,p,{get:()=>u[p],enumerable:!(h=o(u,p))||h.enumerable}));return a.set(u,c),c},l=(u,c)=>{for(var h in c)t(u,h,{get:c[h],enumerable:!0,configurable:!0,set:(p)=>c[h]=()=>p})},g={};l(g,{splitWithQuotes:()=>d,splitNested:()=>y}),r.exports=i(g);var y=(u,c,h="(",p=")")=>{let w=0,f="",O=[];for(let m of u){if(f+=m,m===h)w++;if(m===p)w--;if(w===0&&m===c)O.push(f.slice(0,-1)),f=""}if(f)O.push(f);return O},d=(u,c=",")=>{let h=[],p=u.length,w=c.length,f=0,O=(m)=>{if(m+w>p)return!1;for(let M=0;M<w;M++)if(u[m+M]!==c[M])return!1;return!0};while(f<p){while(f<p&&u[f]===" ")f++;if(f>=p)break;let m="",M=u[f]==='"'||u[f]==="'";if(M){let v=u[f++];while(f<p&&u[f]!==v)m+=u[f++];if(f<p)f++}else{while(f<p&&!O(f)){let v=u[f];if(v==='"'||v==="'"){m+=v,f++;while(f<p&&u[f]!==v)m+=u[f++];if(f<p)m+=u[f++]}else m+=u[f++]}m=m.trim()}if(m)h.push({value:m,quoted:M});if(O(f))f+=w}return h}}),Lt=Wt(Ct(),1),It=/^\[([^=\]]*)([=]*)([^\]]*)\]$/,_t=/^([^[\]]*)\[([^\]]*)]$/,Se=(e,r,t,n)=>{if(e.startsWith("{")&&e.endsWith("}")){let o=e.substring(1,e.length-1);return H(r,o,t)?.toString()}return n?e:void 0},Ut=(e,r,t,n)=>{let o=Se(r,t,n);if(o)return H(e,o,n);let s=It.exec(r);if(s){let[,i,l,g]=s,y=Se(i.trim(),t,n,!0),d=Se(g.trim(),t,n,!0);if(Array.isArray(e)&&(l==="="||l==="==")&&y)return e.find((u)=>u?.[y]==d)}let a=_t.exec(r);if(a){let[,i,l]=a;return e?.[i]?.[l]}return e?.[r]},H=(e,r,t)=>{let n=void 0,o=void 0,s=r??"",a=(d)=>{if(!d)return[d,!1];return d.endsWith("?")?[d.substring(0,d.length-1),!0]:[d,!1]},i=(d,u)=>{let[c,h]=a(u.pop());if(!c){if(t?.set!==void 0&&o!==void 0&&n!==void 0)n[o]=t.set;return d}let p=Ut(d,c,e,t);if(p===void 0){if(h||t?.optional||t?.defaultValue!==void 0)return;throw Error(`Unknown path element: "${c}" in "${s}"`)}return n=d,o=c,i(p,u)},l=Lt.splitNested(s,t?.separator??".","{","}"),g=void 0;if(l.length>0&&l[l.length-1].startsWith("?="))g=l.pop()?.substring(2);l.reverse();let y=i(e,l);if(y===void 0)return g??t?.defaultValue;return y},or=(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((n)=>{let o=n.trim();if(!isNaN(+o))return+o;return o})}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)},ue=(e,r,t,n,o,s)=>{let a=n?.(e)??e,i=o(a);if(i[0])return i[1];if(!r){let l=H(t,e),g=o(l);if(g[0])return g[1]}throw Error(s)},ir=(e,r,t,n,o)=>{let s=typeof e.types==="function"?e.types(n,r.value,o):e.types?.[n];if(!s||s==="ref")return or(r,(i)=>H(t,i));let a=or(r,()=>r.value);if(Array.isArray(s)){if(!s.includes(a))throw Error(`Argument ${n.toString()} must be one of [${s.join(", ")}]: ${a}`);return a}if(typeof s==="string"){if(s.endsWith("?")){let i=s.slice(0,-1);if(r.value==="null")return E.ReplaceItem(null);if(r.value==="undefined")return E.ReplaceItem(void 0);if(r.value==="")return"";s=i}switch(s){case"any":return a;case"array":return ue(a,r.quoted,t,null,(i)=>[Array.isArray(i),i],`Argument ${n.toString()} must be an array: ${a}`);case"object":return ue(a,r.quoted,t,null,(i)=>[typeof i==="object"&&i!==null,i],`Argument ${n.toString()} must be an object: ${a}`);case"number":return ue(a,r.quoted,t,(i)=>Number(i),(i)=>[!isNaN(i),i],`Argument ${n.toString()} must be a number: ${a}`);case"boolean":return ue(a,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 ${n.toString()} must be a boolean: ${a}`);case"string":return a.toString();default:throw Error(`Unknown type for argument ${n.toString()}: ${s}`)}}return s(a,t,n,r.quoted)},q=(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}},ar=(e)=>!e.quoted&&e.value.startsWith("."),Tt=(e)=>{let r={};for(let t of e){if(!ar(t))continue;let n=t.value.indexOf("="),o=n>-1?t.value.slice(1,n):t.value.slice(1),s=n>-1?t.value.slice(n+1):"";if(s.length>=2){let a=s[0],i=s[s.length-1];if(a==='"'&&i==='"'||a==="'"&&i==="'")s=s.slice(1,-1)}if(!r[o])r[o]=[];r[o].push(s)}return r},fe=(e,r,t)=>{let n=Ft.splitWithQuotes(e??""),o=Tt(n),s=n.filter((i)=>!ar(i)),a=r.options.processArgs===!1?[]:s.map((i,l)=>ir(r.options,i,t,l,s));return{rawArgs:s,parsedArgs:a,tags:o}},Bt=(e)=>{return e!==null&&typeof e==="object"&&"action"in e},Yt=(e,r)=>r.keys!==void 0&&e.key.startsWith(".")&&r.keys[e.key.substring(1)]!==void 0,Qt=async(e,r,t,n)=>{let{key:o,parent:s}=e,a=q(n.keys,o.substring(1));if(a.options.processArgs!==!1&&(typeof a.options.types==="function"||a.options.types?.[0]!==void 0))e.value=ir(a.options,{value:e.value,quoted:!1},t,0,[]);if(typeof e.value!=="string")await S(e.value,{...n,root:{...t,parent:e.parent,parents:e.parents},filters:[...n.filters??[],...a.options.filters??[]]});let i=await a.fn({path:r,root:t,parent:s,key:o,options:n,value:e.value,args:[],rawArgs:[],tags:{}});return Bt(i)?i:E.ReplaceParent(i)},sr=(e)=>{let r=e.split(/\r?\n/),t=r.filter((o)=>o.trim().length>0).map((o)=>/^[ \t]*/.exec(o)?.[0].length??0),n=t.length>0?Math.min(...t):0;if(n===0)return e;return r.map((o)=>o.slice(n)).join(`
2
- `)},Xt=async(e,r,t,n)=>{if(!r?.onSection&&!r?.onSectionConfig&&!r?.sections)return[e,!1];let o=/<@\s*section(?:\s*:\s*([\w-]+))?\s*@>([\s\S]*?)<@\s*\/\s*section\s*@>/g,s,a=e,i=0,l=!1,g={content:a,root:n,path:t,options:r,section:{}};while((s=o.exec(e))!==null){l=!0;let[y,d,u]=s,c=s.index,h=c+y.length,p=e[h]===`
3
- `;if(p)h++;let w=c+i,f=h+i,O={},m=u,M=/(^|\r?\n)[ \t]*---[ \t]*(\r?\n|$)/m.exec(u);if(M){let Ee=u.slice(0,M.index),ut=M.index+M[0].length;m=u.slice(ut);let er=sr(Ee).trim();if(er.length>0)try{O=r?.configParser?.(er)??{}}catch(ft){throw Error(`Failed to parse YAML config for section: ${ft.message}`)}}else if(/^\r?\n/.test(m))m=m.replace(/^\r?\n/,"");m=sr(m),m=m.replace(/(?:\r?\n[ \t]*)+$/,""),m=m.replace(/[ \t]+$/,"");let v={config:d?{...O,type:d}:O,content:m};if(g.content=a,g.section=v,Object.keys(v.config).length>0){if(await r.onSectionConfig?.(g)!==!1)await S(v.config,{...r,root:n})}let xe=g.section.config.type?r.sections?.[g.section.config.type]:void 0,Z;if(xe)Z=await xe(g);else if(r.onSection)Z=await r.onSection(g);if(v.trim)v.content=v.content.trim();if(v.indent)v.content=v.content.split(`
4
- `).map((Ee)=>" ".repeat(v.indent)+Ee).join(`
5
- `);let L="";if(Z===!0||v.show)L=v.content;else if(typeof Z==="string")L=Z;if(p&&L!==""&&!L.endsWith(`
6
- `))L+=`
7
- `;let Pe=a.lastIndexOf(`
8
- `,w-1),Je=Pe===-1?0:Pe+1,ze=a.slice(Je,w).trim().length===0?Je:w;a=a.slice(0,ze)+L+a.slice(f),i+=L.length-(f-ze),g.content=a}return[a,l]},lr=(e)=>{let r=[],t=0;while(t<e.length)if(e[t]==="$"&&e[t+1]==="("&&(t===0||e[t-1]!=="\\")){let n=t;t+=2;let o=1;for(;t<e.length;t++)if(e[t]==="(")o++;else if(e[t]===")"){if(o--,o===0){r.push([n,t]);break}}if(o!==0)throw Error(`Unmatched opening $( at position ${n.toString()}`);t++}else t++;return r},De=Symbol.for("@homedev/fields:OverrideResult"),Gt=(e)=>({[De]:!0,value:e}),Kt=(e)=>{return e!==null&&typeof e==="object"&&De in e&&e[De]===!0},ur=async(e,r,t)=>{for(let n=r.length-1;n>=0;n--){let[o,s]=r[n],a=e.slice(o+2,s),i=await ur(a,lr(a),t);if(typeof i==="object")return i;let l=await t(i,e);if(Kt(l))return l.value;e=e.slice(0,o)+l+e.slice(s+1)}return e},Zt=async(e,r)=>ur(e,lr(e),r),Vt=(e)=>{return e!==null&&typeof e==="object"&&"action"in e},Ht=/([\w\d.-_/]+):(.+)/,qt=async(e,r,t,n)=>{let o=await(async()=>{let s=Ht.exec(e);if(!s)return await H(r,e);let[a,i,l]=s,g=q(n.sources,i),y=fe(l,g,r);return await g.fn({args:y.parsedArgs,rawArgs:y.rawArgs,tags:y.tags,key:i,options:n,root:r,path:t,value:null})})();if(o===null||o===void 0)return"";if(typeof o==="object")return Gt(o);return o},fr=async(e,r,t,n)=>{let o=await Zt(r,(s)=>qt(s,t,e,n));if(Vt(o))return o;if(o===r)return E.Explore();if(typeof o==="string"){let s=await fr(e,o,t,n);if(s.action!==I.Explore)return s;return E.ReplaceItem(o)}return E.ReplaceItem(o)},S=async(e,r)=>{return r??={},await St(e,async(t)=>{let n=[...t.path,t.key].join(".");if(r?.filters?.length&&r.filters.some((i)=>i.test(n)))return E.NoExplore();let o=t.path.length===0,s=t.parents.length>0?t.parents.toReversed():[];if(o){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 a={...e,...r.root,this:t.parent,parent:s.length>0?s[0]:null,parents:s};try{if(t.key.startsWith("$"))return E.NoExplore();let i=E.Explore();if(typeof t.value==="string"){let l=t.value,g=!1;while(!0){let[y,d]=await Xt(l,r,n,a);if(g=g||d,i=await fr(n,y,a,r),i.action===I.ReplaceItem&&typeof i.by==="string"){l=i.by;continue}if(i.action===I.Explore&&d&&y!==l)i=E.ReplaceItem(y);break}if(i.action===I.Explore&&l!==t.value)i=E.ReplaceItem(l);switch(i.action){case I.Explore:break;case I.ReplaceItem:t.value=i.by;break;default:return i}}if(Yt(t,r))i=await Qt(t,n,a,r);return i}catch(i){throw Error(`${i.message}
9
- (${n})`)}}),e},x=(e,r)=>r?{fn:(t)=>e(...t.args),types:r}:(t)=>e(...t.args),je=(e,r)=>Object.fromEntries(e.map((t)=>[t.name,x(t,r?.types?.[t.name])])),D=(e,r)=>Object.fromEntries((r?.keys??Object.keys(e)).map((t)=>[t,x(e[t],r?.types?.[t])]));var Le={};j(Le,{writeOutputs:()=>z,writeOutput:()=>ce,writeFormat:()=>pe,locate:()=>_,loadFormat:()=>P,importList:()=>ge,importGlob:()=>Ce,globMap:()=>J,exists:()=>B});import pr from"fs/promises";import Re from"path";import xt from"fs/promises";import Pt from"path";import Jt from"fs/promises";import zt from"fs/promises";import mr from"fs/promises";import cr from"path";import en from"fs/promises";import We from"path";import gr from"path";var B=async(e)=>{try{return await pr.access(e,pr.constants.R_OK),!0}catch{return!1}},_=async(e,r)=>{let t=!Re.isAbsolute(e)&&r?["",...r]:[""];for(let n of t){let o=Re.join(n,e);if(await B(o))return Re.resolve(o)}throw Error(`File not found: "${e}"`)},P=async(e,r)=>{let t=await _(e,r?.dirs),n=await xt.readFile(t,"utf-8"),o=Pt.dirname(t),s={text:{fn:(i)=>i,matching:["\\.txt$","\\.text$"]},json:{fn:JSON.parse,matching:["\\.json$"]},...r?.parsers},a=r?.format?s[r.format]:Object.values(s).find((i)=>i.matching?.some((l)=>new RegExp(l).test(e)));if(!a)throw Error(`Unsupported format for file "${e}" and no matching parser found`);return{content:await a.fn(n),fullPath:t,folderPath:o}},pe=async(e,r,t)=>{let n={text:{fn:(s)=>s,matching:["\\.txt$","\\.text$"]},json:{fn:JSON.stringify,matching:["\\.json$"]},...t?.encoders},o=t?.format?n[t.format]:Object.values(n).find((s)=>s.matching?.some((a)=>new RegExp(a).test(e)));if(!o)throw Error(`Unsupported format for file "${e}" and no matching encoder found`);await Jt.writeFile(e,await o.fn(r))},J=async(e,r)=>{if(typeof e==="string"&&!e.includes("*"))return await r.map(e,0,[]);let t=await Array.fromAsync(zt.glob(e,{cwd:r.cwd})),n=r.filter?t.filter(r.filter):t;return await Promise.all(n.map(r.map))},z=async(e,r)=>{if(r?.targetDirectory&&r?.removeFirst)try{await mr.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 ce(t,r)},ce=async(e,r)=>{let t=cr.join(r?.targetDirectory??".",e.name),n=cr.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 mr.mkdir(n,{recursive:!0})}catch(o){throw Error(`Failed to create target directory "${n}" for output "${t}": ${o.message}`)}try{await pe(t,e.value,{format:e.type??"text"})}catch(o){throw Error(`Failed to write output "${t}": ${o.message}`)}},Ne=(e)=>e?gr.isAbsolute(e)?e:gr.join(process.cwd(),e):process.cwd(),ge=async(e,r)=>{let t=[];for(let n of e)try{let o=!We.isAbsolute(n)?We.join(Ne(r?.cwd),n):n;if(r?.filter?.(o)===!1)continue;let s=await import(o);if(r?.resolveDefault==="only"&&!s.default)throw Error(`Module ${n} does not have a default export`);let a=r?.resolveDefault?s.default??s:s,i=r?.map?await r.map(a,n):a;if(i!==void 0)t.push(i)}catch(o){if(r?.fail?.(n,o)===!1)continue;throw Error(`Failed to import module ${n}: ${o.message??o}`)}return t},Ce=async(e,r)=>{let t=[];for(let n of e){let o=(await Array.fromAsync(en.glob(n,{cwd:Ne(r?.cwd)}))).map((s)=>We.join(Ne(r?.cwd),s));t.push(...await ge(o,r))}return t};var Ye={};j(Ye,{toObjectWithKey:()=>Ie,toObject:()=>ee,toList:()=>U,sortBy:()=>Te,nonNullMap:()=>_e,defined:()=>Ue,deepClone:()=>$,asyncMap:()=>Be});var U=(e,r="name")=>Object.entries(e).map(([t,n])=>({[r]:t,...n})),Ie=(e,r="name")=>Object.fromEntries(e.map((t)=>[t[r],t])),ee=(e,r="name")=>Object.fromEntries(e.map((t)=>{let{[r]:n,...o}=t;return[n,o]})),_e=(e,r)=>{if(!e)return[];let t=[],n=0;for(let o of e)if(o!==null&&o!==void 0)t.push(r(o,n,e)),n++;return t},Ue=(e,r="Value is undefined")=>{if(e===void 0||e===null)throw Error(r);return e},Te=(e,r,t=(n,o)=>n-o)=>e.slice().sort((n,o)=>t(r(n),r(o))),Be=async(e,r)=>Promise.all(e.map(r)),$=(e)=>{if(typeof structuredClone<"u")try{return structuredClone(e)}catch{}return JSON.parse(JSON.stringify(e))};var tt={};j(tt,{defaultProcessors:()=>Ve});var yr={};j(yr,{navigate:()=>ye,find:()=>Qe,NavigateResult:()=>b,NavigateAction:()=>me});var me;((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"})(me||={});class b{action;by;skipSiblings;reexplore;constructor(e,r,t,n){this.action=e,this.by=r,this.skipSiblings=t,this.reexplore=n}static _explore=new b(0);static _noExplore=new b(2);static _skipSiblings=new b(1);static _deleteParent=new b(4);static ReplaceParent(e,r){return new b(3,e,void 0,r)}static SkipSiblings(){return b._skipSiblings}static Explore(){return b._explore}static NoExplore(){return b._noExplore}static DeleteParent(){return b._deleteParent}static MergeParent(e){return new b(5,e)}static ReplaceItem(e,r){return new b(6,e,r)}static DeleteItem(e){return new b(7,void 0,e)}}var ye=async(e,r)=>{let t=new WeakSet,n=[],o=[],s=async(i,l,g)=>{let y=i===null,d=y?b.Explore():await r({key:i,value:l,path:n,parent:g,parents:o});if(l&&typeof l==="object"&&d.action===0){if(t.has(l))return d;if(t.add(l),!y)n.push(i),o.push(g);let u=l;while(await a(u,i,g))u=g[i];if(!y)o.pop(),n.pop()}return d},a=async(i,l,g)=>{let y=Object.keys(i),d=y.length;for(let u=0;u<d;u++){let c=y[u],h=i[c],p=await s(c,h,i),w=p.action;if(w===0||w===2)continue;if(w===6){if(i[c]=p.by,p.skipSiblings)return;continue}if(w===7){if(delete i[c],p.skipSiblings)return;continue}if(w===1)return;if(w===3){if(l===null)throw Error("Cannot replace root object");if(g[l]=p.by,p.reexplore)return!0;return}if(w===4){if(l===null)throw Error("Cannot delete root object");delete g[l];return}if(w===5)delete i[c],Object.assign(i,p.by)}};await s(null,e,null)},Qe=async(e,r)=>{let t=[];return await ye(e,(n)=>{if(r([...n.path,n.key].join("."),n.value))t.push(n.value);return b.Explore()}),t};var dr=(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 b.SkipSiblings()}});import rn from"path";var wr=(e)=>({load:async(r)=>{let t=r.options.globalContext;for(let{file:n}of Array.isArray(r.value)?r.value:[r.value]){if(!n)throw Error("File reference required");await e.load(n,t.file&&rn.dirname(t.file))}return b.DeleteItem()}});var hr={};j(hr,{mergeAll:()=>Y,merge:()=>N});var N=(e,r,t)=>{for(let n of Object.keys(r)){if(e[n]===void 0)continue;let o=r[n],s=e[n];if(typeof s!==typeof o||Array.isArray(s)!==Array.isArray(o)){let i=t?.mismatch?.(n,s,o,e,r);if(i!==void 0){r[n]=i;continue}throw Error(`Type mismatch: ${n}`)}let a=t?.mode?.(n,s,o,e,r)??r[".merge"]??"merge";switch(a){case"source":r[n]=s;continue;case"target":continue;case"skip":delete r[n],delete e[n];continue;case"merge":break;default:throw Error(`Unknown merge mode: ${a}`)}if(typeof s==="object")if(Array.isArray(s))o.push(...s);else{if(t?.navigate?.(n,s,o,e,r)===!1)continue;N(s,o,t)}else{if(s===o)continue;let i=t?.conflict?.(n,s,o,e,r);r[n]=i===void 0?o:i}}for(let n of Object.keys(e))if(r[n]===void 0)r[n]=e[n]},Y=(e,r)=>{let t={};for(let n of e.toReversed())N(n,t,r);return t};var br={};j(br,{CacheManager:()=>de});class de{cache=new Map;maxSize;constructor(e=100){this.maxSize=e}get(e){return this.cache.get(e)}set(e,r){this.evictIfNeeded(),this.cache.set(e,r)}has(e){return this.cache.has(e)}clear(){this.cache.clear()}setMaxSize(e){this.maxSize=e}size(){return this.cache.size}evictIfNeeded(){if(this.cache.size>=this.maxSize){let e=null,r=1/0;for(let[t,n]of this.cache.entries())if(n.timestamp<r)r=n.timestamp,e=t;if(e)this.cache.delete(e)}}}var Or={};j(Or,{select:()=>A});var tn=Object.create,{getPrototypeOf:nn,defineProperty:vr,getOwnPropertyNames:on}=Object,sn=Object.prototype.hasOwnProperty,an=(e,r,t)=>{t=e!=null?tn(nn(e)):{};let n=r||!e||!e.__esModule?vr(t,"default",{value:e,enumerable:!0}):t;for(let o of on(e))if(!sn.call(n,o))vr(n,o,{get:()=>e[o],enumerable:!0});return n},ln=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),un=ln((e,r)=>{var{defineProperty:t,getOwnPropertyNames:n,getOwnPropertyDescriptor:o}=Object,s=Object.prototype.hasOwnProperty,a=new WeakMap,i=(u)=>{var c=a.get(u),h;if(c)return c;if(c=t({},"__esModule",{value:!0}),u&&typeof u==="object"||typeof u==="function")n(u).map((p)=>!s.call(c,p)&&t(c,p,{get:()=>u[p],enumerable:!(h=o(u,p))||h.enumerable}));return a.set(u,c),c},l=(u,c)=>{for(var h in c)t(u,h,{get:c[h],enumerable:!0,configurable:!0,set:(p)=>c[h]=()=>p})},g={};l(g,{splitWithQuotes:()=>d,splitNested:()=>y}),r.exports=i(g);var y=(u,c,h="(",p=")")=>{let w=0,f="",O=[];for(let m of u){if(f+=m,m===h)w++;if(m===p)w--;if(w===0&&m===c)O.push(f.slice(0,-1)),f=""}if(f)O.push(f);return O},d=(u,c=",")=>{let h=[],p=u.length,w=c.length,f=0,O=(m)=>{if(m+w>p)return!1;for(let M=0;M<w;M++)if(u[m+M]!==c[M])return!1;return!0};while(f<p){while(f<p&&u[f]===" ")f++;if(f>=p)break;let m="",M=u[f]==='"'||u[f]==="'";if(M){let v=u[f++];while(f<p&&u[f]!==v)m+=u[f++];if(f<p)f++}else{while(f<p&&!O(f)){let v=u[f];if(v==='"'||v==="'"){m+=v,f++;while(f<p&&u[f]!==v)m+=u[f++];if(f<p)m+=u[f++]}else m+=u[f++]}m=m.trim()}if(m)h.push({value:m,quoted:M});if(O(f))f+=w}return h}}),fn=an(un(),1),pn=/^\[([^=\]]*)([=]*)([^\]]*)\]$/,cn=/^([^[\]]*)\[([^\]]*)]$/,Xe=(e,r,t,n)=>{if(e.startsWith("{")&&e.endsWith("}")){let o=e.substring(1,e.length-1);return A(r,o,t)?.toString()}return n?e:void 0},gn=(e,r,t,n)=>{let o=Xe(r,t,n);if(o)return A(e,o,n);let s=pn.exec(r);if(s){let[,i,l,g]=s,y=Xe(i.trim(),t,n,!0),d=Xe(g.trim(),t,n,!0);if(Array.isArray(e)&&(l==="="||l==="==")&&y)return e.find((u)=>u?.[y]==d)}let a=cn.exec(r);if(a){let[,i,l]=a;return e?.[i]?.[l]}return e?.[r]},A=(e,r,t)=>{let n=void 0,o=void 0,s=r??"",a=(d)=>{if(!d)return[d,!1];return d.endsWith("?")?[d.substring(0,d.length-1),!0]:[d,!1]},i=(d,u)=>{let[c,h]=a(u.pop());if(!c){if(t?.set!==void 0&&o!==void 0&&n!==void 0)n[o]=t.set;return d}let p=gn(d,c,e,t);if(p===void 0){if(h||t?.optional||t?.defaultValue!==void 0)return;throw Error(`Unknown path element: "${c}" in "${s}"`)}return n=d,o=c,i(p,u)},l=fn.splitNested(s,t?.separator??".","{","}"),g=void 0;if(l.length>0&&l[l.length-1].startsWith("?="))g=l.pop()?.substring(2);l.reverse();let y=i(e,l);if(y===void 0)return g??t?.defaultValue;return y};var we=(e)=>{if(typeof e.value==="string")return e.parent;let r=e.value.model;if(!r)return e.parent;if(typeof r==="string")return A(e.root,r);return r};var he=(e)=>{if(typeof e.value==="string")return A(e.root,e.value);if(Array.isArray(e.value))return e.value;let r=e.value;if(typeof r.from==="string")return A(e.root,r.from);return r.from};var be=async(e,r)=>{let t=e.value;if(t.selector===void 0)return r;if(typeof t.selector!=="string"){let n=JSON.parse(JSON.stringify(t.selector));return await S(n,{...e.options,root:{...e.root,result:r}}),n}return await A({...e.root,result:r},t.selector)};var Mr={};j(Mr,{PathManager:()=>T});import Q from"path";class T{constructor(){}static normalize(e){return Q.normalize(Q.resolve(e))}static resolveInContext(e,r){let t=r??process.cwd(),n=Q.isAbsolute(e)?e:Q.join(t,e);return this.normalize(n)}static isDirectoryPattern(e){return e.endsWith("/")}static isGlobPattern(e){return e.includes("*")}static toAbsolute(e,r){if(Q.isAbsolute(e))return e;return Q.join(r??process.cwd(),e)}}var Ar={};j(Ar,{conditionPredicatesTypes:()=>re,conditionPredicates:()=>W});var W={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)=>!W.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!=="")},re={and:()=>"boolean",or:()=>"boolean",xor:()=>"boolean",true:()=>"boolean",false:()=>"boolean",lt:()=>"number",le:()=>"number",gt:()=>"number",ge:()=>"number"};var Er=()=>({each:{filters:[/select|model/],fn:async(e)=>{let r=e.value;delete e.parent[e.key];let t=await he(e),n=await we(e);if(!Array.isArray(t))throw Error('Key "each" requires a source list');if(n===void 0)throw Error('Key "each" must define a model');if(r.extend?.model)n=Y([r.model,...Array.isArray(r.extend.model)?r.extend.model:[r.extend.model]]);let o=[];for(let s=0;s<t.length;s++){let a=$(n);if(await S(a,{...e.options,root:{...e.root,index:s,item:t[s],instance:a}}),r.extend?.result){let i=r.extend.result;a=Y([a,...Array.isArray(i)?i:[i]])}o.push(await be(e,a))}return o}}});var kr=()=>({map:{filters:[/select|model/],fn:async(e)=>{delete e.parent[e.key];let r=await he(e),t=await we(e);if(!Array.isArray(r))throw Error('Key "map" requires a source list');if(t===void 0)throw Error('Key "map" must define a model');let n=[];for(let o=0;o<r.length;o++){let s=$(t);await S(s,{...e.options,root:{...e.root,index:o,item:r[o],instance:s}}),n.push(await be(e,s))}return n}}});var Fr=()=>({concat:async(e)=>{let r=[];for(let t of Array.isArray(e.value)?e.value:[e.value])r.push(...await A(e.root,t));return r.filter((t)=>t!==void 0)}});var Sr=()=>({extends:async(e)=>{let r=async(t,n)=>{for(let o of Array.isArray(n)?n:[n]){let s=await A(e.root,o),a=$(s);if(a[e.key])await r(a,a[e.key]);await S(a,{...e.options}),N(a,t),delete t[e.key]}};return await r(e.parent,e.value),b.Explore()},group:(e)=>{let r=e.root.parent,t=e.value,{items:n,...o}=t;return t.items.forEach((s)=>r.push({...o,...s})),b.DeleteParent()}});var Dr=(e)=>({skip:{types:{0:"boolean"},fn:(r)=>r.value?b.DeleteParent():b.DeleteItem()},metadata:({path:r,value:t})=>{return e.metadata(r,t),b.DeleteItem()},if:{types:{0:"boolean"},fn:async(r)=>{let t=r.parent[".then"],n=r.parent[".else"];if(t!==void 0)delete r.parent[".then"];if(n!==void 0)delete r.parent[".else"];let o=r.value?t:n;if(o===void 0)return b.DeleteItem();if(typeof o==="string")return(await S({value:o},{...r.options,root:{...r.root}})).value;return b.ReplaceParent(o,!0)}},switch:(r)=>{let t=r.value;if(!t.cases)throw Error("Missing cases for switch");if(t.cases[t.from]!==void 0)return b.ReplaceParent(t.cases[t.from],!0);if(t.default!==void 0)return b.ReplaceParent(t.default,!0);return b.DeleteParent()}});var jr=()=>({from:async({root:e,parent:r,value:t})=>{let n=await A(e,t);if(n===null||n===void 0)throw Error(`Unable to resolve reference: ${t}`);if(r.content){if(Array.isArray(r.content)&&Array.isArray(n))return[...n,...r.content];return N(n,r.content),r.content}return n}});import $r from"node:vm";var Rr=(e)=>({modules:async(r)=>{for(let[t,n]of Object.entries(r.value)){let o=$r.createContext({console,objector:e,document:r.root}),s=new $r.SourceTextModule(n,{identifier:t,context:o});await s.link((a)=>{throw Error(`Module ${a} is not allowed`)}),await s.evaluate(),e.sources(Object.fromEntries(Object.entries(s.namespace).map(([a,i])=>[`${t}.${a}`,(l)=>i(l,...l.args)])))}return b.DeleteItem()}});var Wr=()=>({try:{fn:(e)=>{let r=e.parent[".catch"];if(r!==void 0)delete e.parent[".catch"];try{return e.value}catch(t){if(r!==void 0)return r;return b.DeleteItem()}}}});var Nr=()=>({let:{fn:(e)=>{let r=e.value;return Object.assign(e.root,r),b.DeleteItem()}}});var Cr=()=>({tap:{fn:(e)=>{return console.log(`[tap] ${e.path}:`,e.value),e.value}}});var mn=(e,r)=>{let t=r.section.config.using,n=e.getFunctions();return t?Object.fromEntries(t.map((o)=>{if(o in n)return[o,n[o]];if(o in r.root)return[o,r.root[o]];throw Error(`Function or variable "${o}" not found for script section`)})):n},ve=(e,r,t,n,o=[])=>{let s=mn(e,t),a=["section","context","config","system",...Object.keys(s),...o],i=[r,t.root,t.section.config,e,...Object.values(s)];return[new Ge(...a,n).bind(t),i]},Lr=(e)=>async(r)=>{let t=[],n={write:(...a)=>{return t.push(...a),n},writeLine:(...a)=>{return t.push(...a.map((i)=>i+`
10
- `)),n},clear:()=>{return t.splice(0,t.length),n},prepend:(...a)=>{return t.unshift(...a),n},prependLine:(...a)=>{return t.unshift(...a.map((i)=>i+`
11
- `)),n},setOptions:(a)=>{return Object.assign(r.section,a),n},use:(a)=>{return a(n),n},getLines:()=>t},o=r.section.config.condition;if(o!==void 0){let[a,i]=ve(e,n,r,`return (${o})`);if(!await a(...i))return!1}let s=r.section.config.each;if(s){let[a,i]=ve(e,n,r,`return (${s})`),l=Array.isArray(s)?s:await a(...i);if(!Array.isArray(l))throw Error('The "each" property of a script section must return an array');let[g,y]=ve(e,n,r,r.section.content,["item"]);for(let d of l){let u=await g(...y,d);if(typeof u<"u")t.push(u)}}else{let[a,i]=ve(e,n,r,r.section.content),l=await a(...i);if(typeof l<"u")return l}if(t.length===0)return!1;return t.join("")};var Ir=(e)=>({script:Lr(e)});import _r from"fs/promises";import te from"path";var Ur=(e)=>({include:async(r)=>{let{file:t}=r.options.globalContext;return await J(r.args[0],{cwd:te.dirname(t),filter:(n)=>te.basename(t)!==n,map:async(n)=>e.load(n,te.dirname(t),r.root)})},exists:async({args:[r]})=>await B(r),file:async(r)=>await _r.readFile(await _(r.args[0],e.getIncludeDirectories())).then((t)=>t.toString()),scan:async(r)=>{let t=[],o=(()=>{let i=r.args[2]??["**/node_modules/**"],l=typeof i==="string"?i.split(",").map((g)=>g.trim()):i;if(!Array.isArray(l))throw Error("Scan exclusion must be a list");return l})(),{file:s}=r.options.globalContext,a=r.args[1]?await _(r.args[1],e.getIncludeDirectories()):te.dirname(s);for await(let i of _r.glob(r.args[0],{cwd:a,exclude:(l)=>o.some((g)=>te.matchesGlob(l,g))}))t.push(i);return t}});var Tr=()=>D({env:(e)=>process.env[e]});var Br={};j(Br,{tokenize:()=>Ke,stripIndent:()=>Ze,snake:()=>G,pascal:()=>X,padBlock:()=>C,changeCase:()=>K,capital:()=>ne,camel:()=>oe});var X=(e)=>e.replace(/((?:[_ ]+)\w|^\w)/g,(r,t)=>t.toUpperCase()).replace(/[_ ]/g,""),ne=(e)=>e.replace(/((?:[ ]+)\w|^\w)/g,(r,t)=>t.toUpperCase()),oe=(e)=>{let r=X(e);return r.charAt(0).toLowerCase()+r.slice(1)},G=(e,r="_")=>e.replace(/([a-z])([A-Z])/g,`$1${r}$2`).replace(/\s+/g,r).toLowerCase(),K=(e,r)=>{switch(r){case"upper":return e.toUpperCase();case"lower":return e.toLowerCase();default:return e}},C=(e,r,t=`
12
- `,n=" ")=>{let o=n.repeat(r);return e.split(t).map((s)=>o+s).join(t)},Ke=(e,r,t=/\${([^}]+)}/g)=>{return e.replace(t,(n,o)=>{let s=r[o];if(s===null||s===void 0)return"";if(typeof s==="string")return s;if(typeof s==="number"||typeof s==="boolean")return String(s);return String(s)})},Ze=(e)=>{let r=e.split(/\r?\n/),t=r.filter((o)=>o.trim().length>0).map((o)=>/^[ \t]*/.exec(o)?.[0].length??0),n=t.length>0?Math.min(...t):0;if(n===0)return e;return r.map((o)=>o.slice(n)).join(`
13
- `)};var Yr=(e)=>({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,t]})=>r.repeat(t)},uuid:(r)=>crypto.randomUUID(),pad:{types:{0:"ref",1:"number",2:"string"},fn:({args:[r,t],tags:n})=>{let o=n.join?.[0]??`
14
- `,s=n.padChar?.[0]??" ";return C(r,t??2,o,s)}},formatAs:{fn:({args:[r,t],tags:n})=>{let o=e.getEncoder(t);if(!o)throw Error("Unsupported format: "+String(t));let s=[];if(o.options?.includeTags)s=[n];return o.fn(r,...s)}},...D({pascal:X,camel:oe,capital:ne,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,t)=>K(G(r,"_"),t),kebab:(r,t)=>K(G(r,"-"),t),encode:(r,t)=>Buffer.from(r).toString(t??"base64"),decode:(r,t)=>Buffer.from(r,t??"base64").toString()})});var Oe=(e,r=0,t)=>{let n=" ".repeat(r),o=" ".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 Ot=Object.create;var{getPrototypeOf:Mt,defineProperty:V,getOwnPropertyNames:nr}=Object;var Se=Object.prototype.hasOwnProperty;function je(e){return this[e]}var F=(e,r,t)=>{var n=nr(r);for(let o of n)if(!Se.call(e,o)&&o!=="default")V(e,o,{get:je.bind(r,o),enumerable:!0});if(t){for(let o of n)if(!Se.call(t,o)&&o!=="default")V(t,o,{get:je.bind(r,o),enumerable:!0});return t}},Et,At,Ft=(e,r,t)=>{var n=e!=null&&typeof e==="object";if(n){var o=r?Et??=new WeakMap:At??=new WeakMap,s=o.get(e);if(s)return s}t=e!=null?Ot(Mt(e)):{};let a=r||!e||!e.__esModule?V(t,"default",{value:e,enumerable:!0}):t;for(let i of nr(e))if(!Se.call(a,i))V(a,i,{get:je.bind(e,i),enumerable:!0});if(n)o.set(e,a);return a};var St=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var jt=(e)=>e;function Dt(e,r){this[e]=jt.bind(null,r)}var k=(e,r)=>{for(var t in r)V(e,t,{get:r[t],enumerable:!0,configurable:!0,set:Dt.bind(r,t)})};var dt=St((xi,yt)=>{var{defineProperty:qe,getOwnPropertyNames:Wn,getOwnPropertyDescriptor:Nn}=Object,In=Object.prototype.hasOwnProperty,mt=new WeakMap,Ln=(e)=>{var r=mt.get(e),t;if(r)return r;if(r=qe({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")Wn(e).map((n)=>!In.call(r,n)&&qe(r,n,{get:()=>e[n],enumerable:!(t=Nn(e,n))||t.enumerable}));return mt.set(e,r),r},_n=(e,r)=>{for(var t in r)qe(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(n)=>r[t]=()=>n})},gt={};_n(gt,{splitWithQuotes:()=>Tn,splitNested:()=>Un});yt.exports=Ln(gt);var Un=(e,r,t="(",n=")")=>{let o=0,s="",a=[];for(let i of e){if(s+=i,i===t)o++;if(i===n)o--;if(o===0&&i===r)a.push(s.slice(0,-1)),s=""}if(s)a.push(s);return a},Tn=(e,r=",")=>{let t=[],n=e.length,o=r.length,s=0,a=(i)=>{if(i+o>n)return!1;for(let l=0;l<o;l++)if(e[i+l]!==r[l])return!1;return!0};while(s<n){while(s<n&&e[s]===" ")s++;if(s>=n)break;let i="",l=e[s]==='"'||e[s]==="'";if(l){let m=e[s++];while(s<n&&e[s]!==m)i+=e[s++];if(s<n)s++}else{while(s<n&&!a(s)){let m=e[s];if(m==='"'||m==="'"){i+=m,s++;while(s<n&&e[s]!==m)i+=e[s++];if(s<n)i+=e[s++]}else i+=e[s++]}i=i.trim()}if(i)t.push({value:i,quoted:l});if(a(s))s+=o}return t}});var R={};k(R,{writeOutputs:()=>z,writeOutput:()=>me,writeFormat:()=>ce,variable:()=>vr,tokenize:()=>xe,toObjectWithKey:()=>_e,toObject:()=>ee,toList:()=>U,stripIndent:()=>Ze,sortBy:()=>Be,snake:()=>X,sharedFunction:()=>Or,select:()=>E,section:()=>hr,processFields:()=>j,pascal:()=>Q,padBlock:()=>N,nonNullMap:()=>Ue,navigate:()=>de,mergeAll:()=>Y,merge:()=>W,makeFieldProcessorMap:()=>D,makeFieldProcessorList:()=>Re,makeFieldProcessor:()=>H,macro:()=>wr,locate:()=>_,loadFormat:()=>q,key:()=>br,importList:()=>ge,importGlob:()=>Ie,globMap:()=>J,getProcessor:()=>Z,getArgs:()=>fe,find:()=>Xe,exists:()=>B,encoder:()=>Mr,defined:()=>Te,deepClone:()=>$,decoder:()=>Er,conditionPredicates:()=>C,changeCase:()=>G,capital:()=>oe,camel:()=>se,asyncMap:()=>Ye,ObjectorPlugin:()=>re,Objector:()=>ht,NavigateResult:()=>b,NavigateAction:()=>ye,Logger:()=>Ae,AsyncFunction:()=>Ve});var $e={};k($e,{processFields:()=>j,makeFieldProcessorMap:()=>D,makeFieldProcessorList:()=>Re,makeFieldProcessor:()=>H,getProcessor:()=>Z,getArgs:()=>fe});var kt=Object.create,{getPrototypeOf:Rt,defineProperty:or,getOwnPropertyNames:$t}=Object,Ct=Object.prototype.hasOwnProperty,Wt=(e,r,t)=>{t=e!=null?kt(Rt(e)):{};let n=r||!e||!e.__esModule?or(t,"default",{value:e,enumerable:!0}):t;for(let o of $t(e))if(!Ct.call(n,o))or(n,o,{get:()=>e[o],enumerable:!0});return n},Nt=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),It=Nt((e,r)=>{var{defineProperty:t,getOwnPropertyNames:n,getOwnPropertyDescriptor:o}=Object,s=Object.prototype.hasOwnProperty,a=new WeakMap,i=(u)=>{var c=a.get(u),h;if(c)return c;if(c=t({},"__esModule",{value:!0}),u&&typeof u==="object"||typeof u==="function")n(u).map((f)=>!s.call(c,f)&&t(c,f,{get:()=>u[f],enumerable:!(h=o(u,f))||h.enumerable}));return a.set(u,c),c},l=(u,c)=>{for(var h in c)t(u,h,{get:c[h],enumerable:!0,configurable:!0,set:(f)=>c[h]=()=>f})},m={};l(m,{splitWithQuotes:()=>y,splitNested:()=>d}),r.exports=i(m);var d=(u,c,h="(",f=")")=>{let w=0,p="",O=[];for(let g of u){if(p+=g,g===h)w++;if(g===f)w--;if(w===0&&g===c)O.push(p.slice(0,-1)),p=""}if(p)O.push(p);return O},y=(u,c=",")=>{let h=[],f=u.length,w=c.length,p=0,O=(g)=>{if(g+w>f)return!1;for(let M=0;M<w;M++)if(u[g+M]!==c[M])return!1;return!0};while(p<f){while(p<f&&u[p]===" ")p++;if(p>=f)break;let g="",M=u[p]==='"'||u[p]==="'";if(M){let v=u[p++];while(p<f&&u[p]!==v)g+=u[p++];if(p<f)p++}else{while(p<f&&!O(p)){let v=u[p];if(v==='"'||v==="'"){g+=v,p++;while(p<f&&u[p]!==v)g+=u[p++];if(p<f)g+=u[p++]}else g+=u[p++]}g=g.trim()}if(g)h.push({value:g,quoted:M});if(O(p))p+=w}return h}}),Lt=Wt(It(),1),L;((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"})(L||={});class S{action;by;skipSiblings;reexplore;constructor(e,r,t,n){this.action=e,this.by=r,this.skipSiblings=t,this.reexplore=n}static _explore=new S(0);static _noExplore=new S(2);static _skipSiblings=new S(1);static _deleteParent=new S(4);static ReplaceParent(e,r){return new S(3,e,void 0,r)}static SkipSiblings(){return S._skipSiblings}static Explore(){return S._explore}static NoExplore(){return S._noExplore}static DeleteParent(){return S._deleteParent}static MergeParent(e){return new S(5,e)}static ReplaceItem(e,r){return new S(6,e,r)}static DeleteItem(e){return new S(7,void 0,e)}}var _t=async(e,r)=>{let t=new WeakSet,n=[],o=[],s=async(i,l,m)=>{let d=i===null,y=d?S.Explore():await r({key:i,value:l,path:n,parent:m,parents:o});if(l&&typeof l==="object"&&y.action===0){if(t.has(l))return y;if(t.add(l),!d)n.push(i),o.push(m);let u=l;while(await a(u,i,m))u=m[i];if(!d)o.pop(),n.pop()}return y},a=async(i,l,m)=>{let d=Object.keys(i),y=d.length;for(let u=0;u<y;u++){let c=d[u],h=i[c],f=await s(c,h,i),w=f.action;if(w===0||w===2)continue;if(w===6){if(i[c]=f.by,f.skipSiblings)return;continue}if(w===7){if(delete i[c],f.skipSiblings)return;continue}if(w===1)return;if(w===3){if(l===null)throw Error("Cannot replace root object");if(m[l]=f.by,f.reexplore)return!0;return}if(w===4){if(l===null)throw Error("Cannot delete root object");delete m[l];return}if(w===5)delete i[c],Object.assign(i,f.by)}};await s(null,e,null)},Ut=Object.create,{getPrototypeOf:Tt,defineProperty:sr,getOwnPropertyNames:Bt}=Object,Yt=Object.prototype.hasOwnProperty,Kt=(e,r,t)=>{t=e!=null?Ut(Tt(e)):{};let n=r||!e||!e.__esModule?sr(t,"default",{value:e,enumerable:!0}):t;for(let o of Bt(e))if(!Yt.call(n,o))sr(n,o,{get:()=>e[o],enumerable:!0});return n},Qt=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),Xt=Qt((e,r)=>{var{defineProperty:t,getOwnPropertyNames:n,getOwnPropertyDescriptor:o}=Object,s=Object.prototype.hasOwnProperty,a=new WeakMap,i=(u)=>{var c=a.get(u),h;if(c)return c;if(c=t({},"__esModule",{value:!0}),u&&typeof u==="object"||typeof u==="function")n(u).map((f)=>!s.call(c,f)&&t(c,f,{get:()=>u[f],enumerable:!(h=o(u,f))||h.enumerable}));return a.set(u,c),c},l=(u,c)=>{for(var h in c)t(u,h,{get:c[h],enumerable:!0,configurable:!0,set:(f)=>c[h]=()=>f})},m={};l(m,{splitWithQuotes:()=>y,splitNested:()=>d}),r.exports=i(m);var d=(u,c,h="(",f=")")=>{let w=0,p="",O=[];for(let g of u){if(p+=g,g===h)w++;if(g===f)w--;if(w===0&&g===c)O.push(p.slice(0,-1)),p=""}if(p)O.push(p);return O},y=(u,c=",")=>{let h=[],f=u.length,w=c.length,p=0,O=(g)=>{if(g+w>f)return!1;for(let M=0;M<w;M++)if(u[g+M]!==c[M])return!1;return!0};while(p<f){while(p<f&&u[p]===" ")p++;if(p>=f)break;let g="",M=u[p]==='"'||u[p]==="'";if(M){let v=u[p++];while(p<f&&u[p]!==v)g+=u[p++];if(p<f)p++}else{while(p<f&&!O(p)){let v=u[p];if(v==='"'||v==="'"){g+=v,p++;while(p<f&&u[p]!==v)g+=u[p++];if(p<f)g+=u[p++]}else g+=u[p++]}g=g.trim()}if(g)h.push({value:g,quoted:M});if(O(p))p+=w}return h}}),Gt=Kt(Xt(),1),Pt=/^\[([^=\]]*)([=]*)([^\]]*)\]$/,Vt=/^([^[\]]*)\[([^\]]*)]$/,De=(e,r,t,n)=>{if(e.startsWith("{")&&e.endsWith("}")){let o=e.substring(1,e.length-1);return x(r,o,t)?.toString()}return n?e:void 0},xt=(e,r,t,n)=>{let o=De(r,t,n);if(o)return x(e,o,n);let s=Pt.exec(r);if(s){let[,i,l,m]=s,d=De(i.trim(),t,n,!0),y=De(m.trim(),t,n,!0);if(Array.isArray(e)&&(l==="="||l==="==")&&d)return e.find((u)=>u?.[d]==y)}let a=Vt.exec(r);if(a){let[,i,l]=a;return e?.[i]?.[l]}return e?.[r]},x=(e,r,t)=>{let n=void 0,o=void 0,s=r??"",a=(y)=>{if(!y)return[y,!1];return y.endsWith("?")?[y.substring(0,y.length-1),!0]:[y,!1]},i=(y,u)=>{let[c,h]=a(u.pop());if(!c){if(t?.set!==void 0&&o!==void 0&&n!==void 0)n[o]=t.set;return y}let f=xt(y,c,e,t);if(f===void 0){if(h||t?.optional||t?.defaultValue!==void 0)return;throw Error(`Unknown path element: "${c}" in "${s}"`)}return n=y,o=c,i(f,u)},l=Gt.splitNested(s,t?.separator??".","{","}"),m=void 0;if(l.length>0&&l[l.length-1].startsWith("?="))m=l.pop()?.substring(2);l.reverse();let d=i(e,l);if(d===void 0)return m??t?.defaultValue;return d},ir=(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((n)=>{let o=n.trim();if(!isNaN(+o))return+o;return o})}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)},pe=(e,r,t,n,o,s)=>{let a=n?.(e)??e,i=o(a);if(i[0])return i[1];if(!r){let l=x(t,e),m=o(l);if(m[0])return m[1]}throw Error(s)},lr=(e,r,t,n,o)=>{let s=typeof e.types==="function"?e.types(n,r.value,o):e.types?.[n];if(!s||s==="ref")return ir(r,(i)=>x(t,i));let a=ir(r,()=>r.value);if(Array.isArray(s)){if(!s.includes(a))throw Error(`Argument ${n.toString()} must be one of [${s.join(", ")}]: ${a}`);return a}if(typeof s==="string"){if(s.endsWith("?")){let i=s.slice(0,-1);if(r.value==="null")return S.ReplaceItem(null);if(r.value==="undefined")return S.ReplaceItem(void 0);if(r.value==="")return"";s=i}switch(s){case"any":return a;case"array":return pe(a,r.quoted,t,null,(i)=>[Array.isArray(i),i],`Argument ${n.toString()} must be an array: ${a}`);case"object":return pe(a,r.quoted,t,null,(i)=>[typeof i==="object"&&i!==null,i],`Argument ${n.toString()} must be an object: ${a}`);case"number":return pe(a,r.quoted,t,(i)=>Number(i),(i)=>[!isNaN(i),i],`Argument ${n.toString()} must be a number: ${a}`);case"boolean":return pe(a,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 ${n.toString()} must be a boolean: ${a}`);case"string":return a.toString();default:throw Error(`Unknown type for argument ${n.toString()}: ${s}`)}}return s(a,t,n,r.quoted)},Z=(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}},ur=(e)=>!e.quoted&&e.value.startsWith("."),Zt=(e)=>{let r={};for(let t of e){if(!ur(t))continue;let n=t.value.indexOf("="),o=n>-1?t.value.slice(1,n):t.value.slice(1),s=n>-1?t.value.slice(n+1):"";if(s.length>=2){let a=s[0],i=s[s.length-1];if(a==='"'&&i==='"'||a==="'"&&i==="'")s=s.slice(1,-1)}if(!r[o])r[o]=[];r[o].push(s)}return r},fe=(e,r,t)=>{let n=Lt.splitWithQuotes(e??""),o=Zt(n),s=n.filter((i)=>!ur(i)),a=r.options.processArgs===!1?[]:s.map((i,l)=>lr(r.options,i,t,l,s));return{rawArgs:s,parsedArgs:a,tags:o}},Ht=(e)=>{return e!==null&&typeof e==="object"&&"action"in e},qt=(e,r)=>r.keys!==void 0&&e.key.startsWith(".")&&r.keys[e.key.substring(1)]!==void 0,Jt=async(e,r,t,n)=>{let{key:o,parent:s}=e,a=Z(n.keys,o.substring(1));if(a.options.processArgs!==!1&&(typeof a.options.types==="function"||a.options.types?.[0]!==void 0))e.value=lr(a.options,{value:e.value,quoted:!1},t,0,[]);if(typeof e.value!=="string")await j(e.value,{...n,root:{...t,parent:e.parent,parents:e.parents},filters:[...n.filters??[],...a.options.filters??[]]});let i=await a.fn({path:r,root:t,parent:s,key:o,options:n,value:e.value,args:[],rawArgs:[],tags:{}});return Ht(i)?i:S.ReplaceParent(i)},ar=(e)=>{let r=e.split(/\r?\n/),t=r.filter((o)=>o.trim().length>0).map((o)=>/^[ \t]*/.exec(o)?.[0].length??0),n=t.length>0?Math.min(...t):0;if(n===0)return e;return r.map((o)=>o.slice(n)).join(`
2
+ `)},zt=async(e,r,t,n)=>{if(!r?.onSection&&!r?.onSectionConfig&&!r?.sections)return[e,!1];let o=/<@\s*section(?:\s*:\s*([\w-]+))?\s*@>([\s\S]*?)<@\s*\/\s*section\s*@>/g,s,a=e,i=0,l=!1,m={content:a,root:n,path:t,options:r,section:{}};while((s=o.exec(e))!==null){l=!0;let[d,y,u]=s,c=s.index,h=c+d.length,f=e[h]===`
3
+ `;if(f)h++;let w=c+i,p=h+i,O={},g=u,M=/(^|\r?\n)[ \t]*---[ \t]*(\r?\n|$)/m.exec(u);if(M){let Fe=u.slice(0,M.index),bt=M.index+M[0].length;g=u.slice(bt);let tr=ar(Fe).trim();if(tr.length>0)try{O=r?.configParser?.(tr)??{}}catch(vt){throw Error(`Failed to parse YAML config for section: ${vt.message}`)}}else if(/^\r?\n/.test(g))g=g.replace(/^\r?\n/,"");g=ar(g),g=g.replace(/(?:\r?\n[ \t]*)+$/,""),g=g.replace(/[ \t]+$/,"");let v={config:y?{...O,type:y}:O,content:g};if(m.content=a,m.section=v,Object.keys(v.config).length>0){if(await r.onSectionConfig?.(m)!==!1)await j(v.config,{...r,root:n})}let Je=m.section.config.type?r.sections?.[m.section.config.type]:void 0,P;if(Je)P=await Je(m);else if(r.onSection)P=await r.onSection(m);if(v.trim)v.content=v.content.trim();if(v.indent)v.content=v.content.split(`
4
+ `).map((Fe)=>" ".repeat(v.indent)+Fe).join(`
5
+ `);let I="";if(P===!0||v.show)I=v.content;else if(typeof P==="string")I=P;if(f&&I!==""&&!I.endsWith(`
6
+ `))I+=`
7
+ `;let ze=a.lastIndexOf(`
8
+ `,w-1),er=ze===-1?0:ze+1,rr=a.slice(er,w).trim().length===0?er:w;a=a.slice(0,rr)+I+a.slice(p),i+=I.length-(p-rr),m.content=a}return[a,l]},pr=(e)=>{let r=[],t=0;while(t<e.length)if(e[t]==="$"&&e[t+1]==="("&&(t===0||e[t-1]!=="\\")){let n=t;t+=2;let o=1;for(;t<e.length;t++)if(e[t]==="(")o++;else if(e[t]===")"){if(o--,o===0){r.push([n,t]);break}}if(o!==0)throw Error(`Unmatched opening $( at position ${n.toString()}`);t++}else t++;return r},ke=Symbol.for("@homedev/fields:OverrideResult"),en=(e)=>({[ke]:!0,value:e}),rn=(e)=>{return e!==null&&typeof e==="object"&&ke in e&&e[ke]===!0},fr=async(e,r,t)=>{for(let n=r.length-1;n>=0;n--){let[o,s]=r[n],a=e.slice(o+2,s),i=await fr(a,pr(a),t);if(typeof i==="object")return i;let l=await t(i,e);if(rn(l))return l.value;e=e.slice(0,o)+l+e.slice(s+1)}return e},tn=async(e,r)=>fr(e,pr(e),r),nn=(e)=>{return e!==null&&typeof e==="object"&&"action"in e},on=/([\w\d.-_/]+):(.+)/,sn=async(e,r,t,n)=>{let o=await(async()=>{let s=on.exec(e);if(!s)return await x(r,e);let[a,i,l]=s,m=Z(n.sources,i),d=fe(l,m,r);return await m.fn({args:d.parsedArgs,rawArgs:d.rawArgs,tags:d.tags,key:i,options:n,root:r,path:t,value:null})})();if(o===null||o===void 0)return"";if(typeof o==="object")return en(o);return o},cr=async(e,r,t,n)=>{let o=await tn(r,(s)=>sn(s,t,e,n));if(nn(o))return o;if(o===r)return S.Explore();if(typeof o==="string"){let s=await cr(e,o,t,n);if(s.action!==L.Explore)return s;return S.ReplaceItem(o)}return S.ReplaceItem(o)},j=async(e,r)=>{return r??={},await _t(e,async(t)=>{let n=[...t.path,t.key].join(".");if(r?.filters?.length&&r.filters.some((i)=>i.test(n)))return S.NoExplore();let o=t.path.length===0,s=t.parents.length>0?t.parents.toReversed():[];if(o){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 a={...e,...r.root,this:t.parent,parent:s.length>0?s[0]:null,parents:s};try{if(t.key.startsWith("$"))return S.NoExplore();let i=S.Explore();if(typeof t.value==="string"){let l=t.value,m=!1;while(!0){let[d,y]=await zt(l,r,n,a);if(m=m||y,i=await cr(n,d,a,r),i.action===L.ReplaceItem&&typeof i.by==="string"){l=i.by;continue}if(i.action===L.Explore&&y&&d!==l)i=S.ReplaceItem(d);break}if(i.action===L.Explore&&l!==t.value)i=S.ReplaceItem(l);switch(i.action){case L.Explore:break;case L.ReplaceItem:t.value=i.by;break;default:return i}}if(qt(t,r))i=await Jt(t,n,a,r);return i}catch(i){throw Error(`${i.message}
9
+ (${n})`)}}),e},H=(e,r)=>r?{fn:(t)=>e(...t.args),types:r}:(t)=>e(...t.args),Re=(e,r)=>Object.fromEntries(e.map((t)=>[t.name,H(t,r?.types?.[t.name])])),D=(e,r)=>Object.fromEntries((r?.keys??Object.keys(e)).map((t)=>[t,H(e[t],r?.types?.[t])]));var Le={};k(Le,{writeOutputs:()=>z,writeOutput:()=>me,writeFormat:()=>ce,locate:()=>_,loadFormat:()=>q,importList:()=>ge,importGlob:()=>Ie,globMap:()=>J,exists:()=>B});import mr from"fs/promises";import Ce from"path";import an from"fs/promises";import ln from"path";import un from"fs/promises";import pn from"fs/promises";import dr from"fs/promises";import gr from"path";import fn from"fs/promises";import We from"path";import yr from"path";var B=async(e)=>{try{return await mr.access(e,mr.constants.R_OK),!0}catch{return!1}},_=async(e,r)=>{let t=!Ce.isAbsolute(e)&&r?["",...r]:[""];for(let n of t){let o=Ce.join(n,e);if(await B(o))return Ce.resolve(o)}throw Error(`File not found: "${e}"`)},q=async(e,r)=>{let t=await _(e,r?.dirs),n=await an.readFile(t,"utf-8"),o=ln.dirname(t),s={text:{fn:(i)=>i,matching:["\\.txt$","\\.text$"]},json:{fn:JSON.parse,matching:["\\.json$"]},...r?.parsers},a=r?.format?s[r.format]:Object.values(s).find((i)=>i.matching?.some((l)=>new RegExp(l).test(e)));if(!a)throw Error(`Unsupported format for file "${e}" and no matching parser found`);return{content:await a.fn(n),fullPath:t,folderPath:o}},ce=async(e,r,t)=>{let n={text:{fn:(s)=>s,matching:["\\.txt$","\\.text$"]},json:{fn:JSON.stringify,matching:["\\.json$"]},...t?.encoders},o=t?.format?n[t.format]:Object.values(n).find((s)=>s.matching?.some((a)=>new RegExp(a).test(e)));if(!o)throw Error(`Unsupported format for file "${e}" and no matching encoder found`);await un.writeFile(e,await o.fn(r))},J=async(e,r)=>{if(typeof e==="string"&&!e.includes("*"))return await r.map(e,0,[]);let t=await Array.fromAsync(pn.glob(e,{cwd:r.cwd})),n=r.filter?t.filter(r.filter):t;return await Promise.all(n.map(r.map))},z=async(e,r)=>{if(r?.targetDirectory&&r?.removeFirst)try{await dr.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 me(t,r)},me=async(e,r)=>{let t=gr.join(r?.targetDirectory??".",e.name),n=gr.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 dr.mkdir(n,{recursive:!0})}catch(o){throw Error(`Failed to create target directory "${n}" for output "${t}": ${o.message}`)}try{await ce(t,e.value,{format:e.type??"text"})}catch(o){throw Error(`Failed to write output "${t}": ${o.message}`)}},Ne=(e)=>e?yr.isAbsolute(e)?e:yr.join(process.cwd(),e):process.cwd(),ge=async(e,r)=>{let t=[];for(let n of e)try{let o=!We.isAbsolute(n)?We.join(Ne(r?.cwd),n):n;if(r?.filter?.(o)===!1)continue;let s=await import(o);if(r?.resolveDefault==="only"&&!s.default)throw Error(`Module ${n} does not have a default export`);let a=r?.resolveDefault?s.default??s:s,i=r?.map?await r.map(a,n):a;if(i!==void 0)t.push(i)}catch(o){if(r?.fail?.(n,o)===!1)continue;throw Error(`Failed to import module ${n}: ${o.message??o}`)}return t},Ie=async(e,r)=>{let t=[];for(let n of e){let o=(await Array.fromAsync(fn.glob(n,{cwd:Ne(r?.cwd)}))).map((s)=>We.join(Ne(r?.cwd),s));t.push(...await ge(o,r))}return t};var Ke={};k(Ke,{toObjectWithKey:()=>_e,toObject:()=>ee,toList:()=>U,sortBy:()=>Be,nonNullMap:()=>Ue,defined:()=>Te,deepClone:()=>$,asyncMap:()=>Ye});var U=(e,r="name")=>Object.entries(e).map(([t,n])=>({[r]:t,...n})),_e=(e,r="name")=>Object.fromEntries(e.map((t)=>[t[r],t])),ee=(e,r="name")=>Object.fromEntries(e.map((t)=>{let{[r]:n,...o}=t;return[n,o]})),Ue=(e,r)=>{if(!e)return[];let t=[],n=0;for(let o of e)if(o!==null&&o!==void 0)t.push(r(o,n,e)),n++;return t},Te=(e,r="Value is undefined")=>{if(e===void 0||e===null)throw Error(r);return e},Be=(e,r,t=(n,o)=>n-o)=>e.slice().sort((n,o)=>t(r(n),r(o))),Ye=async(e,r)=>Promise.all(e.map(r)),$=(e)=>{if(typeof structuredClone<"u")try{return structuredClone(e)}catch{}return JSON.parse(JSON.stringify(e))};var Qe={};k(Qe,{variable:()=>vr,sharedFunction:()=>Or,section:()=>hr,macro:()=>wr,key:()=>br,encoder:()=>Mr,decoder:()=>Er,ObjectorPlugin:()=>re});class re{o;context;constructor(e){this.o=e}}var wr=(e)=>(r,t)=>{t.addInitializer(function(){let n=this[t.name],o=e?.name??t.name;this.o.sources({[o]:(s)=>n.apply({...this,context:s},s.args)})})},hr=(e)=>(r,t)=>{t.addInitializer(function(){let n=this[t.name],o=e?.name??t.name;this.o.sections({[o]:(s)=>{return n.call({...this,context:s},s.section)}})})},br=(e)=>(r,t)=>{t.addInitializer(function(){let n=this[t.name],o=e?.name??t.name;this.o.keys({[o]:(s)=>n.call({...this,context:s},s.value)})})},vr=(e)=>(r,t)=>{t.addInitializer(function(){let n=this[t.name],o=e?.name??t.name;this.o.variables({[o]:n})})},Or=(e)=>(r,t)=>{t.addInitializer(function(){let n=this[t.name],o=e?.name??t.name;this.o.functions({[o]:n})})},Mr=(e)=>(r,t)=>{t.addInitializer(function(){let n=this[t.name],o=e?.name??t.name;this.o.encoders({[o]:{fn:n}})})},Er=(e)=>(r,t)=>{t.addInitializer(function(){let n=this[t.name],o=e?.name??t.name;this.o.decoders({[o]:{fn:n}})})};var ft={};k(ft,{defaultProcessors:()=>He});var Ar={};k(Ar,{navigate:()=>de,find:()=>Xe,NavigateResult:()=>b,NavigateAction:()=>ye});var ye;((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"})(ye||={});class b{action;by;skipSiblings;reexplore;constructor(e,r,t,n){this.action=e,this.by=r,this.skipSiblings=t,this.reexplore=n}static _explore=new b(0);static _noExplore=new b(2);static _skipSiblings=new b(1);static _deleteParent=new b(4);static ReplaceParent(e,r){return new b(3,e,void 0,r)}static SkipSiblings(){return b._skipSiblings}static Explore(){return b._explore}static NoExplore(){return b._noExplore}static DeleteParent(){return b._deleteParent}static MergeParent(e){return new b(5,e)}static ReplaceItem(e,r){return new b(6,e,r)}static DeleteItem(e){return new b(7,void 0,e)}}var de=async(e,r)=>{let t=new WeakSet,n=[],o=[],s=async(i,l,m)=>{let d=i===null,y=d?b.Explore():await r({key:i,value:l,path:n,parent:m,parents:o});if(l&&typeof l==="object"&&y.action===0){if(t.has(l))return y;if(t.add(l),!d)n.push(i),o.push(m);let u=l;while(await a(u,i,m))u=m[i];if(!d)o.pop(),n.pop()}return y},a=async(i,l,m)=>{let d=Object.keys(i),y=d.length;for(let u=0;u<y;u++){let c=d[u],h=i[c],f=await s(c,h,i),w=f.action;if(w===0||w===2)continue;if(w===6){if(i[c]=f.by,f.skipSiblings)return;continue}if(w===7){if(delete i[c],f.skipSiblings)return;continue}if(w===1)return;if(w===3){if(l===null)throw Error("Cannot replace root object");if(m[l]=f.by,f.reexplore)return!0;return}if(w===4){if(l===null)throw Error("Cannot delete root object");delete m[l];return}if(w===5)delete i[c],Object.assign(i,f.by)}};await s(null,e,null)},Xe=async(e,r)=>{let t=[];return await de(e,(n)=>{if(r([...n.path,n.key].join("."),n.value))t.push(n.value);return b.Explore()}),t};var Fr=(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 b.SkipSiblings()}});import cn from"path";var Sr=(e)=>({load:async(r)=>{let t=r.options.globalContext;for(let{file:n}of Array.isArray(r.value)?r.value:[r.value]){if(!n)throw Error("File reference required");await e.load(n,t.file&&cn.dirname(t.file))}return b.DeleteItem()}});var jr={};k(jr,{mergeAll:()=>Y,merge:()=>W});var W=(e,r,t)=>{for(let n of Object.keys(r)){if(e[n]===void 0)continue;let o=r[n],s=e[n];if(typeof s!==typeof o||Array.isArray(s)!==Array.isArray(o)){let i=t?.mismatch?.(n,s,o,e,r);if(i!==void 0){r[n]=i;continue}throw Error(`Type mismatch: ${n}`)}let a=t?.mode?.(n,s,o,e,r)??r[".merge"]??"merge";switch(a){case"source":r[n]=s;continue;case"target":continue;case"skip":delete r[n],delete e[n];continue;case"merge":break;default:throw Error(`Unknown merge mode: ${a}`)}if(typeof s==="object")if(Array.isArray(s))o.push(...s);else{if(t?.navigate?.(n,s,o,e,r)===!1)continue;W(s,o,t)}else{if(s===o)continue;let i=t?.conflict?.(n,s,o,e,r);r[n]=i===void 0?o:i}}for(let n of Object.keys(e))if(r[n]===void 0)r[n]=e[n]},Y=(e,r)=>{let t={};for(let n of e.toReversed())W(n,t,r);return t};var Dr={};k(Dr,{CacheManager:()=>we});class we{cache=new Map;maxSize;constructor(e=100){this.maxSize=e}get(e){return this.cache.get(e)}set(e,r){this.evictIfNeeded(),this.cache.set(e,r)}has(e){return this.cache.has(e)}clear(){this.cache.clear()}setMaxSize(e){this.maxSize=e}size(){return this.cache.size}evictIfNeeded(){if(this.cache.size>=this.maxSize){let e=null,r=1/0;for(let[t,n]of this.cache.entries())if(n.timestamp<r)r=n.timestamp,e=t;if(e)this.cache.delete(e)}}}var Rr={};k(Rr,{select:()=>E});var mn=Object.create,{getPrototypeOf:gn,defineProperty:kr,getOwnPropertyNames:yn}=Object,dn=Object.prototype.hasOwnProperty,wn=(e,r,t)=>{t=e!=null?mn(gn(e)):{};let n=r||!e||!e.__esModule?kr(t,"default",{value:e,enumerable:!0}):t;for(let o of yn(e))if(!dn.call(n,o))kr(n,o,{get:()=>e[o],enumerable:!0});return n},hn=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),bn=hn((e,r)=>{var{defineProperty:t,getOwnPropertyNames:n,getOwnPropertyDescriptor:o}=Object,s=Object.prototype.hasOwnProperty,a=new WeakMap,i=(u)=>{var c=a.get(u),h;if(c)return c;if(c=t({},"__esModule",{value:!0}),u&&typeof u==="object"||typeof u==="function")n(u).map((f)=>!s.call(c,f)&&t(c,f,{get:()=>u[f],enumerable:!(h=o(u,f))||h.enumerable}));return a.set(u,c),c},l=(u,c)=>{for(var h in c)t(u,h,{get:c[h],enumerable:!0,configurable:!0,set:(f)=>c[h]=()=>f})},m={};l(m,{splitWithQuotes:()=>y,splitNested:()=>d}),r.exports=i(m);var d=(u,c,h="(",f=")")=>{let w=0,p="",O=[];for(let g of u){if(p+=g,g===h)w++;if(g===f)w--;if(w===0&&g===c)O.push(p.slice(0,-1)),p=""}if(p)O.push(p);return O},y=(u,c=",")=>{let h=[],f=u.length,w=c.length,p=0,O=(g)=>{if(g+w>f)return!1;for(let M=0;M<w;M++)if(u[g+M]!==c[M])return!1;return!0};while(p<f){while(p<f&&u[p]===" ")p++;if(p>=f)break;let g="",M=u[p]==='"'||u[p]==="'";if(M){let v=u[p++];while(p<f&&u[p]!==v)g+=u[p++];if(p<f)p++}else{while(p<f&&!O(p)){let v=u[p];if(v==='"'||v==="'"){g+=v,p++;while(p<f&&u[p]!==v)g+=u[p++];if(p<f)g+=u[p++]}else g+=u[p++]}g=g.trim()}if(g)h.push({value:g,quoted:M});if(O(p))p+=w}return h}}),vn=wn(bn(),1),On=/^\[([^=\]]*)([=]*)([^\]]*)\]$/,Mn=/^([^[\]]*)\[([^\]]*)]$/,Ge=(e,r,t,n)=>{if(e.startsWith("{")&&e.endsWith("}")){let o=e.substring(1,e.length-1);return E(r,o,t)?.toString()}return n?e:void 0},En=(e,r,t,n)=>{let o=Ge(r,t,n);if(o)return E(e,o,n);let s=On.exec(r);if(s){let[,i,l,m]=s,d=Ge(i.trim(),t,n,!0),y=Ge(m.trim(),t,n,!0);if(Array.isArray(e)&&(l==="="||l==="==")&&d)return e.find((u)=>u?.[d]==y)}let a=Mn.exec(r);if(a){let[,i,l]=a;return e?.[i]?.[l]}return e?.[r]},E=(e,r,t)=>{let n=void 0,o=void 0,s=r??"",a=(y)=>{if(!y)return[y,!1];return y.endsWith("?")?[y.substring(0,y.length-1),!0]:[y,!1]},i=(y,u)=>{let[c,h]=a(u.pop());if(!c){if(t?.set!==void 0&&o!==void 0&&n!==void 0)n[o]=t.set;return y}let f=En(y,c,e,t);if(f===void 0){if(h||t?.optional||t?.defaultValue!==void 0)return;throw Error(`Unknown path element: "${c}" in "${s}"`)}return n=y,o=c,i(f,u)},l=vn.splitNested(s,t?.separator??".","{","}"),m=void 0;if(l.length>0&&l[l.length-1].startsWith("?="))m=l.pop()?.substring(2);l.reverse();let d=i(e,l);if(d===void 0)return m??t?.defaultValue;return d};var he=(e)=>{if(typeof e.value==="string")return e.parent;let r=e.value.model;if(!r)return e.parent;if(typeof r==="string")return E(e.root,r);return r};var be=(e)=>{if(typeof e.value==="string")return E(e.root,e.value);if(Array.isArray(e.value))return e.value;let r=e.value;if(typeof r.from==="string")return E(e.root,r.from);return r.from};var ve=async(e,r)=>{let t=e.value;if(t.selector===void 0)return r;if(typeof t.selector!=="string"){let n=JSON.parse(JSON.stringify(t.selector));return await j(n,{...e.options,root:{...e.root,result:r}}),n}return await E({...e.root,result:r},t.selector)};var $r={};k($r,{PathManager:()=>T});import K from"path";class T{constructor(){}static normalize(e){return K.normalize(K.resolve(e))}static resolveInContext(e,r){let t=r??process.cwd(),n=K.isAbsolute(e)?e:K.join(t,e);return this.normalize(n)}static isDirectoryPattern(e){return e.endsWith("/")}static isGlobPattern(e){return e.includes("*")}static toAbsolute(e,r){if(K.isAbsolute(e))return e;return K.join(r??process.cwd(),e)}}var Cr={};k(Cr,{conditionPredicatesTypes:()=>te,conditionPredicates:()=>C});var C={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)=>!C.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!=="")},te={and:()=>"boolean",or:()=>"boolean",xor:()=>"boolean",true:()=>"boolean",false:()=>"boolean",lt:()=>"number",le:()=>"number",gt:()=>"number",ge:()=>"number"};var Wr=()=>({each:{filters:[/select|model/],fn:async(e)=>{let r=e.value;delete e.parent[e.key];let t=await be(e),n=await he(e);if(!Array.isArray(t))throw Error('Key "each" requires a source list');if(n===void 0)throw Error('Key "each" must define a model');if(r.extend?.model)n=Y([r.model,...Array.isArray(r.extend.model)?r.extend.model:[r.extend.model]]);let o=[];for(let s=0;s<t.length;s++){let a=$(n);if(await j(a,{...e.options,root:{...e.root,index:s,item:t[s],instance:a}}),r.extend?.result){let i=r.extend.result;a=Y([a,...Array.isArray(i)?i:[i]])}o.push(await ve(e,a))}return o}}});var Nr=()=>({map:{filters:[/select|model/],fn:async(e)=>{delete e.parent[e.key];let r=await be(e),t=await he(e);if(!Array.isArray(r))throw Error('Key "map" requires a source list');if(t===void 0)throw Error('Key "map" must define a model');let n=[];for(let o=0;o<r.length;o++){let s=$(t);await j(s,{...e.options,root:{...e.root,index:o,item:r[o],instance:s}}),n.push(await ve(e,s))}return n}}});var Ir=()=>({concat:async(e)=>{let r=[];for(let t of Array.isArray(e.value)?e.value:[e.value])r.push(...await E(e.root,t));return r.filter((t)=>t!==void 0)}});var Lr=()=>({extends:async(e)=>{let r=async(t,n)=>{for(let o of Array.isArray(n)?n:[n]){let s=await E(e.root,o),a=$(s);if(a[e.key])await r(a,a[e.key]);await j(a,{...e.options}),W(a,t),delete t[e.key]}};return await r(e.parent,e.value),b.Explore()},group:(e)=>{let r=e.root.parent,t=e.value,{items:n,...o}=t;return t.items.forEach((s)=>r.push({...o,...s})),b.DeleteParent()}});var _r=(e)=>({skip:{types:{0:"boolean"},fn:(r)=>r.value?b.DeleteParent():b.DeleteItem()},metadata:({path:r,value:t})=>{return e.metadata(r,t),b.DeleteItem()},if:{types:{0:"boolean"},fn:async(r)=>{let t=r.parent[".then"],n=r.parent[".else"];if(t!==void 0)delete r.parent[".then"];if(n!==void 0)delete r.parent[".else"];let o=r.value?t:n;if(o===void 0)return b.DeleteItem();if(typeof o==="string")return(await j({value:o},{...r.options,root:{...r.root}})).value;return b.ReplaceParent(o,!0)}},switch:(r)=>{let t=r.value;if(!t.cases)throw Error("Missing cases for switch");if(t.cases[t.from]!==void 0)return b.ReplaceParent(t.cases[t.from],!0);if(t.default!==void 0)return b.ReplaceParent(t.default,!0);return b.DeleteParent()}});var Ur=()=>({from:async({root:e,parent:r,value:t})=>{let n=await E(e,t);if(n===null||n===void 0)throw Error(`Unable to resolve reference: ${t}`);if(r.content){if(Array.isArray(r.content)&&Array.isArray(n))return[...n,...r.content];return W(n,r.content),r.content}return n}});import Tr from"node:vm";var Br=(e)=>({modules:async(r)=>{for(let[t,n]of Object.entries(r.value)){let o=Tr.createContext({console,objector:e,document:r.root}),s=new Tr.SourceTextModule(n,{identifier:t,context:o});await s.link((a)=>{throw Error(`Module ${a} is not allowed`)}),await s.evaluate(),e.sources(Object.fromEntries(Object.entries(s.namespace).map(([a,i])=>[`${t}.${a}`,(l)=>i(l,...l.args)])))}return b.DeleteItem()}});var Yr=()=>({try:{fn:(e)=>{let r=e.parent[".catch"];if(r!==void 0)delete e.parent[".catch"];try{return e.value}catch(t){if(r!==void 0)return r;return b.DeleteItem()}}}});var Kr=()=>({let:{fn:(e)=>{let r=e.value;return Object.assign(e.root,r),b.DeleteItem()}}});var Qr=()=>({tap:{fn:(e)=>{return console.log(`[tap] ${e.path}:`,e.value),e.value}}});var An=(e,r)=>{let t=r.section.config.using,n=e.getFunctions();return t?Object.fromEntries(t.map((o)=>{if(o in n)return[o,n[o]];if(o in r.root)return[o,r.root[o]];throw Error(`Function or variable "${o}" not found for script section`)})):n},Pe=(e,r,t,n,o=[])=>{let s=An(e,t),a=["section","context","config","system",...Object.keys(s),...o],i=[r,t.root,t.section.config,e,...Object.values(s)];return[new Ve(...a,n).bind(t),i]},Fn=(e,r)=>{let t={write:(...n)=>{return r.push(...n),t},writeLine:(...n)=>{return r.push(...n.map((o)=>o+`
10
+ `)),t},clear:()=>{return r.splice(0,r.length),t},prepend:(...n)=>{return r.unshift(...n),t},prependLine:(...n)=>{return r.unshift(...n.map((o)=>o+`
11
+ `)),t},setOptions:(n)=>{return Object.assign(e.section,n),t},use:(n)=>{return n(t),t},getLines:()=>r};return t},Sn=async(e,r,t)=>{let n=t.section.config.condition;if(n!==void 0){let[o,s]=Pe(e,r,t,`return (${n})`);if(!await o(...s))return!1}return!0},Xr=(e)=>async(r)=>{let t=[],n=Fn(r,t);if(!await Sn(e,n,r))return!1;let[o,s]=Pe(e,n,r,r.section.content,["item"]),a=r.section.config.each;if(a){let[i,l]=Pe(e,n,r,`return (${a})`),m=Array.isArray(a)?a:await i(...l);if(!Array.isArray(m))throw Error('The "each" property of a script section must return an array');for(let d of m){let y=await o(...s,d);if(typeof y<"u")t.push(y)}}else{let i=await o(...s);if(typeof i<"u")return i}if(t.length===0)return!1;return t.join("")};var Gr=(e)=>({script:Xr(e)});import Pr from"fs/promises";import ne from"path";var Vr=(e)=>({include:async(r)=>{let{file:t}=r.options.globalContext;return await J(r.args[0],{cwd:ne.dirname(t),filter:(n)=>ne.basename(t)!==n,map:async(n)=>e.load(n,ne.dirname(t),r.root)})},exists:async({args:[r]})=>await B(r),file:async(r)=>await Pr.readFile(await _(r.args[0],e.getIncludeDirectories())).then((t)=>t.toString()),scan:async(r)=>{let t=[],o=(()=>{let i=r.args[2]??["**/node_modules/**"],l=typeof i==="string"?i.split(",").map((m)=>m.trim()):i;if(!Array.isArray(l))throw Error("Scan exclusion must be a list");return l})(),{file:s}=r.options.globalContext,a=r.args[1]?await _(r.args[1],e.getIncludeDirectories()):ne.dirname(s);for await(let i of Pr.glob(r.args[0],{cwd:a,exclude:(l)=>o.some((m)=>ne.matchesGlob(l,m))}))t.push(i);return t}});var xr=()=>D({env:(e)=>process.env[e]});var Zr={};k(Zr,{tokenize:()=>xe,stripIndent:()=>Ze,snake:()=>X,pascal:()=>Q,padBlock:()=>N,changeCase:()=>G,capital:()=>oe,camel:()=>se});var Q=(e)=>e.replace(/((?:[_ ]+)\w|^\w)/g,(r,t)=>t.toUpperCase()).replace(/[_ ]/g,""),oe=(e)=>e.replace(/((?:[ ]+)\w|^\w)/g,(r,t)=>t.toUpperCase()),se=(e)=>{let r=Q(e);return r.charAt(0).toLowerCase()+r.slice(1)},X=(e,r="_")=>e.replace(/([a-z])([A-Z])/g,`$1${r}$2`).replace(/\s+/g,r).toLowerCase(),G=(e,r)=>{switch(r){case"upper":return e.toUpperCase();case"lower":return e.toLowerCase();default:return e}},N=(e,r,t=`
12
+ `,n=" ")=>{let o=n.repeat(r);return e.split(t).map((s)=>o+s).join(t)},xe=(e,r,t=/\${([^}]+)}/g)=>{return e.replace(t,(n,o)=>{let s=r[o];if(s===null||s===void 0)return"";if(typeof s==="string")return s;if(typeof s==="number"||typeof s==="boolean")return String(s);return String(s)})},Ze=(e)=>{let r=e.split(/\r?\n/),t=r.filter((o)=>o.trim().length>0).map((o)=>/^[ \t]*/.exec(o)?.[0].length??0),n=t.length>0?Math.min(...t):0;if(n===0)return e;return r.map((o)=>o.slice(n)).join(`
13
+ `)};var Hr=(e)=>({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,t]})=>r.repeat(t)},uuid:(r)=>crypto.randomUUID(),pad:{types:{0:"ref",1:"number",2:"string"},fn:({args:[r,t],tags:n})=>{let o=n.join?.[0]??`
14
+ `,s=n.padChar?.[0]??" ";return N(r,t??2,o,s)}},formatAs:{fn:({args:[r,t],tags:n})=>{let o=e.getEncoder(t);if(!o)throw Error("Unsupported format: "+String(t));let s=[];if(o.options?.includeTags)s=[n];return o.fn(r,...s)}},...D({pascal:Q,camel:se,capital:oe,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,t)=>G(X(r,"_"),t),kebab:(r,t)=>G(X(r,"-"),t),encode:(r,t)=>Buffer.from(r).toString(t??"base64"),decode:(r,t)=>Buffer.from(r,t??"base64").toString()})});var Oe=(e,r=0,t)=>{let n=" ".repeat(r),o=" ".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`[
15
15
  ${e.map((a)=>`${o}${Oe(a,r+1)},`).join(`
16
16
  `)}
17
17
  ${n}]`}else if(typeof e==="object"){let s=Object.entries(e).sort((i,l)=>t?.sortKeys?i[0].localeCompare(l[0]):0);if(s.length===0)return"{}";return`{
18
18
  ${s.map(([i,l])=>`${o}${i} = ${Oe(l,r+1,t)}`).join(`
19
19
  `)}
20
- ${n}}`}else return String(e)},se=(e)=>{if(!e)return e;return e.replaceAll("\\n",`
21
- `).replaceAll("\\$","$").replaceAll("\\t","\t")};var Qr=()=>({...D({merge:(...e)=>e.flatMap((r)=>r)}),join:({args:[e],root:r,tags:t})=>{let n=t.key?.[0],o=t.separator?.[0]??t.sep?.[0],s=t.finalize?.length>0,a=se(o);if(typeof e==="string"){if(s&&e.length&&a)return e+a;return e}if(!Array.isArray(e))throw Error("Object is not a list");let i=((n?.length)?e.map((d)=>A({...r,...d},n)):e).join(a),l=t.pad?.[0]??"0",g=t.padChar?.[0]??" ",y=s&&i.length&&a?i+a:i;return l?C(y,parseInt(l),`
22
- `,g):y},list:({args:e})=>U(e[0],e[1]),object:({args:e})=>ee(e[0],e[1]),range:({args:[e,r,t]})=>{let n=parseInt(e),o=parseInt(r),s=parseInt(t)||1;if(isNaN(n))throw Error("Invalid range: start value '"+String(e)+"' is not a number");if(isNaN(o))throw Error("Invalid range: end value '"+String(r)+"' is not a number");if(s===0)throw Error("Invalid range: step cannot be zero");if((o-n)/s<0)throw Error("Invalid range: step "+String(s)+" has wrong direction for range "+String(n)+" to "+String(o));return Array.from({length:Math.floor((o-n)/s)+1},(a,i)=>n+i*s)},filter:{types:(e,r,t)=>{switch(e){case 0:return"array";case 1:return Object.keys(W)}return re[t[1].value]?.(e-2,r,t.slice(2))},fn:({args:[e,r,t],root:n,tags:o})=>{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=o.key?.[0],a=W[r];if(s){let l=Array(e.length);for(let y=0;y<e.length;y++)try{l[y]=A({...n,...e[y]},s)}catch{l[y]=Symbol("invalid")}let g=[];for(let y=0;y<e.length;y++){let d=l[y];if(typeof d!=="symbol"&&t===void 0?a(d):a(d,t))g.push(e[y])}return g}let i=[];for(let l of e)if(t===void 0?a(l):a(l,t))i.push(l);return i}}});var Xr=()=>({each:{processArgs:!1,fn:async({rawArgs:[e,r,...t],root:n,options:o,tags:s})=>{let a=async(p)=>p.quoted?se(p.value):await A(n,p.value),i=await A(n,e.value),l=await a(r),g=s.key?.[0],y=Array.isArray(i)?i:U(i),d=[],u=await Promise.all(t.map(async(p)=>await a(p))),c={...n,item:void 0,index:0,params:u,instance:void 0,parent:n.this,tags:s},h={...o,root:c};for(let p=0;p<y.length;p++){let w=$(l),f={instance:w},O=typeof l==="string"?f:w;if(c.item=y[p],c.index=p,c.instance=w,s?.root?.[0])Object.assign(c,await A(c,s.root[0]));if(await S(O,h),g!==void 0)d.push(await A(f.instance,g));else d.push(f.instance)}if(s.join?.length){if(d.length===0)return"";let p=se(s.join[0]),w=s.pad?.[0]??"0",f=s.padChar?.[0]??" ",O=s.finalize?.length&&p?p:"",m=`${d.join(p)}${O}`;return w?C(m,parseInt(w),`
23
- `,f):m}return d}}});var ie=async(e,r,t)=>e.rawArgs[r].quoted?e.rawArgs[r].value:await A(e.root,e.rawArgs[r].value,{defaultValue:t}),Gr=()=>({switch:{processArgs:!1,fn:async(e)=>{let r=await ie(e,0,!1),t=await ie(e,1);if(t[r]===void 0){if(e.rawArgs.length>2)return ie(e,2);throw Error(`Unhandled switch case: ${r}`)}return t[r]}}});var Kr=()=>D({log:console.log});var Zr=()=>({if:{types:{0:"boolean"},fn:(e)=>e.args[0]?e.args[1]:e.args[2]},check:{types:{0:Object.keys(W)},fn:(e)=>W[e.args[0]](...e.args.slice(1))},...D(W,{types:re})});var Vr=(e)=>({default:{processArgs:!1,fn:async(r)=>{for(let t=0;t<r.rawArgs.length;t++)if(r.rawArgs[t]?.value!==void 0){let o=await ie(r,t,null);if(o!==null)return o}if(r.tags.nullable?.length)return b.DeleteItem();if(r.tags.fail?.length)throw Error(`No valid value found for default (${r.rawArgs.map((t)=>t.value).join(", ")})`);return""}},section:{types:["string","boolean"],fn:(r)=>{let t=r.args[0];if(!(r.args[1]??!0))return null;let o=e.getSection(t);if(!o)throw Error(`Section not found: ${t}`);return o.content}}});var Hr=()=>({convert:({args:[e,r,t]})=>{switch(r){case"string":return String(e);case"number":{let n=Number(e);if(!isNaN(n))return b.ReplaceItem(n);break}case"boolean":if(e==="true"||e===!0||e===1||e==="1"||e==="yes"||e==="on")return b.ReplaceItem(!0);else if(e==="false"||e===!1||e===0||e==="0"||e==="no"||e==="off")return b.ReplaceItem(!1);break;default:throw Error(`Unsupported type for convert: ${r}`)}if(t!==void 0)return b.ReplaceItem(t);throw Error(`Failed to convert value to ${r}`)},isType:({args:[e,r]})=>{let n=(()=>{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 b.ReplaceItem(n)},typeOf:({args:[e]})=>{if(e===null)return"null";else if(Array.isArray(e))return"array";else return typeof e}});var qr=()=>({...D({add:(...e)=>e.reduce((r,t)=>r+t,0),subtract:(e,r)=>e-r,multiply:(...e)=>e.reduce((r,t)=>r*t,1),divide:(e,r)=>{if(r===0)throw Error("Division by zero");return e/r},modulo:(e,r)=>e%r,power:(e,r)=>Math.pow(e,r),sqrt:(e)=>Math.sqrt(e),abs:(e)=>Math.abs(e),floor:(e)=>Math.floor(e),ceil:(e)=>Math.ceil(e),round:(e,r)=>{let t=Math.pow(10,r??0);return Math.round(e*t)/t},min:(...e)=>Math.min(...e),max:(...e)=>Math.max(...e),clamp:(e,r,t)=>Math.max(r,Math.min(t,e)),random:(e,r)=>{let t=e??0,n=r??1;return Math.random()*(n-t)+t}})});var xr=()=>({now:()=>new Date,timestamp:(e)=>{let r=e.args?.[0];return(r?new Date(r):new Date).getTime()},iso:(e)=>{let r=e.args?.[0];return(r?new Date(r):new Date).toISOString()},utc:(e)=>{let r=e.args?.[0];return(r?new Date(r):new Date).toUTCString()},format:(e)=>{let r=e.args?.[0],t=e.args?.[1],n=new Date(r),o=n.getFullYear(),s=String(n.getMonth()+1).padStart(2,"0"),a=String(n.getDate()).padStart(2,"0"),i=String(n.getHours()).padStart(2,"0"),l=String(n.getMinutes()).padStart(2,"0"),g=String(n.getSeconds()).padStart(2,"0");return t.replace("YYYY",String(o)).replace("MM",s).replace("DD",a).replace("HH",i).replace("mm",l).replace("ss",g)},parse:(e)=>{let r=e.args?.[0];return new Date(r).getTime()},year:(e)=>{let r=e.args?.[0];return(r?new Date(r):new Date).getFullYear()},month:(e)=>{let r=e.args?.[0];return(r?new Date(r):new Date).getMonth()+1},day:(e)=>{let r=e.args?.[0];return(r?new Date(r):new Date).getDate()},dayOfWeek:(e)=>{let r=e.args?.[0];return(r?new Date(r):new Date).getDay()},hours:(e)=>{let r=e.args?.[0];return(r?new Date(r):new Date).getHours()},minutes:(e)=>{let r=e.args?.[0];return(r?new Date(r):new Date).getMinutes()},seconds:(e)=>{let r=e.args?.[0];return(r?new Date(r):new Date).getSeconds()}});var Pr=()=>{return{unique:(e)=>{let r=e.args?.[0]??e.value,t=e.args?.[1];if(!Array.isArray(r))return r;let n=new Set;return r.filter((o)=>{let s=typeof t==="function"?t(o):t?o[t]:o;if(n.has(s))return!1;return n.add(s),!0})},groupBy:(e)=>{let r=e.args?.[0]??e.value,t=e.args?.[1];if(!Array.isArray(r))return r;let n={};return r.forEach((o)=>{let s=typeof t==="function"?String(t(o)):String(o[t]);if(!n[s])n[s]=[];n[s].push(o)}),n},partition:(e)=>{let r=e.args?.[0]??e.value,t=e.args?.[1];if(!Array.isArray(r))return[[],[]];if(typeof t!=="function")return[r,[]];let n=[],o=[];return r.forEach((s)=>{(t(s)?n:o).push(s)}),[n,o]},chunk:(e)=>{let r=e.args?.[0]??e.value,t=e.args?.[1]??1;if(!Array.isArray(r))return[];let n=[];for(let o=0;o<r.length;o+=t)n.push(r.slice(o,o+t));return n},flatten:(e)=>{let r=e.args?.[0]??e.value,t=e.args?.[1]??1;if(!Array.isArray(r))return[r];let n=[],o=(s,a)=>{for(let i of s)if(Array.isArray(i)&&a>0)o(i,a-1);else n.push(i)};return o(r,t),n},compact:(e)=>{let r=e.args?.[0]??e.value;if(!Array.isArray(r))return r;return r.filter((t)=>t!==null&&t!==void 0)},head:(e)=>{let r=e.args?.[0]??e.value,t=e.args?.[1];if(!Array.isArray(r))return r;return t?r.slice(0,t):r[0]},tail:(e)=>{let r=e.args?.[0]??e.value,t=e.args?.[1];if(!Array.isArray(r))return r;return t?r.slice(-t):r[r.length-1]}}};import{createHash as ae}from"crypto";var Jr=()=>({md5:(e)=>{let r=e.args?.[0]??e.value;return ae("md5").update(r).digest("hex")},sha1:(e)=>{let r=e.args?.[0]??e.value;return ae("sha1").update(r).digest("hex")},sha256:(e)=>{let r=e.args?.[0]??e.value;return ae("sha256").update(r).digest("hex")},sha512:(e)=>{let r=e.args?.[0]??e.value;return ae("sha512").update(r).digest("hex")},hash:(e)=>{let r=e.args?.[0]??e.value,t=e.args?.[1]??"sha256";return ae(t).update(r).digest("hex")},base64Encode:(e)=>{let r=e.args?.[0]??e.value,t=typeof r==="string"?r:JSON.stringify(r);return Buffer.from(t).toString("base64")},base64Decode:(e)=>{let r=e.args?.[0]??e.value;return Buffer.from(r,"base64").toString("utf-8")},hexEncode:(e)=>{let r=e.args?.[0]??e.value;return Buffer.from(r).toString("hex")},hexDecode:(e)=>{let r=e.args?.[0]??e.value;return Buffer.from(r,"hex").toString("utf-8")}});var zr=()=>({test:(e)=>{let r=e.args?.[0],t=e.args?.[1],n=e.args?.[2];return new RegExp(r,n).test(t)},match:(e)=>{let r=e.args?.[0],t=e.args?.[1],n=e.args?.[2],o=new RegExp(r,n);return t.match(o)},matchAll:(e)=>{let r=e.args?.[0],t=e.args?.[1],n=e.args?.[2],o=new RegExp(r,n);return Array.from(t.matchAll(o))},replace:(e)=>{let r=e.args?.[0],t=e.args?.[1],n=e.args?.[2],o=e.args?.[3],s=new RegExp(r,o);return n.replace(s,t)},replaceAll:(e)=>{let r=e.args?.[0],t=e.args?.[1],n=e.args?.[2],o=e.args?.[3]??"g",s=new RegExp(r,o);return n.replace(s,t)},split:(e)=>{let r=e.args?.[0],t=e.args?.[1],n=e.args?.[2],o=new RegExp(r,n);return t.split(o)},exec:(e)=>{let r=e.args?.[0],t=e.args?.[1],n=e.args?.[2];return new RegExp(r,n).exec(t)},search:(e)=>{let r=e.args?.[0],t=e.args?.[1],n=e.args?.[2],o=new RegExp(r,n);return t.search(o)}});import{resolve as yn,dirname as dn,basename as wn,normalize as hn,join as bn}from"path";var et=()=>({...D({pathJoin:(...e)=>bn(...e),resolve:(...e)=>yn(...e),dirname:(e)=>dn(e),basename:(e,r)=>wn(e,r),normalize:(e)=>hn(e),extname:(e)=>{let r=/\.[^.]*$/.exec(e);return r?r[0]:""},relative:(e,r)=>{let t=e.split("/"),n=r.split("/"),o=0;while(o<t.length&&o<n.length&&t[o]===n[o])o++;let s=t.length-o,a=n.slice(o);return[...Array(s).fill("..")].concat(a).join("/")},isAbsolute:(e)=>e.startsWith("/"),segments:(e)=>e.split("/").filter(Boolean)})});var rt=()=>({isEmail:(e)=>{let r=e.args?.[0]??e.value;return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(r)},isUrl:(e)=>{let r=e.args?.[0]??e.value;try{return new URL(r),!0}catch{return!1}},isJson:(e)=>{let r=e.args?.[0]??e.value;try{return JSON.parse(r),!0}catch{return!1}},isUuid:(e)=>{let r=e.args?.[0]??e.value;return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(r)},minLength:(e)=>{let r=e.args?.[0]??e.value,t=e.args?.[1];return r?.length>=t},maxLength:(e)=>{let r=e.args?.[0]??e.value,t=e.args?.[1];return r?.length<=t},length:(e)=>{let r=e.args?.[0]??e.value,t=e.args?.[1];return r?.length===t},isNumber:(e)=>{let r=e.args?.[0]??e.value;return typeof r==="number"&&!isNaN(r)},isString:(e)=>{return typeof(e.args?.[0]??e.value)==="string"},isBoolean:(e)=>{return typeof(e.args?.[0]??e.value)==="boolean"},isArray:(e)=>{let r=e.args?.[0]??e.value;return Array.isArray(r)},isObject:(e)=>{let r=e.args?.[0]??e.value;return r!==null&&typeof r==="object"&&!Array.isArray(r)},isEmpty:(e)=>{let r=e.args?.[0]??e.value;if(r===null||r===void 0)return!0;if(typeof r==="string"||Array.isArray(r))return r.length===0;if(typeof r==="object")return Object.keys(r).length===0;return!1},isTruthy:(e)=>{return!!(e.args?.[0]??e.value)},isFalsy:(e)=>{return!(e.args?.[0]??e.value)},inRange:(e)=>{let r=e.args?.[0],t=e.args?.[1],n=e.args?.[2];return r>=t&&r<=n},matches:(e)=>{let r=e.args?.[0],t=e.args?.[1];return new RegExp(t).test(r)},includes:(e)=>{let r=e.args?.[0],t=e.args?.[1];if(typeof r==="string")return r.includes(String(t));return Array.isArray(r)&&r.includes(t)},startsWith:(e)=>{let r=e.args?.[0],t=e.args?.[1];return r.startsWith(t)},endsWith:(e)=>{let r=e.args?.[0],t=e.args?.[1];return r.endsWith(t)}});var Ve=(e)=>e.keys(dr(e)).keys(wr(e)).keys(Er()).keys(kr()).keys(jr()).keys(Fr()).keys(Sr()).keys(Dr(e)).keys(Rr(e)).keys(Wr()).keys(Nr()).keys(Cr()).sources(Ur(e)).sources(Tr()).sources(Yr(e)).sources(Hr()).sources(Qr()).sources(Xr()).sources(Gr()).sources(Kr()).sources(Zr()).sources(Vr(e)).sources(qr()).sources(xr()).sources(Pr()).sources(Jr()).sources(zr()).sources(et()).sources(rt()).sections(Ir(e)).fieldOptions({configParser:Bun.YAML.parse,onSection:(r)=>{if(r.section.config.name)e.section(r.section)}}).decoders({yaml:{matching:["\\.yml$","\\.yaml$"],fn:Bun.YAML.parse}}).encoders({json:{fn:(r)=>JSON.stringify(r,null,2)},yaml:{fn:(r)=>Bun.YAML.stringify(r,null,2)},terraform:{options:{includeTags:!0},fn:(r,t)=>Oe(r,0,{sortKeys:!!(t?.sort?.length??t?.sortKeys?.length)})}});var nt={};j(nt,{IncludeManager:()=>Me,DocumentIncludeProcessor:()=>Ae});import vn from"fs/promises";import le from"path";class Me{includeDirectories=[];baseIncludeDirectories=[];includes=[];addDirectories(...e){this.includeDirectories.push(...e),this.baseIncludeDirectories.push(...e)}getDirectories(){return this.includeDirectories}reset(){this.includeDirectories=[...this.baseIncludeDirectories]}restore(e){this.includeDirectories=[...e]}snapshot(){return[...this.includeDirectories]}addFiles(...e){this.includes.push(...e)}getPendingAndClear(){let e=[...this.includes];return this.includes.length=0,e}async processPatterns(e,r,t){let n=[];for(let o of e)if(T.isGlobPattern(o)){let s=(await Array.fromAsync(vn.glob(o,{cwd:r}))).map((a)=>le.join(r,a));for(let a of s)if(!t.included.includes(a))n.push(a)}else if(T.isDirectoryPattern(o)){let s=le.isAbsolute(o)?o:le.join(r,o);if(!this.includeDirectories.includes(s))this.includeDirectories.push(s)}else n.push(o);return n}buildSearchDirs(e){let r=e?[e]:[];return r.push(...this.includeDirectories.map((t)=>le.isAbsolute(t)?t:le.join(e??process.cwd(),t))),r}}class Ae{includeManager;loadFn;constructor(e,r){this.includeManager=e;this.loadFn=r}async processIncludes(e,r,t){let n=[];if(e.content.includes)n.push(...e.content.includes),delete e.content.includes;n.push(...this.includeManager.getPendingAndClear());let o=await this.includeManager.processPatterns(n,e.folderPath,t);for(let s of o)N(await this.loadFn(s,e.folderPath,{parent:e.content,...r},!0,t),e.content)}}var k={};j(k,{writeOutputs:()=>z,writeOutput:()=>ce,writeFormat:()=>pe,tokenize:()=>Ke,toObjectWithKey:()=>Ie,toObject:()=>ee,toList:()=>U,stripIndent:()=>Ze,sortBy:()=>Te,snake:()=>G,select:()=>A,processFields:()=>S,pascal:()=>X,padBlock:()=>C,nonNullMap:()=>_e,navigate:()=>ye,mergeAll:()=>Y,merge:()=>N,makeFieldProcessorMap:()=>D,makeFieldProcessorList:()=>je,makeFieldProcessor:()=>x,locate:()=>_,loadFormat:()=>P,importList:()=>ge,importGlob:()=>Ce,globMap:()=>J,getProcessor:()=>q,getArgs:()=>fe,find:()=>Qe,exists:()=>B,defined:()=>Ue,deepClone:()=>$,conditionPredicates:()=>W,changeCase:()=>K,capital:()=>ne,camel:()=>oe,asyncMap:()=>Be,NavigateResult:()=>b,NavigateAction:()=>me,Logger:()=>qe});F(k,yt(at(),1));class qe{options;constructor(e){this.options={level:"INFO",showClass:!1,levels:["DEBUG","INFO","WARN","ERROR"],timeStamp:!1,timeOptions:{second:"2-digit",minute:"2-digit",hour:"2-digit",day:"2-digit",month:"2-digit",year:"2-digit"},logFunction:(r,...t)=>{switch(r){case"ERROR":console.error(...t);break;case"WARN":console.warn(...t);break;case"DEBUG":console.debug(...t);break;default:console.log(...t)}},...e}}write(e,...r){if(this.options.level){let o=this.options.levels.indexOf(this.options.level)??-1,s=this.options.levels.indexOf(e);if(s===-1)throw Error(`Unknown log level: ${e}`);if(s<o)return}let t=[],n=[];if(this.options.timeStamp)n.push(new Date().toLocaleString(this.options.timeLocale,this.options.timeOptions));if(this.options.showClass)n.push(e);if(n.length>0)t.push(`[${n.join(" ")}]`);t.push(...r),this.options.logFunction(e,...t)}info(...e){this.write("INFO",...e)}error(...e){this.write("ERROR",...e)}warn(...e){this.write("WARN",...e)}debug(...e){this.write("DEBUG",...e)}}F(R,k);var Ge=Object.getPrototypeOf(async function(){}).constructor;class lt{includeManager=new Me;includeProcessor;cacheManager=new de(100);outputs=[];vars={};funcs={};fields={sources:{},keys:{},sections:{}};objectMetadata={};currentContext=null;storedSections={};dataEncoders={};dataDecoders={};constructor(){this.includeProcessor=new Ae(this.includeManager,this.load.bind(this)),this.use(Ve)}use(e){return e(this),this}includeDirectory(...e){return this.includeManager.addDirectories(...e),this}getIncludeDirectories(){return this.includeManager.getDirectories()}include(...e){return this.includeManager.addFiles(...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}sections(e){return Object.assign(this.fields.sections,{...this.fields.sections,...e}),this}variables(e){return this.vars={...this.vars,...e},this}functions(e){return this.funcs={...this.funcs,...e},this}getFunctions(){return this.funcs}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}setCacheMaxSize(e){return this.cacheManager.setMaxSize(e),this}clearCache(){return this.cacheManager.clear(),this}getCurrentContext(){return this.currentContext}fieldOptions(e){return this.fields={...this.fields,...e},this}section(e){return this.storedSections[e.config.name]=e,this}getSection(e){return this.storedSections[e]}encoders(e){return this.dataEncoders={...this.dataEncoders,...e},this}decoders(e){return this.dataDecoders={...this.dataDecoders,...e},this}getEncoder(e){return this.dataEncoders[e]}getDecoder(e){return this.dataDecoders[e]}filter(e){return this.fields.filters??=[],this.fields.filters.push(e),this}async loadObject(e,r,t){return await S(e,{...this.fields,globalContext:{file:t?.fullPath??"@internal"},root:{...r,...this.fields.root,...this.vars,functions:this.funcs,context:this.currentContext,sections:this.storedSections,$document:{root:{content:e},fileName:t?.fileName??"@internal",folder:t?.folderPath??"@internal",fullPath:t?.fullPath??"@internal"}}}),e}async load(e,r,t,n,o){let s=this.includeManager.snapshot();try{this.includeManager.reset();let a=this.includeManager.buildSearchDirs(r);if(o)this.currentContext=o;this.currentContext??={included:[],document:null};let i=await P(e,{dirs:a,parsers:this.dataDecoders,format:"yaml"}),l=T.normalize(i.fullPath);if(this.currentContext.included.push(l),!i.content)return null;let g=this.cacheManager.get(l),y;if(g)y=g.raw;else y=i.content,this.cacheManager.set(l,{raw:y,timestamp:Date.now()});let d=$(y);i.content=d,await this.includeProcessor.processIncludes(i,t,this.currentContext);let u;if(n!==!0)u=await this.loadObject(i.content,t,{fileName:i.fullPath,folderPath:i.folderPath,fullPath:i.fullPath});else u=i.content;return this.currentContext.document=u,u}catch(a){throw this.includeManager.restore(s),a}finally{this.includeManager.restore(s)}}async writeAll(e){await z(this.getOutputs(),e)}}export{z as writeOutputs,ce as writeOutput,pe as writeFormat,Ke as tokenize,Ie as toObjectWithKey,ee as toObject,U as toList,Ze as stripIndent,Te as sortBy,G as snake,A as select,S as processFields,X as pascal,C as padBlock,_e as nonNullMap,ye as navigate,Y as mergeAll,N as merge,D as makeFieldProcessorMap,je as makeFieldProcessorList,x as makeFieldProcessor,_ as locate,P as loadFormat,ge as importList,Ce as importGlob,J as globMap,q as getProcessor,fe as getArgs,Qe as find,B as exists,Ue as defined,$ as deepClone,W as conditionPredicates,K as changeCase,ne as capital,oe as camel,Be as asyncMap,lt as Objector,b as NavigateResult,me as NavigateAction,qe as Logger,Ge as AsyncFunction};
20
+ ${n}}`}else return String(e)},ie=(e)=>{if(!e)return e;return e.replaceAll("\\n",`
21
+ `).replaceAll("\\$","$").replaceAll("\\t","\t")};var qr=()=>({...D({merge:(...e)=>e.flatMap((r)=>r)}),join:({args:[e],root:r,tags:t})=>{let n=t.key?.[0],o=t.separator?.[0]??t.sep?.[0],s=t.finalize?.length>0,a=ie(o);if(typeof e==="string"){if(s&&e.length&&a)return e+a;return e}if(!Array.isArray(e))throw Error("Object is not a list");let i=((n?.length)?e.map((y)=>E({...r,...y},n)):e).join(a),l=t.pad?.[0]??"0",m=t.padChar?.[0]??" ",d=s&&i.length&&a?i+a:i;return l?N(d,parseInt(l),`
22
+ `,m):d},list:({args:e})=>U(e[0],e[1]),object:({args:e})=>ee(e[0],e[1]),range:({args:[e,r,t]})=>{let n=parseInt(e),o=parseInt(r),s=parseInt(t)||1;if(isNaN(n))throw Error("Invalid range: start value '"+String(e)+"' is not a number");if(isNaN(o))throw Error("Invalid range: end value '"+String(r)+"' is not a number");if(s===0)throw Error("Invalid range: step cannot be zero");if((o-n)/s<0)throw Error("Invalid range: step "+String(s)+" has wrong direction for range "+String(n)+" to "+String(o));return Array.from({length:Math.floor((o-n)/s)+1},(a,i)=>n+i*s)},filter:{types:(e,r,t)=>{switch(e){case 0:return"array";case 1:return Object.keys(C)}return te[t[1].value]?.(e-2,r,t.slice(2))},fn:({args:[e,r,t],root:n,tags:o})=>{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=o.key?.[0],a=C[r];if(s){let l=Array(e.length);for(let d=0;d<e.length;d++)try{l[d]=E({...n,...e[d]},s)}catch{l[d]=Symbol("invalid")}let m=[];for(let d=0;d<e.length;d++){let y=l[d];if(typeof y!=="symbol"&&t===void 0?a(y):a(y,t))m.push(e[d])}return m}let i=[];for(let l of e)if(t===void 0?a(l):a(l,t))i.push(l);return i}}});var Jr=()=>({each:{processArgs:!1,fn:async({rawArgs:[e,r,...t],root:n,options:o,tags:s})=>{let a=async(f)=>f.quoted?ie(f.value):await E(n,f.value),i=await E(n,e.value),l=await a(r),m=s.key?.[0],d=Array.isArray(i)?i:U(i),y=[],u=await Promise.all(t.map(async(f)=>await a(f))),c={...n,item:void 0,index:0,params:u,instance:void 0,parent:n.this,tags:s},h={...o,root:c};for(let f=0;f<d.length;f++){let w=$(l),p={instance:w},O=typeof l==="string"?p:w;if(c.item=d[f],c.index=f,c.instance=w,s?.root?.[0])Object.assign(c,await E(c,s.root[0]));if(await j(O,h),m!==void 0)y.push(await E(p.instance,m));else y.push(p.instance)}if(s.join?.length){if(y.length===0)return"";let f=ie(s.join[0]),w=s.pad?.[0]??"0",p=s.padChar?.[0]??" ",O=s.finalize?.length&&f?f:"",g=`${y.join(f)}${O}`;return w?N(g,parseInt(w),`
23
+ `,p):g}return y}}});var ae=async(e,r,t)=>e.rawArgs[r].quoted?e.rawArgs[r].value:await E(e.root,e.rawArgs[r].value,{defaultValue:t}),zr=()=>({switch:{processArgs:!1,fn:async(e)=>{let r=await ae(e,0,!1),t=await ae(e,1);if(t[r]===void 0){if(e.rawArgs.length>2)return ae(e,2);throw Error(`Unhandled switch case: ${r}`)}return t[r]}}});var et=()=>D({log:console.log});var rt=()=>({if:{types:{0:"boolean"},fn:(e)=>e.args[0]?e.args[1]:e.args[2]},check:{types:{0:Object.keys(C)},fn:(e)=>C[e.args[0]](...e.args.slice(1))},...D(C,{types:te})});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 o=await ae(r,t,null);if(o!==null)return o}if(r.tags.nullable?.length)return b.DeleteItem();if(r.tags.fail?.length)throw Error(`No valid value found for default (${r.rawArgs.map((t)=>t.value).join(", ")})`);return""}},section:{types:["string","boolean"],fn:(r)=>{let t=r.args[0];if(!(r.args[1]??!0))return null;let o=e.getSection(t);if(!o)throw Error(`Section not found: ${t}`);return o.content}}});var nt=()=>({convert:({args:[e,r,t]})=>{switch(r){case"string":return String(e);case"number":{let n=Number(e);if(!isNaN(n))return b.ReplaceItem(n);break}case"boolean":if(e==="true"||e===!0||e===1||e==="1"||e==="yes"||e==="on")return b.ReplaceItem(!0);else if(e==="false"||e===!1||e===0||e==="0"||e==="no"||e==="off")return b.ReplaceItem(!1);break;default:throw Error(`Unsupported type for convert: ${r}`)}if(t!==void 0)return b.ReplaceItem(t);throw Error(`Failed to convert value to ${r}`)},isType:({args:[e,r]})=>{let n=(()=>{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 b.ReplaceItem(n)},typeOf:({args:[e]})=>{if(e===null)return"null";else if(Array.isArray(e))return"array";else return typeof e}});var ot=()=>({...D({add:(...e)=>e.reduce((r,t)=>r+t,0),subtract:(e,r)=>e-r,multiply:(...e)=>e.reduce((r,t)=>r*t,1),divide:(e,r)=>{if(r===0)throw Error("Division by zero");return e/r},modulo:(e,r)=>e%r,power:(e,r)=>Math.pow(e,r),sqrt:(e)=>Math.sqrt(e),abs:(e)=>Math.abs(e),floor:(e)=>Math.floor(e),ceil:(e)=>Math.ceil(e),round:(e,r)=>{let t=Math.pow(10,r??0);return Math.round(e*t)/t},min:(...e)=>Math.min(...e),max:(...e)=>Math.max(...e),clamp:(e,r,t)=>Math.max(r,Math.min(t,e)),random:(e,r)=>{let t=e??0,n=r??1;return Math.random()*(n-t)+t}})});var st=()=>({now:()=>new Date,timestamp:(e)=>{let r=e.args?.[0];return(r?new Date(r):new Date).getTime()},iso:(e)=>{let r=e.args?.[0];return(r?new Date(r):new Date).toISOString()},utc:(e)=>{let r=e.args?.[0];return(r?new Date(r):new Date).toUTCString()},format:(e)=>{let r=e.args?.[0],t=e.args?.[1],n=new Date(r),o=n.getFullYear(),s=String(n.getMonth()+1).padStart(2,"0"),a=String(n.getDate()).padStart(2,"0"),i=String(n.getHours()).padStart(2,"0"),l=String(n.getMinutes()).padStart(2,"0"),m=String(n.getSeconds()).padStart(2,"0");return t.replace("YYYY",String(o)).replace("MM",s).replace("DD",a).replace("HH",i).replace("mm",l).replace("ss",m)},parse:(e)=>{let r=e.args?.[0];return new Date(r).getTime()},year:(e)=>{let r=e.args?.[0];return(r?new Date(r):new Date).getFullYear()},month:(e)=>{let r=e.args?.[0];return(r?new Date(r):new Date).getMonth()+1},day:(e)=>{let r=e.args?.[0];return(r?new Date(r):new Date).getDate()},dayOfWeek:(e)=>{let r=e.args?.[0];return(r?new Date(r):new Date).getDay()},hours:(e)=>{let r=e.args?.[0];return(r?new Date(r):new Date).getHours()},minutes:(e)=>{let r=e.args?.[0];return(r?new Date(r):new Date).getMinutes()},seconds:(e)=>{let r=e.args?.[0];return(r?new Date(r):new Date).getSeconds()}});var it=()=>{return{unique:(e)=>{let r=e.args?.[0]??e.value,t=e.args?.[1];if(!Array.isArray(r))return r;let n=new Set;return r.filter((o)=>{let s=typeof t==="function"?t(o):t?o[t]:o;if(n.has(s))return!1;return n.add(s),!0})},groupBy:(e)=>{let r=e.args?.[0]??e.value,t=e.args?.[1];if(!Array.isArray(r))return r;let n={};return r.forEach((o)=>{let s=typeof t==="function"?String(t(o)):String(o[t]);if(!n[s])n[s]=[];n[s].push(o)}),n},partition:(e)=>{let r=e.args?.[0]??e.value,t=e.args?.[1];if(!Array.isArray(r))return[[],[]];if(typeof t!=="function")return[r,[]];let n=[],o=[];return r.forEach((s)=>{(t(s)?n:o).push(s)}),[n,o]},chunk:(e)=>{let r=e.args?.[0]??e.value,t=e.args?.[1]??1;if(!Array.isArray(r))return[];let n=[];for(let o=0;o<r.length;o+=t)n.push(r.slice(o,o+t));return n},flatten:(e)=>{let r=e.args?.[0]??e.value,t=e.args?.[1]??1;if(!Array.isArray(r))return[r];let n=[],o=(s,a)=>{for(let i of s)if(Array.isArray(i)&&a>0)o(i,a-1);else n.push(i)};return o(r,t),n},compact:(e)=>{let r=e.args?.[0]??e.value;if(!Array.isArray(r))return r;return r.filter((t)=>t!==null&&t!==void 0)},head:(e)=>{let r=e.args?.[0]??e.value,t=e.args?.[1];if(!Array.isArray(r))return r;return t?r.slice(0,t):r[0]},tail:(e)=>{let r=e.args?.[0]??e.value,t=e.args?.[1];if(!Array.isArray(r))return r;return t?r.slice(-t):r[r.length-1]}}};import{createHash as le}from"crypto";var at=()=>({md5:(e)=>{let r=e.args?.[0]??e.value;return le("md5").update(r).digest("hex")},sha1:(e)=>{let r=e.args?.[0]??e.value;return le("sha1").update(r).digest("hex")},sha256:(e)=>{let r=e.args?.[0]??e.value;return le("sha256").update(r).digest("hex")},sha512:(e)=>{let r=e.args?.[0]??e.value;return le("sha512").update(r).digest("hex")},hash:(e)=>{let r=e.args?.[0]??e.value,t=e.args?.[1]??"sha256";return le(t).update(r).digest("hex")},base64Encode:(e)=>{let r=e.args?.[0]??e.value,t=typeof r==="string"?r:JSON.stringify(r);return Buffer.from(t).toString("base64")},base64Decode:(e)=>{let r=e.args?.[0]??e.value;return Buffer.from(r,"base64").toString("utf-8")},hexEncode:(e)=>{let r=e.args?.[0]??e.value;return Buffer.from(r).toString("hex")},hexDecode:(e)=>{let r=e.args?.[0]??e.value;return Buffer.from(r,"hex").toString("utf-8")}});var lt=()=>({test:(e)=>{let r=e.args?.[0],t=e.args?.[1],n=e.args?.[2];return new RegExp(r,n).test(t)},match:(e)=>{let r=e.args?.[0],t=e.args?.[1],n=e.args?.[2],o=new RegExp(r,n);return t.match(o)},matchAll:(e)=>{let r=e.args?.[0],t=e.args?.[1],n=e.args?.[2],o=new RegExp(r,n);return Array.from(t.matchAll(o))},replace:(e)=>{let r=e.args?.[0],t=e.args?.[1],n=e.args?.[2],o=e.args?.[3],s=new RegExp(r,o);return n.replace(s,t)},replaceAll:(e)=>{let r=e.args?.[0],t=e.args?.[1],n=e.args?.[2],o=e.args?.[3]??"g",s=new RegExp(r,o);return n.replace(s,t)},split:(e)=>{let r=e.args?.[0],t=e.args?.[1],n=e.args?.[2],o=new RegExp(r,n);return t.split(o)},exec:(e)=>{let r=e.args?.[0],t=e.args?.[1],n=e.args?.[2];return new RegExp(r,n).exec(t)},search:(e)=>{let r=e.args?.[0],t=e.args?.[1],n=e.args?.[2],o=new RegExp(r,n);return t.search(o)}});import{resolve as jn,dirname as Dn,basename as kn,normalize as Rn,join as $n}from"path";var ut=()=>({...D({pathJoin:(...e)=>$n(...e),resolve:(...e)=>jn(...e),dirname:(e)=>Dn(e),basename:(e,r)=>kn(e,r),normalize:(e)=>Rn(e),extname:(e)=>{let r=/\.[^.]*$/.exec(e);return r?r[0]:""},relative:(e,r)=>{let t=e.split("/"),n=r.split("/"),o=0;while(o<t.length&&o<n.length&&t[o]===n[o])o++;let s=t.length-o,a=n.slice(o);return[...Array(s).fill("..")].concat(a).join("/")},isAbsolute:(e)=>e.startsWith("/"),segments:(e)=>e.split("/").filter(Boolean)})});var pt=()=>({isEmail:(e)=>{let r=e.args?.[0]??e.value;return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(r)},isUrl:(e)=>{let r=e.args?.[0]??e.value;try{return new URL(r),!0}catch{return!1}},isJson:(e)=>{let r=e.args?.[0]??e.value;try{return JSON.parse(r),!0}catch{return!1}},isUuid:(e)=>{let r=e.args?.[0]??e.value;return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(r)},minLength:(e)=>{let r=e.args?.[0]??e.value,t=e.args?.[1];return r?.length>=t},maxLength:(e)=>{let r=e.args?.[0]??e.value,t=e.args?.[1];return r?.length<=t},length:(e)=>{let r=e.args?.[0]??e.value,t=e.args?.[1];return r?.length===t},isNumber:(e)=>{let r=e.args?.[0]??e.value;return typeof r==="number"&&!isNaN(r)},isString:(e)=>{return typeof(e.args?.[0]??e.value)==="string"},isBoolean:(e)=>{return typeof(e.args?.[0]??e.value)==="boolean"},isArray:(e)=>{let r=e.args?.[0]??e.value;return Array.isArray(r)},isObject:(e)=>{let r=e.args?.[0]??e.value;return r!==null&&typeof r==="object"&&!Array.isArray(r)},isEmpty:(e)=>{let r=e.args?.[0]??e.value;if(r===null||r===void 0)return!0;if(typeof r==="string"||Array.isArray(r))return r.length===0;if(typeof r==="object")return Object.keys(r).length===0;return!1},isTruthy:(e)=>{return!!(e.args?.[0]??e.value)},isFalsy:(e)=>{return!(e.args?.[0]??e.value)},inRange:(e)=>{let r=e.args?.[0],t=e.args?.[1],n=e.args?.[2];return r>=t&&r<=n},matches:(e)=>{let r=e.args?.[0],t=e.args?.[1];return new RegExp(t).test(r)},includes:(e)=>{let r=e.args?.[0],t=e.args?.[1];if(typeof r==="string")return r.includes(String(t));return Array.isArray(r)&&r.includes(t)},startsWith:(e)=>{let r=e.args?.[0],t=e.args?.[1];return r.startsWith(t)},endsWith:(e)=>{let r=e.args?.[0],t=e.args?.[1];return r.endsWith(t)}});var He=(e)=>e.keys({...Fr(e),...Sr(e),...Wr(),...Nr(),...Ur(),...Ir(),...Lr(),..._r(e),...Br(e),...Yr(),...Kr(),...Qr()}).sources({...Vr(e),...xr(),...Hr(e),...nt(),...qr(),...Jr(),...zr(),...et(),...rt(),...tt(e),...ot(),...st(),...it(),...at(),...lt(),...ut(),...pt()}).sections(Gr(e)).fieldOptions({configParser:Bun.YAML.parse,onSection:(r)=>{if(r.section.config.name)e.section(r.section)}}).decoders({yaml:{matching:["\\.yml$","\\.yaml$"],fn:Bun.YAML.parse}}).encoders({json:{fn:(r)=>JSON.stringify(r,null,2)},yaml:{fn:(r)=>Bun.YAML.stringify(r,null,2)},terraform:{options:{includeTags:!0},fn:(r,t)=>Oe(r,0,{sortKeys:!!(t?.sort?.length??t?.sortKeys?.length)})}});var ct={};k(ct,{IncludeManager:()=>Me,DocumentIncludeProcessor:()=>Ee});import Cn from"fs/promises";import ue from"path";class Me{includeDirectories=[];baseIncludeDirectories=[];includes=[];addDirectories(...e){this.includeDirectories.push(...e),this.baseIncludeDirectories.push(...e)}getDirectories(){return this.includeDirectories}reset(){this.includeDirectories=[...this.baseIncludeDirectories]}restore(e){this.includeDirectories=[...e]}snapshot(){return[...this.includeDirectories]}addFiles(...e){this.includes.push(...e)}getPendingAndClear(){let e=[...this.includes];return this.includes.length=0,e}async processPatterns(e,r,t){let n=[];for(let o of e)if(T.isGlobPattern(o)){let s=(await Array.fromAsync(Cn.glob(o,{cwd:r}))).map((a)=>ue.join(r,a));for(let a of s)if(!t.included.includes(a))n.push(a)}else if(T.isDirectoryPattern(o)){let s=ue.isAbsolute(o)?o:ue.join(r,o);if(!this.includeDirectories.includes(s))this.includeDirectories.push(s)}else n.push(o);return n}buildSearchDirs(e){let r=e?[e]:[];return r.push(...this.includeDirectories.map((t)=>ue.isAbsolute(t)?t:ue.join(e??process.cwd(),t))),r}}class Ee{includeManager;loadFn;constructor(e,r){this.includeManager=e;this.loadFn=r}async processIncludes(e,r,t){let n=[];if(e.content.includes)n.push(...e.content.includes),delete e.content.includes;n.push(...this.includeManager.getPendingAndClear());let o=await this.includeManager.processPatterns(n,e.folderPath,t);for(let s of o)W(await this.loadFn(s,e.folderPath,{parent:e.content,...r},!0,t),e.content)}}var A={};k(A,{writeOutputs:()=>z,writeOutput:()=>me,writeFormat:()=>ce,tokenize:()=>xe,toObjectWithKey:()=>_e,toObject:()=>ee,toList:()=>U,stripIndent:()=>Ze,sortBy:()=>Be,snake:()=>X,select:()=>E,processFields:()=>j,pascal:()=>Q,padBlock:()=>N,nonNullMap:()=>Ue,navigate:()=>de,mergeAll:()=>Y,merge:()=>W,makeFieldProcessorMap:()=>D,makeFieldProcessorList:()=>Re,makeFieldProcessor:()=>H,locate:()=>_,loadFormat:()=>q,importList:()=>ge,importGlob:()=>Ie,globMap:()=>J,getProcessor:()=>Z,getArgs:()=>fe,find:()=>Xe,exists:()=>B,defined:()=>Te,deepClone:()=>$,conditionPredicates:()=>C,changeCase:()=>G,capital:()=>oe,camel:()=>se,asyncMap:()=>Ye,NavigateResult:()=>b,NavigateAction:()=>ye,Logger:()=>Ae});F(A,Ft(dt(),1));var wt={};k(wt,{Logger:()=>Ae});class Ae{options;constructor(e){this.options={level:"INFO",showClass:!1,levels:["DEBUG","VERBOSE","INFO","WARN","ERROR"],timeStamp:!1,timeOptions:{second:"2-digit",minute:"2-digit",hour:"2-digit",day:"2-digit",month:"2-digit",year:"2-digit"},logFunction:(r,...t)=>{switch(r){case"ERROR":console.error(...t);break;case"WARN":console.warn(...t);break;case"DEBUG":console.debug(...t);break;case"VERBOSE":console.log(...t);break;default:console.log(...t)}},...e}}write(e,...r){if(this.options.level){let o=this.options.levels.indexOf(this.options.level)??-1,s=this.options.levels.indexOf(e);if(s===-1)throw Error(`Unknown log level: ${e}`);if(s<o)return}let t=[],n=[];if(this.options.timeStamp)n.push(new Date().toLocaleString(this.options.timeLocale,this.options.timeOptions));if(this.options.showClass)n.push(e);if(n.length>0)t.push(`[${n.join(" ")}]`);t.push(...r),this.options.logFunction(e,...t)}info(...e){this.write("INFO",...e)}error(...e){this.write("ERROR",...e)}warn(...e){this.write("WARN",...e)}debug(...e){this.write("DEBUG",...e)}verbose(...e){this.write("VERBOSE",...e)}}F(R,A);var Ve=Object.getPrototypeOf(async function(){}).constructor;class ht{includeManager=new Me;includeProcessor;cacheManager=new we(100);outputs=[];vars={};funcs={};fields={sources:{},keys:{},sections:{}};objectMetadata={};currentContext=null;storedSections={};dataEncoders={};dataDecoders={};constructor(){this.includeProcessor=new Ee(this.includeManager,this.load.bind(this)),this.use(He)}use(e){if(e.prototype instanceof re)new e(this);else e(this);return this}includeDirectory(...e){return this.includeManager.addDirectories(...e),this}getIncludeDirectories(){return this.includeManager.getDirectories()}include(...e){return this.includeManager.addFiles(...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}sections(e){return Object.assign(this.fields.sections,{...this.fields.sections,...e}),this}variables(e){return this.vars={...this.vars,...e},this}functions(e){return this.funcs={...this.funcs,...e},this}getFunctions(){return this.funcs}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}setCacheMaxSize(e){return this.cacheManager.setMaxSize(e),this}clearCache(){return this.cacheManager.clear(),this}getCurrentContext(){return this.currentContext}fieldOptions(e){return this.fields={...this.fields,...e},this}section(e){return this.storedSections[e.config.name]=e,this}getSection(e){return this.storedSections[e]}encoders(e){return this.dataEncoders={...this.dataEncoders,...e},this}decoders(e){return this.dataDecoders={...this.dataDecoders,...e},this}getEncoder(e){return this.dataEncoders[e]}getDecoder(e){return this.dataDecoders[e]}filter(e){return this.fields.filters??=[],this.fields.filters.push(e),this}async loadObject(e,r,t){return j(e,{...this.fields,globalContext:{file:t?.fullPath??"@internal"},root:{...r,...this.fields.root,...this.vars,functions:this.funcs,context:this.currentContext,sections:this.storedSections,$document:{root:{content:e},fileName:t?.fileName??"@internal",folder:t?.folderPath??"@internal",fullPath:t?.fullPath??"@internal"}}})}async load(e,r,t,n,o){let s=this.includeManager.snapshot();try{this.includeManager.reset();let a=this.includeManager.buildSearchDirs(r);if(o)this.currentContext=o;this.currentContext??={included:[],document:null};let i=await q(e,{dirs:a,parsers:this.dataDecoders,format:"yaml"}),l=T.normalize(i.fullPath);if(this.currentContext.included.push(l),!i.content)return null;let m=this.cacheManager.get(l),d;if(m)d=m.raw;else d=i.content,this.cacheManager.set(l,{raw:d,timestamp:Date.now()});let y=$(d);i.content=y,await this.includeProcessor.processIncludes(i,t,this.currentContext);let u;if(n!==!0)u=await this.loadObject(i.content,t,{fileName:i.fullPath,folderPath:i.folderPath,fullPath:i.fullPath});else u=i.content;return this.currentContext.document=u,u}catch(a){throw this.includeManager.restore(s),a}finally{this.includeManager.restore(s)}}async writeAll(e){await z(this.getOutputs(),e)}}export{z as writeOutputs,me as writeOutput,ce as writeFormat,vr as variable,xe as tokenize,_e as toObjectWithKey,ee as toObject,U as toList,Ze as stripIndent,Be as sortBy,X as snake,Or as sharedFunction,E as select,hr as section,j as processFields,Q as pascal,N as padBlock,Ue as nonNullMap,de as navigate,Y as mergeAll,W as merge,D as makeFieldProcessorMap,Re as makeFieldProcessorList,H as makeFieldProcessor,wr as macro,_ as locate,q as loadFormat,br as key,ge as importList,Ie as importGlob,J as globMap,Z as getProcessor,fe as getArgs,Xe as find,B as exists,Mr as encoder,Te as defined,$ as deepClone,Er as decoder,C as conditionPredicates,G as changeCase,oe as capital,se as camel,Ye as asyncMap,re as ObjectorPlugin,ht as Objector,b as NavigateResult,ye as NavigateAction,Ae as Logger,Ve as AsyncFunction};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@homedev/objector",
3
- "version": "1.2.58",
3
+ "version": "1.2.60",
4
4
  "description": "object extensions for YAML/JSON",
5
5
  "author": "julzor",
6
6
  "license": "ISC",