@homedev/objector 1.2.31 → 1.2.33

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,63 +14,150 @@ 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
+
73
+ /**
74
+ * @public
75
+ */
76
+ declare const importGlob: (patterns: string[], options?: ImportOptions) => Promise<any[]>;
77
+
78
+ /**
79
+ * @public
80
+ */
81
+ declare const importList: (modules: string[], options?: ImportOptions) => Promise<any[]>;
82
+
83
+ /**
84
+ * @public
85
+ */
86
+ declare interface ImportOptions {
87
+ cwd?: string;
88
+ resolveDefault?: boolean | 'only';
89
+ filter?: (name: string) => boolean | undefined;
90
+ fail?: (name: string, error: any) => boolean | undefined;
91
+ map?: (module: any, name: string) => any;
92
+ }
93
+
61
94
  declare namespace libs {
62
95
  export {
96
+ conditionPredicates,
97
+ deepClone,
63
98
  FieldContext,
64
- FieldProcessorMap,
65
- makeFieldProcessorMap,
66
99
  FieldProcessor,
67
100
  FieldProcessorFunc,
101
+ FieldProcessorMap,
68
102
  FieldProcessorOptions,
69
103
  FieldProcessorTypeChecker,
70
104
  FieldProcessorTypeCheckers,
71
105
  FieldProcessorTypedFunc,
72
- ProcessFieldsOptions,
73
106
  makeFieldProcessor,
74
107
  makeFieldProcessorList,
108
+ makeFieldProcessorMap,
75
109
  processFields,
76
- LoadOptions,
77
- LoadResult,
78
- Output,
79
- WriteOutputOption,
80
- WriteOutputsOption,
110
+ ProcessFieldsOptions,
81
111
  exists,
82
112
  globMap,
113
+ importGlob,
114
+ importList,
115
+ ImportOptions,
83
116
  loadFormat,
117
+ LoadOptions,
118
+ LoadResult,
84
119
  locate,
120
+ Output,
85
121
  writeFormat,
86
122
  writeOutput,
123
+ WriteOutputOption,
87
124
  writeOutputs,
88
- MergeMode,
89
- MergeOptions,
125
+ WriteOutputsOption,
90
126
  merge,
91
127
  mergeAll,
128
+ MergeMode,
129
+ MergeOptions,
130
+ find,
131
+ navigate,
92
132
  NavigateAction,
93
133
  NavigateCallback,
94
134
  NavigateContext,
95
- navigate,
96
135
  NavigateResult,
97
- find,
98
136
  toList,
99
137
  toObject,
100
138
  toObjectWithKey,
101
- SelectOptions,
102
139
  select,
140
+ SelectOptions,
103
141
  splitNested,
104
142
  splitWithQuotes,
105
143
  camel,
106
144
  capital,
107
- pascal,
108
- snake,
109
145
  changeCase,
110
146
  padBlock,
111
- tokenize,
112
- deepClone,
113
- conditionPredicates,
114
- Objector
147
+ pascal,
148
+ snake,
149
+ tokenize
115
150
  }
116
151
  }
117
- export { libs }
152
+ export default libs;
153
+
154
+ /**
155
+ * @public
156
+ * @param fileName
157
+ * @param options
158
+ * @returns
159
+ */
160
+ declare const loadFormat: <T = any>(fileName: string, options?: LoadOptions) => Promise<LoadResult<T>>;
118
161
 
119
162
  declare interface LoadObjectOptions {
120
163
  fileName: string;
@@ -122,6 +165,119 @@ declare interface LoadObjectOptions {
122
165
  folderPath: string;
123
166
  }
124
167
 
168
+ /**
169
+ * @public
170
+ */
171
+ declare interface LoadOptions {
172
+ dirs?: string[];
173
+ parsers?: Record<string, (data: string) => any>;
174
+ }
175
+
176
+ declare interface LoadResult<T> {
177
+ fullPath: string;
178
+ folderPath: string;
179
+ content: T;
180
+ }
181
+
182
+ declare const locate: (fileName: string, dirs?: string[]) => Promise<string>;
183
+
184
+ declare const makeFieldProcessor: (fn: SourceFunc, types?: FieldProcessorTypeChecker) => FieldProcessorTypedFunc;
185
+
186
+ declare const makeFieldProcessorList: <T = unknown>(source: SourceFunc[], options?: {
187
+ types?: FieldProcessorTypeCheckers<T>;
188
+ }) => FieldProcessorMap;
189
+
190
+ declare const makeFieldProcessorMap: <T = unknown>(source: Record<keyof T, SourceFunc>, options?: {
191
+ types?: FieldProcessorTypeCheckers<T>;
192
+ keys?: (keyof T)[];
193
+ }) => FieldProcessorMap;
194
+
195
+ /**
196
+ * @public
197
+ * @param source
198
+ * @param target
199
+ * @param options
200
+ */
201
+ declare const merge: (source: any, target: any, options?: MergeOptions) => void;
202
+
203
+ /**
204
+ * @public
205
+ * @param elements
206
+ * @param options
207
+ */
208
+ declare const mergeAll: (elements: any[], options?: MergeOptions) => any;
209
+
210
+ /**
211
+ * @public
212
+ */
213
+ declare type MergeMode = 'merge' | 'source' | 'target' | 'skip';
214
+
215
+ /**
216
+ * @public
217
+ */
218
+ declare interface MergeOptions {
219
+ conflict?: (key: string, source: any, target: any, sourceContainer: any, targetContainer: any) => any;
220
+ mismatch?: (key: string, source: any, target: any, sourceContainer: any, targetContainer: any) => any;
221
+ navigate?: (key: string, source: any, target: any, sourceContainer: any, targetContainer: any) => boolean | undefined;
222
+ mode?: (key: string, source: any, target: any, sourceContainer: any, targetContainer: any) => MergeMode | void;
223
+ }
224
+
225
+ /**
226
+ * @public
227
+ * @param o
228
+ * @param cb
229
+ */
230
+ declare const navigate: (o: any, cb: NavigateCallback) => Promise<void>;
231
+
232
+ /**
233
+ * @public
234
+ */
235
+ declare enum NavigateAction {
236
+ Explore = 0,
237
+ SkipSiblings = 1,
238
+ NoExplore = 2,
239
+ ReplaceParent = 3,
240
+ DeleteParent = 4,
241
+ MergeParent = 5,
242
+ ReplaceItem = 6,
243
+ DeleteItem = 7
244
+ }
245
+
246
+ /**
247
+ * @public
248
+ */
249
+ declare type NavigateCallback = (context: NavigateContext) => Promise<NavigateResult> | NavigateResult;
250
+
251
+ /**
252
+ * @public
253
+ */
254
+ declare interface NavigateContext {
255
+ key: string;
256
+ value: any;
257
+ path: string[];
258
+ parent: any;
259
+ parents: any[];
260
+ }
261
+
262
+ /**
263
+ * @public
264
+ */
265
+ declare class NavigateResult {
266
+ readonly action: NavigateAction;
267
+ by?: any | undefined;
268
+ skipSibilings?: boolean | undefined;
269
+ reexplore?: boolean | undefined;
270
+ constructor(action: NavigateAction, by?: any | undefined, skipSibilings?: boolean | undefined, reexplore?: boolean | undefined);
271
+ static ReplaceParent(by: any, reexplore?: boolean): NavigateResult;
272
+ static SkipSiblings(): NavigateResult;
273
+ static Explore(): NavigateResult;
274
+ static NoExplore(): NavigateResult;
275
+ static DeleteParent(): NavigateResult;
276
+ static MergeParent(by: any): NavigateResult;
277
+ static ReplaceItem(by: any, skipSiblings?: boolean): NavigateResult;
278
+ static DeleteItem(skipSiblings?: boolean): NavigateResult;
279
+ }
280
+
125
281
  /**
126
282
  * @public
127
283
  */
@@ -153,7 +309,109 @@ export declare class Objector {
153
309
  writeOutputs(options?: WriteOutputsOption): Promise<void>;
154
310
  }
155
311
 
312
+ declare interface Output {
313
+ name: string;
314
+ type?: 'json' | 'yaml' | 'text';
315
+ value: any;
316
+ class?: string;
317
+ }
318
+
319
+ declare const padBlock: (str: string, indent: number, separator?: string, padder?: string) => string;
320
+
321
+ declare const pascal: (v: string) => string;
322
+
323
+ /**
324
+ * @public
325
+ * @param obj
326
+ * @param options
327
+ * @returns
328
+ */
329
+ declare const processFields: (obj: any, options?: ProcessFieldsOptions) => Promise<any>;
330
+
331
+ declare interface ProcessFieldsOptions {
332
+ sources?: FieldProcessorMap;
333
+ keys?: FieldProcessorMap;
334
+ filters?: RegExp[];
335
+ root?: Record<any, any>;
336
+ globalContext?: any;
337
+ }
338
+
339
+ /**
340
+ * @public
341
+ * @param from
342
+ * @param path
343
+ * @param set
344
+ * @returns
345
+ */
346
+ declare const select: <T = any>(from: any, path: string, options?: SelectOptions) => T | undefined;
347
+
348
+ declare interface SelectOptions {
349
+ set?: any;
350
+ key?: string;
351
+ separator?: string;
352
+ defaultValue?: any;
353
+ optional?: boolean;
354
+ }
355
+
356
+ declare const snake: (v: string, separator: string) => string;
357
+
358
+ declare type SourceFunc = (...args: any[]) => any;
359
+
360
+ declare const splitNested: (str: string, separator: string, open?: string, close?: string) => string[];
361
+
362
+ /**
363
+ * Splits a string by a separator while respecting quoted values.
364
+ * Quoted values can contain the separator without being split.
365
+ * Supports both single (') and double (") quotes.
366
+ *
367
+ * @param input - The string to split
368
+ * @param separator - Single or multi-character separator (default: ',')
369
+ * @returns Array of objects with value and quoted status
370
+ *
371
+ * @example
372
+ * splitWithQuotes('hello, "world", test')
373
+ * // Returns: [
374
+ * // { value: 'hello', quoted: false },
375
+ * // { value: 'world', quoted: true },
376
+ * // { value: 'test', quoted: false }
377
+ * // ]
378
+ *
379
+ * @example
380
+ * splitWithQuotes('a:: "b:: c":: d', '::')
381
+ * // Returns: [
382
+ * // { value: 'a', quoted: false },
383
+ * // { value: 'b:: c', quoted: true },
384
+ * // { value: 'd', quoted: false }
385
+ * // ]
386
+ */
387
+ declare const splitWithQuotes: (input: string, separator?: string) => {
388
+ value: string;
389
+ quoted: boolean;
390
+ }[];
391
+
392
+ declare const tokenize: (str: string, from: any, tokenizer?: RegExp) => string;
393
+
394
+ declare const toList: <T>(from: any, key?: string) => T[];
395
+
396
+ declare const toObject: <T>(from: any[], key?: string) => T;
397
+
398
+ declare const toObjectWithKey: <T>(from: any[], key?: string) => T;
399
+
400
+ declare const writeFormat: (filePath: string, content: any, format?: "yaml" | "json" | "text") => Promise<void>;
401
+
402
+ declare const writeOutput: (o: Output, options?: WriteOutputOption) => Promise<void>;
403
+
404
+ declare interface WriteOutputOption {
405
+ targetDirectory?: string;
406
+ writing?: (output: Output) => boolean | undefined | void;
407
+ classes?: string[];
408
+ classRequired?: boolean;
409
+ }
410
+
411
+ declare const writeOutputs: (outputs: Output[], options?: WriteOutputsOption) => Promise<void>;
412
+
413
+ declare interface WriteOutputsOption extends WriteOutputOption {
414
+ removeFirst?: boolean;
415
+ }
416
+
156
417
  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
+ var at=Object.create;var{getPrototypeOf:it,defineProperty:L,getOwnPropertyNames:ee}=Object;var re=Object.prototype.hasOwnProperty,u=(e,r,t)=>{for(let o of ee(r))if(!re.call(e,o)&&o!=="default")L(e,o,{get:()=>r[o],enumerable:!0});if(t){for(let o of ee(r))if(!re.call(t,o)&&o!=="default")L(t,o,{get:()=>r[o],enumerable:!0});return t}},p=(e,r,t)=>{t=e!=null?at(it(e)):{};let o=r||!e||!e.__esModule?L(t,"default",{value:e,enumerable:!0}):t;for(let a of ee(e))if(!re.call(o,a))L(o,a,{get:()=>e[a],enumerable:!0});return o};var C=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var I=(e,r)=>{for(var t in r)L(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})};var K=C((po,Ae)=>{var{defineProperty:te,getOwnPropertyNames:st,getOwnPropertyDescriptor:lt}=Object,ut=Object.prototype.hasOwnProperty,he=new WeakMap,ft=(e)=>{var r=he.get(e),t;if(r)return r;if(r=te({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")st(e).map((o)=>!ut.call(r,o)&&te(r,o,{get:()=>e[o],enumerable:!(t=lt(e,o))||t.enumerable}));return he.set(e,r),r},pt=(e,r)=>{for(var t in r)te(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},ke={};pt(ke,{splitWithQuotes:()=>ct,splitNested:()=>mt});Ae.exports=ft(ke);var mt=(e,r,t="(",o=")")=>{let a=0,n="",s=[];for(let i of e){if(n+=i,i===t)a++;if(i===o)a--;if(a===0&&i===r)s.push(n.slice(0,-1)),n=""}if(n)s.push(n);return s},ct=(e,r=",")=>{let t=[],o=e.length,a=r.length,n=0,s=(i)=>{if(i+a>o)return!1;for(let f=0;f<a;f++)if(e[i+f]!==r[f])return!1;return!0};while(n<o){while(n<o&&e[n]===" ")n++;if(n>=o)break;let i="",f=e[n]==='"'||e[n]==="'";if(f){let c=e[n++];while(n<o&&e[n]!==c)i+=e[n++];if(n<o)n++}else{while(n<o&&!s(n)){let c=e[n];if(c==='"'||c==="'"){i+=c,n++;while(n<o&&e[n]!==c)i+=e[n++];if(n<o)i+=e[n++]}else i+=e[n++]}i=i.trim()}if(i)t.push({value:i,quoted:f});if(s(n))n+=a}return t}});var w=C((mo,Ne)=>{var{defineProperty:oe,getOwnPropertyNames:yt,getOwnPropertyDescriptor:gt}=Object,dt=Object.prototype.hasOwnProperty,Oe=new WeakMap,wt=(e)=>{var r=Oe.get(e),t;if(r)return r;if(r=oe({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")yt(e).map((o)=>!dt.call(r,o)&&oe(r,o,{get:()=>e[o],enumerable:!(t=gt(e,o))||t.enumerable}));return Oe.set(e,r),r},bt=(e,r)=>{for(var t in r)oe(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},Me={};bt(Me,{navigate:()=>$e,find:()=>vt,NavigateResult:()=>h,NavigateAction:()=>Pe});Ne.exports=wt(Me);var Pe;((e)=>{e[e.Explore=0]="Explore",e[e.SkipSiblings=1]="SkipSiblings",e[e.NoExplore=2]="NoExplore",e[e.ReplaceParent=3]="ReplaceParent",e[e.DeleteParent=4]="DeleteParent",e[e.MergeParent=5]="MergeParent",e[e.ReplaceItem=6]="ReplaceItem",e[e.DeleteItem=7]="DeleteItem"})(Pe||={});class h{action;by;skipSibilings;reexplore;constructor(e,r,t,o){this.action=e,this.by=r,this.skipSibilings=t,this.reexplore=o}static ReplaceParent(e,r){return new h(3,e,void 0,r)}static SkipSiblings(){return new h(1)}static Explore(){return new h(0)}static NoExplore(){return new h(2)}static DeleteParent(){return new h(4)}static MergeParent(e){return new h(5,e)}static ReplaceItem(e,r){return new h(6,e,r)}static DeleteItem(e){return new h(7,void 0,e)}}var $e=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:[]})},vt=async(e,r)=>{let t=[];return await $e(e,(o)=>{if(r([...o.path,o.key].join("."),o.value))t.push(o.value);return h.Explore()}),t}});var b=C((co,je)=>{var{defineProperty:ae,getOwnPropertyNames:ht,getOwnPropertyDescriptor:kt}=Object,At=Object.prototype.hasOwnProperty,Ce=new WeakMap,Ot=(e)=>{var r=Ce.get(e),t;if(r)return r;if(r=ae({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")ht(e).map((o)=>!At.call(r,o)&&ae(r,o,{get:()=>e[o],enumerable:!(t=kt(e,o))||t.enumerable}));return Ce.set(e,r),r},Mt=(e,r)=>{for(var t in r)ae(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},Re={};Mt(Re,{select:()=>ie});je.exports=Ot(Re);var Pt=K(),ne=(e,r,t,o)=>{if(e.startsWith("{")){let a=e.substring(1,e.length-1);return ie(r,a,t).toString()}return o?e:void 0},$t=(e,r,t,o)=>{let a=ne(r,t,o);if(a)return ie(e,a,o);let n=/^\[([^=\]]*)([=]*)([^\]]*)\]$/.exec(r);if(n){let[i,f,c,m]=n,y=ne(f.trim(),t,o,!0),$=ne(m.trim(),t,o,!0);if(Array.isArray(e))switch(c){case"==":case"=":return e.find((O)=>O[y]==$)}}let s=/^([^[\]]*)\[([^\]]*)]/.exec(r);if(s)return e[s[1]][s[2]];return e[r]},ie=(e,r,t)=>{let o=void 0,a=void 0;r??="";let n=(m)=>m?.endsWith("?")?[m.substring(0,m.length-1),!0]:[m,!1],s=(m,y)=>{let[$,O]=n(y.pop());if($){let G=$t(m,$,e,t);if(G===void 0){if(O||t?.defaultValue!==void 0||t?.optional)return;throw Error(`Unknown path element: "${$}" in "${r}"`)}return o=m,a=$,s(G,y)}if(t?.set&&a)o[a]=t?.set;return m},i=Pt.splitNested(r,t?.separator??".","{","}"),f=i.length>0&&i[i.length-1].startsWith("?=")?i.pop()?.substring(2):void 0;i.reverse();let c=s(e,i);if(c===void 0)return f??t?.defaultValue;return c}});var v=C((yo,Ke)=>{var{defineProperty:se,getOwnPropertyNames:Nt,getOwnPropertyDescriptor:Ct}=Object,Rt=Object.prototype.hasOwnProperty,Ee=new WeakMap,jt=(e)=>{var r=Ee.get(e),t;if(r)return r;if(r=se({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")Nt(e).map((o)=>!Rt.call(r,o)&&se(r,o,{get:()=>e[o],enumerable:!(t=Ct(e,o))||t.enumerable}));return Ee.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})},We={};Et(We,{processFields:()=>Ge,makeFieldProcessorMap:()=>xt,makeFieldProcessorList:()=>Jt,makeFieldProcessor:()=>fe,getProcessor:()=>le,getArgs:()=>Je});Ke.exports=jt(We);var Dt=K(),De=w(),Te=b(),Le=(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 f=Te.select(t,e),c=a(f);if(c[0])return c[1]}throw Error(n)},_e=(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 Le(r,(i)=>Te.select(t,i));let s=Le(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 De.NavigateResult.ReplaceItem(null);if(r.value==="undefined")return De.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)},le=(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}},Ue=(e)=>!e.quoted&&e.value.startsWith("."),Lt=(e)=>{let r={};for(let t of e){if(!Ue(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},Je=(e,r,t)=>{let o=Dt.splitWithQuotes(e??""),a=Lt(o),n=o.filter((i)=>!Ue(i)),s=r.options.processArgs===!1?[]:n.map((i,f)=>_e(r.options,i,t,f,n));return{rawArgs:n,parsedArgs:s,tags:a}},R=w(),Ie=w(),It=(e,r)=>r.keys!==void 0&&e.key.startsWith(".")&&r.keys[e.key.substring(1)]!==void 0,Wt=async(e,r,t,o)=>{let{key:a,parent:n}=e,s=le(o.keys,a.substring(1));if(s.options.processArgs!==!1&&(typeof s.options.types==="function"||s.options.types?.[0]!==void 0))e.value=_e(s.options,{value:e.value,quoted:!1},t,0,[]);if(typeof e.value!=="string")await Ge(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 Ie.NavigateResult?i:Ie.NavigateResult.ReplaceParent(i)},H=w(),Tt=b(),xe=(e)=>{let r=[],t=0;while(t<e.length)if(e[t]==="$"&&e[t+1]==="("&&(t===0||e[t-1]!=="\\")){let o=t;t+=2;let 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 ue{value;constructor(e){this.value=e}}var Se=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 Se(s,xe(s),t);if(typeof i==="object")return i;let f=await t(i,e);if(f instanceof ue)return f.value;e=e.slice(0,a)+f+e.slice(n+1)}return e},_t=async(e,r)=>Se(e,xe(e),r),Ut=async(e,r,t,o)=>{let a=await(async()=>{let n=/([\w\d.-_/]+):(.+)/.exec(e);if(!n)return await Tt.select(r,e);let[s,i,f]=n,c=le(o.sources,i),m=Je(f,c,r);return await c.fn({args:m.parsedArgs,rawArgs:m.rawArgs,tags:m.tags,key:i,options:o,root:r,path:t,value:null})})();if(a===null||a===void 0)return"";if(typeof a==="object")return new ue(a);return a},Be=async(e,r,t,o)=>{let a=await _t(r,(n)=>Ut(n,t,e,o));if(a instanceof H.NavigateResult)return a;if(a===r)return H.NavigateResult.Explore();if(typeof a==="string"){let n=await Be(e,a,t,o);if(n.action!==H.NavigateAction.Explore)return n}return H.NavigateResult.ReplaceItem(a)},Ge=async(e,r)=>{return r??={},await R.navigate(e,async(t)=>{let o=[...t.path,t.key].join(".");if(r?.filters?.length&&r.filters.some((i)=>i.test(o)))return R.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 R.NavigateResult.NoExplore();let i=R.NavigateResult.Explore();if(typeof t.value==="string")switch(i=await Be(o,t.value,s,r),i.action){case R.NavigateAction.Explore:break;case R.NavigateAction.ReplaceItem:t.value=i.by;break;default:return i}if(It(t,r))i=await Wt(t,o,s,r);return i}catch(i){throw Error(`${i.message}
2
+ (${o})`)}}),e},fe=(e,r)=>r?{fn:(t)=>e(...t.args),types:r}:(t)=>e(...t.args),Jt=(e,r)=>Object.fromEntries(e.map((t)=>[t.name,fe(t,r?.types?.[t.name])])),xt=(e,r)=>Object.fromEntries((r?.keys??Object.keys(e)).map((t)=>[t,fe(e[t],r?.types?.[t])]))});var J=C((yn,Ir)=>{var{defineProperty:de,getOwnPropertyNames:Kt,getOwnPropertyDescriptor:Yt}=Object,Ht=Object.prototype.hasOwnProperty,Er=new WeakMap,Qt=(e)=>{var r=Er.get(e),t;if(r)return r;if(r=de({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")Kt(e).map((o)=>!Ht.call(r,o)&&de(r,o,{get:()=>e[o],enumerable:!(t=Yt(e,o))||t.enumerable}));return Er.set(e,r),r},Zt=(e,r)=>{for(var t in r)de(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},Dr={};Zt(Dr,{tokenize:()=>eo,snake:()=>Ft,pascal:()=>Lr,padBlock:()=>zt,changeCase:()=>qt,capital:()=>Xt,camel:()=>Vt});Ir.exports=Qt(Dr);var Lr=(e)=>e.replace(/((?:[_ ]+)\w|^\w)/g,(r,t)=>t.toUpperCase()).replace(/[_ ]/g,""),Xt=(e)=>e.replace(/((?:[ ]+)\w|^\w)/g,(r,t)=>t.toUpperCase()),Vt=(e)=>Lr(e).replace(/((?:[ ]+\w)|^\w)/g,(r,t)=>t.toLowerCase()),Ft=(e,r)=>e.replace(/([a-z])([A-Z])/g,`$1${r}$2`).replace(/\s+/g,r),qt=(e,r)=>{switch(r){case"upper":return e.toUpperCase();case"lower":return e.toLowerCase();default:return e}},zt=(e,r,t=`
3
+ `,o=" ")=>{let a=o.repeat(r);return e.split(t).map((n)=>a+n).join(t)},eo=(e,r,t=/\${([^}]+)}/g)=>{return e.replace(t,(o,a)=>r[a]??"")}});var F=C((vn,Jr)=>{var{defineProperty:we,getOwnPropertyNames:ro,getOwnPropertyDescriptor:to}=Object,oo=Object.prototype.hasOwnProperty,_r=new WeakMap,no=(e)=>{var r=_r.get(e),t;if(r)return r;if(r=we({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")ro(e).map((o)=>!oo.call(r,o)&&we(r,o,{get:()=>e[o],enumerable:!(t=to(e,o))||t.enumerable}));return _r.set(e,r),r},ao=(e,r)=>{for(var t in r)we(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})},Ur={};ao(Ur,{toObjectWithKey:()=>so,toObject:()=>lo,toList:()=>io});Jr.exports=no(Ur);var io=(e,r="name")=>Object.entries(e).map(([t,o])=>({[r]:t,...o})),so=(e,r="name")=>Object.fromEntries(e.map((t)=>[t[r],t])),lo=(e,r="name")=>Object.fromEntries(e.map((t)=>{let{[r]:o,...a}=t;return[o,a]}))});var nt=p(v(),1);var qe={};I(qe,{writeOutputs:()=>X,writeOutput:()=>ce,writeFormat:()=>me,locate:()=>j,loadFormat:()=>Q,importList:()=>ye,importGlob:()=>Fe,globMap:()=>Z,exists:()=>W});import Ye from"fs/promises";import pe from"path";import St from"path";import Bt from"fs/promises";import Xe from"fs/promises";import He from"path";import Qe from"path";import Ze from"path";var W=async(e)=>{try{return await Ye.access(e,Ye.constants.R_OK),!0}catch{return!1}},j=async(e,r)=>{let t=!pe.isAbsolute(e)&&r?["",...r]:[""];for(let o of t){let a=pe.join(o,e);if(await W(a))return pe.resolve(a)}throw Error(`File not found: "${e}"`)},Q=async(e,r)=>{let t=await j(e,r?.dirs),o=await Bun.file(t).text(),a=St.dirname(t),n={"[.]json$":JSON.parse,"[.](yml|yaml)$":Bun.YAML.parse,"[.]toml$":Bun.TOML.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),fullPath:t,folderPath:a}},me=async(e,r,t="text")=>{switch(t){case"yaml":await Bun.write(e,Bun.YAML.stringify(r));break;case"json":await Bun.write(e,JSON.stringify(r));break;case"text":default:await Bun.write(e,r.toString())}},Z=async(e,r)=>{if(typeof e==="string"&&!e.includes("*"))return await r.map(e,0,[]);let t=await Array.fromAsync(Bt.glob(e,{cwd:r.cwd})),o=r.filter?t.filter(r.filter):t;return await Promise.all(o.map(r.map))},X=async(e,r)=>{if(r?.targetDirectory&&r?.removeFirst)try{await Xe.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=He.join(r?.targetDirectory??".",e.name),o=He.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 Xe.mkdir(o,{recursive:!0})}catch(a){throw Error(`Failed to create target directory "${o}" for output "${t}": ${a.message}`)}try{await me(t,e.value,e.type??"text")}catch(a){throw Error(`Failed to write output "${t}": ${a.message}`)}},Ve=(e)=>e?Ze.isAbsolute(e)?e:Ze.join(process.cwd(),e):process.cwd(),ye=async(e,r)=>{let t=[];for(let o of e)try{let a=!Qe.isAbsolute(o)?Qe.join(Ve(r?.cwd),o):o;if(r?.filter?.(a)===!1)continue;let n=await import(a);if(r?.resolveDefault==="only"&&!n.default)throw Error(`Module ${o} does not have a default export`);let s=r?.resolveDefault?n.default??n:n,i=r?.map?await r.map(s,o):s;if(i!==void 0)t.push(i)}catch(a){if(r?.fail?.(o,a)===!1)continue;throw Error(`Failed to import module ${o}: ${a.message??a}`)}return t},Fe=async(e,r)=>{let t=[];for(let o of e){let a=await Array.fromAsync(new Bun.Glob(o).scan({cwd:Ve(r?.cwd),absolute:!0}));t.push(...await ye(a,r))}return t};var ze={};I(ze,{mergeAll:()=>T,merge:()=>M});var M=(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;M(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]},T=(e,r)=>{let t={};for(let o of e.toReversed())M(o,t,r);return t};import ot from"path";var er=p(w(),1),rr=(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 er.NavigateResult.SkipSiblings()}});var tr=p(w(),1);import Gt from"path";var or=(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&&Gt.dirname(t.file))}return tr.NavigateResult.DeleteItem()}});var mr=p(v(),1);var nr=p(b(),1),ar=(e)=>{if(typeof e.value==="string")return e.parent;let r=e.value.model;if(!r)return e.parent;if(typeof r==="string")return nr.select(e.root,r);return r};var ge=p(b(),1),ir=(e)=>{if(typeof e.value==="string")return ge.select(e.root,e.value);if(Array.isArray(e.value))return e.value;let r=e.value;if(typeof r.from==="string")return ge.select(e.root,r.from);return r.from};var sr=p(v(),1),lr=p(b(),1),ur=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 sr.processFields(o,{...e.options,root:{...e.root,result:r}}),o}return await lr.select({...e.root,result:r},t.selector)};var fr={};I(fr,{deepClone:()=>k});var k=(e)=>globalThis.structuredClone!==void 0?structuredClone(e):JSON.parse(JSON.stringify(e));var pr={};I(pr,{conditionPredicatesTypes:()=>_,conditionPredicates:()=>A});var A={and:(...e)=>e.every((r)=>!!r),or:(...e)=>e.some((r)=>!!r),xor:(...e)=>e.filter((r)=>!!r).length===1,true:(...e)=>e.every((r)=>!!r),false:(...e)=>e.every((r)=>!r),eq:(...e)=>e.every((r)=>r===e[0]),ne:(...e)=>e.some((r)=>r!==e[0]),lt:(...e)=>typeof e[0]==="number"&&e.slice(1).every((r)=>typeof r==="number"&&e[0]<r),le:(...e)=>typeof e[0]==="number"&&e.slice(1).every((r)=>typeof r==="number"&&e[0]<=r),gt:(...e)=>typeof e[0]==="number"&&e.slice(1).every((r)=>typeof r==="number"&&e[0]>r),ge:(...e)=>typeof e[0]==="number"&&e.slice(1).every((r)=>typeof r==="number"&&e[0]>=r),in:(e,r)=>{if(Array.isArray(r))return r.includes(e);if(typeof e==="string")return e.includes(r);if(Array.isArray(e))return e.includes(r);return!1},notin:(e,r)=>!A.in(e,r),contains:(e,r)=>e.includes(r),notcontains:(e,r)=>!e.includes(r),containsi:(e,r)=>e.toLowerCase().includes(r.toLowerCase()),notcontainsi:(e,r)=>!e.toLowerCase().includes(r.toLowerCase()),null:(...e)=>e.every((r)=>r===null||r===void 0),notnull:(...e)=>e.every((r)=>r!==null&&r!==void 0),empty:(...e)=>e.every((r)=>r===""),notempty:(...e)=>e.every((r)=>r!==""),nullorempty:(...e)=>e.every((r)=>r===null||r===void 0||r===""),notnullorempty:(...e)=>e.every((r)=>r!==null&&r!==void 0&&r!=="")},_={and:()=>"boolean",or:()=>"boolean",xor:()=>"boolean",true:()=>"boolean",false:()=>"boolean",lt:()=>"number",le:()=>"number",gt:()=>"number",ge:()=>"number"};var cr=()=>({each:{filters:[/select|model/],fn:async(e)=>{let r=e.value;delete e.parent[e.key];let t=await ir(e),o=await ar(e);if(!Array.isArray(t))throw Error('Key "each" requires a source list');if(o===void 0)throw Error('Key "each" must define a model');if(r.extend?.model)o=T([r.model,...Array.isArray(r.extend.model)?r.extend.model:[r.extend.model]]);let a=[];for(let n=0;n<t.length;n++){let s=k(o);if(await mr.processFields(s,{...e.options,root:{...e.root,index:n,item:t[n],instance:s}}),r.extend?.result){let i=r.extend.result;s=T([s,...Array.isArray(i)?i:[i]])}a.push(await ur(e,s))}return a}}});var yr=p(b(),1),gr=()=>({concat:async(e)=>{let r=[];for(let t of Array.isArray(e.value)?e.value:[e.value])r.push(...await yr.select(e.root,t));return r.filter((t)=>t!==void 0)}});var dr=p(v(),1);var wr=p(w(),1),br=p(b(),1);var vr=()=>({extends:async(e)=>{let r=async(t,o)=>{for(let a of Array.isArray(o)?o:[o]){let n=await br.select(e.root,a),s=k(n);if(s[e.key])await r(s,s[e.key]);await dr.processFields(s,{...e.options}),M(s,t),delete t[e.key]}};return await r(e.parent,e.value),wr.NavigateResult.Explore()}});var hr=p(v(),1),P=p(w(),1),kr=(e)=>({skip:{types:{0:"boolean"},fn:(r)=>r.value?P.NavigateResult.DeleteParent():P.NavigateResult.DeleteItem()},metadata:({path:r,value:t})=>{return e.metadata(r,t),P.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 P.NavigateResult.DeleteItem();if(typeof a==="string")return(await hr.processFields({value:a},{...r.options,root:{...r.root}})).value;return P.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 P.NavigateResult.ReplaceParent(t.cases[t.from],!0);if(t.default!==void 0)return P.NavigateResult.ReplaceParent(t.default,!0);return P.NavigateResult.DeleteParent()}});var Ar=p(b(),1),Or=()=>({from:async({root:e,parent:r,value:t})=>{let o=await Ar.select(e,t);if(o===null||o===void 0)throw Error(`Unable to resolve reference: ${t}`);if(r.content){if(Array.isArray(r.content)&&Array.isArray(o))return[...o,...r.content];return M(o,r.content),r.content}return o}});var Pr=p(w(),1);import Mr from"node:vm";var $r=(e)=>({modules:async(r)=>{for(let[t,o]of Object.entries(r.value)){let a=Mr.createContext({console,objector:e,document:r.root}),n=new Mr.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}`,(f)=>i(f,...f.args)])))}return Pr.NavigateResult.DeleteItem()}});import Nr from"fs/promises";import U from"path";var Cr=(e)=>({include:async(r)=>{let{file:t}=r.options.globalContext;return await Z(r.args[0],{cwd:U.dirname(t),filter:(o)=>U.basename(t)!==o,map:async(o)=>e.load(o,U.dirname(t),{parent:r.root})})},exists:async({args:[r]})=>await W(r),file:async(r)=>await Nr.readFile(await j(r.args[0],e.getIncludeDirectories())).then((t)=>t.toString()),scan:async(r)=>{let t=[],a=(()=>{let i=r.args[2]??["**/node_modules/**"],f=typeof i==="string"?i.split(",").map((c)=>c.trim()):i;if(!Array.isArray(f))throw Error("Scan exclusion must be a list");return f})(),{file:n}=r.options.globalContext,s=r.args[1]?await j(r.args[1],e.getIncludeDirectories()):U.dirname(n);for await(let i of Nr.glob(r.args[0],{cwd:s,exclude:(f)=>a.some((c)=>U.matchesGlob(f,c))}))t.push(i);return t}});var Rr=p(v(),1),jr=()=>Rr.makeFieldProcessorMap({env:(e)=>process.env[e]});var Wr=p(v(),1),d=p(J(),1);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,f)=>t?.sortKeys?i[0].localeCompare(f[0]):0);if(n.length===0)return"{}";return`{
7
+ ${n.map(([i,f])=>`${a}${i} = ${V(f,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 Tr=()=>({substring:{types:{0:"ref",1:"number",2:"number"},fn:(e)=>e.args[0].substring(e.args[1],e.args[2])},repeat:{types:{0:"ref",1:"number"},fn:({args:[e,r]})=>e.repeat(r)},uuid:(e)=>crypto.randomUUID(),pad:{types:{0:"ref",1:"number",2:"string"},fn:({args:[e,r],tags:t})=>{let o=t.join?.[0]??`
11
+ `,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 Bun.YAML.stringify(e,null,2);case"terraform":{let o=!!(t?.sort?.length||t?.sortKeys?.length);return V(e,0,{sortKeys:o})}}throw Error("Unsupported format: "+String(r))}},...Wr.makeFieldProcessorMap({pascal:d.pascal,camel:d.camel,capital:d.capital,fromYaml:Bun.YAML.parse,fromJson:JSON.parse,toYaml:(e,r)=>Bun.YAML.stringify(e,null,r??2),toJson:(e,r)=>JSON.stringify(e,null,r!==0?r??2:void 0),concat:(...e)=>e.join(""),len:(e)=>e.length,reverse:(e)=>e.split("").reverse().join(""),trim:(e)=>e.trim(),ltrim:(e)=>e.trimStart(),rtrim:(e)=>e.trimEnd(),lower:(e)=>e.toLowerCase(),upper:(e)=>e.toUpperCase(),snake:(e,r)=>d.changeCase(d.snake(e,"_"),r),kebab:(e,r)=>d.changeCase(d.snake(e,"-"),r),encode:(e,r)=>Buffer.from(e).toString(r??"base64"),decode:(e,r)=>Buffer.from(e,r??"base64").toString()})});var xr=p(v(),1),q=p(F(),1),be=p(b(),1),Sr=p(J(),1);var Br=()=>({...xr.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)=>be.select({...r,...y},o)):e).join(s),f=t.pad?.[0]??"0",c=t.padChar?.[0]??" ",m=n&&i.length&&s?i+s:i;return f?Sr.padBlock(m,parseInt(f),`
12
+ `,c):m},list:({args:e})=>q.toList(e[0],e[1]),object:({args:e})=>q.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(A)}return _[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=A[r];if(n){let f=Array(e.length);for(let m=0;m<e.length;m++)try{f[m]=be.select({...o,...e[m]},n)}catch{f[m]=Symbol("invalid")}let c=[];for(let m=0;m<e.length;m++){let y=f[m];if(typeof y!=="symbol"&&t===void 0?s(y):s(y,t))c.push(e[m])}return c}let i=[];for(let f of e)if(t===void 0?s(f):s(f,t))i.push(f);return i}}});var Gr=p(v(),1),Kr=p(F(),1),S=p(b(),1),Yr=p(J(),1);var Hr=()=>({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 S.select(o,g.value),i=await S.select(o,e.value),f=await s(r),c=n.key?.[0],m=Array.isArray(i)?i:Kr.toList(i),y=[],$=await Promise.all(t.map(async(g)=>await s(g))),O={...o,item:void 0,index:0,params:$,instance:void 0,parent:o.this,tags:n},G={...a,root:O};for(let g=0;g<m.length;g++){let N=k(f),D={instance:N},z=typeof f==="string"?D:N;if(O.item=m[g],O.index=g,O.instance=N,n?.root?.[0])Object.assign(O,await S.select(O,n.root[0]));if(await Gr.processFields(z,G),c!==void 0)y.push(await S.select(D.instance,c));else y.push(D.instance)}if(n.join?.length){if(y.length===0)return"";let g=x(n.join[0]),N=n.pad?.[0]??"0",D=n.padChar?.[0]??" ",z=n.finalize?.length&&g?g:"",ve=`${y.join(g)}${z}`;return N?Yr.padBlock(ve,parseInt(N),`
13
+ `,D):ve}return y}}});var Qr=p(b(),1),B=async(e,r,t)=>e.rawArgs[r].quoted?e.rawArgs[r].value:await Qr.select(e.root,e.rawArgs[r].value,{defaultValue:t}),Zr=()=>({switch:{processArgs:!1,fn:async(e)=>{let r=await B(e,0,!1),t=await B(e,1);if(t[r]===void 0){if(e.rawArgs.length>2)return B(e,2);throw Error(`Unhandled switch case: ${r}`)}return t[r]}}});var Xr=p(v(),1),Vr=()=>Xr.makeFieldProcessorMap({log:console.log});var Fr=p(v(),1);var qr=()=>({if:{types:{0:"boolean"},fn:(e)=>e.args[0]?e.args[1]:e.args[2]},check:{types:{0:Object.keys(A)},fn:(e)=>A[e.args[0]](...e.args.slice(1))},...Fr.makeFieldProcessorMap(A,{types:_})});var zr=p(w(),1);var et=()=>({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 B(e,r,null);if(o!==null)return o}if(e.tags.nullable?.length)return zr.NavigateResult.DeleteItem();if(e.tags.fail?.length)throw Error(`No valid value found for default (${e.rawArgs.map((r)=>r.value).join(", ")})`);return""}}});var E=p(w(),1),rt=()=>({convert:({args:[e,r,t]})=>{switch(r){case"string":return String(e);case"number":{let o=Number(e);if(!isNaN(o))return E.NavigateResult.ReplaceItem(o);break}case"boolean":if(e==="true"||e===!0||e===1||e==="1"||e==="yes"||e==="on")return E.NavigateResult.ReplaceItem(!0);else if(e==="false"||e===!1||e===0||e==="0"||e==="no"||e==="off")return E.NavigateResult.ReplaceItem(!1);break;default:throw Error(`Unsupported type for convert: ${r}`)}if(t!==void 0)return E.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 E.NavigateResult.ReplaceItem(o)},typeOf:({args:[e]})=>{if(e===null)return"null";else if(Array.isArray(e))return"array";else return typeof e}});var tt=(e)=>e.keys(rr(e)).keys(or(e)).keys(cr()).keys(Or()).keys(gr()).keys(vr()).keys(kr(e)).keys($r(e)).sources(Cr(e)).sources(jr()).sources(Tr()).sources(rt()).sources(Br()).sources(Hr()).sources(Zr()).sources(Vr()).sources(qr()).sources(et());var l={};I(l,{writeOutputs:()=>X,writeOutput:()=>ce,writeFormat:()=>me,mergeAll:()=>T,merge:()=>M,locate:()=>j,loadFormat:()=>Q,importList:()=>ye,importGlob:()=>Fe,globMap:()=>Z,exists:()=>W,deepClone:()=>k,conditionPredicates:()=>A});u(l,p(v(),1));u(l,p(w(),1));u(l,p(F(),1));u(l,p(b(),1));u(l,p(K(),1));u(l,p(J(),1));var ka=l;class uo{includeDirectories=[];includes=[];outputs=[];vars={};cache={};fields={sources:{},keys:{}};objectMetadata={};constructor(){this.use(tt)}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)M(await this.load(o,e.folderPath,{parent:e.content,...r},!0),e.content)}async loadObject(e,r,t){return await nt.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((m)=>ot.isAbsolute(m)?m:ot.join(r??process.cwd(),m)));let n=await Q(e,{dirs:a});if(!n.content)return null;let s=n.fullPath,i=this.cache[s]??n.content,f=k(i);n.content=f,await this.docIncludes(n,t);let c;if(o!==!0)c=await this.loadObject(n.content,t,{fileName:n.fullPath,folderPath:n.folderPath,fullPath:n.fullPath});else c=n.content;return this.cache[s]??=i,c}async writeOutputs(e){await X(this.getOutputs(),e)}}export{ka as default,uo as Objector};
package/package.json CHANGED
@@ -1,14 +1,11 @@
1
1
  {
2
2
  "name": "@homedev/objector",
3
- "version": "1.2.31",
3
+ "version": "1.2.33",
4
4
  "description": "object extensions for YAML/JSON",
5
5
  "author": "julzor",
6
6
  "license": "ISC",
7
7
  "main": "dist/index.js",
8
8
  "type": "module",
9
- "types": "./index.d.ts",
10
- "dependencies": {
11
- "yaml": "^2.8.2"
12
- },
9
+ "dependencies": {},
13
10
  "typings": "dist/index.d.ts"
14
11
  }