@homedev/objector 1.2.17 → 1.2.19

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