@homedev/objector 1.2.29 → 1.2.31
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 +159 -0
- package/dist/index.js +11 -9
- package/package.json +2 -10
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
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';
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* @public
|
|
53
|
+
*/
|
|
54
|
+
declare const conditionPredicates: Record<string, (...args: any[]) => boolean>;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* @public
|
|
58
|
+
*/
|
|
59
|
+
declare const deepClone: (model: any) => any;
|
|
60
|
+
|
|
61
|
+
declare namespace libs {
|
|
62
|
+
export {
|
|
63
|
+
FieldContext,
|
|
64
|
+
FieldProcessorMap,
|
|
65
|
+
makeFieldProcessorMap,
|
|
66
|
+
FieldProcessor,
|
|
67
|
+
FieldProcessorFunc,
|
|
68
|
+
FieldProcessorOptions,
|
|
69
|
+
FieldProcessorTypeChecker,
|
|
70
|
+
FieldProcessorTypeCheckers,
|
|
71
|
+
FieldProcessorTypedFunc,
|
|
72
|
+
ProcessFieldsOptions,
|
|
73
|
+
makeFieldProcessor,
|
|
74
|
+
makeFieldProcessorList,
|
|
75
|
+
processFields,
|
|
76
|
+
LoadOptions,
|
|
77
|
+
LoadResult,
|
|
78
|
+
Output,
|
|
79
|
+
WriteOutputOption,
|
|
80
|
+
WriteOutputsOption,
|
|
81
|
+
exists,
|
|
82
|
+
globMap,
|
|
83
|
+
loadFormat,
|
|
84
|
+
locate,
|
|
85
|
+
writeFormat,
|
|
86
|
+
writeOutput,
|
|
87
|
+
writeOutputs,
|
|
88
|
+
MergeMode,
|
|
89
|
+
MergeOptions,
|
|
90
|
+
merge,
|
|
91
|
+
mergeAll,
|
|
92
|
+
NavigateAction,
|
|
93
|
+
NavigateCallback,
|
|
94
|
+
NavigateContext,
|
|
95
|
+
navigate,
|
|
96
|
+
NavigateResult,
|
|
97
|
+
find,
|
|
98
|
+
toList,
|
|
99
|
+
toObject,
|
|
100
|
+
toObjectWithKey,
|
|
101
|
+
SelectOptions,
|
|
102
|
+
select,
|
|
103
|
+
splitNested,
|
|
104
|
+
splitWithQuotes,
|
|
105
|
+
camel,
|
|
106
|
+
capital,
|
|
107
|
+
pascal,
|
|
108
|
+
snake,
|
|
109
|
+
changeCase,
|
|
110
|
+
padBlock,
|
|
111
|
+
tokenize,
|
|
112
|
+
deepClone,
|
|
113
|
+
conditionPredicates,
|
|
114
|
+
Objector
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
export { libs }
|
|
118
|
+
|
|
119
|
+
declare interface LoadObjectOptions {
|
|
120
|
+
fileName: string;
|
|
121
|
+
fullPath: string;
|
|
122
|
+
folderPath: string;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* @public
|
|
127
|
+
*/
|
|
128
|
+
export declare class Objector {
|
|
129
|
+
private includeDirectories;
|
|
130
|
+
private includes;
|
|
131
|
+
private outputs;
|
|
132
|
+
private vars;
|
|
133
|
+
private cache;
|
|
134
|
+
private fields;
|
|
135
|
+
private objectMetadata;
|
|
136
|
+
constructor();
|
|
137
|
+
use(handler: (o: Objector) => void): this;
|
|
138
|
+
includeDirectory(...dirs: string[]): this;
|
|
139
|
+
getIncludeDirectories(): string[];
|
|
140
|
+
include(...files: string[]): this;
|
|
141
|
+
keys(keys: FieldProcessorMap): this;
|
|
142
|
+
sources(sources: FieldProcessorMap): this;
|
|
143
|
+
variables(vars: Record<string, any>): this;
|
|
144
|
+
getOutputs(): Output[];
|
|
145
|
+
output(o: Output): this;
|
|
146
|
+
metadata(path: string, o: any): this;
|
|
147
|
+
getMetadata(path: string): any;
|
|
148
|
+
getAllMetadata(): Record<string, any>;
|
|
149
|
+
filter(f: RegExp): this;
|
|
150
|
+
private docIncludes;
|
|
151
|
+
loadObject<T = any>(data: T, container?: any, options?: LoadObjectOptions): Promise<T>;
|
|
152
|
+
load<T = any>(fileName: string, cwd?: string, container?: any, noProcess?: boolean): Promise<T | null>;
|
|
153
|
+
writeOutputs(options?: WriteOutputsOption): Promise<void>;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export { }
|
|
157
|
+
declare global {
|
|
158
|
+
const homedev: typeof libs
|
|
159
|
+
}
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
var zr=Object.create;var{getPrototypeOf:Vr,defineProperty:F,getOwnPropertyNames:D,getOwnPropertyDescriptor:xr}=Object,L=Object.prototype.hasOwnProperty,t=(r,e,o)=>{for(let s of D(e))if(!L.call(r,s)&&s!=="default")F(r,s,{get:()=>e[s],enumerable:!0});if(o){for(let s of D(e))if(!L.call(o,s)&&s!=="default")F(o,s,{get:()=>e[s],enumerable:!0});return o}},k=(r,e,o)=>{o=r!=null?zr(Vr(r)):{};let s=e||!r||!r.__esModule?F(o,"default",{value:r,enumerable:!0}):o;for(let m of D(r))if(!L.call(s,m))F(s,m,{get:()=>r[m],enumerable:!0});return s},W=new WeakMap,vr=(r)=>{var e=W.get(r),o;if(e)return e;if(e=F({},"__esModule",{value:!0}),r&&typeof r==="object"||typeof r==="function")D(r).map((s)=>!L.call(e,s)&&F(e,s,{get:()=>r[s],enumerable:!(o=xr(r,s))||o.enumerable}));return W.set(r,e),e};var I=(r,e)=>{for(var o in e)F(r,o,{get:e[o],enumerable:!0,configurable:!0,set:(s)=>e[o]=()=>s})};var Hr={};I(Hr,{default:()=>re,Objector:()=>U});module.exports=vr(Hr);var Qr=require("@homedev/fields"),h=require("@homedev/files"),Wr=require("@homedev/merge"),H=k(require("path"));var X=require("@homedev/navigate"),Z=(r)=>({output:(e)=>{delete e.parent[e.key];for(let o of Array.isArray(e.value)?e.value:[e.value])if(typeof o==="string")r.output({name:o,value:e.parent});else r.output({...o,value:o.value??e.parent});return X.NavigateResult.SkipSiblings()}});var z=require("@homedev/navigate"),V=k(require("path")),x=(r)=>({load:async(e)=>{let o=e.options.globalContext;for(let{file:s}of Array.isArray(e.value)?e.value:[e.value]){if(!s)throw Error("File reference required");await r.load(s,o.file&&V.default.dirname(o.file))}return z.NavigateResult.DeleteItem()}});var fr=require("@homedev/fields"),_=require("@homedev/merge");var v=require("@homedev/select"),rr=(r)=>{if(typeof r.value==="string")return r.parent;let e=r.value.model;if(!e)return r.parent;if(typeof e==="string")return v.select(r.root,e);return e};var Y=require("@homedev/select"),er=(r)=>{if(typeof r.value==="string")return Y.select(r.root,r.value);if(Array.isArray(r.value))return r.value;let e=r.value;if(typeof e.from==="string")return Y.select(r.root,e.from);return e.from};var or=require("@homedev/fields"),nr=require("@homedev/select"),tr=async(r,e)=>{let o=r.value;if(o.selector===void 0)return e;if(typeof o.selector!=="string"){let s=JSON.parse(JSON.stringify(o.selector));return await or.processFields(s,{...r.options,root:{...r.root,result:e}}),s}return await nr.select({...r.root,result:e},o.selector)};var sr={};I(sr,{deepClone:()=>g});var g=(r)=>globalThis.structuredClone!==void 0?structuredClone(r):JSON.parse(JSON.stringify(r));var ir={};I(ir,{conditionPredicatesTypes:()=>R,conditionPredicates:()=>w});var w={and:(...r)=>r.every((e)=>!!e),or:(...r)=>r.some((e)=>!!e),xor:(...r)=>r.filter((e)=>!!e).length===1,true:(...r)=>r.every((e)=>!!e),false:(...r)=>r.every((e)=>!e),eq:(...r)=>r.every((e)=>e===r[0]),ne:(...r)=>r.some((e)=>e!==r[0]),lt:(...r)=>typeof r[0]==="number"&&r.slice(1).every((e)=>typeof e==="number"&&r[0]<e),le:(...r)=>typeof r[0]==="number"&&r.slice(1).every((e)=>typeof e==="number"&&r[0]<=e),gt:(...r)=>typeof r[0]==="number"&&r.slice(1).every((e)=>typeof e==="number"&&r[0]>e),ge:(...r)=>typeof r[0]==="number"&&r.slice(1).every((e)=>typeof e==="number"&&r[0]>=e),in:(r,e)=>{if(Array.isArray(e))return e.includes(r);if(typeof r==="string")return r.includes(e);if(Array.isArray(r))return r.includes(e);return!1},notin:(r,e)=>!w.in(r,e),contains:(r,e)=>r.includes(e),notcontains:(r,e)=>!r.includes(e),containsi:(r,e)=>r.toLowerCase().includes(e.toLowerCase()),notcontainsi:(r,e)=>!r.toLowerCase().includes(e.toLowerCase()),null:(...r)=>r.every((e)=>e===null||e===void 0),notnull:(...r)=>r.every((e)=>e!==null&&e!==void 0),empty:(...r)=>r.every((e)=>e===""),notempty:(...r)=>r.every((e)=>e!==""),nullorempty:(...r)=>r.every((e)=>e===null||e===void 0||e===""),notnullorempty:(...r)=>r.every((e)=>e!==null&&e!==void 0&&e!=="")},R={and:()=>"boolean",or:()=>"boolean",xor:()=>"boolean",true:()=>"boolean",false:()=>"boolean",lt:()=>"number",le:()=>"number",gt:()=>"number",ge:()=>"number"};var mr=()=>({each:{filters:[/select|model/],fn:async(r)=>{let e=r.value;delete r.parent[r.key];let o=await er(r),s=await rr(r);if(!Array.isArray(o))throw Error('Key "each" requires a source list');if(s===void 0)throw Error('Key "each" must define a model');if(e.extend?.model)s=_.mergeAll([e.model,...Array.isArray(e.extend.model)?e.extend.model:[e.extend.model]]);let m=[];for(let i=0;i<o.length;i++){let f=g(s);if(await fr.processFields(f,{...r.options,root:{...r.root,index:i,item:o[i],instance:f}}),e.extend?.result){let p=e.extend.result;f=_.mergeAll([f,...Array.isArray(p)?p:[p]])}m.push(await tr(r,f))}return m}}});var pr=require("@homedev/select"),ar=()=>({concat:async(r)=>{let e=[];for(let o of Array.isArray(r.value)?r.value:[r.value])e.push(...await pr.select(r.root,o));return e.filter((o)=>o!==void 0)}});var lr=require("@homedev/fields"),yr=require("@homedev/merge"),ur=require("@homedev/navigate"),dr=require("@homedev/select");var cr=()=>({extends:async(r)=>{let e=async(o,s)=>{for(let m of Array.isArray(s)?s:[s]){let i=await dr.select(r.root,m),f=g(i);if(f[r.key])await e(f,f[r.key]);await lr.processFields(f,{...r.options}),yr.merge(f,o),delete o[r.key]}};return await e(r.parent,r.value),ur.NavigateResult.Explore()}});var gr=require("@homedev/fields"),b=require("@homedev/navigate"),wr=(r)=>({skip:{types:{0:"boolean"},fn:(e)=>e.value?b.NavigateResult.DeleteParent():b.NavigateResult.DeleteItem()},metadata:({path:e,value:o})=>{return r.metadata(e,o),b.NavigateResult.DeleteItem()},if:{types:{0:"boolean"},fn:async(e)=>{let o=e.parent[".then"],s=e.parent[".else"];if(o!==void 0)delete e.parent[".then"];if(s!==void 0)delete e.parent[".else"];let m=e.value?o:s;if(m===void 0)return b.NavigateResult.DeleteItem();if(typeof m==="string")return(await gr.processFields({value:m},{...e.options,root:{...e.root}})).value;return b.NavigateResult.ReplaceParent(m,!0)}},switch:(e)=>{let o=e.value;if(!o.cases)throw Error("Missing cases for switch");if(o.cases[o.from]!==void 0)return b.NavigateResult.ReplaceParent(o.cases[o.from],!0);if(o.default!==void 0)return b.NavigateResult.ReplaceParent(o.default,!0);return b.NavigateResult.DeleteParent()}});var br=require("@homedev/merge"),Fr=require("@homedev/select"),Ar=()=>({from:async({root:r,parent:e,value:o})=>{let s=await Fr.select(r,o);if(s===null||s===void 0)throw Error(`Unable to resolve reference: ${o}`);if(e.content){if(Array.isArray(e.content)&&Array.isArray(s))return[...s,...e.content];return br.merge(s,e.content),e.content}return s}});var Mr=require("@homedev/navigate"),K=k(require("node:vm")),Pr=(r)=>({modules:async(e)=>{for(let[o,s]of Object.entries(e.value)){let m=K.default.createContext({console,objector:r,document:e.root}),i=new K.default.SourceTextModule(s,{identifier:o,context:m});await i.link((f)=>{throw Error(`Module ${f} is not allowed`)}),await i.evaluate(),r.sources(Object.fromEntries(Object.entries(i.namespace).map(([f,p])=>[`${o}.${f}`,(a)=>p(a,...a.args)])))}return Mr.NavigateResult.DeleteItem()}});var A=require("@homedev/files"),B=k(require("fs/promises")),C=k(require("path")),kr=(r)=>({include:async(e)=>{let{file:o}=e.options.globalContext;return await A.globMap(e.args[0],{cwd:C.default.dirname(o),filter:(s)=>C.default.basename(o)!==s,map:async(s)=>r.load(s,C.default.dirname(o),{parent:e.root})})},exists:async({args:[e]})=>await A.exists(e),file:async(e)=>await B.default.readFile(await A.locate(e.args[0],r.getIncludeDirectories())).then((o)=>o.toString()),scan:async(e)=>{let o=[],m=(()=>{let p=e.args[2]??["**/node_modules/**"],a=typeof p==="string"?p.split(",").map((y)=>y.trim()):p;if(!Array.isArray(a))throw Error("Scan exclusion must be a list");return a})(),{file:i}=e.options.globalContext,f=e.args[1]?await A.locate(e.args[1],r.getIncludeDirectories()):C.default.dirname(i);for await(let p of B.default.glob(e.args[0],{cwd:f,exclude:(a)=>m.some((y)=>C.default.matchesGlob(a,y))}))o.push(p);return o}});var Cr=require("@homedev/fields"),Or=()=>Cr.makeFieldProcessorMap({env:(r)=>process.env[r]});var jr=require("@homedev/fields"),d=require("@homedev/string-utils"),$=k(require("yaml"));var J=(r,e=0,o)=>{let s=" ".repeat(e),m=" ".repeat(e+1);if(r===null||r===void 0)return"null";else if(typeof r==="boolean")return String(r);else if(typeof r==="number")return String(r);else if(typeof r==="string")return`"${r.replace(/\\/g,"\\\\").replace(/"/g,"\\\"").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t")}"`;else if(Array.isArray(r)){if(r.length===0)return"[]";return`[
|
|
2
|
-
${r.map((
|
|
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`[
|
|
4
|
+
${e.map((s)=>`${a}${V(s,r+1)},`).join(`
|
|
3
5
|
`)}
|
|
4
|
-
${
|
|
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
8
|
`)}
|
|
7
|
-
${
|
|
8
|
-
`).replaceAll("\\$","$").replaceAll("\\t","\t")};var
|
|
9
|
-
`,
|
|
10
|
-
`,
|
|
11
|
-
`,
|
|
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)}}
|
package/package.json
CHANGED
|
@@ -1,21 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@homedev/objector",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.31",
|
|
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",
|
|
9
10
|
"dependencies": {
|
|
10
|
-
"@homedev/fields": "^1.2.12",
|
|
11
|
-
"@homedev/files": "^1.0.4",
|
|
12
|
-
"@homedev/merge": "^1.0.3",
|
|
13
|
-
"@homedev/navigate": "^1.1.3",
|
|
14
|
-
"@homedev/object-utils": "^1.0.3",
|
|
15
|
-
"@homedev/rest": "^0.0.9",
|
|
16
|
-
"@homedev/select": "^1.1.3",
|
|
17
|
-
"@homedev/split": "^1.1.4",
|
|
18
|
-
"@homedev/string-utils": "^1.0.9",
|
|
19
11
|
"yaml": "^2.8.2"
|
|
20
12
|
},
|
|
21
13
|
"typings": "dist/index.d.ts"
|