@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.
Files changed (2) hide show
  1. package/dist/index.js +7 -7
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,11 +1,11 @@
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(`
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,i])=>`${n}${a} = ${O(i,e+1)}`).join(`
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]})=>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)}}
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)}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@homedev/objector",
3
- "version": "1.2.23",
3
+ "version": "1.2.24",
4
4
  "description": "object extensions for YAML/JSON",
5
5
  "author": "julzor",
6
6
  "license": "ISC",