@homedev/objector 1.2.22 → 1.2.23

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