@homedev/objector 1.2.23 → 1.2.25

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