cloudflare-workers-blog/index.js

38 lines
21 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

'use strict';
const OPT = {
"user" : "admin", //后台密码
"password" : "yourSelfPwd", //后台密码
"siteDomain" : "blog.gezhong.vip",// 域名(不带https 也不带/)
"siteName" : "CF workers blog",//博客名称
"siteDescription":"A Blog Powered By Cloudflare Workers and KV",//博客描述
"keyWords":"cloudflare,KV,workers,blog",//关键字
"cacheZoneId":"cc868e8edce4027ad4a735741111111",//清理缓存用 cf区域 ID
"cacheToken":"LNxRWH-MPMIGnp8qhyT8FUsjDRN6tdOnmaaaaaaa",//清理缓存用 cf API token
"pageSize" : 5,//每页文章数
"recentlySize" : 6,//最近文章数
"readMoreLength":150,//阅读更多截取长度
"cacheTime" : 60*60*24*0.5, //网页缓存时长(秒),建议=文章更新频率
"themeURL" : "https://raw.githubusercontent.com/gdtool/cloudflare-workers-blog/master/themes/default2.0/", // 模板地址,以 "/"" 结尾
"html404" : `<b>404</b>`,//404页面代码
"codeBeforHead":``,//其他代码,显示在</head>前
"codeBeforBody":``,//其他代码,显示在</body>前
"commentCode":``,//评论区代码
"widgetOther":``,//20201224新增参数,用于右侧 小部件扩展
"otherCodeA":``,//其他参数A,可设置为 "阅读次数:"四个大字
"otherCodeB":``,//其他参数A
"otherCodeC":``,//其他参数A
"otherCodeD":``,//其他参数A
"otherCodeE":``,//其他参数A
"copyRight" :`Powered by <a href="https://www.cloudflare.com">CF Workers</a> & <a href="https://blog.gezhong.vip">CF-Blog </a>`,//自定义版权信息,建议保留大公无私的 Coudflare 和 作者 的链接
"robots":`User-agent: *
Disallow: /admin`//robots.txt设置
};
!function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)r.d(n,i,function(e){return t[e]}.bind(null,i));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=0)}([function(t,e,r){"use strict";const n=r(1);async function i(t,e,r){e=decodeURI(e);let i=await u("index"),s=await l("SYSTEM_VALUE_WidgetMenu",!0),o=await l("SYSTEM_VALUE_WidgetCategory",!0),c=await l("SYSTEM_VALUE_WidgetTags",!0),g=await l("SYSTEM_VALUE_WidgetLink",!0),p=(await l("SYSTEM_INDEX_LIST",!0)).slice(0,OPT.recentlySize);for(var h=0;h<p.length;h++)p[h].createDate10=p[h].createDate.substr(0,10),p[h].url="/article/"+p[h].id+"/"+p[h].link+".html";let f=await a(e,r),d=f[0],w=f[1];for(h=0;h<d.length;h++)d[h].createDate10=d[h].createDate.substr(0,10),d[h].url="/article/"+d[h].id+"/"+d[h].link+".html";let y=[{title:"上一页",url:"/"+t+"/"+e+"/"+(r-1)}];1==r&&(y=[]);let S=[{title:"下一页",url:"/"+t+"/"+e+"/"+(r+1)}];w&&(S=[]);let m=e+" - "+OPT.siteName,T=e,v={};v.widgetMenuList=s,v.widgetCategoryList=o,v.widgetTagsList=c,v.widgetLinkList=g,v.widgetRecentlyList=p,v.articleList=d,v.pageNewer=y,v.pageOlder=S,v.title=m,v.keyWords=T;let E=OPT;return E.password="",E.user="",E.cacheToken="",E.cacheZoneId="",v.OPT=E,n.render(i,v)}async function a(t,e,r=OPT.pageSize){t=decodeURI(t),console.log("进入函数: getKVArticleCategory",t,e,r),e=e<=1?1:e;let n=await l("SYSTEM_INDEX_LIST",!0),i=[];for(var a=0,s=n.length;a<s;a++)(n[a].tags.indexOf(t)>-1||n[a].category.indexOf(t)>-1)&&i.push(n[a]);i=g(i,"id");let o=!(i.length>r*e),c=[];for(a=(e-1)*r,s=Math.min(e*r,i.length);a<s;a++)c.push(i[a]);return c=g(c,"id"),[c,o]}async function s(t){t=("00000"+parseInt(t)).substr(-6);let e=await l("SYSTEM_INDEX_LIST",!0),r=-1;for(var n=0,i=e.length;n<i;n++)if(e[n].id==t){r=n;break}let a=await l(t,!0);return null==a||0===a.length?[void 0,void 0,void 0]:[e[r-1],a,e[r+1]]}async function o(t,e=OPT.pageSize){t=t<=1?1:t;let r=await l("SYSTEM_INDEX_LIST",!0),n=!(r.length>e*t),i=[];for(var a=(t-1)*e,s=Math.min(t*e,r.length);a<s;a++)i.push(r[a]);return i=g(i,"id"),[i,n]}async function l(t,e=!1){console.log("------------KV读取---------------------:",t,e);let r=await CFBLOG.get(t);if(!e)return null==r?"[]":r;try{return null==r?[]:JSON.parse(r)}catch(t){return[]}}async function c(t,e){return null!=e&&null!=e&&("object"==typeof e&&(e=JSON.stringify(e)),await CFBLOG.put(t,e))}async function u(t){return t=t.replace(".html",""),(await fetch(OPT.themeURL+t+".html",{cf:{cacheTtl:600}})).text()}function g(t,e,r=!0){return t.sort((function(t,n){var i=t[e],a=n[e];return r?i>a?-1:i<a?1:0:i<a?-1:i>a?1:0}))}function p(t){if("string"==typeof t)try{var e=JSON.parse(t);return!("object"!=typeof e||!e)}catch(t){return!1}}async function h(t){const{headers:e}=t,r=e.get("content-type")||"";if(r.includes("application/json")){let e=JSON.stringify(await t.json()),r=JSON.parse(e),i={category:[]};for(var n=0;n<r.length;n++)"tags"==r[n].name?i[r[n].name]=r[n].value.split(","):r[n].name.includes("category")?i.category.push(r[n].value):i[r[n].name]=r[n].value;return i}if(r.includes("application/text"))return await t.text();if(r.includes("text/html"))return await t.text();if(r.includes("form")){const e=await t.formData(),r={};for(const t of e.entries())r[t[0]]=t[1];return JSON.stringify(r)}{const e=await t.blob();return URL.createObjectURL(e)}}addEventListener("fetch",t=>{t.respondWith(async function(t){let e=t.request,r=new URL(t.request.url);null==OPT.privateBlog&&(OPT.privateBlog=!1);let a=r.pathname.trim("/").split("/");if(("admin"===a[0]||!0===OPT.privateBlog)&&!function(t){const e=t.headers.get("Authorization");if(!e||!/^Basic [A-Za-z0-9._~+/-]+=*$/i.test(e))return!1;const[r,n]=function(t){try{return atob(t.split(" ").pop()).split(":")}catch(t){return[]}}(e);return r===OPT.user&&n===OPT.password}(t.request))return new Response("Unauthorized",{headers:{"WWW-Authenticate":'Basic realm="cfblog"',"Access-Control-Allow-Origin":"*"},status:401});if(console.log(r.pathname),"/robots.txt"==r.pathname)return new Response(OPT.robots+"\nSitemap: https://"+OPT.siteDomain+"/sitemap.xml",{headers:{"content-type":"text/plain;charset=UTF-8"},status:200});if("/favicon.ico"==r.pathname)return new Response("404",{headers:{"content-type":"text/plain;charset=UTF-8"},status:404});let f="",d="",w="";0==a.length||""==a[0]?(f="page",d="1"):(f=a[0],d=void 0===a[1]?1:a[1],w=void 0===a[2]?1:a[2]);const y=caches.default,S="https://"+OPT.siteDomain+"/"+f+"/"+d+"/"+w,m=new Request(S,e);let T=await y.match(m);if(T)return T;if("sitemap.xml"==f)T=new Response(await async function(){console.log("进入函数 getSiteMap");let t=await l("SYSTEM_INDEX_LIST",!0),e='<?xml version="1.0" encoding="UTF-8"?>\n<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';for(var r=0,n=t.length;r<n;r++)e+="\n\t<url>",e+="\n\t\t<loc>https://"+OPT.siteDomain+"/article/"+t[r].id+"/"+t[r].link+".html</loc>",e+="\n\t\t<lastmod>"+t[r].createDate.substr(0,10)+"</lastmod>",e+="\n\t\t<changefreq>"+(void 0===t[r].changefreq?"daily":t[r].changefreq)+"</changefreq>",e+="\n\t\t<priority>"+(void 0===t[r].priority?"0.5":t[r].priority)+"</priority>",e+="\n\t</url>";return e+="\n</urlset>",e}(),{headers:{"content-type":"text/xml;charset=UTF-8"},status:200});else{let e=await async function(t){let e=new URL(t.url).pathname.trim("/").split("/"),r="",a="",f="";0==e.length||""==e[0]?(r="page",a="1"):(r=e[0],a=void 0===e[1]?1:e[1],f=void 0===e[2]?1:e[2]);if("page"==r&&parseInt(a)>0)return await async function(t,e){let r=await u("index"),i=await l("SYSTEM_VALUE_WidgetMenu",!0),a=await l("SYSTEM_VALUE_WidgetCategory",!0),s=await l("SYSTEM_VALUE_WidgetTags",!0),o=await l("SYSTEM_VALUE_WidgetLink",!0),c=await l("SYSTEM_INDEX_LIST",!0),g=c.slice(0,OPT.recentlySize);for(var p=0;p<g.length;p++)g[p].createDate10=g[p].createDate.substr(0,10),g[p].url="/article/"+g[p].id+"/"+g[p].link+".html";let h=c.slice((e-1)*OPT.pageSize,e*OPT.pageSize);for(p=0;p<h.length;p++)h[p].createDate10=h[p].createDate.substr(0,10),h[p].url="/article/"+h[p].id+"/"+h[p].link+".html";let f=[{title:"上一页",url:"/page/"+(e-1)}];1==e&&(f=[]);let d=[{title:"下一页",url:"/page/"+(e+1)}];e*OPT.pageSize>=c.length&&(d=[]);let w=(e>1?"page "+e+" - ":"")+OPT.siteName,y=OPT.keyWords,S={};S.widgetMenuList=i,S.widgetCategoryList=a,S.widgetTagsList=s,S.widgetLinkList=o,S.widgetRecentlyList=g,S.articleList=h,S.pageNewer=f,S.pageOlder=d,S.title=w,S.keyWords=y;let m=OPT;return m.password="",m.user="",m.cacheToken="",m.cacheZoneId="",S.OPT=m,n.render(r,S)}(0,parseInt(a));if("category"==r&&a.length>0)return await i(r,a,parseInt(f));if("tags"==r&&a.length>0)return await i(r,a,parseInt(f));if("article"==r&&a.length>0)return await async function(t,e,r){let i=await u("article"),a=await l("SYSTEM_VALUE_WidgetMenu",!0),o=await l("SYSTEM_VALUE_WidgetCategory",!0),c=await l("SYSTEM_VALUE_WidgetTags",!0),g=await l("SYSTEM_VALUE_WidgetLink",!0),p=(await l("SYSTEM_INDEX_LIST",!0)).slice(0,OPT.recentlySize);for(var h=0;h<p.length;h++)p[h].createDate10=p[h].createDate.substr(0,10),p[h].url="/article/"+p[h].id+"/"+(void 0===p[h].link?"detail":p[h].link)+".html";let f=await s(e);for(h=0;h<f.length;h++)f[h]&&(f[h].createDate10=f[h].createDate.substr(0,10),f[h].url="/article/"+f[h].id+"/"+(void 0===f[h].link?"detail":f[h].link)+".html");let d=f[1],w=[],y=[];f[0]&&w.push(f[0]);f[2]&&y.push(f[2]);let S=d.title+" - "+OPT.siteName,m=d.tags.concat(d.category).join(","),T={};T.widgetMenuList=a,T.widgetCategoryList=o,T.widgetTagsList=c,T.widgetLinkList=g,T.widgetRecentlyList=p,T.articleSingle=d,T.articleNewer=w,T.articleOlder=y,T.title=S,T.keyWords=m;let v=OPT;return v.password="",v.user="",v.cacheToken="",v.cacheZoneId="",T.OPT=v,n.render(i,T)}(0,a);if("search"!=r)return"admin"==r?async function(t,e){new URL(t.url);if(1==e.length||"list"==e[1]){let t=await u("admin/index"),e=await l("SYSTEM_VALUE_WidgetCategory",!0),r=await l("SYSTEM_VALUE_WidgetMenu",!0);return t.r("categoryJson",JSON.stringify(e)).r("menuJson",JSON.stringify(r))}if("publish"==e[1]){let t=await l("SYSTEM_INDEX_LIST",!0),e=[];for(var r=0;r<t.length;r++)if("object"==typeof t[r].tags)for(var n=0;n<t[r].tags.length;n++)-1==e.indexOf(t[r].tags[n])&&e.push(t[r].tags[n]);return await c("SYSTEM_VALUE_WidgetTags",JSON.stringify(e)),await async function(t=OPT.cacheZoneId,e=OPT.cacheToken){if(null==t||null==e||t.length<5||e.length<5)return!1;let r=await fetch(`https://api.cloudflare.com/client/v4/zones/${t}/purge_cache`,{method:"POST",headers:{Authorization:"Bearer "+e,"Content-Type":"application/json"},body:'{"purge_everything":true}'});return(await r.json()).success}()?'{"msg":"published ,purge Cache true","rst":true}':'{"msg":"published ,buuuuuuuuuuuut purge Cache false !!!!!!","rst":true}'}if("getList"==e[1]){let t=void 0===e[2]?1:parseInt(e[2]),r=await o(t,20);return JSON.stringify(r[0])}if("edit"==e[1]){let t=e[2],r=await u("admin/edit"),n=await l("SYSTEM_VALUE_WidgetCategory"),i=await l(t);return r.r("categoryJson",n).r("articleJson",i.replaceAll("script>","script"))}if("saveConfig"==e[1]){const e=await h(t);let r=e.WidgetCategory,n=e.WidgetMenu,i=e.WidgetLink;return p(r)&&p(n)?(await c("SYSTEM_VALUE_WidgetCategory",r),await c("SYSTEM_VALUE_WidgetMenu",n),await c("SYSTEM_VALUE_WidgetLink",i),'{"msg":"saved","rst":true}'):'{"msg":"Not a JSON object","rst":false}'}if("saveAddNew"==e[1]){const e=await h(t);let r=e.title,n=e.img,i=e.link,a=e.createDate,s=e.category,o=e.tags,u=void 0===e.priority?"0.5":e.priority,g=void 0===e.changefreq?"daily":e.changefreq,p=e["content-markdown-doc"],f=e["content-html-code"],d="",w="";if(r.length>0&&a.length>0&&s.length>0&&p.length>0&&f.length>0){w=await async function(){let t=await l("SYSTEM_INDEX_NUM");return""===t||null===t||"[]"===t||void 0===t?(await c("SYSTEM_INDEX_NUM",1),"000001"):(await c("SYSTEM_INDEX_NUM",parseInt(t)+1),("00000"+(parseInt(t)+1)).substr(-6))}(),d=f.replace(/<\/?[^>]*>/g,"").trim().substring(0,OPT.readMoreLength);let t={id:w,title:r,img:n,link:i,createDate:a,category:s,tags:o,contentMD:p,contentHtml:f,contentText:d,priority:u,changefreq:g};await c(w,JSON.stringify(t));let e={id:w,title:r,img:n,link:i,createDate:a,category:s,tags:o,contentText:d,priority:u,changefreq:g},h=await l("SYSTEM_INDEX_LIST",!0),y=[];return y.push(e),y=y.concat(h),await c("SYSTEM_INDEX_LIST",JSON.stringify(y)),'{"msg":"added OK","rst":true,"id":"'+w+'"}'}return'{"msg":"信息不全","rst":false}'}if("delete"==e[1]){let t=e[2];if(6==t.length){await CFBLOG.delete(t);let e=await l("SYSTEM_INDEX_LIST",!0);for(r=0;r<e.length;r++)t==e[r].id&&e.splice(r,1);return await c("SYSTEM_INDEX_LIST",JSON.stringify(e)),'{"msg":"Delete ('+t+') OK","rst":true,"id":"'+t+'"}'}return'{"msg":"Delete false ","rst":false,"id":"'+t+'"}'}if("saveEdit"==e[1]){const e=await h(t);let n=e.title,i=e.img,a=e.link,s=e.createDate,o=e.category,u=e.tags,p=e["content-markdown-doc"],f=e["content-html-code"],d=void 0===e.priority?"0.5":e.priority,w=void 0===e.changefreq?"daily":e.changefreq,y="",S=e.id;if(n.length>0&&s.length>0&&o.length>0&&p.length>0&&f.length>0){y=f.replace(/<\/?[^>]*>/g,"").trim().substring(0,OPT.readMoreLength);let t={id:S,title:n,img:i,link:a,createDate:s,category:o,tags:u,contentMD:p,contentHtml:f,contentText:y,priority:d,changefreq:w};await c(S,JSON.stringify(t));let e={id:S,title:n,img:i,link:a,createDate:s,category:o,tags:u,contentText:y,priority:d,changefreq:w},h=await l("SYSTEM_INDEX_LIST",!0);for(r=0;r<h.length;r++)S==h[r].id&&h.splice(r,1);return h.push(e),h=g(h,"id"),await c("SYSTEM_INDEX_LIST",JSON.stringify(h)),'{"msg":"Edit OK","rst":true,"id":"'+S+'"}'}return'{"msg":"信息不全","rst":false}'}return'{"msg":"some errors","rst":false}'}(t,e):OPT.html404;return OPT.html404}(t.request);T=new Response(e,{headers:{"content-type":"text/html;charset=UTF-8"},status:200})}"admin"==f?T.headers.set("Cache-Control","no-store"):(T.headers.set("Cache-Control","public, max-age="+OPT.cacheTime),t.waitUntil(y.put(S,T.clone())));return T}(t))}),String.prototype.trim=function(t){return t?this.replace(new RegExp("^\\"+t+"+|\\"+t+"+$","g"),""):this.replace(/^\s+|\s+$/g,"")},String.prototype.r=function(t,e){return null!=e&&(e=e.replace(new RegExp("[$]","g"),"$$$$")),this.replace(new RegExp("\x3c!--{"+t+"}--\x3e","g"),e)},String.prototype.replaceAll=function(t,e){return this.replace(new RegExp(t,"g"),e)}},function(t,e,r){t.exports=function(){"use strict";
/*!
* mustache.js - Logic-less {{mustache}} templates with JavaScript
* http://github.com/janl/mustache.js
*/var t=Object.prototype.toString,e=Array.isArray||function(e){return"[object Array]"===t.call(e)};function r(t){return"function"==typeof t}function n(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function i(t,e){return null!=t&&"object"==typeof t&&e in t}var a=RegExp.prototype.test,s=/\S/;function o(t){return!function(t,e){return a.call(t,e)}(s,t)}var l={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"},c=/\s*/,u=/\s+/,g=/\s*=/,p=/\s*\}/,h=/#|\^|\/|>|\{|&|=|!/;function f(t){this.string=t,this.tail=t,this.pos=0}function d(t,e){this.view=t,this.cache={".":this.view},this.parent=e}function w(){this.templateCache={_cache:{},set:function(t,e){this._cache[t]=e},get:function(t){return this._cache[t]},clear:function(){this._cache={}}}}f.prototype.eos=function(){return""===this.tail},f.prototype.scan=function(t){var e=this.tail.match(t);if(!e||0!==e.index)return"";var r=e[0];return this.tail=this.tail.substring(r.length),this.pos+=r.length,r},f.prototype.scanUntil=function(t){var e,r=this.tail.search(t);switch(r){case-1:e=this.tail,this.tail="";break;case 0:e="";break;default:e=this.tail.substring(0,r),this.tail=this.tail.substring(r)}return this.pos+=e.length,e},d.prototype.push=function(t){return new d(t,this)},d.prototype.lookup=function(t){var e,n,a,s=this.cache;if(s.hasOwnProperty(t))e=s[t];else{for(var o,l,c,u=this,g=!1;u;){if(t.indexOf(".")>0)for(o=u.view,l=t.split("."),c=0;null!=o&&c<l.length;)c===l.length-1&&(g=i(o,l[c])||(n=o,a=l[c],null!=n&&"object"!=typeof n&&n.hasOwnProperty&&n.hasOwnProperty(a))),o=o[l[c++]];else o=u.view[t],g=i(u.view,t);if(g){e=o;break}u=u.parent}s[t]=e}return r(e)&&(e=e.call(this.view)),e},w.prototype.clearCache=function(){void 0!==this.templateCache&&this.templateCache.clear()},w.prototype.parse=function(t,r){var i=this.templateCache,a=t+":"+(r||y.tags).join(":"),s=void 0!==i,l=s?i.get(a):void 0;return null==l&&(l=function(t,r){if(!t)return[];var i,a,s,l=!1,d=[],w=[],S=[],m=!1,T=!1,v="",E=0;function _(){if(m&&!T)for(;S.length;)delete w[S.pop()];else S=[];m=!1,T=!1}function O(t){if("string"==typeof t&&(t=t.split(u,2)),!e(t)||2!==t.length)throw new Error("Invalid tags: "+t);i=new RegExp(n(t[0])+"\\s*"),a=new RegExp("\\s*"+n(t[1])),s=new RegExp("\\s*"+n("}"+t[1]))}O(r||y.tags);for(var L,b,M,x,k,I,P=new f(t);!P.eos();){if(L=P.pos,M=P.scanUntil(i))for(var U=0,D=M.length;U<D;++U)o(x=M.charAt(U))?(S.push(w.length),v+=x):(T=!0,l=!0,v+=" "),w.push(["text",x,L,L+1]),L+=1,"\n"===x&&(_(),v="",E=0,l=!1);if(!P.scan(i))break;if(m=!0,b=P.scan(h)||"name",P.scan(c),"="===b?(M=P.scanUntil(g),P.scan(g),P.scanUntil(a)):"{"===b?(M=P.scanUntil(s),P.scan(p),P.scanUntil(a),b="&"):M=P.scanUntil(a),!P.scan(a))throw new Error("Unclosed tag at "+P.pos);if(k=">"==b?[b,M,L,P.pos,v,E,l]:[b,M,L,P.pos],E++,w.push(k),"#"===b||"^"===b)d.push(k);else if("/"===b){if(!(I=d.pop()))throw new Error('Unopened section "'+M+'" at '+L);if(I[1]!==M)throw new Error('Unclosed section "'+I[1]+'" at '+L)}else"name"===b||"{"===b||"&"===b?T=!0:"="===b&&O(M)}if(_(),I=d.pop())throw new Error('Unclosed section "'+I[1]+'" at '+P.pos);return function(t){for(var e,r=[],n=r,i=[],a=0,s=t.length;a<s;++a)switch((e=t[a])[0]){case"#":case"^":n.push(e),i.push(e),n=e[4]=[];break;case"/":i.pop()[5]=e[2],n=i.length>0?i[i.length-1][4]:r;break;default:n.push(e)}return r}(function(t){for(var e,r,n=[],i=0,a=t.length;i<a;++i)(e=t[i])&&("text"===e[0]&&r&&"text"===r[0]?(r[1]+=e[1],r[3]=e[3]):(n.push(e),r=e));return n}(w))}(t,r),s&&i.set(a,l)),l},w.prototype.render=function(t,e,r,n){var i=this.getConfigTags(n),a=this.parse(t,i),s=e instanceof d?e:new d(e,void 0);return this.renderTokens(a,s,r,t,n)},w.prototype.renderTokens=function(t,e,r,n,i){for(var a,s,o,l="",c=0,u=t.length;c<u;++c)o=void 0,"#"===(s=(a=t[c])[0])?o=this.renderSection(a,e,r,n,i):"^"===s?o=this.renderInverted(a,e,r,n,i):">"===s?o=this.renderPartial(a,e,r,i):"&"===s?o=this.unescapedValue(a,e):"name"===s?o=this.escapedValue(a,e,i):"text"===s&&(o=this.rawValue(a)),void 0!==o&&(l+=o);return l},w.prototype.renderSection=function(t,n,i,a,s){var o=this,l="",c=n.lookup(t[1]);if(c){if(e(c))for(var u=0,g=c.length;u<g;++u)l+=this.renderTokens(t[4],n.push(c[u]),i,a,s);else if("object"==typeof c||"string"==typeof c||"number"==typeof c)l+=this.renderTokens(t[4],n.push(c),i,a,s);else if(r(c)){if("string"!=typeof a)throw new Error("Cannot use higher-order sections without the original template");null!=(c=c.call(n.view,a.slice(t[3],t[5]),(function(t){return o.render(t,n,i,s)})))&&(l+=c)}else l+=this.renderTokens(t[4],n,i,a,s);return l}},w.prototype.renderInverted=function(t,r,n,i,a){var s=r.lookup(t[1]);if(!s||e(s)&&0===s.length)return this.renderTokens(t[4],r,n,i,a)},w.prototype.indentPartial=function(t,e,r){for(var n=e.replace(/[^ \t]/g,""),i=t.split("\n"),a=0;a<i.length;a++)i[a].length&&(a>0||!r)&&(i[a]=n+i[a]);return i.join("\n")},w.prototype.renderPartial=function(t,e,n,i){if(n){var a=this.getConfigTags(i),s=r(n)?n(t[1]):n[t[1]];if(null!=s){var o=t[6],l=t[5],c=t[4],u=s;0==l&&c&&(u=this.indentPartial(s,c,o));var g=this.parse(u,a);return this.renderTokens(g,e,n,u,i)}}},w.prototype.unescapedValue=function(t,e){var r=e.lookup(t[1]);if(null!=r)return r},w.prototype.escapedValue=function(t,e,r){var n=this.getConfigEscape(r)||y.escape,i=e.lookup(t[1]);if(null!=i)return"number"==typeof i&&n===y.escape?String(i):n(i)},w.prototype.rawValue=function(t){return t[1]},w.prototype.getConfigTags=function(t){return e(t)?t:t&&"object"==typeof t?t.tags:void 0},w.prototype.getConfigEscape=function(t){return t&&"object"==typeof t&&!e(t)?t.escape:void 0};var y={name:"mustache.js",version:"4.1.0",tags:["{{","}}"],clearCache:void 0,escape:void 0,parse:void 0,render:void 0,Scanner:void 0,Context:void 0,Writer:void 0,set templateCache(t){S.templateCache=t},get templateCache(){return S.templateCache}},S=new w;return y.clearCache=function(){return S.clearCache()},y.parse=function(t,e){return S.parse(t,e)},y.render=function(t,r,n,i){if("string"!=typeof t)throw new TypeError('Invalid template! Template should be a "string" but "'+(e(a=t)?"array":typeof a)+'" was given as the first argument for mustache#render(template, view, partials)');var a;return S.render(t,r,n,i)},y.escape=function(t){return String(t).replace(/[&<>"'`=\/]/g,(function(t){return l[t]}))},y.Scanner=f,y.Context=d,y.Writer=w,y}()}]);