@homedev/objector 1.2.31 → 1.2.32

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
@@ -1,52 +1,8 @@
1
- import { camel } from '@homedev/string-utils';
2
- import { capital } from '@homedev/string-utils';
3
- import { changeCase } from '@homedev/string-utils';
4
- import { exists } from '@homedev/files';
5
- import { FieldContext } from '@homedev/fields';
6
- import { FieldProcessor } from '@homedev/fields';
7
- import { FieldProcessorFunc } from '@homedev/fields';
8
- import { FieldProcessorMap } from '@homedev/fields';
9
- import { FieldProcessorOptions } from '@homedev/fields';
10
- import { FieldProcessorTypeChecker } from '@homedev/fields';
11
- import { FieldProcessorTypeCheckers } from '@homedev/fields';
12
- import { FieldProcessorTypedFunc } from '@homedev/fields';
13
- import { find } from '@homedev/navigate';
14
- import { globMap } from '@homedev/files';
15
- import { loadFormat } from '@homedev/files';
16
- import { LoadOptions } from '@homedev/files';
17
- import { LoadResult } from '@homedev/files';
18
- import { locate } from '@homedev/files';
19
- import { makeFieldProcessor } from '@homedev/fields';
20
- import { makeFieldProcessorList } from '@homedev/fields';
21
- import { makeFieldProcessorMap } from '@homedev/fields';
22
- import { merge } from '@homedev/merge';
23
- import { mergeAll } from '@homedev/merge';
24
- import { MergeMode } from '@homedev/merge';
25
- import { MergeOptions } from '@homedev/merge';
26
- import { navigate } from '@homedev/navigate';
27
- import { NavigateAction } from '@homedev/navigate';
28
- import { NavigateCallback } from '@homedev/navigate';
29
- import { NavigateContext } from '@homedev/navigate';
30
- import { NavigateResult } from '@homedev/navigate';
31
- import { Output } from '@homedev/files';
32
- import { padBlock } from '@homedev/string-utils';
33
- import { pascal } from '@homedev/string-utils';
34
- import { processFields } from '@homedev/fields';
35
- import { ProcessFieldsOptions } from '@homedev/fields';
36
- import { select } from '@homedev/select';
37
- import { SelectOptions } from '@homedev/select';
38
- import { snake } from '@homedev/string-utils';
39
- import { splitNested } from '@homedev/split';
40
- import { splitWithQuotes } from '@homedev/split';
41
- import { tokenize } from '@homedev/string-utils';
42
- import { toList } from '@homedev/object-utils';
43
- import { toObject } from '@homedev/object-utils';
44
- import { toObjectWithKey } from '@homedev/object-utils';
45
- import { writeFormat } from '@homedev/files';
46
- import { writeOutput } from '@homedev/files';
47
- import { WriteOutputOption } from '@homedev/files';
48
- import { writeOutputs } from '@homedev/files';
49
- import { WriteOutputsOption } from '@homedev/files';
1
+ declare const camel: (v: string) => string;
2
+
3
+ declare const capital: (v: string) => string;
4
+
5
+ declare const changeCase: (v: string, arg?: string) => string;
50
6
 
51
7
  /**
52
8
  * @public
@@ -58,6 +14,62 @@ declare const conditionPredicates: Record<string, (...args: any[]) => boolean>;
58
14
  */
59
15
  declare const deepClone: (model: any) => any;
60
16
 
17
+ declare const exists: (fileName: string) => Promise<boolean>;
18
+
19
+ declare interface FieldContext {
20
+ path: string;
21
+ root: any;
22
+ options: ProcessFieldsOptions;
23
+ value: string | object | number | NavigateResult | null;
24
+ key: string;
25
+ args: any[];
26
+ rawArgs: {
27
+ value: string;
28
+ quoted: boolean;
29
+ }[];
30
+ tags: Record<string, string[]>;
31
+ parent?: any;
32
+ }
33
+
34
+ declare interface FieldProcessor {
35
+ fn: FieldProcessorFunc;
36
+ options: FieldProcessorOptions;
37
+ }
38
+
39
+ declare type FieldProcessorFunc = (context: FieldContext) => any;
40
+
41
+ declare type FieldProcessorMap = Record<string, FieldProcessorTypedFunc>;
42
+
43
+ declare interface FieldProcessorOptions {
44
+ filters?: RegExp[];
45
+ processArgs?: boolean;
46
+ types?: Record<number, string | any[] | ((value: string, root: any, index: number, quoted: boolean) => any)> | FieldProcessorTypeChecker;
47
+ }
48
+
49
+ declare type FieldProcessorTypeChecker = (n: number, value: any, args: any[]) => any;
50
+
51
+ declare type FieldProcessorTypeCheckers<T = unknown> = Record<keyof T, FieldProcessorTypeChecker>;
52
+
53
+ declare type FieldProcessorTypedFunc = FieldProcessorFunc | (FieldProcessorOptions & {
54
+ fn: FieldProcessorFunc;
55
+ });
56
+
57
+ declare interface FilePatternOptions {
58
+ cwd: string;
59
+ filter?: (fileName: string, index: number, array: string[]) => boolean;
60
+ map: (fileName: string, index: number, array: string[]) => Promise<any>;
61
+ }
62
+
63
+ /**
64
+ * @public
65
+ * @param from
66
+ * @param cb
67
+ * @returns
68
+ */
69
+ declare const find: (from: any, cb: (path: string, value: string) => any) => Promise<any[]>;
70
+
71
+ declare const globMap: <T>(pattern: string | string[], options: FilePatternOptions) => Promise<T[] | T>;
72
+
61
73
  declare namespace libs {
62
74
  export {
63
75
  FieldContext,
@@ -114,7 +126,15 @@ declare namespace libs {
114
126
  Objector
115
127
  }
116
128
  }
117
- export { libs }
129
+ export default libs;
130
+
131
+ /**
132
+ * @public
133
+ * @param fileName
134
+ * @param options
135
+ * @returns
136
+ */
137
+ declare const loadFormat: <T = any>(fileName: string, options?: LoadOptions) => Promise<LoadResult<T>>;
118
138
 
119
139
  declare interface LoadObjectOptions {
120
140
  fileName: string;
@@ -122,6 +142,114 @@ declare interface LoadObjectOptions {
122
142
  folderPath: string;
123
143
  }
124
144
 
145
+ /**
146
+ * @public
147
+ */
148
+ declare interface LoadOptions {
149
+ dirs?: string[];
150
+ parsers?: Record<string, (data: string) => any>;
151
+ }
152
+
153
+ declare interface LoadResult<T> {
154
+ fullPath: string;
155
+ folderPath: string;
156
+ content: T;
157
+ }
158
+
159
+ declare const locate: (fileName: string, dirs?: string[]) => Promise<string>;
160
+
161
+ declare const makeFieldProcessor: (fn: SourceFunc, types?: FieldProcessorTypeChecker) => FieldProcessorTypedFunc;
162
+
163
+ declare const makeFieldProcessorList: <T = unknown>(source: SourceFunc[], options?: {
164
+ types?: FieldProcessorTypeCheckers<T>;
165
+ }) => FieldProcessorMap;
166
+
167
+ declare const makeFieldProcessorMap: <T = unknown>(source: Record<keyof T, SourceFunc>, options?: {
168
+ types?: FieldProcessorTypeCheckers<T>;
169
+ keys?: (keyof T)[];
170
+ }) => FieldProcessorMap;
171
+
172
+ /**
173
+ * @public
174
+ * @param source
175
+ * @param target
176
+ * @param options
177
+ */
178
+ declare const merge: (source: any, target: any, options?: MergeOptions) => void;
179
+
180
+ declare const mergeAll: (elements: any[], options?: MergeOptions) => any;
181
+
182
+ /**
183
+ * @public
184
+ */
185
+ declare type MergeMode = 'merge' | 'source' | 'target' | 'skip';
186
+
187
+ /**
188
+ * @public
189
+ */
190
+ declare interface MergeOptions {
191
+ conflict?: (key: string, source: any, target: any, sourceContainer: any, targetContainer: any) => any;
192
+ mismatch?: (key: string, source: any, target: any, sourceContainer: any, targetContainer: any) => any;
193
+ navigate?: (key: string, source: any, target: any, sourceContainer: any, targetContainer: any) => boolean | undefined;
194
+ mode?: (key: string, source: any, target: any, sourceContainer: any, targetContainer: any) => MergeMode | void;
195
+ }
196
+
197
+ /**
198
+ * @public
199
+ * @param o
200
+ * @param cb
201
+ */
202
+ declare const navigate: (o: any, cb: NavigateCallback) => Promise<void>;
203
+
204
+ /**
205
+ * @public
206
+ */
207
+ declare enum NavigateAction {
208
+ Explore = 0,
209
+ SkipSiblings = 1,
210
+ NoExplore = 2,
211
+ ReplaceParent = 3,
212
+ DeleteParent = 4,
213
+ MergeParent = 5,
214
+ ReplaceItem = 6,
215
+ DeleteItem = 7
216
+ }
217
+
218
+ /**
219
+ * @public
220
+ */
221
+ declare type NavigateCallback = (context: NavigateContext) => Promise<NavigateResult> | NavigateResult;
222
+
223
+ /**
224
+ * @public
225
+ */
226
+ declare interface NavigateContext {
227
+ key: string;
228
+ value: any;
229
+ path: string[];
230
+ parent: any;
231
+ parents: any[];
232
+ }
233
+
234
+ /**
235
+ * @public
236
+ */
237
+ declare class NavigateResult {
238
+ readonly action: NavigateAction;
239
+ by?: any | undefined;
240
+ skipSibilings?: boolean | undefined;
241
+ reexplore?: boolean | undefined;
242
+ constructor(action: NavigateAction, by?: any | undefined, skipSibilings?: boolean | undefined, reexplore?: boolean | undefined);
243
+ static ReplaceParent(by: any, reexplore?: boolean): NavigateResult;
244
+ static SkipSiblings(): NavigateResult;
245
+ static Explore(): NavigateResult;
246
+ static NoExplore(): NavigateResult;
247
+ static DeleteParent(): NavigateResult;
248
+ static MergeParent(by: any): NavigateResult;
249
+ static ReplaceItem(by: any, skipSiblings?: boolean): NavigateResult;
250
+ static DeleteItem(skipSiblings?: boolean): NavigateResult;
251
+ }
252
+
125
253
  /**
126
254
  * @public
127
255
  */
@@ -153,7 +281,109 @@ export declare class Objector {
153
281
  writeOutputs(options?: WriteOutputsOption): Promise<void>;
154
282
  }
155
283
 
284
+ declare interface Output {
285
+ name: string;
286
+ type?: 'json' | 'yaml' | 'text';
287
+ value: any;
288
+ class?: string;
289
+ }
290
+
291
+ declare const padBlock: (str: string, indent: number, separator?: string, padder?: string) => string;
292
+
293
+ declare const pascal: (v: string) => string;
294
+
295
+ /**
296
+ * @public
297
+ * @param obj
298
+ * @param options
299
+ * @returns
300
+ */
301
+ declare const processFields: (obj: any, options?: ProcessFieldsOptions) => Promise<any>;
302
+
303
+ declare interface ProcessFieldsOptions {
304
+ sources?: FieldProcessorMap;
305
+ keys?: FieldProcessorMap;
306
+ filters?: RegExp[];
307
+ root?: Record<any, any>;
308
+ globalContext?: any;
309
+ }
310
+
311
+ /**
312
+ * @public
313
+ * @param from
314
+ * @param path
315
+ * @param set
316
+ * @returns
317
+ */
318
+ declare const select: <T = any>(from: any, path: string, options?: SelectOptions) => T | undefined;
319
+
320
+ declare interface SelectOptions {
321
+ set?: any;
322
+ key?: string;
323
+ separator?: string;
324
+ defaultValue?: any;
325
+ optional?: boolean;
326
+ }
327
+
328
+ declare const snake: (v: string, separator: string) => string;
329
+
330
+ declare type SourceFunc = (...args: any[]) => any;
331
+
332
+ declare const splitNested: (str: string, separator: string, open?: string, close?: string) => string[];
333
+
334
+ /**
335
+ * Splits a string by a separator while respecting quoted values.
336
+ * Quoted values can contain the separator without being split.
337
+ * Supports both single (') and double (") quotes.
338
+ *
339
+ * @param input - The string to split
340
+ * @param separator - Single or multi-character separator (default: ',')
341
+ * @returns Array of objects with value and quoted status
342
+ *
343
+ * @example
344
+ * splitWithQuotes('hello, "world", test')
345
+ * // Returns: [
346
+ * // { value: 'hello', quoted: false },
347
+ * // { value: 'world', quoted: true },
348
+ * // { value: 'test', quoted: false }
349
+ * // ]
350
+ *
351
+ * @example
352
+ * splitWithQuotes('a:: "b:: c":: d', '::')
353
+ * // Returns: [
354
+ * // { value: 'a', quoted: false },
355
+ * // { value: 'b:: c', quoted: true },
356
+ * // { value: 'd', quoted: false }
357
+ * // ]
358
+ */
359
+ declare const splitWithQuotes: (input: string, separator?: string) => {
360
+ value: string;
361
+ quoted: boolean;
362
+ }[];
363
+
364
+ declare const tokenize: (str: string, from: any, tokenizer?: RegExp) => string;
365
+
366
+ declare const toList: <T>(from: any, key?: string) => T[];
367
+
368
+ declare const toObject: <T>(from: any[], key?: string) => T;
369
+
370
+ declare const toObjectWithKey: <T>(from: any[], key?: string) => T;
371
+
372
+ declare const writeFormat: (filePath: string, content: any, format?: "yaml" | "json" | "text") => Promise<void>;
373
+
374
+ declare const writeOutput: (o: Output, options?: WriteOutputOption) => Promise<void>;
375
+
376
+ declare interface WriteOutputOption {
377
+ targetDirectory?: string;
378
+ writing?: (output: Output) => boolean | undefined | void;
379
+ classes?: string[];
380
+ classRequired?: boolean;
381
+ }
382
+
383
+ declare const writeOutputs: (outputs: Output[], options?: WriteOutputsOption) => Promise<void>;
384
+
385
+ declare interface WriteOutputsOption extends WriteOutputOption {
386
+ removeFirst?: boolean;
387
+ }
388
+
156
389
  export { }
157
- declare global {
158
- const homedev: typeof libs
159
- }
package/dist/index.js CHANGED
@@ -1,13 +1,13 @@
1
- var Pt=Object.create;var{getPrototypeOf:At,defineProperty:U,getOwnPropertyNames:Re,getOwnPropertyDescriptor:Mt}=Object,Ee=Object.prototype.hasOwnProperty;var l=(e,r,t)=>{t=e!=null?Pt(At(e)):{};let o=r||!e||!e.__esModule?U(t,"default",{value:e,enumerable:!0}):t;for(let a of Re(e))if(!Ee.call(o,a))U(o,a,{get:()=>e[a],enumerable:!0});return o},je=new WeakMap,Nt=(e)=>{var r=je.get(e),t;if(r)return r;if(r=U({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")Re(e).map((o)=>!Ee.call(r,o)&&U(r,o,{get:()=>e[o],enumerable:!(t=Mt(e,o))||t.enumerable}));return je.set(e,r),r},j=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var De=(e,r)=>{for(var t in r)U(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})};var Q=j((Zo,Ie)=>{var{defineProperty:se,getOwnPropertyNames:Ct,getOwnPropertyDescriptor:$t}=Object,jt=Object.prototype.hasOwnProperty,We=new WeakMap,Rt=(e)=>{var r=We.get(e),t;if(r)return r;if(r=se({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")Ct(e).map((o)=>!jt.call(r,o)&&se(r,o,{get:()=>e[o],enumerable:!(t=$t(e,o))||t.enumerable}));return We.set(e,r),r},Et=(e,r)=>{for(var t in r)se(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},_e={};Et(_e,{splitWithQuotes:()=>Wt,splitNested:()=>Dt});Ie.exports=Rt(_e);var Dt=(e,r,t="(",o=")")=>{let a=0,n="",s=[];for(let i of e){if(n+=i,i===t)a++;if(i===o)a--;if(a===0&&i===r)s.push(n.slice(0,-1)),n=""}if(n)s.push(n);return s},Wt=(e,r=",")=>{let t=[],o=e.length,a=r.length,n=0,s=(i)=>{if(i+a>o)return!1;for(let u=0;u<a;u++)if(e[i+u]!==r[u])return!1;return!0};while(n<o){while(n<o&&e[n]===" ")n++;if(n>=o)break;let i="",u=e[n]==='"'||e[n]==="'";if(u){let p=e[n++];while(n<o&&e[n]!==p)i+=e[n++];if(n<o)n++}else{while(n<o&&!s(n)){let p=e[n];if(p==='"'||p==="'"){i+=p,n++;while(n<o&&e[n]!==p)i+=e[n++];if(n<o)i+=e[n++]}else i+=e[n++]}i=i.trim()}if(i)t.push({value:i,quoted:u});if(s(n))n+=a}return t}});var b=j((Xo,Je)=>{var{defineProperty:le,getOwnPropertyNames:_t,getOwnPropertyDescriptor:It}=Object,Tt=Object.prototype.hasOwnProperty,Te=new WeakMap,Lt=(e)=>{var r=Te.get(e),t;if(r)return r;if(r=le({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")_t(e).map((o)=>!Tt.call(r,o)&&le(r,o,{get:()=>e[o],enumerable:!(t=It(e,o))||t.enumerable}));return Te.set(e,r),r},Ft=(e,r)=>{for(var t in r)le(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},Le={};Ft(Le,{navigate:()=>Ue,find:()=>Ut,NavigateResult:()=>k,NavigateAction:()=>Fe});Je.exports=Lt(Le);var Fe;((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"})(Fe||={});class k{action;by;skipSibilings;reexplore;constructor(e,r,t,o){this.action=e,this.by=r,this.skipSibilings=t,this.reexplore=o}static ReplaceParent(e,r){return new k(3,e,void 0,r)}static SkipSiblings(){return new k(1)}static Explore(){return new k(0)}static NoExplore(){return new k(2)}static DeleteParent(){return new k(4)}static MergeParent(e){return new k(5,e)}static ReplaceItem(e,r){return new k(6,e,r)}static DeleteItem(e){return new k(7,void 0,e)}}var Ue=async(e,r)=>{let t=async(a)=>{let n=a.key===null,s=n?{action:0}:await r(a);if(a.value&&typeof a.value==="object"&&s.action==0){if(!n)a.path.push(a.key),a.parents.push(a.parent);while(await o(a));if(!n)a.parents.pop(),a.path.pop()}return s},o=async(a)=>{for(let[n,s]of Object.entries(a.value)){let i=await t({key:n,value:s,path:a.path,parent:a.value,parents:a.parents});switch(i.action){case 3:if(!a.key)throw Error("Cannot replace root");if(a.parent[a.key]=i.by,i.reexplore)return a.value=i.by,!0;return;case 4:delete a.parent[a.key];return;case 5:delete a.value[n],Object.assign(a.value,i.by);break;case 1:return;case 6:if(a.value[n]=i.by,i.skipSibilings)return;break;case 7:if(delete a.value[n],i.skipSibilings)return;break}}};await t({key:null,value:e,path:[],parent:null,parents:[]})},Ut=async(e,r)=>{let t=[];return await Ue(e,(o)=>{if(r([...o.path,o.key].join("."),o.value))t.push(o.value);return k.Explore()}),t}});var v=j((Bo,Ge)=>{var{defineProperty:fe,getOwnPropertyNames:Jt,getOwnPropertyDescriptor:St}=Object,xt=Object.prototype.hasOwnProperty,Se=new WeakMap,Gt=(e)=>{var r=Se.get(e),t;if(r)return r;if(r=fe({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")Jt(e).map((o)=>!xt.call(r,o)&&fe(r,o,{get:()=>e[o],enumerable:!(t=St(e,o))||t.enumerable}));return Se.set(e,r),r},Kt=(e,r)=>{for(var t in r)fe(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},xe={};Kt(xe,{select:()=>pe});Ge.exports=Gt(xe);var Ht=Q(),ue=(e,r,t,o)=>{if(e.startsWith("{")){let a=e.substring(1,e.length-1);return pe(r,a,t).toString()}return o?e:void 0},Qt=(e,r,t,o)=>{let a=ue(r,t,o);if(a)return pe(e,a,o);let n=/^\[([^=\]]*)([=]*)([^\]]*)\]$/.exec(r);if(n){let[i,u,p,f]=n,y=ue(u.trim(),t,o,!0),$=ue(f.trim(),t,o,!0);if(Array.isArray(e))switch(p){case"==":case"=":return e.find((P)=>P[y]==$)}}let s=/^([^[\]]*)\[([^\]]*)]/.exec(r);if(s)return e[s[1]][s[2]];return e[r]},pe=(e,r,t)=>{let o=void 0,a=void 0;r??="";let n=(f)=>f?.endsWith("?")?[f.substring(0,f.length-1),!0]:[f,!1],s=(f,y)=>{let[$,P]=n(y.pop());if($){let H=Qt(f,$,e,t);if(H===void 0){if(P||t?.defaultValue!==void 0||t?.optional)return;throw Error(`Unknown path element: "${$}" in "${r}"`)}return o=f,a=$,s(H,y)}if(t?.set&&a)o[a]=t?.set;return f},i=Ht.splitNested(r,t?.separator??".","{","}"),u=i.length>0&&i[i.length-1].startsWith("?=")?i.pop()?.substring(2):void 0;i.reverse();let p=s(e,i);if(p===void 0)return u??t?.defaultValue;return p}});var h=j((Vo,or)=>{var{defineProperty:ce,getOwnPropertyNames:Yt,getOwnPropertyDescriptor:Zt}=Object,Xt=Object.prototype.hasOwnProperty,Ke=new WeakMap,Bt=(e)=>{var r=Ke.get(e),t;if(r)return r;if(r=ce({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")Yt(e).map((o)=>!Xt.call(r,o)&&ce(r,o,{get:()=>e[o],enumerable:!(t=Zt(e,o))||t.enumerable}));return Ke.set(e,r),r},Vt=(e,r)=>{for(var t in r)ce(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},Ze={};Vt(Ze,{processFields:()=>tr,makeFieldProcessorMap:()=>io,makeFieldProcessorList:()=>ao,makeFieldProcessor:()=>ge,getProcessor:()=>me,getArgs:()=>qe});or.exports=Bt(Ze);var qt=Q(),He=b(),Xe=v(),Qe=(e,r)=>{if(typeof e.value==="string"){if(e.quoted)return e.value;if(e.value.startsWith("[")&&e.value.endsWith("]")){let t=e.value.slice(1,-1);if(t.trim()==="")return[];return t.split(";").map((o)=>{let a=o.trim();if(!isNaN(+a))return+a;return a})}if(e.value.startsWith("{")&&e.value.endsWith("}")){if(e.value.slice(1,-1).trim()==="")return{}}if(e.value==="null")return null;if(e.value==="undefined")return;if(e.value.startsWith("@"))return e.value.slice(1);if(!isNaN(+e.value))return+e.value}return r(e.value)},Y=(e,r,t,o,a,n)=>{let s=o?.(e)??e,i=a(s);if(i[0])return i[1];if(!r){let u=Xe.select(t,e),p=a(u);if(p[0])return p[1]}throw Error(n)},Be=(e,r,t,o,a)=>{let n=typeof e.types==="function"?e.types(o,r.value,a):e.types?.[o];if(!n||n==="ref")return Qe(r,(i)=>Xe.select(t,i));let s=Qe(r,()=>r.value);if(Array.isArray(n)){if(!n.includes(s))throw Error(`Argument ${o.toString()} must be one of [${n.join(", ")}]: ${s}`);return s}if(typeof n==="string"){if(n.endsWith("?")){let i=n.slice(0,-1);if(r.value==="null")return He.NavigateResult.ReplaceItem(null);if(r.value==="undefined")return He.NavigateResult.ReplaceItem(void 0);if(r.value==="")return"";n=i}switch(n){case"any":return s;case"array":return Y(s,r.quoted,t,null,(i)=>[Array.isArray(i),i],`Argument ${o.toString()} must be an array: ${s}`);case"object":return Y(s,r.quoted,t,null,(i)=>[typeof i==="object"&&i!==null,i],`Argument ${o.toString()} must be an object: ${s}`);case"number":return Y(s,r.quoted,t,(i)=>Number(i),(i)=>[!isNaN(i),i],`Argument ${o.toString()} must be a number: ${s}`);case"boolean":return Y(s,r.quoted,t,null,(i)=>{if([!0,"true","1",1,"yes","on"].includes(i))return[!0,!0];if([!1,"false","0",0,"no","off"].includes(i))return[!0,!1];if([null,"null","undefined",void 0,""].includes(i))return[!0,!1];if(Array.isArray(i))return[!0,i.length>0];return[!1,!1]},`Argument ${o.toString()} must be a boolean: ${s}`);case"string":return s.toString();default:throw Error(`Unknown type for argument ${o.toString()}: ${n}`)}}return n(s,t,o,r.quoted)},me=(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}},Ve=(e)=>!e.quoted&&e.value.startsWith("."),zt=(e)=>{let r={};for(let t of e){if(!Ve(t))continue;let o=t.value.indexOf("="),a=o>-1?t.value.slice(1,o):t.value.slice(1),n=o>-1?t.value.slice(o+1):"";if(n.length>=2){let s=n[0],i=n[n.length-1];if(s==='"'&&i==='"'||s==="'"&&i==="'")n=n.slice(1,-1)}if(!r[a])r[a]=[];r[a].push(n)}return r},qe=(e,r,t)=>{let o=qt.splitWithQuotes(e??""),a=zt(o),n=o.filter((i)=>!Ve(i)),s=r.options.processArgs===!1?[]:n.map((i,u)=>Be(r.options,i,t,u,n));return{rawArgs:n,parsedArgs:s,tags:a}},W=b(),Ye=b(),eo=(e,r)=>r.keys!==void 0&&e.key.startsWith(".")&&r.keys[e.key.substring(1)]!==void 0,ro=async(e,r,t,o)=>{let{key:a,parent:n}=e,s=me(o.keys,a.substring(1));if(s.options.processArgs!==!1&&(typeof s.options.types==="function"||s.options.types?.[0]!==void 0))e.value=Be(s.options,{value:e.value,quoted:!1},t,0,[]);if(typeof e.value!=="string")await tr(e.value,{...o,root:{...t,parent:e.parent,parents:e.parents},filters:[...o.filters??[],...s.options.filters??[]]});let i=await s.fn({path:r,root:t,parent:n,key:a,options:o,value:e.value,args:[e.value],rawArgs:[],tags:{}});return i instanceof Ye.NavigateResult?i:Ye.NavigateResult.ReplaceParent(i)},Z=b(),to=v(),ze=(e)=>{let r=[],t=0;while(t<e.length)if(e[t]==="$"&&e[t+1]==="("&&(t===0||e[t-1]!=="\\")){let o=t;t+=2;let a=1;for(;t<e.length;t++)if(e[t]==="(")a++;else if(e[t]===")"){if(a--,a===0){r.push([o,t]);break}}if(a!==0)throw Error(`Unmatched opening $( at position ${o.toString()}`);t++}else t++;return r};class ye{value;constructor(e){this.value=e}}var er=async(e,r,t)=>{for(let o=r.length-1;o>=0;o--){let[a,n]=r[o],s=e.slice(a+2,n),i=await er(s,ze(s),t);if(typeof i==="object")return i;let u=await t(i,e);if(u instanceof ye)return u.value;e=e.slice(0,a)+u+e.slice(n+1)}return e},oo=async(e,r)=>er(e,ze(e),r),no=async(e,r,t,o)=>{let a=await(async()=>{let n=/([\w\d.-_/]+):(.+)/.exec(e);if(!n)return await to.select(r,e);let[s,i,u]=n,p=me(o.sources,i),f=qe(u,p,r);return await p.fn({args:f.parsedArgs,rawArgs:f.rawArgs,tags:f.tags,key:i,options:o,root:r,path:t,value:null})})();if(a===null||a===void 0)return"";if(typeof a==="object")return new ye(a);return a},rr=async(e,r,t,o)=>{let a=await oo(r,(n)=>no(n,t,e,o));if(a instanceof Z.NavigateResult)return a;if(a===r)return Z.NavigateResult.Explore();if(typeof a==="string"){let n=await rr(e,a,t,o);if(n.action!==Z.NavigateAction.Explore)return n}return Z.NavigateResult.ReplaceItem(a)},tr=async(e,r)=>{return r??={},await W.navigate(e,async(t)=>{let o=[...t.path,t.key].join(".");if(r?.filters?.length&&r.filters.some((i)=>i.test(o)))return W.NavigateResult.NoExplore();let a=t.path.length===0,n=t.parents.length>0?t.parents.toReversed():[];if(a){if(n.length>0)throw Error("Root object should not have a parent");n=r?.root?.parents?[r.root.parent,...r.root.parents.toReversed()]:[]}let s={...e,...r.root,this:t.parent,parent:n.length>0?n[0]:null,parents:n};try{if(t.key.startsWith("$"))return W.NavigateResult.NoExplore();let i=W.NavigateResult.Explore();if(typeof t.value==="string")switch(i=await rr(o,t.value,s,r),i.action){case W.NavigateAction.Explore:break;case W.NavigateAction.ReplaceItem:t.value=i.by;break;default:return i}if(eo(t,r))i=await ro(t,o,s,r);return i}catch(i){throw Error(`${i.message}
2
- (${o})`)}}),e},ge=(e,r)=>r?{fn:(t)=>e(...t.args),types:r}:(t)=>e(...t.args),ao=(e,r)=>Object.fromEntries(e.map((t)=>[t.name,ge(t,r?.types?.[t.name])])),io=(e,r)=>Object.fromEntries((r?.keys??Object.keys(e)).map((t)=>[t,ge(e[t],r?.types?.[t])]))});var X=j((qo,gr)=>{var so=Object.create,{getPrototypeOf:lo,defineProperty:J,getOwnPropertyNames:sr,getOwnPropertyDescriptor:uo}=Object,lr=Object.prototype.hasOwnProperty,A=(e,r,t)=>{t=e!=null?so(lo(e)):{};let o=r||!e||!e.__esModule?J(t,"default",{value:e,enumerable:!0}):t;for(let a of sr(e))if(!lr.call(o,a))J(o,a,{get:()=>e[a],enumerable:!0});return o},nr=new WeakMap,fo=(e)=>{var r=nr.get(e),t;if(r)return r;if(r=J({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")sr(e).map((o)=>!lr.call(r,o)&&J(r,o,{get:()=>e[o],enumerable:!(t=uo(e,o))||t.enumerable}));return nr.set(e,r),r},po=(e,r)=>{for(var t in r)J(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},ur={};po(ur,{writeOutputs:()=>ho,writeOutput:()=>yr,writeFormat:()=>cr,locate:()=>pr,loadFormat:()=>go,globMap:()=>vo,exists:()=>fr});gr.exports=fo(ur);var ar=A(require("fs/promises")),fr=async(e)=>{try{return await ar.default.access(e,ar.default.constants.R_OK),!0}catch{return!1}},de=A(require("path")),pr=async(e,r)=>{let t=!de.default.isAbsolute(e)&&r?["",...r]:[""];for(let o of t){let a=de.default.join(o,e);if(await fr(a))return de.default.resolve(a)}throw Error(`File not found: "${e}"`)},co=A(require("fs/promises")),mo=A(require("path")),yo=A(require("yaml")),go=async(e,r)=>{let t=await pr(e,r?.dirs),o=await co.default.readFile(t),a=mo.default.dirname(t),n={"[.](yml|yaml)$":yo.default.parse,"[.]json$":JSON.parse,...r?.parsers},s=Object.entries(n).find((i)=>t.match(i[0]));if(!s)throw Error(`Unhandled file type: ${e}`);return{content:s[1](o.toString()),fullPath:t,folderPath:a}},we=A(require("fs/promises")),wo=A(require("yaml")),cr=async(e,r,t="text")=>{switch(t){case"yaml":await we.default.writeFile(e,wo.default.stringify(r));break;case"json":await we.default.writeFile(e,JSON.stringify(r));break;case"text":default:await we.default.writeFile(e,r.toString())}},bo=A(require("fs/promises")),vo=async(e,r)=>{if(typeof e==="string"&&!e.includes("*"))return await r.map(e,0,[]);let t=await Array.fromAsync(bo.default.glob(e,{cwd:r.cwd})),o=r.filter?t.filter(r.filter):t;return await Promise.all(o.map(r.map))},mr=A(require("fs/promises")),ir=A(require("path")),ho=async(e,r)=>{if(r?.targetDirectory&&r?.removeFirst)try{await mr.default.rm(r?.targetDirectory,{recursive:!0,force:!0})}catch(t){throw Error(`Failed to clean the output directory: ${t.message}`)}for(let t of e)await yr(t,r)},yr=async(e,r)=>{let t=ir.default.join(r?.targetDirectory??".",e.name),o=ir.default.dirname(t);if(r?.classes){if(e.class!==void 0&&!r.classes.includes(e.class))return;if(r.classRequired&&e.class===void 0)throw Error(`Output "${e.name}" is missing class field`)}if(r?.writing?.(e)===!1)return;try{await mr.default.mkdir(o,{recursive:!0})}catch(a){throw Error(`Failed to create target directory "${o}" for output "${t}": ${a.message}`)}try{await cr(t,e.value,e.type??"text")}catch(a){throw Error(`Failed to write output "${t}": ${a.message}`)}}});var _=j((zo,br)=>{var{defineProperty:be,getOwnPropertyNames:Oo,getOwnPropertyDescriptor:ko}=Object,Po=Object.prototype.hasOwnProperty,dr=new WeakMap,Ao=(e)=>{var r=dr.get(e),t;if(r)return r;if(r=be({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")Oo(e).map((o)=>!Po.call(r,o)&&be(r,o,{get:()=>e[o],enumerable:!(t=ko(e,o))||t.enumerable}));return dr.set(e,r),r},Mo=(e,r)=>{for(var t in r)be(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},wr={};Mo(wr,{mergeAll:()=>No,merge:()=>ve});br.exports=Ao(wr);var ve=(e,r,t)=>{for(let o of Object.keys(r)){if(e[o]===void 0)continue;let a=r[o],n=e[o];if(typeof n!==typeof a||Array.isArray(n)!==Array.isArray(a)){let i=t?.mismatch?.(o,n,a,e,r);if(i!==void 0){r[o]=i;continue}throw Error(`Type mismatch: ${o}`)}let s=t?.mode?.(o,n,a,e,r)??r[".merge"]??"merge";switch(s){case"source":r[o]=n;continue;case"target":continue;case"skip":delete r[o],delete e[o];continue;case"merge":break;default:throw Error(`Unknown merge mode: ${s}`)}if(typeof n==="object")if(Array.isArray(n))a.push(...n);else{if(t?.navigate?.(o,n,a,e,r)===!1)continue;ve(n,a,t)}else{if(n===a)continue;let i=t?.conflict?.(o,n,a,e,r);r[o]=i===void 0?a:i}}for(let o of Object.keys(e))if(r[o]===void 0)r[o]=e[o]},No=(e,r)=>{let t={};for(let o of e.toReversed())ve(o,t,r);return t}});var S=j((Fn,qr)=>{var{defineProperty:Ae,getOwnPropertyNames:Co,getOwnPropertyDescriptor:$o}=Object,jo=Object.prototype.hasOwnProperty,Xr=new WeakMap,Ro=(e)=>{var r=Xr.get(e),t;if(r)return r;if(r=Ae({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")Co(e).map((o)=>!jo.call(r,o)&&Ae(r,o,{get:()=>e[o],enumerable:!(t=$o(e,o))||t.enumerable}));return Xr.set(e,r),r},Eo=(e,r)=>{for(var t in r)Ae(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},Br={};Eo(Br,{tokenize:()=>Lo,snake:()=>_o,pascal:()=>Vr,padBlock:()=>To,changeCase:()=>Io,capital:()=>Do,camel:()=>Wo});qr.exports=Ro(Br);var Vr=(e)=>e.replace(/((?:[_ ]+)\w|^\w)/g,(r,t)=>t.toUpperCase()).replace(/[_ ]/g,""),Do=(e)=>e.replace(/((?:[ ]+)\w|^\w)/g,(r,t)=>t.toUpperCase()),Wo=(e)=>Vr(e).replace(/((?:[ ]+\w)|^\w)/g,(r,t)=>t.toLowerCase()),_o=(e,r)=>e.replace(/([a-z])([A-Z])/g,`$1${r}$2`).replace(/\s+/g,r),Io=(e,r)=>{switch(r){case"upper":return e.toUpperCase();case"lower":return e.toLowerCase();default:return e}},To=(e,r,t=`
3
- `,o=" ")=>{let a=o.repeat(r);return e.split(t).map((n)=>a+n).join(t)},Lo=(e,r,t=/\${([^}]+)}/g)=>{return e.replace(t,(o,a)=>r[a]??"")}});var z=j((Gn,ot)=>{var{defineProperty:Me,getOwnPropertyNames:Fo,getOwnPropertyDescriptor:Uo}=Object,Jo=Object.prototype.hasOwnProperty,rt=new WeakMap,So=(e)=>{var r=rt.get(e),t;if(r)return r;if(r=Me({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")Fo(e).map((o)=>!Jo.call(r,o)&&Me(r,o,{get:()=>e[o],enumerable:!(t=Uo(e,o))||t.enumerable}));return rt.set(e,r),r},xo=(e,r)=>{for(var t in r)Me(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},tt={};xo(tt,{toObjectWithKey:()=>Ko,toObject:()=>Ho,toList:()=>Go});ot.exports=So(tt);var Go=(e,r="name")=>Object.entries(e).map(([t,o])=>({[r]:t,...o})),Ko=(e,r="name")=>Object.fromEntries(e.map((t)=>[t[r],t])),Ho=(e,r="name")=>Object.fromEntries(e.map((t)=>{let{[r]:o,...a}=t;return[o,a]}))});var Qo={};De(Qo,{libs:()=>re,Objector:()=>ne});module.exports=Nt(Qo);var Ot=l(h(),1),ae=l(X(),1),kt=l(_(),1),Ce=l(require("path"));var vr=l(b(),1),hr=(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 vr.NavigateResult.SkipSiblings()}});var Or=l(b(),1),kr=l(require("path")),Pr=(e)=>({load:async(r)=>{let t=r.options.globalContext;for(let{file:o}of Array.isArray(r.value)?r.value:[r.value]){if(!o)throw Error("File reference required");await e.load(o,t.file&&kr.default.dirname(t.file))}return Or.NavigateResult.DeleteItem()}});var Rr=l(h(),1),Oe=l(_(),1);var Ar=l(v(),1),Mr=(e)=>{if(typeof e.value==="string")return e.parent;let r=e.value.model;if(!r)return e.parent;if(typeof r==="string")return Ar.select(e.root,r);return r};var he=l(v(),1),Nr=(e)=>{if(typeof e.value==="string")return he.select(e.root,e.value);if(Array.isArray(e.value))return e.value;let r=e.value;if(typeof r.from==="string")return he.select(e.root,r.from);return r.from};var Cr=l(h(),1),$r=l(v(),1),jr=async(e,r)=>{let t=e.value;if(t.selector===void 0)return r;if(typeof t.selector!=="string"){let o=JSON.parse(JSON.stringify(t.selector));return await Cr.processFields(o,{...e.options,root:{...e.root,result:r}}),o}return await $r.select({...e.root,result:r},t.selector)};var M=(e)=>globalThis.structuredClone!==void 0?structuredClone(e):JSON.parse(JSON.stringify(e));var N={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)=>!N.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!=="")},B={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 Nr(e),o=await Mr(e);if(!Array.isArray(t))throw Error('Key "each" requires a source list');if(o===void 0)throw Error('Key "each" must define a model');if(r.extend?.model)o=Oe.mergeAll([r.model,...Array.isArray(r.extend.model)?r.extend.model:[r.extend.model]]);let a=[];for(let n=0;n<t.length;n++){let s=M(o);if(await Rr.processFields(s,{...e.options,root:{...e.root,index:n,item:t[n],instance:s}}),r.extend?.result){let i=r.extend.result;s=Oe.mergeAll([s,...Array.isArray(i)?i:[i]])}a.push(await jr(e,s))}return a}}});var Dr=l(v(),1),Wr=()=>({concat:async(e)=>{let r=[];for(let t of Array.isArray(e.value)?e.value:[e.value])r.push(...await Dr.select(e.root,t));return r.filter((t)=>t!==void 0)}});var _r=l(h(),1),Ir=l(_(),1),Tr=l(b(),1),Lr=l(v(),1);var Fr=()=>({extends:async(e)=>{let r=async(t,o)=>{for(let a of Array.isArray(o)?o:[o]){let n=await Lr.select(e.root,a),s=M(n);if(s[e.key])await r(s,s[e.key]);await _r.processFields(s,{...e.options}),Ir.merge(s,t),delete t[e.key]}};return await r(e.parent,e.value),Tr.NavigateResult.Explore()}});var Ur=l(h(),1),C=l(b(),1),Jr=(e)=>({skip:{types:{0:"boolean"},fn:(r)=>r.value?C.NavigateResult.DeleteParent():C.NavigateResult.DeleteItem()},metadata:({path:r,value:t})=>{return e.metadata(r,t),C.NavigateResult.DeleteItem()},if:{types:{0:"boolean"},fn:async(r)=>{let t=r.parent[".then"],o=r.parent[".else"];if(t!==void 0)delete r.parent[".then"];if(o!==void 0)delete r.parent[".else"];let a=r.value?t:o;if(a===void 0)return C.NavigateResult.DeleteItem();if(typeof a==="string")return(await Ur.processFields({value:a},{...r.options,root:{...r.root}})).value;return C.NavigateResult.ReplaceParent(a,!0)}},switch:(r)=>{let t=r.value;if(!t.cases)throw Error("Missing cases for switch");if(t.cases[t.from]!==void 0)return C.NavigateResult.ReplaceParent(t.cases[t.from],!0);if(t.default!==void 0)return C.NavigateResult.ReplaceParent(t.default,!0);return C.NavigateResult.DeleteParent()}});var Sr=l(_(),1),xr=l(v(),1),Gr=()=>({from:async({root:e,parent:r,value:t})=>{let o=await xr.select(e,t);if(o===null||o===void 0)throw Error(`Unable to resolve reference: ${t}`);if(r.content){if(Array.isArray(r.content)&&Array.isArray(o))return[...o,...r.content];return Sr.merge(o,r.content),r.content}return o}});var Kr=l(b(),1),ke=l(require("node:vm")),Hr=(e)=>({modules:async(r)=>{for(let[t,o]of Object.entries(r.value)){let a=ke.default.createContext({console,objector:e,document:r.root}),n=new ke.default.SourceTextModule(o,{identifier:t,context:a});await n.link((s)=>{throw Error(`Module ${s} is not allowed`)}),await n.evaluate(),e.sources(Object.fromEntries(Object.entries(n.namespace).map(([s,i])=>[`${t}.${s}`,(u)=>i(u,...u.args)])))}return Kr.NavigateResult.DeleteItem()}});var E=l(X(),1),Pe=l(require("fs/promises")),I=l(require("path")),Qr=(e)=>({include:async(r)=>{let{file:t}=r.options.globalContext;return await E.globMap(r.args[0],{cwd:I.default.dirname(t),filter:(o)=>I.default.basename(t)!==o,map:async(o)=>e.load(o,I.default.dirname(t),{parent:r.root})})},exists:async({args:[r]})=>await E.exists(r),file:async(r)=>await Pe.default.readFile(await E.locate(r.args[0],e.getIncludeDirectories())).then((t)=>t.toString()),scan:async(r)=>{let t=[],a=(()=>{let i=r.args[2]??["**/node_modules/**"],u=typeof i==="string"?i.split(",").map((p)=>p.trim()):i;if(!Array.isArray(u))throw Error("Scan exclusion must be a list");return u})(),{file:n}=r.options.globalContext,s=r.args[1]?await E.locate(r.args[1],e.getIncludeDirectories()):I.default.dirname(n);for await(let i of Pe.default.glob(r.args[0],{cwd:s,exclude:(u)=>a.some((p)=>I.default.matchesGlob(u,p))}))t.push(i);return t}});var Yr=l(h(),1),Zr=()=>Yr.makeFieldProcessorMap({env:(e)=>process.env[e]});var zr=l(h(),1),d=l(S(),1),q=l(require("yaml"));var V=(e,r=0,t)=>{let o=" ".repeat(r),a=" ".repeat(r+1);if(e===null||e===void 0)return"null";else if(typeof e==="boolean")return String(e);else if(typeof e==="number")return String(e);else if(typeof e==="string")return`"${e.replace(/\\/g,"\\\\").replace(/"/g,"\\\"").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t")}"`;else if(Array.isArray(e)){if(e.length===0)return"[]";return`[
1
+ import{createRequire as At}from"node:module";var vt=Object.create;var{getPrototypeOf:ht,defineProperty:ne,getOwnPropertyNames:Ot}=Object;var kt=Object.prototype.hasOwnProperty;var u=(e,r,t)=>{t=e!=null?vt(ht(e)):{};let o=r||!e||!e.__esModule?ne(t,"default",{value:e,enumerable:!0}):t;for(let a of Ot(e))if(!kt.call(o,a))ne(o,a,{get:()=>e[a],enumerable:!0});return o};var R=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var Pt=(e,r)=>{for(var t in r)ne(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})};var A=At(import.meta.url);var Q=R((Yo,je)=>{var{defineProperty:ae,getOwnPropertyNames:Mt,getOwnPropertyDescriptor:Nt}=Object,Ct=Object.prototype.hasOwnProperty,Ce=new WeakMap,$t=(e)=>{var r=Ce.get(e),t;if(r)return r;if(r=ae({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")Mt(e).map((o)=>!Ct.call(r,o)&&ae(r,o,{get:()=>e[o],enumerable:!(t=Nt(e,o))||t.enumerable}));return Ce.set(e,r),r},jt=(e,r)=>{for(var t in r)ae(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},$e={};jt($e,{splitWithQuotes:()=>Et,splitNested:()=>Rt});je.exports=$t($e);var Rt=(e,r,t="(",o=")")=>{let a=0,n="",s=[];for(let i of e){if(n+=i,i===t)a++;if(i===o)a--;if(a===0&&i===r)s.push(n.slice(0,-1)),n=""}if(n)s.push(n);return s},Et=(e,r=",")=>{let t=[],o=e.length,a=r.length,n=0,s=(i)=>{if(i+a>o)return!1;for(let l=0;l<a;l++)if(e[i+l]!==r[l])return!1;return!0};while(n<o){while(n<o&&e[n]===" ")n++;if(n>=o)break;let i="",l=e[n]==='"'||e[n]==="'";if(l){let p=e[n++];while(n<o&&e[n]!==p)i+=e[n++];if(n<o)n++}else{while(n<o&&!s(n)){let p=e[n];if(p==='"'||p==="'"){i+=p,n++;while(n<o&&e[n]!==p)i+=e[n++];if(n<o)i+=e[n++]}else i+=e[n++]}i=i.trim()}if(i)t.push({value:i,quoted:l});if(s(n))n+=a}return t}});var b=R((Zo,_e)=>{var{defineProperty:ie,getOwnPropertyNames:Dt,getOwnPropertyDescriptor:Wt}=Object,_t=Object.prototype.hasOwnProperty,Re=new WeakMap,It=(e)=>{var r=Re.get(e),t;if(r)return r;if(r=ie({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")Dt(e).map((o)=>!_t.call(r,o)&&ie(r,o,{get:()=>e[o],enumerable:!(t=Wt(e,o))||t.enumerable}));return Re.set(e,r),r},Tt=(e,r)=>{for(var t in r)ie(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},Ee={};Tt(Ee,{navigate:()=>We,find:()=>Lt,NavigateResult:()=>k,NavigateAction:()=>De});_e.exports=It(Ee);var De;((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"})(De||={});class k{action;by;skipSibilings;reexplore;constructor(e,r,t,o){this.action=e,this.by=r,this.skipSibilings=t,this.reexplore=o}static ReplaceParent(e,r){return new k(3,e,void 0,r)}static SkipSiblings(){return new k(1)}static Explore(){return new k(0)}static NoExplore(){return new k(2)}static DeleteParent(){return new k(4)}static MergeParent(e){return new k(5,e)}static ReplaceItem(e,r){return new k(6,e,r)}static DeleteItem(e){return new k(7,void 0,e)}}var We=async(e,r)=>{let t=async(a)=>{let n=a.key===null,s=n?{action:0}:await r(a);if(a.value&&typeof a.value==="object"&&s.action==0){if(!n)a.path.push(a.key),a.parents.push(a.parent);while(await o(a));if(!n)a.parents.pop(),a.path.pop()}return s},o=async(a)=>{for(let[n,s]of Object.entries(a.value)){let i=await t({key:n,value:s,path:a.path,parent:a.value,parents:a.parents});switch(i.action){case 3:if(!a.key)throw Error("Cannot replace root");if(a.parent[a.key]=i.by,i.reexplore)return a.value=i.by,!0;return;case 4:delete a.parent[a.key];return;case 5:delete a.value[n],Object.assign(a.value,i.by);break;case 1:return;case 6:if(a.value[n]=i.by,i.skipSibilings)return;break;case 7:if(delete a.value[n],i.skipSibilings)return;break}}};await t({key:null,value:e,path:[],parent:null,parents:[]})},Lt=async(e,r)=>{let t=[];return await We(e,(o)=>{if(r([...o.path,o.key].join("."),o.value))t.push(o.value);return k.Explore()}),t}});var v=R((Xo,Le)=>{var{defineProperty:le,getOwnPropertyNames:Ft,getOwnPropertyDescriptor:Ut}=Object,Jt=Object.prototype.hasOwnProperty,Ie=new WeakMap,St=(e)=>{var r=Ie.get(e),t;if(r)return r;if(r=le({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")Ft(e).map((o)=>!Jt.call(r,o)&&le(r,o,{get:()=>e[o],enumerable:!(t=Ut(e,o))||t.enumerable}));return Ie.set(e,r),r},xt=(e,r)=>{for(var t in r)le(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},Te={};xt(Te,{select:()=>ue});Le.exports=St(Te);var Gt=Q(),se=(e,r,t,o)=>{if(e.startsWith("{")){let a=e.substring(1,e.length-1);return ue(r,a,t).toString()}return o?e:void 0},Kt=(e,r,t,o)=>{let a=se(r,t,o);if(a)return ue(e,a,o);let n=/^\[([^=\]]*)([=]*)([^\]]*)\]$/.exec(r);if(n){let[i,l,p,f]=n,y=se(l.trim(),t,o,!0),j=se(f.trim(),t,o,!0);if(Array.isArray(e))switch(p){case"==":case"=":return e.find((P)=>P[y]==j)}}let s=/^([^[\]]*)\[([^\]]*)]/.exec(r);if(s)return e[s[1]][s[2]];return e[r]},ue=(e,r,t)=>{let o=void 0,a=void 0;r??="";let n=(f)=>f?.endsWith("?")?[f.substring(0,f.length-1),!0]:[f,!1],s=(f,y)=>{let[j,P]=n(y.pop());if(j){let H=Kt(f,j,e,t);if(H===void 0){if(P||t?.defaultValue!==void 0||t?.optional)return;throw Error(`Unknown path element: "${j}" in "${r}"`)}return o=f,a=j,s(H,y)}if(t?.set&&a)o[a]=t?.set;return f},i=Gt.splitNested(r,t?.separator??".","{","}"),l=i.length>0&&i[i.length-1].startsWith("?=")?i.pop()?.substring(2):void 0;i.reverse();let p=s(e,i);if(p===void 0)return l??t?.defaultValue;return p}});var h=R((Bo,Ve)=>{var{defineProperty:fe,getOwnPropertyNames:Ht,getOwnPropertyDescriptor:Qt}=Object,Yt=Object.prototype.hasOwnProperty,Fe=new WeakMap,Zt=(e)=>{var r=Fe.get(e),t;if(r)return r;if(r=fe({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")Ht(e).map((o)=>!Yt.call(r,o)&&fe(r,o,{get:()=>e[o],enumerable:!(t=Qt(e,o))||t.enumerable}));return Fe.set(e,r),r},Xt=(e,r)=>{for(var t in r)fe(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},xe={};Xt(xe,{processFields:()=>Be,makeFieldProcessorMap:()=>no,makeFieldProcessorList:()=>oo,makeFieldProcessor:()=>me,getProcessor:()=>pe,getArgs:()=>Qe});Ve.exports=Zt(xe);var Bt=Q(),Ue=b(),Ge=v(),Je=(e,r)=>{if(typeof e.value==="string"){if(e.quoted)return e.value;if(e.value.startsWith("[")&&e.value.endsWith("]")){let t=e.value.slice(1,-1);if(t.trim()==="")return[];return t.split(";").map((o)=>{let a=o.trim();if(!isNaN(+a))return+a;return a})}if(e.value.startsWith("{")&&e.value.endsWith("}")){if(e.value.slice(1,-1).trim()==="")return{}}if(e.value==="null")return null;if(e.value==="undefined")return;if(e.value.startsWith("@"))return e.value.slice(1);if(!isNaN(+e.value))return+e.value}return r(e.value)},Y=(e,r,t,o,a,n)=>{let s=o?.(e)??e,i=a(s);if(i[0])return i[1];if(!r){let l=Ge.select(t,e),p=a(l);if(p[0])return p[1]}throw Error(n)},Ke=(e,r,t,o,a)=>{let n=typeof e.types==="function"?e.types(o,r.value,a):e.types?.[o];if(!n||n==="ref")return Je(r,(i)=>Ge.select(t,i));let s=Je(r,()=>r.value);if(Array.isArray(n)){if(!n.includes(s))throw Error(`Argument ${o.toString()} must be one of [${n.join(", ")}]: ${s}`);return s}if(typeof n==="string"){if(n.endsWith("?")){let i=n.slice(0,-1);if(r.value==="null")return Ue.NavigateResult.ReplaceItem(null);if(r.value==="undefined")return Ue.NavigateResult.ReplaceItem(void 0);if(r.value==="")return"";n=i}switch(n){case"any":return s;case"array":return Y(s,r.quoted,t,null,(i)=>[Array.isArray(i),i],`Argument ${o.toString()} must be an array: ${s}`);case"object":return Y(s,r.quoted,t,null,(i)=>[typeof i==="object"&&i!==null,i],`Argument ${o.toString()} must be an object: ${s}`);case"number":return Y(s,r.quoted,t,(i)=>Number(i),(i)=>[!isNaN(i),i],`Argument ${o.toString()} must be a number: ${s}`);case"boolean":return Y(s,r.quoted,t,null,(i)=>{if([!0,"true","1",1,"yes","on"].includes(i))return[!0,!0];if([!1,"false","0",0,"no","off"].includes(i))return[!0,!1];if([null,"null","undefined",void 0,""].includes(i))return[!0,!1];if(Array.isArray(i))return[!0,i.length>0];return[!1,!1]},`Argument ${o.toString()} must be a boolean: ${s}`);case"string":return s.toString();default:throw Error(`Unknown type for argument ${o.toString()}: ${n}`)}}return n(s,t,o,r.quoted)},pe=(e,r)=>{let t=e[r];if(t===void 0)throw Error(`Unhandled field processor type: ${r}`);return typeof t==="function"?{options:{},fn:t}:{options:t,fn:t.fn}},He=(e)=>!e.quoted&&e.value.startsWith("."),Vt=(e)=>{let r={};for(let t of e){if(!He(t))continue;let o=t.value.indexOf("="),a=o>-1?t.value.slice(1,o):t.value.slice(1),n=o>-1?t.value.slice(o+1):"";if(n.length>=2){let s=n[0],i=n[n.length-1];if(s==='"'&&i==='"'||s==="'"&&i==="'")n=n.slice(1,-1)}if(!r[a])r[a]=[];r[a].push(n)}return r},Qe=(e,r,t)=>{let o=Bt.splitWithQuotes(e??""),a=Vt(o),n=o.filter((i)=>!He(i)),s=r.options.processArgs===!1?[]:n.map((i,l)=>Ke(r.options,i,t,l,n));return{rawArgs:n,parsedArgs:s,tags:a}},_=b(),Se=b(),qt=(e,r)=>r.keys!==void 0&&e.key.startsWith(".")&&r.keys[e.key.substring(1)]!==void 0,zt=async(e,r,t,o)=>{let{key:a,parent:n}=e,s=pe(o.keys,a.substring(1));if(s.options.processArgs!==!1&&(typeof s.options.types==="function"||s.options.types?.[0]!==void 0))e.value=Ke(s.options,{value:e.value,quoted:!1},t,0,[]);if(typeof e.value!=="string")await Be(e.value,{...o,root:{...t,parent:e.parent,parents:e.parents},filters:[...o.filters??[],...s.options.filters??[]]});let i=await s.fn({path:r,root:t,parent:n,key:a,options:o,value:e.value,args:[e.value],rawArgs:[],tags:{}});return i instanceof Se.NavigateResult?i:Se.NavigateResult.ReplaceParent(i)},Z=b(),eo=v(),Ye=(e)=>{let r=[],t=0;while(t<e.length)if(e[t]==="$"&&e[t+1]==="("&&(t===0||e[t-1]!=="\\")){let o=t;t+=2;let a=1;for(;t<e.length;t++)if(e[t]==="(")a++;else if(e[t]===")"){if(a--,a===0){r.push([o,t]);break}}if(a!==0)throw Error(`Unmatched opening $( at position ${o.toString()}`);t++}else t++;return r};class ce{value;constructor(e){this.value=e}}var Ze=async(e,r,t)=>{for(let o=r.length-1;o>=0;o--){let[a,n]=r[o],s=e.slice(a+2,n),i=await Ze(s,Ye(s),t);if(typeof i==="object")return i;let l=await t(i,e);if(l instanceof ce)return l.value;e=e.slice(0,a)+l+e.slice(n+1)}return e},ro=async(e,r)=>Ze(e,Ye(e),r),to=async(e,r,t,o)=>{let a=await(async()=>{let n=/([\w\d.-_/]+):(.+)/.exec(e);if(!n)return await eo.select(r,e);let[s,i,l]=n,p=pe(o.sources,i),f=Qe(l,p,r);return await p.fn({args:f.parsedArgs,rawArgs:f.rawArgs,tags:f.tags,key:i,options:o,root:r,path:t,value:null})})();if(a===null||a===void 0)return"";if(typeof a==="object")return new ce(a);return a},Xe=async(e,r,t,o)=>{let a=await ro(r,(n)=>to(n,t,e,o));if(a instanceof Z.NavigateResult)return a;if(a===r)return Z.NavigateResult.Explore();if(typeof a==="string"){let n=await Xe(e,a,t,o);if(n.action!==Z.NavigateAction.Explore)return n}return Z.NavigateResult.ReplaceItem(a)},Be=async(e,r)=>{return r??={},await _.navigate(e,async(t)=>{let o=[...t.path,t.key].join(".");if(r?.filters?.length&&r.filters.some((i)=>i.test(o)))return _.NavigateResult.NoExplore();let a=t.path.length===0,n=t.parents.length>0?t.parents.toReversed():[];if(a){if(n.length>0)throw Error("Root object should not have a parent");n=r?.root?.parents?[r.root.parent,...r.root.parents.toReversed()]:[]}let s={...e,...r.root,this:t.parent,parent:n.length>0?n[0]:null,parents:n};try{if(t.key.startsWith("$"))return _.NavigateResult.NoExplore();let i=_.NavigateResult.Explore();if(typeof t.value==="string")switch(i=await Xe(o,t.value,s,r),i.action){case _.NavigateAction.Explore:break;case _.NavigateAction.ReplaceItem:t.value=i.by;break;default:return i}if(qt(t,r))i=await zt(t,o,s,r);return i}catch(i){throw Error(`${i.message}
2
+ (${o})`)}}),e},me=(e,r)=>r?{fn:(t)=>e(...t.args),types:r}:(t)=>e(...t.args),oo=(e,r)=>Object.fromEntries(e.map((t)=>[t.name,me(t,r?.types?.[t.name])])),no=(e,r)=>Object.fromEntries((r?.keys??Object.keys(e)).map((t)=>[t,me(e[t],r?.types?.[t])]))});var X=R((Vo,ur)=>{var ao=Object.create,{getPrototypeOf:io,defineProperty:U,getOwnPropertyNames:rr,getOwnPropertyDescriptor:so}=Object,tr=Object.prototype.hasOwnProperty,M=(e,r,t)=>{t=e!=null?ao(io(e)):{};let o=r||!e||!e.__esModule?U(t,"default",{value:e,enumerable:!0}):t;for(let a of rr(e))if(!tr.call(o,a))U(o,a,{get:()=>e[a],enumerable:!0});return o},qe=new WeakMap,lo=(e)=>{var r=qe.get(e),t;if(r)return r;if(r=U({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")rr(e).map((o)=>!tr.call(r,o)&&U(r,o,{get:()=>e[o],enumerable:!(t=so(e,o))||t.enumerable}));return qe.set(e,r),r},uo=(e,r)=>{for(var t in r)U(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},or={};uo(or,{writeOutputs:()=>bo,writeOutput:()=>lr,writeFormat:()=>ir,locate:()=>ar,loadFormat:()=>mo,globMap:()=>wo,exists:()=>nr});ur.exports=lo(or);var ze=M(A("fs/promises")),nr=async(e)=>{try{return await ze.default.access(e,ze.default.constants.R_OK),!0}catch{return!1}},ye=M(A("path")),ar=async(e,r)=>{let t=!ye.default.isAbsolute(e)&&r?["",...r]:[""];for(let o of t){let a=ye.default.join(o,e);if(await nr(a))return ye.default.resolve(a)}throw Error(`File not found: "${e}"`)},fo=M(A("fs/promises")),po=M(A("path")),co=M(A("yaml")),mo=async(e,r)=>{let t=await ar(e,r?.dirs),o=await fo.default.readFile(t),a=po.default.dirname(t),n={"[.](yml|yaml)$":co.default.parse,"[.]json$":JSON.parse,...r?.parsers},s=Object.entries(n).find((i)=>t.match(i[0]));if(!s)throw Error(`Unhandled file type: ${e}`);return{content:s[1](o.toString()),fullPath:t,folderPath:a}},ge=M(A("fs/promises")),yo=M(A("yaml")),ir=async(e,r,t="text")=>{switch(t){case"yaml":await ge.default.writeFile(e,yo.default.stringify(r));break;case"json":await ge.default.writeFile(e,JSON.stringify(r));break;case"text":default:await ge.default.writeFile(e,r.toString())}},go=M(A("fs/promises")),wo=async(e,r)=>{if(typeof e==="string"&&!e.includes("*"))return await r.map(e,0,[]);let t=await Array.fromAsync(go.default.glob(e,{cwd:r.cwd})),o=r.filter?t.filter(r.filter):t;return await Promise.all(o.map(r.map))},sr=M(A("fs/promises")),er=M(A("path")),bo=async(e,r)=>{if(r?.targetDirectory&&r?.removeFirst)try{await sr.default.rm(r?.targetDirectory,{recursive:!0,force:!0})}catch(t){throw Error(`Failed to clean the output directory: ${t.message}`)}for(let t of e)await lr(t,r)},lr=async(e,r)=>{let t=er.default.join(r?.targetDirectory??".",e.name),o=er.default.dirname(t);if(r?.classes){if(e.class!==void 0&&!r.classes.includes(e.class))return;if(r.classRequired&&e.class===void 0)throw Error(`Output "${e.name}" is missing class field`)}if(r?.writing?.(e)===!1)return;try{await sr.default.mkdir(o,{recursive:!0})}catch(a){throw Error(`Failed to create target directory "${o}" for output "${t}": ${a.message}`)}try{await ir(t,e.value,e.type??"text")}catch(a){throw Error(`Failed to write output "${t}": ${a.message}`)}}});var I=R((qo,cr)=>{var{defineProperty:de,getOwnPropertyNames:vo,getOwnPropertyDescriptor:ho}=Object,Oo=Object.prototype.hasOwnProperty,fr=new WeakMap,ko=(e)=>{var r=fr.get(e),t;if(r)return r;if(r=de({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")vo(e).map((o)=>!Oo.call(r,o)&&de(r,o,{get:()=>e[o],enumerable:!(t=ho(e,o))||t.enumerable}));return fr.set(e,r),r},Po=(e,r)=>{for(var t in r)de(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},pr={};Po(pr,{mergeAll:()=>Ao,merge:()=>we});cr.exports=ko(pr);var we=(e,r,t)=>{for(let o of Object.keys(r)){if(e[o]===void 0)continue;let a=r[o],n=e[o];if(typeof n!==typeof a||Array.isArray(n)!==Array.isArray(a)){let i=t?.mismatch?.(o,n,a,e,r);if(i!==void 0){r[o]=i;continue}throw Error(`Type mismatch: ${o}`)}let s=t?.mode?.(o,n,a,e,r)??r[".merge"]??"merge";switch(s){case"source":r[o]=n;continue;case"target":continue;case"skip":delete r[o],delete e[o];continue;case"merge":break;default:throw Error(`Unknown merge mode: ${s}`)}if(typeof n==="object")if(Array.isArray(n))a.push(...n);else{if(t?.navigate?.(o,n,a,e,r)===!1)continue;we(n,a,t)}else{if(n===a)continue;let i=t?.conflict?.(o,n,a,e,r);r[o]=i===void 0?a:i}}for(let o of Object.keys(e))if(r[o]===void 0)r[o]=e[o]},Ao=(e,r)=>{let t={};for(let o of e.toReversed())we(o,t,r);return t}});var S=R((Sn,Yr)=>{var{defineProperty:he,getOwnPropertyNames:No,getOwnPropertyDescriptor:Co}=Object,$o=Object.prototype.hasOwnProperty,Kr=new WeakMap,jo=(e)=>{var r=Kr.get(e),t;if(r)return r;if(r=he({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")No(e).map((o)=>!$o.call(r,o)&&he(r,o,{get:()=>e[o],enumerable:!(t=Co(e,o))||t.enumerable}));return Kr.set(e,r),r},Ro=(e,r)=>{for(var t in r)he(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},Hr={};Ro(Hr,{tokenize:()=>To,snake:()=>Wo,pascal:()=>Qr,padBlock:()=>Io,changeCase:()=>_o,capital:()=>Eo,camel:()=>Do});Yr.exports=jo(Hr);var Qr=(e)=>e.replace(/((?:[_ ]+)\w|^\w)/g,(r,t)=>t.toUpperCase()).replace(/[_ ]/g,""),Eo=(e)=>e.replace(/((?:[ ]+)\w|^\w)/g,(r,t)=>t.toUpperCase()),Do=(e)=>Qr(e).replace(/((?:[ ]+\w)|^\w)/g,(r,t)=>t.toLowerCase()),Wo=(e,r)=>e.replace(/([a-z])([A-Z])/g,`$1${r}$2`).replace(/\s+/g,r),_o=(e,r)=>{switch(r){case"upper":return e.toUpperCase();case"lower":return e.toLowerCase();default:return e}},Io=(e,r,t=`
3
+ `,o=" ")=>{let a=o.repeat(r);return e.split(t).map((n)=>a+n).join(t)},To=(e,r,t=/\${([^}]+)}/g)=>{return e.replace(t,(o,a)=>r[a]??"")}});var q=R((Yn,qr)=>{var{defineProperty:ke,getOwnPropertyNames:Lo,getOwnPropertyDescriptor:Fo}=Object,Uo=Object.prototype.hasOwnProperty,Br=new WeakMap,Jo=(e)=>{var r=Br.get(e),t;if(r)return r;if(r=ke({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")Lo(e).map((o)=>!Uo.call(r,o)&&ke(r,o,{get:()=>e[o],enumerable:!(t=Fo(e,o))||t.enumerable}));return Br.set(e,r),r},So=(e,r)=>{for(var t in r)ke(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},Vr={};So(Vr,{toObjectWithKey:()=>Go,toObject:()=>Ko,toList:()=>xo});qr.exports=Jo(Vr);var xo=(e,r="name")=>Object.entries(e).map(([t,o])=>({[r]:t,...o})),Go=(e,r="name")=>Object.fromEntries(e.map((t)=>[t[r],t])),Ko=(e,r="name")=>Object.fromEntries(e.map((t)=>{let{[r]:o,...a}=t;return[o,a]}))});var wt=u(h(),1),te=u(X(),1),bt=u(I(),1);import dt from"path";var mr=u(b(),1),yr=(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 mr.NavigateResult.SkipSiblings()}});var gr=u(b(),1);import Mo from"path";var dr=(e)=>({load:async(r)=>{let t=r.options.globalContext;for(let{file:o}of Array.isArray(r.value)?r.value:[r.value]){if(!o)throw Error("File reference required");await e.load(o,t.file&&Mo.dirname(t.file))}return gr.NavigateResult.DeleteItem()}});var Pr=u(h(),1),ve=u(I(),1);var wr=u(v(),1),br=(e)=>{if(typeof e.value==="string")return e.parent;let r=e.value.model;if(!r)return e.parent;if(typeof r==="string")return wr.select(e.root,r);return r};var be=u(v(),1),vr=(e)=>{if(typeof e.value==="string")return be.select(e.root,e.value);if(Array.isArray(e.value))return e.value;let r=e.value;if(typeof r.from==="string")return be.select(e.root,r.from);return r.from};var hr=u(h(),1),Or=u(v(),1),kr=async(e,r)=>{let t=e.value;if(t.selector===void 0)return r;if(typeof t.selector!=="string"){let o=JSON.parse(JSON.stringify(t.selector));return await hr.processFields(o,{...e.options,root:{...e.root,result:r}}),o}return await Or.select({...e.root,result:r},t.selector)};var N=(e)=>globalThis.structuredClone!==void 0?structuredClone(e):JSON.parse(JSON.stringify(e));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!=="")},B={and:()=>"boolean",or:()=>"boolean",xor:()=>"boolean",true:()=>"boolean",false:()=>"boolean",lt:()=>"number",le:()=>"number",gt:()=>"number",ge:()=>"number"};var Ar=()=>({each:{filters:[/select|model/],fn:async(e)=>{let r=e.value;delete e.parent[e.key];let t=await vr(e),o=await br(e);if(!Array.isArray(t))throw Error('Key "each" requires a source list');if(o===void 0)throw Error('Key "each" must define a model');if(r.extend?.model)o=ve.mergeAll([r.model,...Array.isArray(r.extend.model)?r.extend.model:[r.extend.model]]);let a=[];for(let n=0;n<t.length;n++){let s=N(o);if(await Pr.processFields(s,{...e.options,root:{...e.root,index:n,item:t[n],instance:s}}),r.extend?.result){let i=r.extend.result;s=ve.mergeAll([s,...Array.isArray(i)?i:[i]])}a.push(await kr(e,s))}return a}}});var Mr=u(v(),1),Nr=()=>({concat:async(e)=>{let r=[];for(let t of Array.isArray(e.value)?e.value:[e.value])r.push(...await Mr.select(e.root,t));return r.filter((t)=>t!==void 0)}});var Cr=u(h(),1),$r=u(I(),1),jr=u(b(),1),Rr=u(v(),1);var Er=()=>({extends:async(e)=>{let r=async(t,o)=>{for(let a of Array.isArray(o)?o:[o]){let n=await Rr.select(e.root,a),s=N(n);if(s[e.key])await r(s,s[e.key]);await Cr.processFields(s,{...e.options}),$r.merge(s,t),delete t[e.key]}};return await r(e.parent,e.value),jr.NavigateResult.Explore()}});var Dr=u(h(),1),$=u(b(),1),Wr=(e)=>({skip:{types:{0:"boolean"},fn:(r)=>r.value?$.NavigateResult.DeleteParent():$.NavigateResult.DeleteItem()},metadata:({path:r,value:t})=>{return e.metadata(r,t),$.NavigateResult.DeleteItem()},if:{types:{0:"boolean"},fn:async(r)=>{let t=r.parent[".then"],o=r.parent[".else"];if(t!==void 0)delete r.parent[".then"];if(o!==void 0)delete r.parent[".else"];let a=r.value?t:o;if(a===void 0)return $.NavigateResult.DeleteItem();if(typeof a==="string")return(await Dr.processFields({value:a},{...r.options,root:{...r.root}})).value;return $.NavigateResult.ReplaceParent(a,!0)}},switch:(r)=>{let t=r.value;if(!t.cases)throw Error("Missing cases for switch");if(t.cases[t.from]!==void 0)return $.NavigateResult.ReplaceParent(t.cases[t.from],!0);if(t.default!==void 0)return $.NavigateResult.ReplaceParent(t.default,!0);return $.NavigateResult.DeleteParent()}});var _r=u(I(),1),Ir=u(v(),1),Tr=()=>({from:async({root:e,parent:r,value:t})=>{let o=await Ir.select(e,t);if(o===null||o===void 0)throw Error(`Unable to resolve reference: ${t}`);if(r.content){if(Array.isArray(r.content)&&Array.isArray(o))return[...o,...r.content];return _r.merge(o,r.content),r.content}return o}});var Fr=u(b(),1);import Lr from"node:vm";var Ur=(e)=>({modules:async(r)=>{for(let[t,o]of Object.entries(r.value)){let a=Lr.createContext({console,objector:e,document:r.root}),n=new Lr.SourceTextModule(o,{identifier:t,context:a});await n.link((s)=>{throw Error(`Module ${s} is not allowed`)}),await n.evaluate(),e.sources(Object.fromEntries(Object.entries(n.namespace).map(([s,i])=>[`${t}.${s}`,(l)=>i(l,...l.args)])))}return Fr.NavigateResult.DeleteItem()}});var D=u(X(),1);import Jr from"fs/promises";import J from"path";var Sr=(e)=>({include:async(r)=>{let{file:t}=r.options.globalContext;return await D.globMap(r.args[0],{cwd:J.dirname(t),filter:(o)=>J.basename(t)!==o,map:async(o)=>e.load(o,J.dirname(t),{parent:r.root})})},exists:async({args:[r]})=>await D.exists(r),file:async(r)=>await Jr.readFile(await D.locate(r.args[0],e.getIncludeDirectories())).then((t)=>t.toString()),scan:async(r)=>{let t=[],a=(()=>{let i=r.args[2]??["**/node_modules/**"],l=typeof i==="string"?i.split(",").map((p)=>p.trim()):i;if(!Array.isArray(l))throw Error("Scan exclusion must be a list");return l})(),{file:n}=r.options.globalContext,s=r.args[1]?await D.locate(r.args[1],e.getIncludeDirectories()):J.dirname(n);for await(let i of Jr.glob(r.args[0],{cwd:s,exclude:(l)=>a.some((p)=>J.matchesGlob(l,p))}))t.push(i);return t}});var xr=u(h(),1),Gr=()=>xr.makeFieldProcessorMap({env:(e)=>process.env[e]});var Zr=u(h(),1),d=u(S(),1);import Oe from"yaml";var V=(e,r=0,t)=>{let o=" ".repeat(r),a=" ".repeat(r+1);if(e===null||e===void 0)return"null";else if(typeof e==="boolean")return String(e);else if(typeof e==="number")return String(e);else if(typeof e==="string")return`"${e.replace(/\\/g,"\\\\").replace(/"/g,"\\\"").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t")}"`;else if(Array.isArray(e)){if(e.length===0)return"[]";return`[
4
4
  ${e.map((s)=>`${a}${V(s,r+1)},`).join(`
5
5
  `)}
6
- ${o}]`}else if(typeof e==="object"){let n=Object.entries(e).sort((i,u)=>t?.sortKeys?i[0].localeCompare(u[0]):0);if(n.length===0)return"{}";return`{
7
- ${n.map(([i,u])=>`${a}${i} = ${V(u,r+1,t)}`).join(`
6
+ ${o}]`}else if(typeof e==="object"){let n=Object.entries(e).sort((i,l)=>t?.sortKeys?i[0].localeCompare(l[0]):0);if(n.length===0)return"{}";return`{
7
+ ${n.map(([i,l])=>`${a}${i} = ${V(l,r+1,t)}`).join(`
8
8
  `)}
9
9
  ${o}}`}else return String(e)},x=(e)=>{if(!e)return e;return e.replaceAll("\\n",`
10
- `).replaceAll("\\$","$").replaceAll("\\t","\t")};var et=()=>({substring:{types:{0:"ref",1:"number",2:"number"},fn:(e)=>e.args[0].substring(e.args[1],e.args[2])},repeat:{types:{0:"ref",1:"number"},fn:({args:[e,r]})=>e.repeat(r)},uuid:(e)=>crypto.randomUUID(),pad:{types:{0:"ref",1:"number",2:"string"},fn:({args:[e,r],tags:t})=>{let o=t.join?.[0]??`
11
- `,a=t.padChar?.[0]??" ";return d.padBlock(e,r??2,o,a)}},formatAs:{types:{1:["json","yaml","terraform"]},fn:({args:[e,r],tags:t})=>{switch(r){case"json":return JSON.stringify(e,null,2);case"yaml":return q.default.stringify(e,null,{indent:2});case"terraform":{let o=!!(t?.sort?.length||t?.sortKeys?.length);return V(e,0,{sortKeys:o})}}throw Error("Unsupported format: "+String(r))}},...zr.makeFieldProcessorMap({pascal:d.pascal,camel:d.camel,capital:d.capital,fromYaml:q.default.parse,fromJson:JSON.parse,toYaml:(e,r)=>q.default.stringify(e,null,{indent:r??2}),toJson:(e,r)=>JSON.stringify(e,null,r!==0?r??2:void 0),concat:(...e)=>e.join(""),len:(e)=>e.length,reverse:(e)=>e.split("").reverse().join(""),trim:(e)=>e.trim(),ltrim:(e)=>e.trimStart(),rtrim:(e)=>e.trimEnd(),lower:(e)=>e.toLowerCase(),upper:(e)=>e.toUpperCase(),snake:(e,r)=>d.changeCase(d.snake(e,"_"),r),kebab:(e,r)=>d.changeCase(d.snake(e,"-"),r),encode:(e,r)=>Buffer.from(e).toString(r??"base64"),decode:(e,r)=>Buffer.from(e,r??"base64").toString()})});var nt=l(h(),1),ee=l(z(),1),Ne=l(v(),1),at=l(S(),1);var it=()=>({...nt.makeFieldProcessorMap({merge:(...e)=>e.flatMap((r)=>r)}),join:({args:[e],root:r,tags:t})=>{let o=t.key?.[0],a=t.separator?.[0]??t.sep?.[0],n=t.finalize?.length>0,s=x(a);if(typeof e==="string"){if(n&&e.length&&s)return e+s;return e}if(!Array.isArray(e))throw Error("Object is not a list");let i=((o?.length)?e.map((y)=>Ne.select({...r,...y},o)):e).join(s),u=t.pad?.[0]??"0",p=t.padChar?.[0]??" ",f=n&&i.length&&s?i+s:i;return u?at.padBlock(f,parseInt(u),`
12
- `,p):f},list:({args:e})=>ee.toList(e[0],e[1]),object:({args:e})=>ee.toObject(e[0],e[1]),range:({args:[e,r,t]})=>{let o=parseInt(e),a=parseInt(r),n=parseInt(t)||1;if(isNaN(o))throw Error("Invalid range: start value '"+String(e)+"' is not a number");if(isNaN(a))throw Error("Invalid range: end value '"+String(r)+"' is not a number");if(n===0)throw Error("Invalid range: step cannot be zero");if((a-o)/n<0)throw Error("Invalid range: step "+String(n)+" has wrong direction for range "+String(o)+" to "+String(a));return Array.from({length:Math.floor((a-o)/n)+1},(s,i)=>o+i*n)},filter:{types:(e,r,t)=>{switch(e){case 0:return"array";case 1:return Object.keys(N)}return B[t[1].value]?.(e-2,r,t.slice(2))},fn:({args:[e,r,t],root:o,tags:a})=>{if(e===null||e===void 0)throw Error("Filter source cannot be null or undefined");if(!Array.isArray(e))throw Error("Filter source must be an array");let n=a.key?.[0],s=N[r];if(n){let u=Array(e.length);for(let f=0;f<e.length;f++)try{u[f]=Ne.select({...o,...e[f]},n)}catch{u[f]=Symbol("invalid")}let p=[];for(let f=0;f<e.length;f++){let y=u[f];if(typeof y!=="symbol"&&t===void 0?s(y):s(y,t))p.push(e[f])}return p}let i=[];for(let u of e)if(t===void 0?s(u):s(u,t))i.push(u);return i}}});var st=l(h(),1),lt=l(z(),1),G=l(v(),1),ut=l(S(),1);var ft=()=>({each:{processArgs:!1,fn:async({rawArgs:[e,r,...t],root:o,options:a,tags:n})=>{let s=async(g)=>g.quoted?x(g.value):await G.select(o,g.value),i=await G.select(o,e.value),u=await s(r),p=n.key?.[0],f=Array.isArray(i)?i:lt.toList(i),y=[],$=await Promise.all(t.map(async(g)=>await s(g))),P={...o,item:void 0,index:0,params:$,instance:void 0,parent:o.this,tags:n},H={...a,root:P};for(let g=0;g<f.length;g++){let D=M(u),F={instance:D},ie=typeof u==="string"?F:D;if(P.item=f[g],P.index=g,P.instance=D,n?.root?.[0])Object.assign(P,await G.select(P,n.root[0]));if(await st.processFields(ie,H),p!==void 0)y.push(await G.select(F.instance,p));else y.push(F.instance)}if(n.join?.length){if(y.length===0)return"";let g=x(n.join[0]),D=n.pad?.[0]??"0",F=n.padChar?.[0]??" ",ie=n.finalize?.length&&g?g:"",$e=`${y.join(g)}${ie}`;return D?ut.padBlock($e,parseInt(D),`
13
- `,F):$e}return y}}});var pt=l(v(),1),K=async(e,r,t)=>e.rawArgs[r].quoted?e.rawArgs[r].value:await pt.select(e.root,e.rawArgs[r].value,{defaultValue:t}),ct=()=>({switch:{processArgs:!1,fn:async(e)=>{let r=await K(e,0,!1),t=await K(e,1);if(t[r]===void 0){if(e.rawArgs.length>2)return K(e,2);throw Error(`Unhandled switch case: ${r}`)}return t[r]}}});var mt=l(h(),1),yt=()=>mt.makeFieldProcessorMap({log:console.log});var gt=l(h(),1);var dt=()=>({if:{types:{0:"boolean"},fn:(e)=>e.args[0]?e.args[1]:e.args[2]},check:{types:{0:Object.keys(N)},fn:(e)=>N[e.args[0]](...e.args.slice(1))},...gt.makeFieldProcessorMap(N,{types:B})});var wt=l(b(),1);var bt=()=>({default:{processArgs:!1,fn:async(e)=>{for(let r=0;r<e.rawArgs.length;r++)if(e.rawArgs[r]?.value!==void 0){let o=await K(e,r,null);if(o!==null)return o}if(e.tags.nullable?.length)return wt.NavigateResult.DeleteItem();if(e.tags.fail?.length)throw Error(`No valid value found for default (${e.rawArgs.map((r)=>r.value).join(", ")})`);return""}}});var T=l(b(),1),vt=()=>({convert:({args:[e,r,t]})=>{switch(r){case"string":return String(e);case"number":{let o=Number(e);if(!isNaN(o))return T.NavigateResult.ReplaceItem(o);break}case"boolean":if(e==="true"||e===!0||e===1||e==="1"||e==="yes"||e==="on")return T.NavigateResult.ReplaceItem(!0);else if(e==="false"||e===!1||e===0||e==="0"||e==="no"||e==="off")return T.NavigateResult.ReplaceItem(!1);break;default:throw Error(`Unsupported type for convert: ${r}`)}if(t!==void 0)return T.NavigateResult.ReplaceItem(t);throw Error(`Failed to convert value to ${r}`)},isType:({args:[e,r]})=>{let o=(()=>{switch(r){case"string":return typeof e==="string";case"number":return typeof e==="number";case"boolean":return typeof e==="boolean";case"object":return e!==null&&typeof e==="object"&&!Array.isArray(e);case"array":return Array.isArray(e);case"null":return e===null;case"undefined":return e===void 0;case"function":return typeof e==="function";default:throw Error(`Unknown type for isType: ${r}`)}})();return T.NavigateResult.ReplaceItem(o)},typeOf:({args:[e]})=>{if(e===null)return"null";else if(Array.isArray(e))return"array";else return typeof e}});var ht=(e)=>e.keys(hr(e)).keys(Pr(e)).keys(Er()).keys(Gr()).keys(Wr()).keys(Fr()).keys(Jr(e)).keys(Hr(e)).sources(Qr(e)).sources(Zr()).sources(et()).sources(vt()).sources(it()).sources(ft()).sources(ct()).sources(yt()).sources(dt()).sources(bt());var re={};De(re,{writeOutputs:()=>m.writeOutputs,writeOutput:()=>m.writeOutput,writeFormat:()=>m.writeFormat,tokenize:()=>w.tokenize,toObjectWithKey:()=>L.toObjectWithKey,toObject:()=>L.toObject,toList:()=>L.toList,splitWithQuotes:()=>oe.splitWithQuotes,splitNested:()=>oe.splitNested,snake:()=>w.snake,select:()=>te.select,processFields:()=>c.processFields,pascal:()=>w.pascal,padBlock:()=>w.padBlock,navigate:()=>O.navigate,mergeAll:()=>R.mergeAll,merge:()=>R.merge,makeFieldProcessorMap:()=>c.makeFieldProcessorMap,makeFieldProcessorList:()=>c.makeFieldProcessorList,makeFieldProcessor:()=>c.makeFieldProcessor,locate:()=>m.locate,loadFormat:()=>m.loadFormat,globMap:()=>m.globMap,find:()=>O.find,exists:()=>m.exists,deepClone:()=>M,conditionPredicates:()=>N,changeCase:()=>w.changeCase,capital:()=>w.capital,camel:()=>w.camel,WriteOutputsOption:()=>m.WriteOutputsOption,WriteOutputOption:()=>m.WriteOutputOption,SelectOptions:()=>te.SelectOptions,ProcessFieldsOptions:()=>c.ProcessFieldsOptions,Output:()=>m.Output,Objector:()=>ne,NavigateResult:()=>O.NavigateResult,NavigateContext:()=>O.NavigateContext,NavigateCallback:()=>O.NavigateCallback,NavigateAction:()=>O.NavigateAction,MergeOptions:()=>R.MergeOptions,MergeMode:()=>R.MergeMode,LoadResult:()=>m.LoadResult,LoadOptions:()=>m.LoadOptions,FieldProcessorTypedFunc:()=>c.FieldProcessorTypedFunc,FieldProcessorTypeCheckers:()=>c.FieldProcessorTypeCheckers,FieldProcessorTypeChecker:()=>c.FieldProcessorTypeChecker,FieldProcessorOptions:()=>c.FieldProcessorOptions,FieldProcessorMap:()=>c.FieldProcessorMap,FieldProcessorFunc:()=>c.FieldProcessorFunc,FieldProcessor:()=>c.FieldProcessor,FieldContext:()=>c.FieldContext});var c=l(h(),1),m=l(X(),1),R=l(_(),1),O=l(b(),1),L=l(z(),1),te=l(v(),1),oe=l(Q(),1),w=l(S(),1);globalThis.homedev=re;class ne{includeDirectories=[];includes=[];outputs=[];vars={};cache={};fields={sources:{},keys:{}};objectMetadata={};constructor(){this.use(ht)}use(e){return e(this),this}includeDirectory(...e){return this.includeDirectories.push(...e),this}getIncludeDirectories(){return this.includeDirectories}include(...e){return this.includes.push(...e),this}keys(e){return Object.assign(this.fields.keys,{...this.fields.keys,...e}),this}sources(e){return Object.assign(this.fields.sources,{...this.fields.sources,...e}),this}variables(e){return this.vars={...this.vars,...e},this}getOutputs(){return this.outputs}output(e){return this.outputs.push(e),this}metadata(e,r){return this.objectMetadata[e]=r,this}getMetadata(e){return this.objectMetadata[e]}getAllMetadata(){return this.objectMetadata}filter(e){return this.fields.filters??=[],this.fields.filters?.push(e),this}async docIncludes(e,r){let t=[];if(e.content.includes)t.push(...e.content.includes),delete e.content.includes;t.push(...this.includes),this.includes.length=0;for(let o of t)kt.merge(await this.load(o,e.folderPath,{parent:e.content,...r},!0),e.content)}async loadObject(e,r,t){return await Ot.processFields(e,{...this.fields,globalContext:{file:t?.fullPath??"@internal"},root:{...this.fields.root,...this.vars,$document:{root:{content:e},fileName:t?.fileName??"@internal",folder:t?.folderPath??"@internal",fullPath:t?.fullPath??"@internal",...r}}}),e}async load(e,r,t,o){let a=r?[r]:[];a.push(...this.includeDirectories.map((f)=>Ce.default.isAbsolute(f)?f:Ce.default.join(r??process.cwd(),f)));let n=await ae.loadFormat(e,{dirs:a});if(!n.content)return null;let s=n.fullPath,i=this.cache[s]??n.content,u=M(i);n.content=u,await this.docIncludes(n,t);let p;if(o!==!0)p=await this.loadObject(n.content,t,{fileName:n.fullPath,folderPath:n.folderPath,fullPath:n.fullPath});else p=n.content;return this.cache[s]??=i,p}async writeOutputs(e){await ae.writeOutputs(this.getOutputs(),e)}}
10
+ `).replaceAll("\\$","$").replaceAll("\\t","\t")};var Xr=()=>({substring:{types:{0:"ref",1:"number",2:"number"},fn:(e)=>e.args[0].substring(e.args[1],e.args[2])},repeat:{types:{0:"ref",1:"number"},fn:({args:[e,r]})=>e.repeat(r)},uuid:(e)=>crypto.randomUUID(),pad:{types:{0:"ref",1:"number",2:"string"},fn:({args:[e,r],tags:t})=>{let o=t.join?.[0]??`
11
+ `,a=t.padChar?.[0]??" ";return d.padBlock(e,r??2,o,a)}},formatAs:{types:{1:["json","yaml","terraform"]},fn:({args:[e,r],tags:t})=>{switch(r){case"json":return JSON.stringify(e,null,2);case"yaml":return Oe.stringify(e,null,{indent:2});case"terraform":{let o=!!(t?.sort?.length||t?.sortKeys?.length);return V(e,0,{sortKeys:o})}}throw Error("Unsupported format: "+String(r))}},...Zr.makeFieldProcessorMap({pascal:d.pascal,camel:d.camel,capital:d.capital,fromYaml:Oe.parse,fromJson:JSON.parse,toYaml:(e,r)=>Oe.stringify(e,null,{indent:r??2}),toJson:(e,r)=>JSON.stringify(e,null,r!==0?r??2:void 0),concat:(...e)=>e.join(""),len:(e)=>e.length,reverse:(e)=>e.split("").reverse().join(""),trim:(e)=>e.trim(),ltrim:(e)=>e.trimStart(),rtrim:(e)=>e.trimEnd(),lower:(e)=>e.toLowerCase(),upper:(e)=>e.toUpperCase(),snake:(e,r)=>d.changeCase(d.snake(e,"_"),r),kebab:(e,r)=>d.changeCase(d.snake(e,"-"),r),encode:(e,r)=>Buffer.from(e).toString(r??"base64"),decode:(e,r)=>Buffer.from(e,r??"base64").toString()})});var zr=u(h(),1),z=u(q(),1),Pe=u(v(),1),et=u(S(),1);var rt=()=>({...zr.makeFieldProcessorMap({merge:(...e)=>e.flatMap((r)=>r)}),join:({args:[e],root:r,tags:t})=>{let o=t.key?.[0],a=t.separator?.[0]??t.sep?.[0],n=t.finalize?.length>0,s=x(a);if(typeof e==="string"){if(n&&e.length&&s)return e+s;return e}if(!Array.isArray(e))throw Error("Object is not a list");let i=((o?.length)?e.map((y)=>Pe.select({...r,...y},o)):e).join(s),l=t.pad?.[0]??"0",p=t.padChar?.[0]??" ",f=n&&i.length&&s?i+s:i;return l?et.padBlock(f,parseInt(l),`
12
+ `,p):f},list:({args:e})=>z.toList(e[0],e[1]),object:({args:e})=>z.toObject(e[0],e[1]),range:({args:[e,r,t]})=>{let o=parseInt(e),a=parseInt(r),n=parseInt(t)||1;if(isNaN(o))throw Error("Invalid range: start value '"+String(e)+"' is not a number");if(isNaN(a))throw Error("Invalid range: end value '"+String(r)+"' is not a number");if(n===0)throw Error("Invalid range: step cannot be zero");if((a-o)/n<0)throw Error("Invalid range: step "+String(n)+" has wrong direction for range "+String(o)+" to "+String(a));return Array.from({length:Math.floor((a-o)/n)+1},(s,i)=>o+i*n)},filter:{types:(e,r,t)=>{switch(e){case 0:return"array";case 1:return Object.keys(C)}return B[t[1].value]?.(e-2,r,t.slice(2))},fn:({args:[e,r,t],root:o,tags:a})=>{if(e===null||e===void 0)throw Error("Filter source cannot be null or undefined");if(!Array.isArray(e))throw Error("Filter source must be an array");let n=a.key?.[0],s=C[r];if(n){let l=Array(e.length);for(let f=0;f<e.length;f++)try{l[f]=Pe.select({...o,...e[f]},n)}catch{l[f]=Symbol("invalid")}let p=[];for(let f=0;f<e.length;f++){let y=l[f];if(typeof y!=="symbol"&&t===void 0?s(y):s(y,t))p.push(e[f])}return p}let i=[];for(let l of e)if(t===void 0?s(l):s(l,t))i.push(l);return i}}});var tt=u(h(),1),ot=u(q(),1),G=u(v(),1),nt=u(S(),1);var at=()=>({each:{processArgs:!1,fn:async({rawArgs:[e,r,...t],root:o,options:a,tags:n})=>{let s=async(g)=>g.quoted?x(g.value):await G.select(o,g.value),i=await G.select(o,e.value),l=await s(r),p=n.key?.[0],f=Array.isArray(i)?i:ot.toList(i),y=[],j=await Promise.all(t.map(async(g)=>await s(g))),P={...o,item:void 0,index:0,params:j,instance:void 0,parent:o.this,tags:n},H={...a,root:P};for(let g=0;g<f.length;g++){let W=N(l),F={instance:W},oe=typeof l==="string"?F:W;if(P.item=f[g],P.index=g,P.instance=W,n?.root?.[0])Object.assign(P,await G.select(P,n.root[0]));if(await tt.processFields(oe,H),p!==void 0)y.push(await G.select(F.instance,p));else y.push(F.instance)}if(n.join?.length){if(y.length===0)return"";let g=x(n.join[0]),W=n.pad?.[0]??"0",F=n.padChar?.[0]??" ",oe=n.finalize?.length&&g?g:"",Ne=`${y.join(g)}${oe}`;return W?nt.padBlock(Ne,parseInt(W),`
13
+ `,F):Ne}return y}}});var it=u(v(),1),K=async(e,r,t)=>e.rawArgs[r].quoted?e.rawArgs[r].value:await it.select(e.root,e.rawArgs[r].value,{defaultValue:t}),st=()=>({switch:{processArgs:!1,fn:async(e)=>{let r=await K(e,0,!1),t=await K(e,1);if(t[r]===void 0){if(e.rawArgs.length>2)return K(e,2);throw Error(`Unhandled switch case: ${r}`)}return t[r]}}});var lt=u(h(),1),ut=()=>lt.makeFieldProcessorMap({log:console.log});var ft=u(h(),1);var pt=()=>({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))},...ft.makeFieldProcessorMap(C,{types:B})});var ct=u(b(),1);var mt=()=>({default:{processArgs:!1,fn:async(e)=>{for(let r=0;r<e.rawArgs.length;r++)if(e.rawArgs[r]?.value!==void 0){let o=await K(e,r,null);if(o!==null)return o}if(e.tags.nullable?.length)return ct.NavigateResult.DeleteItem();if(e.tags.fail?.length)throw Error(`No valid value found for default (${e.rawArgs.map((r)=>r.value).join(", ")})`);return""}}});var T=u(b(),1),yt=()=>({convert:({args:[e,r,t]})=>{switch(r){case"string":return String(e);case"number":{let o=Number(e);if(!isNaN(o))return T.NavigateResult.ReplaceItem(o);break}case"boolean":if(e==="true"||e===!0||e===1||e==="1"||e==="yes"||e==="on")return T.NavigateResult.ReplaceItem(!0);else if(e==="false"||e===!1||e===0||e==="0"||e==="no"||e==="off")return T.NavigateResult.ReplaceItem(!1);break;default:throw Error(`Unsupported type for convert: ${r}`)}if(t!==void 0)return T.NavigateResult.ReplaceItem(t);throw Error(`Failed to convert value to ${r}`)},isType:({args:[e,r]})=>{let o=(()=>{switch(r){case"string":return typeof e==="string";case"number":return typeof e==="number";case"boolean":return typeof e==="boolean";case"object":return e!==null&&typeof e==="object"&&!Array.isArray(e);case"array":return Array.isArray(e);case"null":return e===null;case"undefined":return e===void 0;case"function":return typeof e==="function";default:throw Error(`Unknown type for isType: ${r}`)}})();return T.NavigateResult.ReplaceItem(o)},typeOf:({args:[e]})=>{if(e===null)return"null";else if(Array.isArray(e))return"array";else return typeof e}});var gt=(e)=>e.keys(yr(e)).keys(dr(e)).keys(Ar()).keys(Tr()).keys(Nr()).keys(Er()).keys(Wr(e)).keys(Ur(e)).sources(Sr(e)).sources(Gr()).sources(Xr()).sources(yt()).sources(rt()).sources(at()).sources(st()).sources(ut()).sources(pt()).sources(mt());var Ae={};Pt(Ae,{writeOutputs:()=>m.writeOutputs,writeOutput:()=>m.writeOutput,writeFormat:()=>m.writeFormat,tokenize:()=>w.tokenize,toObjectWithKey:()=>L.toObjectWithKey,toObject:()=>L.toObject,toList:()=>L.toList,splitWithQuotes:()=>re.splitWithQuotes,splitNested:()=>re.splitNested,snake:()=>w.snake,select:()=>ee.select,processFields:()=>c.processFields,pascal:()=>w.pascal,padBlock:()=>w.padBlock,navigate:()=>O.navigate,mergeAll:()=>E.mergeAll,merge:()=>E.merge,makeFieldProcessorMap:()=>c.makeFieldProcessorMap,makeFieldProcessorList:()=>c.makeFieldProcessorList,makeFieldProcessor:()=>c.makeFieldProcessor,locate:()=>m.locate,loadFormat:()=>m.loadFormat,globMap:()=>m.globMap,find:()=>O.find,exists:()=>m.exists,deepClone:()=>N,conditionPredicates:()=>C,changeCase:()=>w.changeCase,capital:()=>w.capital,camel:()=>w.camel,WriteOutputsOption:()=>m.WriteOutputsOption,WriteOutputOption:()=>m.WriteOutputOption,SelectOptions:()=>ee.SelectOptions,ProcessFieldsOptions:()=>c.ProcessFieldsOptions,Output:()=>m.Output,Objector:()=>Me,NavigateResult:()=>O.NavigateResult,NavigateContext:()=>O.NavigateContext,NavigateCallback:()=>O.NavigateCallback,NavigateAction:()=>O.NavigateAction,MergeOptions:()=>E.MergeOptions,MergeMode:()=>E.MergeMode,LoadResult:()=>m.LoadResult,LoadOptions:()=>m.LoadOptions,FieldProcessorTypedFunc:()=>c.FieldProcessorTypedFunc,FieldProcessorTypeCheckers:()=>c.FieldProcessorTypeCheckers,FieldProcessorTypeChecker:()=>c.FieldProcessorTypeChecker,FieldProcessorOptions:()=>c.FieldProcessorOptions,FieldProcessorMap:()=>c.FieldProcessorMap,FieldProcessorFunc:()=>c.FieldProcessorFunc,FieldProcessor:()=>c.FieldProcessor,FieldContext:()=>c.FieldContext});var c=u(h(),1),m=u(X(),1),E=u(I(),1),O=u(b(),1),L=u(q(),1),ee=u(v(),1),re=u(Q(),1),w=u(S(),1);var Ja=Ae;class Me{includeDirectories=[];includes=[];outputs=[];vars={};cache={};fields={sources:{},keys:{}};objectMetadata={};constructor(){this.use(gt)}use(e){return e(this),this}includeDirectory(...e){return this.includeDirectories.push(...e),this}getIncludeDirectories(){return this.includeDirectories}include(...e){return this.includes.push(...e),this}keys(e){return Object.assign(this.fields.keys,{...this.fields.keys,...e}),this}sources(e){return Object.assign(this.fields.sources,{...this.fields.sources,...e}),this}variables(e){return this.vars={...this.vars,...e},this}getOutputs(){return this.outputs}output(e){return this.outputs.push(e),this}metadata(e,r){return this.objectMetadata[e]=r,this}getMetadata(e){return this.objectMetadata[e]}getAllMetadata(){return this.objectMetadata}filter(e){return this.fields.filters??=[],this.fields.filters?.push(e),this}async docIncludes(e,r){let t=[];if(e.content.includes)t.push(...e.content.includes),delete e.content.includes;t.push(...this.includes),this.includes.length=0;for(let o of t)bt.merge(await this.load(o,e.folderPath,{parent:e.content,...r},!0),e.content)}async loadObject(e,r,t){return await wt.processFields(e,{...this.fields,globalContext:{file:t?.fullPath??"@internal"},root:{...this.fields.root,...this.vars,$document:{root:{content:e},fileName:t?.fileName??"@internal",folder:t?.folderPath??"@internal",fullPath:t?.fullPath??"@internal",...r}}}),e}async load(e,r,t,o){let a=r?[r]:[];a.push(...this.includeDirectories.map((f)=>dt.isAbsolute(f)?f:dt.join(r??process.cwd(),f)));let n=await te.loadFormat(e,{dirs:a});if(!n.content)return null;let s=n.fullPath,i=this.cache[s]??n.content,l=N(i);n.content=l,await this.docIncludes(n,t);let p;if(o!==!0)p=await this.loadObject(n.content,t,{fileName:n.fullPath,folderPath:n.folderPath,fullPath:n.fullPath});else p=n.content;return this.cache[s]??=i,p}async writeOutputs(e){await te.writeOutputs(this.getOutputs(),e)}}export{Ja as default,Me as Objector};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@homedev/objector",
3
- "version": "1.2.31",
3
+ "version": "1.2.32",
4
4
  "description": "object extensions for YAML/JSON",
5
5
  "author": "julzor",
6
6
  "license": "ISC",