UNPKG

tarkine

Version:

Tarkine - A lightweight and high-performance template engine for Node.js, designed for speed and simplicity.

9 lines (8 loc) 3.26 kB
var Tarkine=(()=>{var l=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var a=l((M,p)=>{var E={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};p.exports={ext:"tark",caches:new Map,alterVoidAttributes(e){let r=/<(?!!\/)([^\/!\s>][^>]*)>/g,s=/\s+(checked|disabled|readonly|required|autofocus|multiple|selected|hidden|open|ismap|defer|async|novalidate|formnovalidate|allowfullscreen|itemscope|reversed|autoplay|controls|loop|muted|default)\s*=\s*"([^"]*?)"/gi;return e.replace(r,o=>o.replace(s,(n,t,c)=>` {{:if(${c})}}${t}{{/if}}`))},createErrorSnippet(e,r){let s=e.split(` `);return s.map((o,n)=>{let t=n+1;return`${r==t?">>":" "} ${t}| ${o}`}).slice(Math.max(r-3,0),Math.min(s.length,r+3)).join(` `)},throwError(e,r,s,o,n){let t=new Error;throw t.name=e,t.message=`${s} SOURCE: ${r||"CODE"} ${this.createErrorSnippet(n,o)} `,t},__show(e){return e==null||e===!1?"":typeof e=="object"?JSON.stringify(e):String(e).replace(/[&<>"']/g,r=>E[r])},__loop(e){return!e||typeof e!="object"?(console.warn(`Expected array or object for loops, but received ${typeof e}: ${e}`),[]):Array.isArray(e)?e.map((r,s)=>[s,r]):Object.entries(e)}}});var h=l((k,f)=>{var b=a();function j(e,r){switch(e){case":macro":return`function ${r} {const __out = [];`;case"/macro":return"return __out.join('');}";case":extends":return`__out.push(include(${r}, (function () {const __slots = {};`;case"/extends":return"return __slots;})()));";case":slot":return`__slots[${r}] = (function (){const __out = [];`;case"/slot":return"return __out.join('');})();";case"/if":case"/for":return"}";case":for":{let[s,o]=r.split(" in "),[n,t="__index"]=s.split(",");return`for(const [${t}, ${n}] of __loop(${o})){`}case":if":return`if(${r}){`;case":else":return r.startsWith("if ")?`} else if(${r.slice(3)}){`:"} else {";case"#":return"";case"-":return`__out.push(${r});`;case"~":return`${r};`;default:return`__out.push(__show(${r}));`}}function v(e){let r=/\{\{(#|-|~|\/if|\/for|\/macro|\/extends|\/slot|:if|:else|:for|:macro|:extends|:slot)?\s*([\s\S]*?)\s*\}\}/g,s=["const __out = [];"],o=0,n=1,t;for(;(t=r.exec(e))!==null;){let c=e.slice(o,t.index);c&&s.push(`__out.push(${JSON.stringify(c)});`);let x=t[1]?t[1].trim():t[1],w=t[2].trim();n+=(c.match(/\n/g)||[]).length,s.push(`__err.l = ${n};`);let _=j(x,w);_&&s.push(_),t[0].includes(` `)&&(n+=(t[0].match(/\n/g)||[]).length),o=r.lastIndex}return s.push(`__out.push(${JSON.stringify(e.slice(o))}); return __out.join('');`),`const __err = { l: 0 }; try { ${s.join("")} } catch(e) {__err.e = e.message; return __err;}`}function O(e){return v(b.alterVoidAttributes(e))}f.exports={compile:O}});var g=l((D,d)=>{var u={};d.exports={set(e,r){u[e]=r},get(e){return u[e]},getAll(){return u},delete(e){delete u[e]},clear(){u={}}}});var q=l((J,y)=>{var $=h(),i=a(),m=g(),S=()=>"";function C(e,r={},s){let o=i.caches.get(e);if(!o)try{o=new Function(`$,__show,__loop,include,{${Object.keys(r)}}`,$.compile(e)),i.caches.set(e,o)}catch(c){throw new Error(`CompileError: ${c.message} SOURCE: CODE`)}let n=typeof s=="function"?s:S,t=o(m.getAll(),i.__show,i.__loop,n,r);return typeof t!="string"&&i.throwError("RenderError",null,t.e,t.l,e),t}y.exports={render:C,store:m,ext:i.ext,compile:$.compile,resetCache:i.caches.clear}});return q();})();