@homedev/objector 1.2.27 → 1.2.29

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