@homedev/objector 1.2.23 → 1.2.24
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.js +7 -7
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
var
|
|
2
|
-
${r.map((t)=>`${n}${
|
|
1
|
+
var Or=Object.create;var{getPrototypeOf:Rr,defineProperty:k,getOwnPropertyNames:B,getOwnPropertyDescriptor:Nr}=Object,T=Object.prototype.hasOwnProperty;var b=(r,e,o)=>{o=r!=null?Or(Rr(r)):{};let n=e||!r||!r.__esModule?k(o,"default",{value:r,enumerable:!0}):o;for(let s of B(r))if(!T.call(n,s))k(n,s,{get:()=>r[s],enumerable:!0});return n},_=new WeakMap,Ir=(r)=>{var e=_.get(r),o;if(e)return e;if(e=k({},"__esModule",{value:!0}),r&&typeof r==="object"||typeof r==="function")B(r).map((n)=>!T.call(e,n)&&k(e,n,{get:()=>r[n],enumerable:!(o=Nr(r,n))||o.enumerable}));return _.set(r,e),e};var $r=(r,e)=>{for(var o in e)k(r,o,{get:e[o],enumerable:!0,configurable:!0,set:(n)=>e[o]=()=>n})};var qr={};$r(qr,{Objector:()=>Sr});module.exports=Ir(qr);var Er=require("@homedev/fields"),N=require("@homedev/files"),jr=require("@homedev/merge"),U=b(require("path"));var z=require("@homedev/navigate"),V=(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 z.NavigateResult.SkipSiblings()}});var Y=require("@homedev/navigate"),G=b(require("path")),H=(r)=>({load:async(e)=>{let o=e.options.globalContext;for(let{file:n}of Array.isArray(e.value)?e.value:[e.value]){if(!n)throw Error("File reference required");await r.load(n,o.file&&G.default.dirname(o.file))}return Y.NavigateResult.DeleteItem()}});var $=require("@homedev/fields"),q=require("@homedev/merge"),h=require("@homedev/select"),Q=()=>({each:{filters:[/select|model/],fn:async(r)=>{let e=r.value;delete r.parent[r.key];let o=()=>{let i=e.model;if(typeof r.value==="string"||!i)return r.parent;if(typeof i==="string")return h.select(r.root,i);return i},n=()=>{if(typeof r.value==="string")return h.select(r.root,r.value);if(Array.isArray(r.value))return r.value;if(typeof e.from==="string")return h.select(r.root,e.from);return e.from},s=async(i)=>{if(e.selector===void 0)return i;if(typeof e.selector!=="string"){let l=JSON.parse(JSON.stringify(e.selector));return await $.processFields(l,{...r.options,root:{...r.root,result:i}}),l}return await h.select({...r.root,result:i},e.selector)},t=await n(),a=await o();if(!Array.isArray(t))throw Error('Key "each" requires a source list');if(a===void 0)throw Error('Key "each" must define a model');if(e.extend?.model)a=q.mergeAll([e.model,...Array.isArray(e.extend.model)?e.extend.model:[e.extend.model]]);let f=[];for(let i=0;i<t.length;i++){let l=globalThis.structuredClone?structuredClone(a):JSON.parse(JSON.stringify(a));if(await $.processFields(l,{...r.options,root:{...r.root,index:i,item:t[i],instance:l}}),e.extend?.result){let m=e.extend.result;l=q.mergeAll([l,...Array.isArray(m)?m:[m]])}f.push(await s(l))}return f}}});var W=require("@homedev/select"),X=()=>({concat:async(r)=>{let e=[];for(let o of Array.isArray(r.value)?r.value:[r.value])e.push(...await W.select(r.root,o));return e.filter((o)=>o!==void 0)}});var Z=require("@homedev/fields"),K=require("@homedev/merge"),v=require("@homedev/navigate"),x=require("@homedev/select"),rr=()=>({extends:async(r)=>{let e=async(o,n)=>{for(let s of Array.isArray(n)?n:[n]){let t=await x.select(r.root,s),a=globalThis.structuredClone?structuredClone(t):JSON.parse(JSON.stringify(t));if(a[r.key])await e(a,a[r.key]);await Z.processFields(a,{...r.options}),K.merge(a,o),delete o[r.key]}};return await e(r.parent,r.value),v.NavigateResult.Explore()}});var er=require("@homedev/fields"),g=require("@homedev/navigate"),or=(r)=>({skip:{types:{0:"boolean"},fn:(e)=>e.value?g.NavigateResult.DeleteParent():g.NavigateResult.DeleteItem()},metadata:({path:e,value:o})=>{return r.metadata(e,o),g.NavigateResult.DeleteItem()},if:{types:{0:"boolean"},fn:async(e)=>{let o=e.parent[".then"],n=e.parent[".else"];if(o!==void 0)delete e.parent[".then"];if(n!==void 0)delete e.parent[".else"];let s=e.value?o:n;if(s===void 0)return g.NavigateResult.DeleteItem();if(typeof s==="string")return(await er.processFields({value:s},{...e.options,root:{...e.root}})).value;return g.NavigateResult.ReplaceParent(s,!0)}},switch:(e)=>{let o=e.value;if(!o.cases)throw Error("Missing cases for switch");if(o.cases[o.from]!==void 0)return g.NavigateResult.ReplaceParent(o.cases[o.from],!0);if(o.default!==void 0)return g.NavigateResult.ReplaceParent(o.default,!0);return g.NavigateResult.DeleteParent()}});var nr=require("@homedev/merge"),tr=require("@homedev/select"),sr=()=>({from:async({root:r,parent:e,value:o})=>{let n=await tr.select(r,o);if(n===null||n===void 0)throw Error(`Unable to resolve reference: ${o}`);if(e.content){if(Array.isArray(e.content)&&Array.isArray(n))return[...n,...e.content];return nr.merge(n,e.content),e.content}return n}});var ar=require("@homedev/navigate"),D=b(require("node:vm")),ir=(r)=>({modules:async(e)=>{for(let[o,n]of Object.entries(e.value)){let s=D.default.createContext({console,objector:r,document:e.root}),t=new D.default.SourceTextModule(n,{identifier:o,context:s});await t.link((a)=>{throw Error(`Module ${a} is not allowed`)}),await t.evaluate(),r.sources(Object.fromEntries(Object.entries(t.namespace).map(([a,f])=>[`${o}.${a}`,(i)=>f(i,...i.args)])))}return ar.NavigateResult.DeleteItem()}});var P=require("@homedev/files"),J=b(require("fs/promises")),F=b(require("path")),fr=(r)=>({include:async(e)=>{let{file:o}=e.options.globalContext;return await P.globMap(e.args[0],{cwd:F.default.dirname(o),filter:(n)=>F.default.basename(o)!==n,map:async(n)=>r.load(n,F.default.dirname(o),{parent:e.root})})},file:async(e)=>await J.default.readFile(await P.locate(e.args[0],r.getIncludeDirectories())).then((o)=>o.toString()),scan:async(e)=>{let o=[],s=(()=>{let f=e.args[2]??["**/node_modules/**"],i=typeof f==="string"?f.split(",").map((l)=>l.trim()):f;if(!Array.isArray(i))throw Error("Scan exclusion must be a list");return i})(),{file:t}=e.options.globalContext,a=e.args[1]?await P.locate(e.args[1],r.getIncludeDirectories()):F.default.dirname(t);for await(let f of J.default.glob(e.args[0],{cwd:a,exclude:(i)=>s.some((l)=>F.default.matchesGlob(i,l))}))o.push(f);return o}});var pr=()=>({env:(r)=>process.env[r.args[0]]});var u=require("@homedev/string-utils"),O=b(require("yaml"));var C=(r,e=0)=>{let o=" ".repeat(e),n=" ".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((t)=>`${n}${C(t,e+1)},`).join(`
|
|
3
3
|
`)}
|
|
4
4
|
${o}]`}else if(typeof r==="object"){let s=Object.entries(r);if(s.length===0)return"{}";return`{
|
|
5
|
-
${s.map(([a,
|
|
5
|
+
${s.map(([a,f])=>`${n}${a} = ${C(f,e+1)}`).join(`
|
|
6
6
|
`)}
|
|
7
7
|
${o}}`}else return String(r)},E=(r)=>{if(!r)return r;return r.replaceAll("\\n",`
|
|
8
|
-
`).replaceAll("\\$","$").replaceAll("\\t","\t")};var lr=()=>({len:(r)=>r.args[0].length,trim:(r)=>r.args[0].trim(),ltrim:(r)=>r.args[0].trimStart(),rtrim:(r)=>r.args[0].trimEnd(),reverse:(r)=>r.args[0].split("").reverse().join(""),substring:{types:{0:"ref",1:"number",2:"number"},fn:(r)=>r.args[0].substring(r.args[1],r.args[2])},concat:(r)=>r.args.join(""),repeat:{types:{0:"ref",1:"number"},fn:({args:[r,e]})=>{return r.repeat(e)}},lower:(r)=>r.args[0].toLowerCase(),upper:(r)=>r.args[0].toUpperCase(),pascal:(r)=>u.pascal(r.args[0]),camel:(r)=>u.camel(r.args[0]),capital:(r)=>u.capital(r.args[0]),snake:(r)=>u.changeCase(u.snake(r.args[0],"_"),r.args[1]),kebab:(r)=>u.changeCase(u.snake(r.args[0],"-"),r.args[1]),encode:(r)=>Buffer.from(r.args[0]).toString(r.args[1]??"base64"),decode:(r)=>Buffer.from(r.args[0],r.args[1]??"base64").toString(),uuid:(r)=>crypto.randomUUID(),toYaml:({args:[r,e]})=>
|
|
9
|
-
`,s=o.padChar?.[0]??" ";return u.padBlock(r,e??2,n,s)}},formatAs:{types:{1:["json","yaml","terraform"]},fn:({args:[r,e]})=>{switch(e){case"json":return JSON.stringify(r,null,2);case"yaml":return
|
|
10
|
-
`,l):
|
|
11
|
-
`,M):w}return c}}});var br=require("@homedev/select"),S=async(r,e,o)=>r.rawArgs[e].quoted?r.rawArgs[e].value:await br.select(r.root,r.rawArgs[e].value,{defaultValue:o}),Fr=()=>({switch:{processArgs:!1,fn:async(r)=>{let e=await S(r,0,!1),o=await S(r,1);if(o[e]===void 0){if(r.rawArgs.length>2)return S(r,2);throw Error(`Unhandled switch case: ${e}`)}return o[e]}}});var Ar=()=>({log:(r)=>{console.log(...r.args)}});var Mr=require("@homedev/navigate");var kr=()=>({default:{processArgs:!1,fn:async(r)=>{for(let e=0;e<r.rawArgs.length;e++)if(r.rawArgs[e]?.value!==void 0){let n=await S(r,e,null);if(n!==null)return n}if(r.tags.nullable?.length)return Mr.NavigateResult.DeleteItem();if(r.tags.fail?.length)throw Error(`No valid value found for default (${r.rawArgs.map((e)=>e.value).join(", ")})`);return""}}});var A=require("@homedev/navigate"),hr=()=>({convert:({args:[r,e,o]})=>{switch(e){case"string":return String(r);case"number":{let n=Number(r);if(!isNaN(n))return A.NavigateResult.ReplaceItem(n);break}case"boolean":if(r==="true"||r===!0||r===1||r==="1"||r==="yes"||r==="on")return A.NavigateResult.ReplaceItem(!0);else if(r==="false"||r===!1||r===0||r==="0"||r==="no"||r==="off")return A.NavigateResult.ReplaceItem(!1);break;default:throw Error(`Unsupported type for convert: ${e}`)}if(o!==void 0)return A.NavigateResult.ReplaceItem(o);throw Error(`Failed to convert value to ${e}`)},isType:({args:[r,e]})=>{let n=(()=>{switch(e){case"string":return typeof r==="string";case"number":return typeof r==="number";case"boolean":return typeof r==="boolean";case"object":return r!==null&&typeof r==="object"&&!Array.isArray(r);case"array":return Array.isArray(r);case"null":return r===null;case"undefined":return r===void 0;case"function":return typeof r==="function";default:throw Error(`Unknown type for isType: ${e}`)}})();return A.NavigateResult.ReplaceItem(n)},typeOf:({args:[r]})=>{if(r===null)return"null";else if(Array.isArray(r))return"array";else return typeof r}});var Pr=(r)=>r.keys(V(r)).keys(H(r)).keys(
|
|
8
|
+
`).replaceAll("\\$","$").replaceAll("\\t","\t")};var lr=()=>({len:(r)=>r.args[0].length,trim:(r)=>r.args[0].trim(),ltrim:(r)=>r.args[0].trimStart(),rtrim:(r)=>r.args[0].trimEnd(),reverse:(r)=>r.args[0].split("").reverse().join(""),substring:{types:{0:"ref",1:"number",2:"number"},fn:(r)=>r.args[0].substring(r.args[1],r.args[2])},concat:(r)=>r.args.join(""),repeat:{types:{0:"ref",1:"number"},fn:({args:[r,e]})=>{return r.repeat(e)}},lower:(r)=>r.args[0].toLowerCase(),upper:(r)=>r.args[0].toUpperCase(),pascal:(r)=>u.pascal(r.args[0]),camel:(r)=>u.camel(r.args[0]),capital:(r)=>u.capital(r.args[0]),snake:(r)=>u.changeCase(u.snake(r.args[0],"_"),r.args[1]),kebab:(r)=>u.changeCase(u.snake(r.args[0],"-"),r.args[1]),encode:(r)=>Buffer.from(r.args[0]).toString(r.args[1]??"base64"),decode:(r)=>Buffer.from(r.args[0],r.args[1]??"base64").toString(),uuid:(r)=>crypto.randomUUID(),toYaml:({args:[r,e]})=>O.default.stringify(r,null,{indent:e??2}),fromYaml:({args:[r]})=>O.default.parse(r),toJson:({args:[r,e]})=>JSON.stringify(r,null,e!==0?e??2:void 0),fromJson:({args:[r]})=>JSON.parse(r),pad:{types:{0:"ref",1:"number",2:"string"},fn:({args:[r,e],tags:o})=>{let n=o.join?.[0]??`
|
|
9
|
+
`,s=o.padChar?.[0]??" ";return u.padBlock(r,e??2,n,s)}},formatAs:{types:{1:["json","yaml","terraform"]},fn:({args:[r,e]})=>{switch(e){case"json":return JSON.stringify(r,null,2);case"yaml":return O.default.stringify(r,null,{indent:2});case"terraform":return C(r)}throw Error("Unsupported format: "+String(e))}}});var R=require("@homedev/object-utils"),L=require("@homedev/select"),mr=require("@homedev/string-utils");var p={eq:(r,e)=>r===e,ne:(r,e)=>r!==e,lt:(r,e)=>typeof r==="number"&&typeof e==="number"&&r<e,le:(r,e)=>typeof r==="number"&&typeof e==="number"&&r<=e,gt:(r,e)=>typeof r==="number"&&typeof e==="number"&&r>e,ge:(r,e)=>typeof r==="number"&&typeof e==="number"&&r>=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)=>!p.in(r,e),null:(r)=>r===null||r===void 0,notnull:(r)=>r!==null&&r!==void 0,empty:(r)=>r==="",notempty:(r)=>r!=="",nullorempty:(r)=>r===null||r===void 0||r==="",notnullorempty:(r)=>r!==null&&r!==void 0&&r!==""},ur=()=>({if:{types:{0:"boolean"},fn:(r)=>r.args[0]?r.args[1]:r.args[2]},check:{types:{0:["eq","ne","lt","le","gt","ge","in","notin","null","notnull","empty","notempty","nullorempty","notnullorempty"]},fn:(r)=>{let[e,...o]=r.args;switch(e){case"eq":return o.every((n,s,t)=>p.eq(n,t[0]));case"ne":return!o.every((n,s,t)=>p.eq(n,t[0]));case"lt":return p.lt(o[0],o[1]);case"le":return p.le(o[0],o[1]);case"gt":return p.gt(o[0],o[1]);case"ge":return p.ge(o[0],o[1]);case"in":return p.in(o[0],o[1]);case"notin":return p.notin(o[0],o[1]);case"null":return o.every((n)=>p.null(n));case"notnull":return o.every((n)=>p.notnull(n));case"empty":return o.every((n)=>p.empty(n));case"notempty":return o.every((n)=>p.notempty(n));case"nullorempty":return o.every((n)=>p.nullorempty(n));case"notnullorempty":return o.every((n)=>p.notnullorempty(n))}}},and:{types:()=>"boolean",fn:(r)=>r.args.every((e)=>!!e)},or:{types:()=>"boolean",fn:(r)=>r.args.some((e)=>!!e)},xor:{types:()=>"boolean",fn:(r)=>r.args.filter((e)=>!!e).length===1},true:{types:()=>"boolean",fn:(r)=>r.args.every((e)=>!!e)},false:{types:()=>"boolean",fn:(r)=>r.args.every((e)=>!e)},eq:{fn:(r)=>r.args.every((e,o,n)=>p.eq(e,n[0]))},ne:{fn:(r)=>!r.args.every((e,o,n)=>p.eq(e,n[0]))},null:{fn:(r)=>r.args.every((e)=>e===null||e===void 0)},notnull:{fn:(r)=>r.args.every((e)=>e!==null&&e!==void 0)},empty:{fn:(r)=>r.args.every((e)=>e==="")},notempty:{fn:(r)=>r.args.every((e)=>e!=="")},nullorempty:{fn:(r)=>r.args.every((e)=>e===null||e===void 0||e==="")},notnullorempty:{fn:(r)=>r.args.every((e)=>e!==null&&e!==void 0&&e!=="")},in:{fn:(r)=>p.in(r.args[0],r.args[1])},notin:{fn:(r)=>p.notin(r.args[0],r.args[1])},lt:{fn:(r)=>p.lt(r.args[0],r.args[1])},le:{fn:(r)=>p.le(r.args[0],r.args[1])},gt:{fn:(r)=>p.gt(r.args[0],r.args[1])},ge:{fn:(r)=>p.ge(r.args[0],r.args[1])}});var yr=()=>({merge:(r)=>r.args.flatMap((e)=>e),join:({args:[r],root:e,tags:o})=>{let n=o.key?.[0],s=o.separator?.[0]??o.sep?.[0],t=o.finalize?.length>0,a=E(s);if(typeof r==="string"){if(t&&r.length&&a)return r+a;return r}if(!Array.isArray(r))throw Error("Object is not a list");let f=((n?.length)?r.map((c)=>L.select({...e,...c},n)):r).join(a),i=o.pad?.[0]??"0",l=o.padChar?.[0]??" ",m=t&&f.length&&a?f+a:f;return i?mr.padBlock(m,parseInt(i),`
|
|
10
|
+
`,l):m},list:({args:r})=>R.toList(r[0],r[1]),object:({args:r})=>R.toObject(r[0],r[1]),range:({args:[r,e,o]})=>{let n=parseInt(r),s=parseInt(e),t=parseInt(o)||1;if(isNaN(n))throw Error("Invalid range: start value '"+String(r)+"' is not a number");if(isNaN(s))throw Error("Invalid range: end value '"+String(e)+"' is not a number");if(t===0)throw Error("Invalid range: step cannot be zero");if((s-n)/t<0)throw Error("Invalid range: step "+String(t)+" has wrong direction for range "+String(n)+" to "+String(s));return Array.from({length:Math.floor((s-n)/t)+1},(a,f)=>n+f*t)},filter:{types:{1:["eq","ne","lt","le","gt","ge","in","notin","null","notnull","empty","notempty","nullorempty","notnullorempty"]},fn:({args:[r,e,o],root:n,tags:s})=>{if(r===null||r===void 0)throw Error("Filter source cannot be null or undefined");if(!Array.isArray(r))throw Error("Filter source must be an array");let t=s.key?.[0],a=p[e];if(!a)throw Error(`Unsupported filter operation: ${e}`);return r.filter((f)=>{try{let i=t?L.select({...n,...f},t):f;return a(i,o)}catch{return!1}})}}});var gr=require("@homedev/fields"),cr=require("@homedev/object-utils"),j=require("@homedev/select"),dr=require("@homedev/string-utils");var wr=()=>({each:{processArgs:!1,fn:async({rawArgs:[r,e,...o],root:n,options:s,tags:t})=>{let a=async(y)=>y.quoted?E(y.value):await j.select(n,y.value),f=await j.select(n,r.value),i=await a(e),l=t.key?.[0],m=Array.isArray(f)?f:cr.toList(f),c=[];for(let y=0;y<m.length;y++){let d=globalThis.structuredClone?structuredClone(i):JSON.parse(JSON.stringify(i)),M={instance:d},I=typeof i==="string"?M:d,w={...n,item:m[y],index:y,params:await Promise.all(o.map(async(Cr)=>await a(Cr))),instance:d,parent:n.this,tags:t};if(t?.root?.[0])Object.assign(w,await j.select(w,t.root[0]));if(await gr.processFields(I,{...s,root:w}),l!==void 0)c.push(await j.select(M.instance,l));else c.push(M.instance)}if(t.join?.length){if(c.length===0)return"";let y=E(t.join[0]),d=t.pad?.[0]??"0",M=t.padChar?.[0]??" ",I=t.finalize?.length&&y?y:"",w=`${c.join(y)}${I}`;return d?dr.padBlock(w,parseInt(d),`
|
|
11
|
+
`,M):w}return c}}});var br=require("@homedev/select"),S=async(r,e,o)=>r.rawArgs[e].quoted?r.rawArgs[e].value:await br.select(r.root,r.rawArgs[e].value,{defaultValue:o}),Fr=()=>({switch:{processArgs:!1,fn:async(r)=>{let e=await S(r,0,!1),o=await S(r,1);if(o[e]===void 0){if(r.rawArgs.length>2)return S(r,2);throw Error(`Unhandled switch case: ${e}`)}return o[e]}}});var Ar=()=>({log:(r)=>{console.log(...r.args)}});var Mr=require("@homedev/navigate");var kr=()=>({default:{processArgs:!1,fn:async(r)=>{for(let e=0;e<r.rawArgs.length;e++)if(r.rawArgs[e]?.value!==void 0){let n=await S(r,e,null);if(n!==null)return n}if(r.tags.nullable?.length)return Mr.NavigateResult.DeleteItem();if(r.tags.fail?.length)throw Error(`No valid value found for default (${r.rawArgs.map((e)=>e.value).join(", ")})`);return""}}});var A=require("@homedev/navigate"),hr=()=>({convert:({args:[r,e,o]})=>{switch(e){case"string":return String(r);case"number":{let n=Number(r);if(!isNaN(n))return A.NavigateResult.ReplaceItem(n);break}case"boolean":if(r==="true"||r===!0||r===1||r==="1"||r==="yes"||r==="on")return A.NavigateResult.ReplaceItem(!0);else if(r==="false"||r===!1||r===0||r==="0"||r==="no"||r==="off")return A.NavigateResult.ReplaceItem(!1);break;default:throw Error(`Unsupported type for convert: ${e}`)}if(o!==void 0)return A.NavigateResult.ReplaceItem(o);throw Error(`Failed to convert value to ${e}`)},isType:({args:[r,e]})=>{let n=(()=>{switch(e){case"string":return typeof r==="string";case"number":return typeof r==="number";case"boolean":return typeof r==="boolean";case"object":return r!==null&&typeof r==="object"&&!Array.isArray(r);case"array":return Array.isArray(r);case"null":return r===null;case"undefined":return r===void 0;case"function":return typeof r==="function";default:throw Error(`Unknown type for isType: ${e}`)}})();return A.NavigateResult.ReplaceItem(n)},typeOf:({args:[r]})=>{if(r===null)return"null";else if(Array.isArray(r))return"array";else return typeof r}});var Pr=(r)=>r.keys(V(r)).keys(H(r)).keys(Q()).keys(sr()).keys(X()).keys(rr()).keys(or(r)).keys(ir(r)).sources(fr(r)).sources(pr()).sources(lr()).sources(hr()).sources(yr()).sources(wr()).sources(Fr()).sources(Ar()).sources(ur()).sources(kr());class Sr{includeDirectories=[];includes=[];outputs=[];vars={};cache={};fields={sources:{},keys:{}};objectMetadata={};constructor(){this.use(Pr)}use(r){return r(this),this}includeDirectory(...r){return this.includeDirectories.push(...r),this}getIncludeDirectories(){return this.includeDirectories}include(...r){return this.includes.push(...r),this}keys(r){return Object.assign(this.fields.keys,{...this.fields.keys,...r}),this}sources(r){return Object.assign(this.fields.sources,{...this.fields.sources,...r}),this}variables(r){return this.vars={...this.vars,...r},this}getOutputs(){return this.outputs}output(r){return this.outputs.push(r),this}metadata(r,e){return this.objectMetadata[r]=e,this}getMetadata(r){return this.objectMetadata[r]}getAllMetadata(){return this.objectMetadata}filter(r){return this.fields.filters??=[],this.fields.filters?.push(r),this}async docIncludes(r,e){let o=[];if(r.content.includes)o.push(...r.content.includes),delete r.content.includes;o.push(...this.includes),this.includes.length=0;for(let n of o)jr.merge(await this.load(n,r.folderPath,{parent:r.content,...e},!0),r.content)}async loadObject(r,e,o){return await Er.processFields(r,{...this.fields,globalContext:{file:o?.fullPath??"@internal"},root:{...this.fields.root,...this.vars,$document:{root:{content:r},fileName:o?.fileName??"@internal",folder:o?.folderPath??"@internal",fullPath:o?.fullPath??"@internal",...e}}}),r}async load(r,e,o,n){let s=e?[e]:[];s.push(...this.includeDirectories.map((m)=>U.default.isAbsolute(m)?m:U.default.join(e??process.cwd(),m)));let t=await N.loadFormat(r,{dirs:s});if(!t.content)return null;let a=t.fullPath,f=this.cache[a]??t.content,i=globalThis.structuredClone?structuredClone(f):JSON.parse(JSON.stringify(f));t.content=i,await this.docIncludes(t,o);let l;if(n!==!0)l=await this.loadObject(t.content,o,{fileName:t.fullPath,folderPath:t.folderPath,fullPath:t.fullPath});else l=t.content;return this.cache[a]??=f,l}async writeOutputs(r){await N.writeOutputs(this.getOutputs(),r)}}
|