@homedev/objector 1.3.10 → 1.3.11

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 +1 -1
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -17,7 +17,7 @@ var Ht=Object.create;var Dr=Object.defineProperty;var Gt=Object.getOwnPropertyDe
17
17
  `,j-1),V=T===-1?0:T+1,v=u.slice(V,j).trim().length===0?V:j;u=u.slice(0,v)+k+u.slice(D),a+=k.length-(D-v),y.content=u}return[u,l]};var Or=(r)=>{let e=[],t=0;while(t<r.length)if(r[t]==="$"&&r[t+1]==="("&&(t===0||r[t-1]!=="\\")){let n=t;t+=2;let i=1;for(;t<r.length;t++)if(r[t]==="(")i++;else if(r[t]===")"){if(i--,i===0){e.push([n,t]);break}}if(i!==0)throw Error(`Unmatched opening $( at position ${n.toString()}`);t++}else t++;return e};var Ur=(r)=>({value:r}),yn=(r)=>{return r!==null&&typeof r==="object"},Tr=async(r,e,t)=>{for(let n=e.length-1;n>=0;n--){let[i,s]=e[n],u=r.slice(i+2,s),a=await Tr(u,Or(u),t);if(typeof a==="object")return a;let l=await t(a,r);if(yn(l))return l.value;r=r.slice(0,i)+l+r.slice(s+1)}return r},Vr=async(r,e)=>Tr(r,Or(r),e);var hn=(r)=>{return r!==null&&typeof r==="object"&&"action"in r},dn=/([\w\d.-_/]+):(.+)/,bn=async(r,e,t,n)=>{let i=await(async()=>{let s=dn.exec(r);if(!s)return await Object.select(e,r);let[u,a,l]=s,y=ur(n.sources,a),d=Zr(l,y,e);return await y.fn({args:d.parsedArgs,rawArgs:d.rawArgs,tags:d.tags,key:a,options:n,root:e,path:t,value:null})})();if(i===null||i===void 0)return"";if(typeof i==="object")return Ur(i);return i},Ar=async(r,e,t,n)=>{let i=await Vr(e,(s)=>bn(s,t,r,n));if(hn(i))return i;if(i===e)return g.Explore();if(typeof i==="string"){let s=await Ar(r,i,t,n);if(s.action!==L.Explore)return s}return g.ReplaceItem(i)};var $=async(r,e)=>{return e??={},await Object.navigate(r,async(t)=>{let n=[...t.path,t.key].join(".");if(e?.filters?.length&&e.filters.some((a)=>a.test(n)))return g.NoExplore();let i=t.path.length===0,s=t.parents.length>0?t.parents.toReversed():[];if(i){if(s.length>0)throw Error("Root object should not have a parent");s=e?.root?.parents?[e.root.parent,...e.root.parents.toReversed()]:[]}let u={...r,...e.root,this:t.parent,parent:s.length>0?s[0]:null,parents:s};try{if(t.key.startsWith("$"))return g.NoExplore();let a=g.Explore();if(typeof t.value==="string"){let l=t.value,y=!1;while(!0){let[d,p]=await Xr(l,e,n,u);if(y=y||p,a=await Ar(n,d,u,e),a.action===L.ReplaceItem&&typeof a.by==="string"){l=a.by;continue}if(a.action===L.Explore&&p&&d!==l)a=g.ReplaceItem(d);break}if(a.action===L.Explore&&l!==t.value)a=g.ReplaceItem(l);switch(a.action){case L.Explore:break;case L.ReplaceItem:t.value=a.by;break;default:return a}}if(Qr(t,e))a=await xr(t,n,u,e);return a}catch(a){throw Error(`${a.message}
18
18
  (${n})`,{cause:a})}}),r};var vr=(r,e)=>e?{fn:(t)=>r(...t.args),types:e}:(t)=>r(...t.args),Ci=(r,e)=>Object.fromEntries(r.map((t)=>[t.name,vr(t,e?.types?.[t.name])])),J=(r,e)=>Object.fromEntries((e?.keys??Object.keys(r)).map((t)=>[t,vr(r[t],e?.types?.[t])]));var fr=async(r,e)=>{let t=r.value;if(t.selector===void 0)return e;if(typeof t.selector!=="string"){let n=JSON.parse(JSON.stringify(t.selector));return await $(n,{...r.options,root:{...r.root,result:e}}),n}return await Object.select({...r.root,result:e},t.selector)};import _ from"path";class K{constructor(){}static normalize(r){return _.normalize(_.resolve(r))}static resolveInContext(r,e){let t=e??process.cwd(),n=_.isAbsolute(r)?r:_.join(t,r);return this.normalize(n)}static isDirectoryPattern(r){return r.endsWith("/")}static isGlobPattern(r){return r.includes("*")}static toAbsolute(r,e){if(_.isAbsolute(r))return r;return _.join(e??process.cwd(),r)}}var R={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},notin:(r,e)=>!R.in(r,e),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()),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!=="")},cr={and:()=>"boolean",or:()=>"boolean",xor:()=>"boolean",true:()=>"boolean",false:()=>"boolean",lt:()=>"number",le:()=>"number",gt:()=>"number",ge:()=>"number"};var re=()=>({each:{filters:[/select|model/],fn:async(r)=>{let e=r.value;delete r.parent[r.key];let t=await or(r),n=await ir(r);if(!Array.isArray(t))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=[e.model,...Array.isArray(e.extend.model)?e.extend.model:[e.extend.model]].mergeAll();let i=[];for(let s=0;s<t.length;s++){let u=Object.deepClone(n);if(await $(u,{...r.options,root:{...r.root,index:s,item:t[s],instance:u}}),e.extend?.result){let a=e.extend.result;u=[u,...Array.isArray(a)?a:[a]].mergeAll()}i.push(await fr(r,u))}return i}}});var ee=()=>({map:{filters:[/select|model/],fn:async(r)=>{delete r.parent[r.key];let e=await or(r),t=await ir(r);if(!Array.isArray(e))throw Error('Key "map" requires a source list');if(t===void 0)throw Error('Key "map" must define a model');let n=[];return await e.forEachAsync(async(i,s)=>{let u=Object.deepClone(t);await $(u,{...r.options,root:{...r.root,index:s,item:i,instance:u}}),n.push(await fr(r,u))}),n}}});var te=()=>({concat:async(r)=>{let e=[];for(let t of Array.isArray(r.value)?r.value:[r.value])e.push(...await Object.select(r.root,t));return e.filter((t)=>t!==void 0)}});var ne=()=>({extends:async(r)=>{let e=async(t,n)=>{for(let i of Array.isArray(n)?n:[n]){let s=await Object.select(r.root,i),u=Object.deepClone(s);if(u[r.key])await e(u,u[r.key]);await $(u,{...r.options}),Object.merge(u,t),delete t[r.key]}};return await e(r.parent,r.value),g.Explore()},group:(r)=>{let e=r.root.parent,t=r.value,{items:n,...i}=t;return t.items.forEach((s)=>e.push({...i,...s})),g.DeleteParent()}});var ie=(r)=>({skip:{types:{0:"boolean"},fn:(e)=>e.value?g.DeleteParent():g.DeleteItem()},metadata:({path:e,value:t})=>{return r.metadata(e,t),g.DeleteItem()},if:{types:{0:"boolean"},fn:async(e)=>{let t=e.parent[".then"],n=e.parent[".else"];if(t!==void 0)delete e.parent[".then"];if(n!==void 0)delete e.parent[".else"];let i=e.value?t:n;if(i===void 0)return g.DeleteItem();if(typeof i==="string")return(await $({value:i},{...e.options,root:{...e.root}})).value;return g.ReplaceParent(i,!0)}},switch:(e)=>{let t=e.value;if(!t.cases)throw Error("Missing cases for switch");if(t.cases[t.from]!==void 0)return g.ReplaceParent(t.cases[t.from],!0);if(t.default!==void 0)return g.ReplaceParent(t.default,!0);return g.DeleteParent()}});var oe=()=>({from:async({root:r,parent:e,value:t})=>{let n=await Object.select(r,t);if(n===null||n===void 0)throw Error(`Unable to resolve reference: ${t}`);if(e.content){if(Array.isArray(e.content)&&Array.isArray(n))return[...n,...e.content];return Object.merge(n,e.content),e.content}return n}});import se from"node:vm";var ae=(r)=>({modules:async(e)=>{for(let[t,n]of Object.entries(e.value)){let i=se.createContext({console,objector:r,document:e.root}),s=new se.SourceTextModule(n,{identifier:t,context:i});await s.link((u)=>{throw Error(`Module ${u} is not allowed`)}),await s.evaluate(),r.sources(Object.fromEntries(Object.entries(s.namespace).map(([u,a])=>[`${t}.${u}`,(l)=>a(l,...l.args)])))}return g.DeleteItem()}});var ue=()=>({try:{fn:(r)=>{let e=r.parent[".catch"];if(e!==void 0)delete r.parent[".catch"];try{return r.value}catch(t){if(e!==void 0)return e;return g.DeleteItem()}}}});var fe=()=>({let:{fn:(r)=>{let e=r.value;return Object.assign(r.root,e),g.DeleteItem()}}});var ce=()=>({tap:{fn:(r)=>{return console.log(`[tap] ${r.path}:`,r.value),r.value}}});var wn=(r,e)=>{let t=e.section.config.using,n=r.getFunctions();if(!t)return n;let i={};return t.forEach((s)=>{if(s in n){i[s]=n[s];return}if(s in e.root){i[s]=e.root[s];return}throw Error(`Function or variable "${s}" not found for script section`)}),i},jr=(r,e,t,n,i=[])=>{let s=wn(r,t),u=["section","context","config","system",...Object.keys(s),...i],a=[e,t.root,t.section.config,r,...Object.values(s)];return[new AsyncFunction(...u,n).bind(t),a]},On=(r,e)=>{let t={write:(...n)=>{return e.push(...n),t},writeLine:(...n)=>{return e.push(...n.map((i)=>i+`
19
19
  `)),t},clear:()=>{return e.splice(0,e.length),t},prepend:(...n)=>{return e.unshift(...n),t},prependLine:(...n)=>{return e.unshift(...n.map((i)=>i+`
20
- `)),t},setOptions:(n)=>{return Object.assign(r.section,n),t},use:(n)=>{return n(t),t},getLines:()=>e};return t},An=async(r,e,t)=>{let n=t.section.config.condition;if(n!==void 0){let[i,s]=jr(r,e,t,`return (${n})`);if(!await i(...s))return!1}return!0},le=(r)=>async(e)=>{let t=[],n=On(e,t);if(!await An(r,n,e))return!1;let[i,s]=jr(r,n,e,e.section.content,["item"]),u=e.section.config.each;if(u){let[a,l]=jr(r,n,e,`return (${u})`),y=Array.isArray(u)?u:await a(...l);if(!Array.isArray(y))throw Error('The "each" property of a script section must return an array');for(let d of y){let p=await i(...s,d);if(typeof p<"u")t.push(p)}}else{let a=await i(...s);if(typeof a<"u")return a}if(t.length===0)return!1;return t.join("")};var me=(r)=>({script:le(r)});import pe from"fs/promises";import Z from"path";var ge=(r)=>({include:async(e)=>{let{file:t}=e.options.globalContext;return await Wr(e.args[0],{cwd:Z.dirname(t),filter:(n)=>Z.basename(t)!==n,map:async(n)=>r.load(n,Z.dirname(t),e.root)})},exists:async({args:[e]})=>await br(e),file:async(e)=>await pe.readFile(await nr(e.args[0],r.getIncludeDirectories())).then((t)=>t.toString()),scan:async(e)=>{let t=[],i=(()=>{let a=e.args[2]??["**/node_modules/**"],l=typeof a==="string"?a.split(",").map((y)=>y.trim()):a;if(!Array.isArray(l))throw Error("Scan exclusion must be a list");return l})(),{file:s}=e.options.globalContext,u=e.args[1]?await nr(e.args[1],r.getIncludeDirectories()):Z.dirname(s);for await(let a of pe.glob(e.args[0],{cwd:u,exclude:(l)=>i.some((y)=>Z.matchesGlob(l,y))}))t.push(a);return t}});var ye=(r)=>({substring:{types:{0:"ref",1:"number",2:"number"},fn:(e)=>e.args[0].substring(e.args[1],e.args[2])},repeat:{types:{0:"ref",1:"number"},fn:({args:[e,t]})=>e.repeat(t)},pad:{types:{0:"ref",1:"number",2:"string"},fn:({args:[e,t],tags:n})=>{let i=n.join?.[0]??`
20
+ `)),t},setOptions:(n)=>{return Object.assign(r.section,n),t},use:(n)=>{return n(t),t},getLines:()=>e};return t},An=async(r,e,t)=>{let n=t.section.config.condition;if(n!==void 0){let[i,s]=jr(r,e,t,`return (${n})`);if(!await i(...s))return!1}return!0},le=(r)=>async(e)=>{let t=[],n=On(e,t);if(!await An(r,n,e))return!1;let[i,s]=jr(r,n,e,e.section.content,["item"]),u=e.section.config.each;if(u){let[a,l]=jr(r,n,e,`return (${u})`),y=Array.isArray(u)?u:await a(...l);if(!Array.isArray(y))throw Error('The "each" property of a script section must return an array');for(let d of y){let p=await i(...s,d);if(typeof p<"u")t.push(p)}}else{let a=await i(...s,e.root.item);if(typeof a<"u")return a}if(t.length===0)return!1;return t.join("")};var me=(r)=>({script:le(r)});import pe from"fs/promises";import Z from"path";var ge=(r)=>({include:async(e)=>{let{file:t}=e.options.globalContext;return await Wr(e.args[0],{cwd:Z.dirname(t),filter:(n)=>Z.basename(t)!==n,map:async(n)=>r.load(n,Z.dirname(t),e.root)})},exists:async({args:[e]})=>await br(e),file:async(e)=>await pe.readFile(await nr(e.args[0],r.getIncludeDirectories())).then((t)=>t.toString()),scan:async(e)=>{let t=[],i=(()=>{let a=e.args[2]??["**/node_modules/**"],l=typeof a==="string"?a.split(",").map((y)=>y.trim()):a;if(!Array.isArray(l))throw Error("Scan exclusion must be a list");return l})(),{file:s}=e.options.globalContext,u=e.args[1]?await nr(e.args[1],r.getIncludeDirectories()):Z.dirname(s);for await(let a of pe.glob(e.args[0],{cwd:u,exclude:(l)=>i.some((y)=>Z.matchesGlob(l,y))}))t.push(a);return t}});var ye=(r)=>({substring:{types:{0:"ref",1:"number",2:"number"},fn:(e)=>e.args[0].substring(e.args[1],e.args[2])},repeat:{types:{0:"ref",1:"number"},fn:({args:[e,t]})=>e.repeat(t)},pad:{types:{0:"ref",1:"number",2:"string"},fn:({args:[e,t],tags:n})=>{let i=n.join?.[0]??`
21
21
  `,s=n.padChar?.[0]??" ";return e.padBlock(t??2,i,s)}},formatAs:{fn:({args:[e,t],tags:n})=>{let i=r.getEncoder(t);if(!i)throw Error("Unsupported format: "+String(t));let s=[];if(i.options?.includeTags)s=[n];return i.fn(e,...s)}}});var lr=(r,e=0,t)=>{let n=" ".repeat(e),i=" ".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`[
22
22
  ${r.map((u)=>`${i}${lr(u,e+1)},`).join(`
23
23
  `)}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@homedev/objector",
3
- "version": "1.3.10",
3
+ "version": "1.3.11",
4
4
  "description": "object extensions for YAML/JSON",
5
5
  "author": "julzor",
6
6
  "license": "ISC",