Socket
Socket
Sign inDemoInstall

vancat

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

vancat - npm Package Compare versions

Comparing version 1.0.5 to 1.0.6

2

package.json
{
"name": "vancat",
"version": "1.0.5",
"version": "1.0.6",
"description": "A fast and small templating engine for client side rendering HTML",

@@ -5,0 +5,0 @@ "author": "Serhat Abdulbakioğlu",

@@ -12,3 +12,3 @@ (function (global, factory) {

* vancat.js - Fast and small templating engine
* v1.0.5
* v1.0.6
* https://github.com/serhat359/vancat-js

@@ -260,4 +260,16 @@ */

if (template[i] === '}' && template[i + 1] === '}') return [tokens, i + 2];
if (template[i] === '|') {
tokens.push('|');
i++;
continue;
}
const start = i++;
while (i < template.length && template[i] !== '}' && template[i] !== ' ') i++;
while (
i < template.length &&
template[i] !== '}' &&
template[i] !== ' ' &&
template[i] !== '|'
) {
i++;
}
const token = template.substring(start, i);

@@ -273,17 +285,52 @@ if (!token) err('Tag not closed with }}');

}
if (tokens.length - start == 1) return getTokenAsExpression(tokens[start]);
const f = tokens[start];
if (f.includes('.')) err(`Function name cannot contain a dot character: ${f}`);
const argGroups = getArgGroups(tokens, start + 1);
if (argGroups.length == 1) {
const expr = argGroups[0];
return (context) => {
const pipeIndex = tokens.findIndex((x, i) => i >= start && x === '|');
const end = pipeIndex >= 0 ? pipeIndex : tokens.length;
let firstExpr;
if (end - start == 1) {
firstExpr = getTokenAsExpression(tokens[start]);
} else {
const f = tokens[start];
assertFunction(f);
const argGroups = getArgGroups(tokens, start + 1);
if (argGroups.length == 1) {
const expr = argGroups[0];
return (context) => {
const func = getFunc(f, context);
return func(expr(context));
};
}
firstExpr = (context) => {
const func = getFunc(f, context);
return func(expr(context));
const args = argGroups.map((expr) => expr(context));
return func.apply(null, args);
};
}
if (pipeIndex < 0) return firstExpr;
const pipeExprs = [];
let end2 = pipeIndex;
let pipeTokens;
while (end2 != tokens.length) {
[pipeTokens, end2] = getPipeTokens(tokens, end2 + 1);
const [f, ...argTokens] = pipeTokens;
assertFunction(f);
if (argTokens.length > 0) {
const argExprs = argTokens.map(getTokenAsExpression);
pipeExprs.push((lastValue, context) => {
const func = getFunc(f, context);
const args = argExprs.map((expr) => expr(context));
return func.call(this, lastValue, ...args);
});
} else {
pipeExprs.push((lastValue, context) => {
const func = getFunc(f, context);
return func(lastValue);
});
}
}
return (context) => {
const func = getFunc(f, context);
const args = argGroups.map((expr) => expr(context));
return func.apply(null, args);
let lastValue = firstExpr(context);
for (const pipeExpr of pipeExprs) {
lastValue = pipeExpr(lastValue, context);
}
return lastValue;
};

@@ -332,2 +379,10 @@ };

};
const getPipeTokens = (tokens, i) => {
const tok = [];
for (; i < tokens.length; i++) {
if (tokens[i] === '|') return [tok, i];
tok.push(tokens[i]);
}
return [tok, i];
};
const getFunc = (f, context) => {

@@ -363,2 +418,5 @@ const func = context.g(f);

};
const assertFunction = (f) => {
if (f.includes('.')) err(`Function name cannot contain a dot character: ${f}`);
};
const err = (msg) => {

@@ -365,0 +423,0 @@ throw new Error(msg);

@@ -1,2 +0,2 @@

/* Vancat v1.0.5 */
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Vancat=t()}(this,function(){return function(){let e={not:e=>!e},t={},n=(t,n)=>e[t]=n,r=(e,n)=>t[e]=i(n),l=t=>{let n=i(t);return(t,r={})=>{let l=[],i=e=>l.push(e);return $(i,{d:{$:t},g(t){return this.d[t]??r[t]??e[t]??this.d.$[t]},s(e,t){this.d[e]=t},gd(e){return this.d[e]},r(e){let t=this.d;return this.d={$:e},t},sd(e){this.d=e}},n),l.join("")}},i=e=>{let t=[],n=0,r;for(;n<e.length;)[r,n]=o(e,n),null===r&&b("Unexpected end token"),void 0!==r&&t.push(r);return t},o=(e,n)=>{n==e.length&&b("Expected {{end}} but not found");let r=e.indexOf("{{",n);if(r==n){if("/"===e[r+2]&&"*"===e[r+3]){let l=e.indexOf("*/}}",r+4);return[void 0,l+4]}if(">"===e[r+2]){let[i,d]=g(e,r+3),p=i[0];p||b("Template name not specified");let a=h(i,1),c=(e,n)=>{let r=t[p];r||b(`Partial not registered: ${p}`);let l=a(n),i=n.r(l);$(e,n,r),n.sd(i)};return[c,d]}let[y,v]=g(e,r+2),w=y[0];if("for"===w){let j=y[2];if("in"!==j){let E=y.indexOf("in");E>2?j=(y=_(y,E))[2]:b('Missing "in" in for-loop')}let[k,O]=y[1].split(","),T=h(y,3),U;[U,v]=s(e,v);let V=(e,t)=>{let n=T(t);null==n&&b(`Value of '${y.slice(3).join(" ")}' was not iterable`);let r=t.gd(k),l=t.gd(O);if(x(n)){let i=0;for(let o of n)t.s(k,o),O&&t.s(O,i),$(e,t,U),i++}else for(let s in n)t.s(O,s),t.s(k,n[s]),$(e,t,U);t.s(k,r),t.s(O,l)};return[V,v]}if("if"===w){let F=h(y,1),I=[],M=[],P=[],q,z;for(;"else"!==(q=f(e,v));){if(v=u(e,v),"end"===q){[z,v]=o(e,v);let A=(e,t)=>{F(t)&&$(e,t,I)};return[A,v]}[z,v]=o(e,v),I.push(z)}let B=()=>(e,t)=>{if(F(t)){$(e,t,I);return}for(let[n,r]of P)if(n(t)){$(e,t,r);return}$(e,t,M)};for(;;){if([y,v]=g(e,v+2),1==y.length){for(;[z,v]=o(e,v),z;)M.push(z);let C=B();return[C,v]}"if"!==y[1]&&b("if missing from else-if statement");let D=h(y,2),G=[];for(;;){if("else"===(q=f(e,v))){P.push([D,G]);break}if(v=u(e,v),null==q){[z,v]=o(e,v),G.push(z);continue}if("end"===q){P.push([D,G]),[z,v]=o(e,v);let H=B();return[H,v]}b("Tag not closed with }}")}}}else if("end"===w)return[null,v];else if("else"===w)b("Unexpected else token");else if("set"===w){let J=y[1],K=h(y,2),L=(e,t)=>t.s(J,K(t));return[L,v]}let N=h(y,0),Q=(e,t)=>e(m(N(t)));return[Q,v]}return r<0?[e.substring(n),e.length]:[e.substring(n,r),r]},s=(e,t)=>{let n=[],r;for(;[r,t]=o(e,t),null!==r;)void 0!==r&&n.push(r);return[n,t]},f=(e,t)=>{if((t=u(e,t))+1<e.length&&"{"===e[t]&&"{"===e[t+1]){for(t+=2;" "===e[t];)t++;let n=t++;for(;t<e.length&&"}"!==e[t]&&" "!==e[t];)t++;return e.substring(n,t)}return null},u=(e,t)=>{for(;t<e.length&&/\s/.test(e[t]);)t++;return t},g=(e,t)=>{let n=[];for(;;){for(;" "===e[t];)t++;if("}"===e[t]&&"}"===e[t+1])return[n,t+2];let r=t++;for(;t<e.length&&"}"!==e[t]&&" "!==e[t];)t++;let l=e.substring(r,t);l||b("Tag not closed with }}"),n.push(l)}},h=(e,t)=>{if((e.length-t==0||"."===e[t])&&(0==e.length?b("Expression cannot be empty"):b(`Expression expected after: ${e.slice(0,t).join(" ")}`)),e.length-t==1)return d(e[t]);let n=e[t];n.includes(".")&&b(`Function name cannot contain a dot character: ${n}`);let r=a(e,t+1);if(1==r.length){let l=r[0];return e=>{let t=c(n,e);return t(l(e))}}return e=>{let t=c(n,e),l=r.map(t=>t(e));return t.apply(null,l)}},d=e=>{let t=p(e);return n=>{try{return t(n)}catch(r){b(`Error while resolving: ${e}`)}}},p=e=>{let t=Number(e);if(!isNaN(t))return e=>t;let n=e.split(".");for(let r of n)r||b(`Invalid member access expression: ${e}`);let l=n[0];if(1==n.length)return e=>e.g(l);if(2==n.length){let i=n[1];return e=>e.g(l)[i]}if(3==n.length){let o=n[1],s=n[2];return e=>e.g(l)[o][s]}return e=>{let t=e.g(l);for(let r=1;r<n.length;r++)t=t[n[r]];return t}},a=(e,t)=>{let n=[];for(;t<e.length;)n.push(d(e[t++]));return n},c=(e,t)=>{let n=t.g(e);return"function"!=typeof n&&b(`value of ${e} was not a function`),n},_=(e,t)=>[e[0],e.slice(1,t).join(""),...e.slice(t),],$=(e,t,n)=>{for(let r of n)"string"==typeof r?e(r):r(e,t)},m=e=>(e=String(e??""),/[&<>\'\"]/.test(e)?e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&#39;").replace(/"/g,"&#34;"):e),x=e=>null!=e&&"function"==typeof e[Symbol.iterator],b=e=>{throw Error(e)};return{compile:l,registerHelper:n,registerPartial:r}}()});
/* Vancat v1.0.6 */
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Vancat=t()}(this,function(){return function(){let e={not:e=>!e},t={},n=(t,n)=>e[t]=n,r=(e,n)=>t[e]=i(n),l=t=>{let n=i(t);return(t,r={})=>{let l=[],i=e=>l.push(e);return m(i,{d:{$:t},g(t){return this.d[t]??r[t]??e[t]??this.d.$[t]},s(e,t){this.d[e]=t},gd(e){return this.d[e]},r(e){let t=this.d;return this.d={$:e},t},sd(e){this.d=e}},n),l.join("")}},i=e=>{let t=[],n=0,r;for(;n<e.length;)[r,n]=u(e,n),null===r&&v("Unexpected end token"),void 0!==r&&t.push(r);return t},u=(e,n)=>{n==e.length&&v("Expected {{end}} but not found");let r=e.indexOf("{{",n);if(r==n){if("/"===e[r+2]&&"*"===e[r+3]){let l=e.indexOf("*/}}",r+4);return[void 0,l+4]}if(">"===e[r+2]){let[i,p]=h(e,r+3),d=i[0];d||v("Template name not specified");let a=g(i,1),c=(e,n)=>{let r=t[d];r||v(`Partial not registered: ${d}`);let l=a(n),i=n.r(l);m(e,n,r),n.sd(i)};return[c,p]}let[$,y]=h(e,r+2),w=$[0];if("for"===w){let j=$[2];if("in"!==j){let E=$.indexOf("in");E>2?j=($=_($,E))[2]:v('Missing "in" in for-loop')}let[k,O]=$[1].split(","),T=g($,3),I;[I,y]=f(e,y);let U=(e,t)=>{let n=T(t);null==n&&v(`Value of '${$.slice(3).join(" ")}' was not iterable`);let r=t.gd(k),l=t.gd(O);if(b(n)){let i=0;for(let u of n)t.s(k,u),O&&t.s(O,i),m(e,t,I),i++}else for(let f in n)t.s(O,f),t.s(k,n[f]),m(e,t,I);t.s(k,r),t.s(O,l)};return[U,y]}if("if"===w){let V=g($,1),F=[],M=[],P=[],q,z;for(;"else"!==(q=s(e,y));){if(y=o(e,y),"end"===q){[z,y]=u(e,y);let A=(e,t)=>{V(t)&&m(e,t,F)};return[A,y]}[z,y]=u(e,y),F.push(z)}let B=()=>(e,t)=>{if(V(t)){m(e,t,F);return}for(let[n,r]of P)if(n(t)){m(e,t,r);return}m(e,t,M)};for(;;){if([$,y]=h(e,y+2),1==$.length){for(;[z,y]=u(e,y),z;)M.push(z);let C=B();return[C,y]}"if"!==$[1]&&v("if missing from else-if statement");let D=g($,2),G=[];for(;;){if("else"===(q=s(e,y))){P.push([D,G]);break}if(y=o(e,y),null==q){[z,y]=u(e,y),G.push(z);continue}if("end"===q){P.push([D,G]),[z,y]=u(e,y);let H=B();return[H,y]}v("Tag not closed with }}")}}}else if("end"===w)return[null,y];else if("else"===w)v("Unexpected else token");else if("set"===w){let J=$[1],K=g($,2),L=(e,t)=>t.s(J,K(t));return[L,y]}let N=g($,0),Q=(e,t)=>e(x(N(t)));return[Q,y]}return r<0?[e.substring(n),e.length]:[e.substring(n,r),r]},f=(e,t)=>{let n=[],r;for(;[r,t]=u(e,t),null!==r;)void 0!==r&&n.push(r);return[n,t]},s=(e,t)=>{if((t=o(e,t))+1<e.length&&"{"===e[t]&&"{"===e[t+1]){for(t+=2;" "===e[t];)t++;let n=t++;for(;t<e.length&&"}"!==e[t]&&" "!==e[t];)t++;return e.substring(n,t)}return null},o=(e,t)=>{for(;t<e.length&&/\s/.test(e[t]);)t++;return t},h=(e,t)=>{let n=[];for(;;){for(;" "===e[t];)t++;if("}"===e[t]&&"}"===e[t+1])return[n,t+2];if("|"===e[t]){n.push("|"),t++;continue}let r=t++;for(;t<e.length&&"}"!==e[t]&&" "!==e[t]&&"|"!==e[t];)t++;let l=e.substring(r,t);l||v("Tag not closed with }}"),n.push(l)}},g=(e,t)=>{(e.length-t==0||"."===e[t])&&(0==e.length?v("Expression cannot be empty"):v(`Expression expected after: ${e.slice(0,t).join(" ")}`));let n=e.findIndex((e,n)=>n>=t&&"|"===e),r=n>=0?n:e.length,l;if(r-t==1)l=p(e[t]);else{let i=e[t];y(i);let u=a(e,t+1);if(1==u.length){let f=u[0];return e=>{let t=$(i,e);return t(f(e))}}l=e=>{let t=$(i,e),n=u.map(t=>t(e));return t.apply(null,n)}}if(n<0)return l;let s=[],o=n,h;for(;o!=e.length;){[h,o]=c(e,o+1);let[g,...d]=h;if(y(g),d.length>0){let _=d.map(p);s.push((e,t)=>{let n=$(g,t),r=_.map(e=>e(t));return n.call(this,e,...r)})}else s.push((e,t)=>{let n=$(g,t);return n(e)})}return e=>{let t=l(e);for(let n of s)t=n(t,e);return t}},p=e=>{let t=d(e);return n=>{try{return t(n)}catch(r){v(`Error while resolving: ${e}`)}}},d=e=>{let t=Number(e);if(!isNaN(t))return e=>t;let n=e.split(".");for(let r of n)r||v(`Invalid member access expression: ${e}`);let l=n[0];if(1==n.length)return e=>e.g(l);if(2==n.length){let i=n[1];return e=>e.g(l)[i]}if(3==n.length){let u=n[1],f=n[2];return e=>e.g(l)[u][f]}return e=>{let t=e.g(l);for(let r=1;r<n.length;r++)t=t[n[r]];return t}},a=(e,t)=>{let n=[];for(;t<e.length;)n.push(p(e[t++]));return n},c=(e,t)=>{let n=[];for(;t<e.length&&"|"!==e[t];t++)n.push(e[t]);return[n,t]},$=(e,t)=>{let n=t.g(e);return"function"!=typeof n&&v(`value of ${e} was not a function`),n},_=(e,t)=>[e[0],e.slice(1,t).join(""),...e.slice(t),],m=(e,t,n)=>{for(let r of n)"string"==typeof r?e(r):r(e,t)},x=e=>(e=String(e??""),/[&<>\'\"]/.test(e)?e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&#39;").replace(/"/g,"&#34;"):e),b=e=>null!=e&&"function"==typeof e[Symbol.iterator],y=e=>{e.includes(".")&&v(`Function name cannot contain a dot character: ${e}`)},v=e=>{throw Error(e)};return{compile:l,registerHelper:n,registerPartial:r}}()});
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc