@homedev/objector 1.2.13 → 1.2.15

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.
package/dist/index.js CHANGED
@@ -1,5 +1,4 @@
1
- var kr=Object.create;var{getPrototypeOf:Ar,defineProperty:w,getOwnPropertyNames:I,getOwnPropertyDescriptor:Pr}=Object,N=Object.prototype.hasOwnProperty;var g=(r,e,o)=>{o=r!=null?kr(Ar(r)):{};let s=e||!r||!r.__esModule?w(o,"default",{value:r,enumerable:!0}):o;for(let n of I(r))if(!N.call(s,n))w(s,n,{get:()=>r[n],enumerable:!0});return s},D=new WeakMap,jr=(r)=>{var e=D.get(r),o;if(e)return e;if(e=w({},"__esModule",{value:!0}),r&&typeof r==="object"||typeof r==="function")I(r).map((s)=>!N.call(e,s)&&w(e,s,{get:()=>r[s],enumerable:!(o=Pr(r,s))||o.enumerable}));return D.set(r,e),e};var Or=(r,e)=>{for(var o in e)w(r,o,{get:e[o],enumerable:!0,configurable:!0,set:(s)=>e[o]=()=>s})};var Cr={};Or(Cr,{Objector:()=>br});module.exports=jr(Cr);var dr=require("@homedev/fields"),k=require("@homedev/files"),wr=require("@homedev/merge"),S=g(require("path"));var R=require("@homedev/navigate"),L=(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 R.NavigateResult.SkipSiblings()}});var J=require("@homedev/navigate"),$=g(require("path")),q=(r)=>({load:async(e)=>{let o=e.options.globalContext;for(let{file:s}of Array.isArray(e.value)?e.value:[e.value]){if(!s)throw Error("File reference required");await r.load(s,o.file&&$.default.dirname(o.file))}return J.NavigateResult.DeleteItem()}});var j=require("@homedev/fields"),O=require("@homedev/merge"),b=require("@homedev/select"),z=()=>({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 b.select(r.root,i);return i},s=()=>{if(typeof r.value==="string")return b.select(r.root,r.value);if(Array.isArray(r.value))return r.value;if(typeof e.from==="string")return b.select(r.root,e.from);return e.from},n=async(i)=>{if(e.selector===void 0)return i;if(typeof e.selector!=="string"){let p=JSON.parse(JSON.stringify(e.selector));return await j.processFields(p,{...r.options,root:{...r.root,result:i}}),p}return await b.select({...r.root,result:i},e.selector)},t=await s(),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=O.mergeAll([e.model,...Array.isArray(e.extend.model)?e.extend.model:[e.extend.model]]);let l=[];for(let i=0;i<t.length;i++){let p=JSON.parse(JSON.stringify(a));if(await j.processFields(p,{...r.options,root:{...r.root,index:i,item:t[i],instance:p}}),e.extend?.result)p=O.mergeAll([p,...Array.isArray(e.extend?.result)?e.extend.result:[Array.isArray(e.extend?.result)]]);l.push(await n(p))}return l}}});var B=require("@homedev/select"),U=()=>({concat:async(r)=>{let e=[];for(let o of Array.isArray(r.value)?r.value:[r.value])e.push(...await B.select(r.root,o));return e.filter((o)=>o!==void 0)}});var Y=require("@homedev/fields"),T=require("@homedev/merge"),V=require("@homedev/navigate"),G=require("@homedev/select"),H=()=>({extends:async(r)=>{let e=async(o,s)=>{for(let n of Array.isArray(s)?s:[s]){let t=await G.select(r.root,n),a=JSON.parse(JSON.stringify(t));if(a[r.key])await e(a,a[r.key]);await Y.processFields(a,{...r.options}),T.merge(a,o),delete o[r.key]}};return await e(r.parent,r.value),V.NavigateResult.Explore()}});var u=require("@homedev/navigate"),K=(r)=>({skip:{types:{0:"boolean"},fn:(e)=>e.value?u.NavigateResult.DeleteParent():u.NavigateResult.DeleteItem()},metadata:({path:e,value:o})=>{return r.metadata(e,o),u.NavigateResult.DeleteItem()},if:{types:{0:"boolean"},fn:(e)=>{let o=e.parent[".then"],s=e.parent[".else"];if(o)delete e.parent[".then"];if(s)delete e.parent[".else"];return e.value?o??u.NavigateResult.DeleteItem():s??u.NavigateResult.DeleteItem()}},switch:(e)=>{let o=e.value;if(!o.cases)throw Error("Missing cases for switch");return o.cases[o.from]??o.default??u.NavigateResult.DeleteParent()}});var Q=require("@homedev/merge"),W=require("@homedev/select"),X=()=>({from:async({root:r,parent:e,value:o})=>{let s=await W.select(r,o);if(e.content){if(Array.isArray(e.content)&&Array.isArray(s))return[...s,...e.content];return Q.merge(s,e.content),e.content}return s}});var Z=require("@homedev/navigate"),C=g(require("node:vm")),x=(r)=>({modules:async(e)=>{for(let[o,s]of Object.entries(e.value)){let n=C.default.createContext({console,objector:r,document:e.root}),t=new C.default.SourceTextModule(s,{identifier:o,context:n});return await t.link((a)=>{throw Error(`Module ${a} is not allowed`)}),await t.evaluate(),r.sources(Object.fromEntries(Object.entries(t.namespace).map(([a,l])=>[`${o}.${a}`,(i)=>l(i,...i.args)]))),Z.NavigateResult.DeleteItem()}}});var c=require("@homedev/files"),M=g(require("fs/promises")),y=g(require("path")),rr=(r)=>({include:async(e)=>{let{file:o}=e.options.globalContext;return await c.globMap(e.args[0],{cwd:y.default.dirname(o),filter:(s)=>y.default.basename(o)!==s,map:async(s)=>r.load(s,y.default.dirname(o),{parent:e.root})})},file:async(e)=>await M.default.readFile(await c.locate(e.args[0],r.getIncludeDirectories())).then((o)=>o.toString()),data:async({args:[e]})=>{if(e.file)try{return await M.default.readFile(await c.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=[],n=(()=>{let l=e.args[2]??["**/node_modules/**"],i=typeof l==="string"?l.split(",").map((p)=>p.trim()):l;if(!Array.isArray(i))throw Error("Scan exclusion must be a list");return i})(),{file:t}=e.options.globalContext,a=e.args[1]?await c.locate(e.args[1],r.getIncludeDirectories()):y.default.dirname(t);for await(let l of M.default.glob(e.args[0],{cwd:a,exclude:(i)=>n.some((p)=>y.default.matchesGlob(i,p))}))o.push(l);return o}});var er=()=>({env:(r)=>process.env[r.args[0]]});var f=require("@homedev/string-utils"),E=g(require("yaml")),or=()=>({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(""),lower:(r)=>r.args[0].toLowerCase(),upper:(r)=>r.args[0].toUpperCase(),pascal:(r)=>f.pascal(r.args[0]),camel:(r)=>f.camel(r.args[0]),capital:(r)=>f.capital(r.args[0]),snake:(r)=>f.changeCase(f.snake(r.args[0],"_"),r.args[1]),kebab:(r)=>f.changeCase(f.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]})=>E.default.stringify(r,null,{indent:e??2}),fromYaml:({args:[r]})=>E.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 s=o.join?.[0]??`
2
- `,n=o.padChar?.[0]??" ";return f.padBlock(r,e??2,s,n)}},format:{types:{0:"ref",1:"ref"},fn:({args:[r,e,o],tags:s})=>{let n=s.pad?.[0],t=s.padChar?.[0]??" ",a=Array.isArray(e)?e.map((l)=>f.tokenize(l,r)).join(o??""):f.tokenize(e,r);return n!==void 0?f.padBlock(a,parseInt(n),`
3
- `,t):a}}});var h=require("@homedev/object-utils"),sr=require("@homedev/select"),tr=()=>({merge:(r)=>r.args.flatMap((e)=>e),join:({args:[r],root:e,tags:o})=>{let s=o.key?.[0],n=o.separator?.[0],t=o.finalize?.length>0,a=n?.replace("\\n",`
4
- `);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 l=((s?.length)?r.map((i)=>sr.select({...e,...i},s)):r).join(a);return t&&l.length&&a?l+a:l},list:({args:r})=>h.toList(r[0],r[1]),object:({args:r})=>h.toObject(r[0],r[1]),range:({args:[r,e,o]})=>{let s=parseInt(r),n=parseInt(e),t=parseInt(o)||1;if(isNaN(s)||isNaN(n))throw Error("Invalid range");return Array.from({length:Math.floor((n-s)/t)+1},(a,l)=>s+l*t)}});var ar=require("@homedev/fields"),ir=require("@homedev/object-utils"),v=require("@homedev/select"),nr=(r)=>r.replaceAll("\\n",`
5
- `).replaceAll("\\$","$").replaceAll("\\t","\t"),lr=()=>({each:{processArgs:!1,fn:async({rawArgs:[r,e,...o],root:s,options:n,tags:t})=>{let a=async(m)=>m.quoted?nr(m.value):await v.select(s,m.value),l=await v.select(s,r.value),i=await a(e),p=t.key?.[0],_=Array.isArray(l)?l:ir.toList(l),d=[];for(let m=0;m<_.length;m++){let A=JSON.parse(JSON.stringify(i)),P={instance:A},Fr=typeof i==="string"?P:A,Mr={...s,item:_[m],index:m,params:await Promise.all(o.map(async(hr)=>await a(hr))),instance:A,parent:s.this,tags:t};if(await ar.processFields(Fr,{...n,root:Mr}),p!==void 0)d.push(P.instance[p]);else d.push(P.instance)}if(t.join?.length){if(d.length===0)return"";let m=nr(t.join[0]);return d.join(m)+(t.finalize?.length?m:"")}return d}}});var fr=require("@homedev/select"),F=async(r,e,o)=>r.rawArgs[e].quoted?r.rawArgs[e].value:await fr.select(r.root,r.rawArgs[e].value,{defaultValue:o}),pr=()=>({switch:{processArgs:!1,fn:async(r)=>{let e=await F(r,0,!1),o=await F(r,1);if(o[e]===void 0){if(r.rawArgs.length>2)return F(r,2);throw Error(`Unhandled switch case: ${e}`)}return o[e]}}});var mr=()=>({log:(r)=>{console.log(...r.args)}});var 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((s,n,t)=>s===t[0]);case"ne":return o.every((s,n,t)=>s!==t[0]);case"lt":return o[0]<o[1];case"le":return o[0]<=o[1];case"gt":return o[0]>o[1];case"ge":return o[0]>=o[1];case"in":return o[0].includes(o[1]);case"notin":return!o[0].includes(o[1]);case"null":return o.every((s,n,t)=>s===null||s===void 0);case"notnull":return o.every((s,n,t)=>s!==null&&s!==void 0);case"empty":return o.every((s,n,t)=>s==="");case"notempty":return o.every((s,n,t)=>s!=="");case"nullorempty":return o.every((s,n,t)=>s===null||s===void 0||s==="");case"notnullorempty":return o.every((s,n,t)=>s!==null&&s!==void 0&&s!=="")}}},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,s)=>e===s[0])},ne:{fn:(r)=>!r.args.every((e,o,s)=>e===s[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 gr=require("@homedev/navigate");var yr=()=>({default:{processArgs:!1,fn:async(r)=>{for(let e=0;e<r.rawArgs.length;e++)if(r.rawArgs[e]?.value!==void 0){let s=await F(r,e,null);if(s!==null)return s}if(r.tags.nullable?.length)return gr.NavigateResult.DeleteItem();if(r.tags.fail?.length)throw Error(`No valid value found for default (${r.rawArgs.map((e)=>e.value).join(", ")})`);return""}}});var cr=(r)=>r.keys(L(r)).keys(q(r)).keys(z()).keys(X()).keys(U()).keys(H()).keys(K(r)).keys(x(r)).sources(rr(r)).sources(er()).sources(or()).sources(tr()).sources(lr()).sources(pr()).sources(mr()).sources(ur()).sources(yr());class br{includeDirectories=[];includes=[];outputs=[];vars={};cache={};fields={sources:{},keys:{}};objectMetadata={};constructor(){this.use(cr)}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 s of o)wr.merge(await this.load(s,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,s){if(this.cache[r])return this.cache[r];let n=e?[e]:[];n.push(...this.includeDirectories.map((a)=>S.default.isAbsolute(a)?a:S.default.join(e??process.cwd(),a)));let t=await k.loadFormat(r,{dirs:n});if(!t.content)return null;if(await this.docIncludes(t,o),s!==!0)return this.loadObject(t.content,o,{fileName:t.fullPath,folderPath:t.folderPath,fullPath:t.fullPath});return t.content}async writeOutputs(r){await k.writeOutputs(this.getOutputs(),r)}}
1
+ var kr=Object.create;var{getPrototypeOf:Ar,defineProperty:b,getOwnPropertyNames:R,getOwnPropertyDescriptor:Pr}=Object,L=Object.prototype.hasOwnProperty;var g=(r,e,o)=>{o=r!=null?kr(Ar(r)):{};let t=e||!r||!r.__esModule?b(o,"default",{value:r,enumerable:!0}):o;for(let n of R(r))if(!L.call(t,n))b(t,n,{get:()=>r[n],enumerable:!0});return t},N=new WeakMap,jr=(r)=>{var e=N.get(r),o;if(e)return e;if(e=b({},"__esModule",{value:!0}),r&&typeof r==="object"||typeof r==="function")R(r).map((t)=>!L.call(e,t)&&b(e,t,{get:()=>r[t],enumerable:!(o=Pr(r,t))||o.enumerable}));return N.set(r,e),e};var Or=(r,e)=>{for(var o in e)b(r,o,{get:e[o],enumerable:!0,configurable:!0,set:(t)=>e[o]=()=>t})};var Cr={};Or(Cr,{Objector:()=>Fr});module.exports=jr(Cr);var wr=require("@homedev/fields"),P=require("@homedev/files"),br=require("@homedev/merge"),D=g(require("path"));var J=require("@homedev/navigate"),$=(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 J.NavigateResult.SkipSiblings()}});var q=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 q.NavigateResult.DeleteItem()}});var E=require("@homedev/fields"),S=require("@homedev/merge"),F=require("@homedev/select"),U=()=>({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 F.select(r.root,i);return i},t=()=>{if(typeof r.value==="string")return F.select(r.root,r.value);if(Array.isArray(r.value))return r.value;if(typeof e.from==="string")return F.select(r.root,e.from);return e.from},n=async(i)=>{if(e.selector===void 0)return i;if(typeof e.selector!=="string"){let p=JSON.parse(JSON.stringify(e.selector));return await E.processFields(p,{...r.options,root:{...r.root,result:i}}),p}return await F.select({...r.root,result:i},e.selector)},s=await t(),a=await o();if(!Array.isArray(s))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 l=[];for(let i=0;i<s.length;i++){let p=JSON.parse(JSON.stringify(a));if(await E.processFields(p,{...r.options,root:{...r.root,index:i,item:s[i],instance:p}}),e.extend?.result)p=S.mergeAll([p,...Array.isArray(e.extend?.result)?e.extend.result:[Array.isArray(e.extend?.result)]]);l.push(await n(p))}return l}}});var V=require("@homedev/select"),Y=()=>({concat:async(r)=>{let e=[];for(let o of Array.isArray(r.value)?r.value:[r.value])e.push(...await V.select(r.root,o));return e.filter((o)=>o!==void 0)}});var T=require("@homedev/fields"),G=require("@homedev/merge"),H=require("@homedev/navigate"),K=require("@homedev/select"),Q=()=>({extends:async(r)=>{let e=async(o,t)=>{for(let n of Array.isArray(t)?t:[t]){let s=await K.select(r.root,n),a=JSON.parse(JSON.stringify(s));if(a[r.key])await e(a,a[r.key]);await T.processFields(a,{...r.options}),G.merge(a,o),delete o[r.key]}};return await e(r.parent,r.value),H.NavigateResult.Explore()}});var u=require("@homedev/navigate"),W=(r)=>({skip:{types:{0:"boolean"},fn:(e)=>e.value?u.NavigateResult.DeleteParent():u.NavigateResult.DeleteItem()},metadata:({path:e,value:o})=>{return r.metadata(e,o),u.NavigateResult.DeleteItem()},if:{types:{0:"boolean"},fn:(e)=>{let o=e.parent[".then"],t=e.parent[".else"];if(o)delete e.parent[".then"];if(t)delete e.parent[".else"];return e.value?o??u.NavigateResult.DeleteItem():t??u.NavigateResult.DeleteItem()}},switch:(e)=>{let o=e.value;if(!o.cases)throw Error("Missing cases for switch");return o.cases[o.from]??o.default??u.NavigateResult.DeleteParent()}});var X=require("@homedev/merge"),Z=require("@homedev/select"),x=()=>({from:async({root:r,parent:e,value:o})=>{let t=await Z.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 rr=require("@homedev/navigate"),v=g(require("node:vm")),er=(r)=>({modules:async(e)=>{for(let[o,t]of Object.entries(e.value)){let n=v.default.createContext({console,objector:r,document:e.root}),s=new v.default.SourceTextModule(t,{identifier:o,context:n});return await s.link((a)=>{throw Error(`Module ${a} is not allowed`)}),await s.evaluate(),r.sources(Object.fromEntries(Object.entries(s.namespace).map(([a,l])=>[`${o}.${a}`,(i)=>l(i,...i.args)]))),rr.NavigateResult.DeleteItem()}}});var c=require("@homedev/files"),k=g(require("fs/promises")),y=g(require("path")),or=(r)=>({include:async(e)=>{let{file:o}=e.options.globalContext;return await c.globMap(e.args[0],{cwd:y.default.dirname(o),filter:(t)=>y.default.basename(o)!==t,map:async(t)=>r.load(t,y.default.dirname(o),{parent:e.root})})},file:async(e)=>await k.default.readFile(await c.locate(e.args[0],r.getIncludeDirectories())).then((o)=>o.toString()),data:async({args:[e]})=>{if(e.file)try{return await k.default.readFile(await c.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=[],n=(()=>{let l=e.args[2]??["**/node_modules/**"],i=typeof l==="string"?l.split(",").map((p)=>p.trim()):l;if(!Array.isArray(i))throw Error("Scan exclusion must be a list");return i})(),{file:s}=e.options.globalContext,a=e.args[1]?await c.locate(e.args[1],r.getIncludeDirectories()):y.default.dirname(s);for await(let l of k.default.glob(e.args[0],{cwd:a,exclude:(i)=>n.some((p)=>y.default.matchesGlob(i,p))}))o.push(l);return o}});var tr=()=>({env:(r)=>process.env[r.args[0]]});var f=require("@homedev/string-utils"),_=g(require("yaml"));var sr=require("@homedev/fields"),nr=require("@homedev/object-utils"),M=require("@homedev/select"),d=(r)=>{if(!r)return r;return r.replaceAll("\\n",`
2
+ `).replaceAll("\\$","$").replaceAll("\\t","\t")},ar=()=>({each:{processArgs:!1,fn:async({rawArgs:[r,e,...o],root:t,options:n,tags:s})=>{let a=async(m)=>m.quoted?d(m.value):await M.select(t,m.value),l=await M.select(t,r.value),i=await a(e),p=s.key?.[0],I=Array.isArray(l)?l:nr.toList(l),w=[];for(let m=0;m<I.length;m++){let j=JSON.parse(JSON.stringify(i)),O={instance:j},Mr=typeof i==="string"?O:j,C={...t,item:I[m],index:m,params:await Promise.all(o.map(async(hr)=>await a(hr))),instance:j,parent:t.this,tags:s};if(s?.root?.[0])Object.assign(C,await M.select(C,s.root[0]));if(await sr.processFields(Mr,{...n,root:C}),p!==void 0)w.push(await M.select(O.instance,p));else w.push(O.instance)}if(s.join?.length){if(w.length===0)return"";let m=d(s.join[0]);return w.join(m)+(s.finalize?.length?m:"")}return w}}});var 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)=>f.pascal(r.args[0]),camel:(r)=>f.camel(r.args[0]),capital:(r)=>f.capital(r.args[0]),snake:(r)=>f.changeCase(f.snake(r.args[0],"_"),r.args[1]),kebab:(r)=>f.changeCase(f.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]??`
3
+ `,n=o.padChar?.[0]??" ";return f.padBlock(r,e??2,t,n)}},format:{types:{0:"ref",1:"ref",2:"ref"},fn:({args:[r,e,o],tags:t})=>{let n=t.pad?.[0],s=t.padChar?.[0]??" ",a=Array.isArray(r)?r.map((l)=>f.tokenize(e,l)).join(d(o)??""):f.tokenize(e,r);return n!==void 0?f.padBlock(a,parseInt(n),`
4
+ `,s):a}}});var A=require("@homedev/object-utils"),lr=require("@homedev/select");var fr=()=>({merge:(r)=>r.args.flatMap((e)=>e),join:({args:[r],root:e,tags:o})=>{let t=o.key?.[0],n=o.separator?.[0]??o.sep?.[0],s=o.finalize?.length>0,a=d(n);if(typeof r==="string"){if(s&&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)=>lr.select({...e,...i},t)):r).join(a);return s&&l.length&&a?l+a:l},list:({args:r})=>A.toList(r[0],r[1]),object:({args:r})=>A.toObject(r[0],r[1]),range:({args:[r,e,o]})=>{let t=parseInt(r),n=parseInt(e),s=parseInt(o)||1;if(isNaN(t)||isNaN(n))throw Error("Invalid range");return Array.from({length:Math.floor((n-t)/s)+1},(a,l)=>t+l*s)}});var pr=require("@homedev/select"),h=async(r,e,o)=>r.rawArgs[e].quoted?r.rawArgs[e].value:await pr.select(r.root,r.rawArgs[e].value,{defaultValue:o}),mr=()=>({switch:{processArgs:!1,fn:async(r)=>{let e=await h(r,0,!1),o=await h(r,1);if(o[e]===void 0){if(r.rawArgs.length>2)return h(r,2);throw Error(`Unhandled switch case: ${e}`)}return o[e]}}});var ur=()=>({log:(r)=>{console.log(...r.args)}});var gr=()=>({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,n,s)=>t===s[0]);case"ne":return o.every((t,n,s)=>t!==s[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,n,s)=>t===null||t===void 0);case"notnull":return o.every((t,n,s)=>t!==null&&t!==void 0);case"empty":return o.every((t,n,s)=>t==="");case"notempty":return o.every((t,n,s)=>t!=="");case"nullorempty":return o.every((t,n,s)=>t===null||t===void 0||t==="");case"notnullorempty":return o.every((t,n,s)=>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 yr=require("@homedev/navigate");var cr=()=>({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 h(r,e,null);if(t!==null)return t}if(r.tags.nullable?.length)return yr.NavigateResult.DeleteItem();if(r.tags.fail?.length)throw Error(`No valid value found for default (${r.rawArgs.map((e)=>e.value).join(", ")})`);return""}}});var dr=(r)=>r.keys($(r)).keys(B(r)).keys(U()).keys(x()).keys(Y()).keys(Q()).keys(W(r)).keys(er(r)).sources(or(r)).sources(tr()).sources(ir()).sources(fr()).sources(ar()).sources(mr()).sources(ur()).sources(gr()).sources(cr());class Fr{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 t of o)br.merge(await this.load(t,r.folderPath,{parent:r.content,...e},!0),r.content)}async loadObject(r,e,o){return await wr.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 n=e?[e]:[];n.push(...this.includeDirectories.map((a)=>D.default.isAbsolute(a)?a:D.default.join(e??process.cwd(),a)));let s=await P.loadFormat(r,{dirs:n});if(!s.content)return null;if(await this.docIncludes(s,o),t!==!0)return this.loadObject(s.content,o,{fileName:s.fullPath,folderPath:s.folderPath,fullPath:s.fullPath});return s.content}async writeOutputs(r){await P.writeOutputs(this.getOutputs(),r)}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@homedev/objector",
3
- "version": "1.2.13",
3
+ "version": "1.2.15",
4
4
  "description": "object extensions for YAML/JSON",
5
5
  "author": "julzor",
6
6
  "license": "ISC",
package/dist/index.d.ts DELETED
@@ -1,42 +0,0 @@
1
- import { FieldProcessorMap } from '@homedev/fields';
2
- import { Output } from '@homedev/files';
3
- import { WriteOutputsOption } from '@homedev/files';
4
-
5
- declare interface LoadObjectOptions {
6
- fileName: string;
7
- fullPath: string;
8
- folderPath: string;
9
- }
10
-
11
- /**
12
- * @public
13
- */
14
- export declare class Objector {
15
- private includeDirectories;
16
- private includes;
17
- private outputs;
18
- private vars;
19
- private cache;
20
- private fields;
21
- private objectMetadata;
22
- constructor();
23
- use(handler: (o: Objector) => void): this;
24
- includeDirectory(...dirs: string[]): this;
25
- getIncludeDirectories(): string[];
26
- include(...files: string[]): this;
27
- keys(keys: FieldProcessorMap): this;
28
- sources(sources: FieldProcessorMap): this;
29
- variables(vars: Record<string, any>): this;
30
- getOutputs(): Output[];
31
- output(o: Output): this;
32
- metadata(path: string, o: any): this;
33
- getMetadata(path: string): any;
34
- getAllMetadata(): Record<string, any>;
35
- filter(f: RegExp): this;
36
- private docIncludes;
37
- loadObject<T = any>(data: T, container?: any, options?: LoadObjectOptions): Promise<T>;
38
- load<T = any>(fileName: string, cwd?: string, container?: any, noProcess?: boolean): Promise<T | null>;
39
- writeOutputs(options?: WriteOutputsOption): Promise<void>;
40
- }
41
-
42
- export { }