@homedev/objector 1.2.26 → 1.2.27

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