@jaredwray/fumanchu 4.7.0 → 4.7.2
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.browser.cjs +3 -3
- package/dist/index.browser.d.cts +0 -1
- package/dist/index.browser.d.mts +8 -9
- package/dist/index.browser.mjs +3 -3
- package/dist/index.node.cjs +13 -15
- package/dist/index.node.d.cts +0 -1
- package/dist/index.node.d.mts +8 -9
- package/dist/index.node.mjs +10 -11
- package/package.json +29 -32
package/dist/index.browser.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`@cacheable/memory`),l=require(`handlebars`);l=s(l);let u=require(`chrono-node`),d=require(`dayjs`);d=s(d);let f=require(`dayjs/plugin/isBetween.js`);f=s(f);let p=require(`dayjs/plugin/relativeTime.js`);p=s(p);let m=require(`dayjs/plugin/timezone.js`);m=s(m);let h=require(`dayjs/plugin/utc.js`);h=s(h);let g=require(`micromatch`);g=s(g);let _=require(`ent`);_=s(_);let v=require(`markdown-it`);v=s(v);var ee=class{_helpers=[];constructor(){this.init()}get helpers(){return this._helpers}init(){}register(e){return this.has(e.name)?!1:(this._helpers.push(e),!0)}registerHelpers(e){for(let t of e)this.register(t)}has(e){return this._helpers.some(t=>t.name===e)}filter(e){let t=this._helpers;if(e.names){let n=e.names;t=t.filter(e=>n.includes(e.name))}if(e.categories){let n=e.categories;t=t.filter(e=>n.includes(e.category))}if(e.compatibility){let n=e.compatibility;t=t.filter(e=>e.compatibility?.some(e=>n.includes(e)))}return t}load(e,t){let n=this._helpers;t&&(n=this.filter(t));for(let t of n)e.registerHelper(t.name,t.fn)}swap(e){for(let t of this._helpers)e.registerHelper(t.name,t.fn)}};const te=(e,t)=>Array.isArray(e)?e.slice(t):[],ne=(e,t)=>Array.isArray(e)?e.slice(0,-t):[],y=e=>e==null?[]:Array.isArray(e)?e:[e],re=(e,t)=>{if(Array.isArray(e))return typeof t==`number`?e.slice(0,t):e[0]},ie=(e,t)=>{if(!Array.isArray(e)&&typeof e!=`string`)return;if(typeof t!=`number`){let t=e;return t[t.length-1]}let n=Math.abs(t);return e.slice(-n)},b=e=>e&&typeof e==`object`&&!Array.isArray(e)?Object.keys(e).length:typeof e==`string`||Array.isArray(e)?e.length:0,ae=[{name:`after`,category:`array`,compatibility:[`browser`,`nodejs`],fn:te},{name:`before`,category:`array`,compatibility:[`browser`,`nodejs`],fn:ne},{name:`arrayify`,category:`array`,compatibility:[`browser`,`nodejs`],fn:y},{name:`first`,category:`array`,compatibility:[`browser`,`nodejs`],fn:re},{name:`last`,category:`array`,compatibility:[`browser`,`nodejs`],fn:ie},{name:`length`,category:`array`,compatibility:[`browser`,`nodejs`],fn:b},{name:`join`,category:`array`,compatibility:[`browser`,`nodejs`],fn:(e,t=`, `)=>typeof e==`string`?e:Array.isArray(e)?e.join(t):``},{name:`forEach`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t){if(!Array.isArray(e)||!t||typeof t.fn!=`function`)return t?.inverse?t.inverse(this)??``:``;if(e.length===0)return t.inverse?t.inverse(this)??``:``;let n=e.length,r=t.hash??{},i=t.data?{...t.data}:void 0,a=``;for(let o=0;o<n;o++){let s=e[o],c={index:o,total:n,isFirst:o===0,isLast:o===n-1},l={...i?{...i}:{},...r,...c},u;u=typeof s==`object`&&s?{...s,...r,...c}:{value:s,...r,...c},a+=t.fn(u,{data:l})}return a}},{name:`inArray`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){if(!Array.isArray(e)||!n)return``;let r=e.includes(t);return r&&n.fn?n.fn(this):!r&&n.inverse?n.inverse(this):``}},{name:`isArray`,category:`array`,compatibility:[`browser`,`nodejs`],fn:e=>Array.isArray(e)},{name:`itemAt`,category:`array`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{if(Array.isArray(e))return e[t]}},{name:`equalsLength`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){let r=b(e)===t;return n&&(n.fn||n.inverse)?r&&n.fn?n.fn(this):!r&&n.inverse?n.inverse(this):``:r}},{name:`some`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){if(!Array.isArray(e)||typeof t!=`function`||!n)return n?.inverse?n.inverse(this)??``:``;let r=e.some(t);return r&&n.fn?n.fn(this):!r&&n.inverse?n.inverse(this):``}},{name:`eachIndex`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t){if(!Array.isArray(e)||!t||typeof t.fn!=`function`)return t?.inverse?t.inverse(this)??``:``;if(e.length===0)return t.inverse?t.inverse(this)??``:``;let n=``;for(let r=0;r<e.length;r++){let i={item:e[r],index:r};n+=t.fn(i)}return n}},{name:`withAfter`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){if(!Array.isArray(e)||!n||typeof n.fn!=`function`)return``;let r=e.slice(t+1);if(r.length===0)return n.inverse?n.inverse(this)??``:``;let i=``;for(let e of r)i+=n.fn(e);return i}},{name:`withBefore`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){if(!Array.isArray(e)||!n||typeof n.fn!=`function`)return``;let r=e.slice(0,t);if(r.length===0)return n.inverse?n.inverse(this)??``:``;let i=``;for(let e of r)i+=n.fn(e);return i}},{name:`withFirst`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){let r=1,i=n;if(typeof t==`object`&&t&&!Array.isArray(t)?i=t:typeof t==`number`&&(r=t),!Array.isArray(e)||!i||typeof i.fn!=`function`)return``;if(e.length===0)return i.inverse?i.inverse(this)??``:``;let a=e.slice(0,r),o=``;for(let e of a)o+=i.fn(e);return o}},{name:`withLast`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){let r=1,i=n;if(typeof t==`object`&&t&&!Array.isArray(t)?i=t:typeof t==`number`&&(r=t),!Array.isArray(e)||!i||typeof i.fn!=`function`)return``;if(e.length===0)return i.inverse?i.inverse(this)??``:``;let a=e.slice(-r),o=``;for(let e of a)o+=i.fn(e);return o}},{name:`withGroup`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){if(!Array.isArray(e)||typeof t!=`number`||t<=0||!n||typeof n.fn!=`function`)return``;if(e.length===0)return n.inverse?n.inverse(this)??``:``;let r=``,i=[];for(let n=0;n<e.length;n+=t)i.push(e.slice(n,n+t));for(let e of i)r+=n.fn(e);return r}},{name:`withSort`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){let r,i=n;if(typeof t==`object`&&t&&!Array.isArray(t)?i=t:typeof t==`string`&&(r=t),!Array.isArray(e)||!i||typeof i.fn!=`function`)return``;if(e.length===0)return i.inverse?i.inverse(this)??``:``;let a=[...e];r?a.sort((e,t)=>{let n=e?.[r],i=t?.[r];return n===i?0:n==null?1:i==null?-1:typeof n==`string`&&typeof i==`string`?n.localeCompare(i):n<i?-1:1}):a.sort((e,t)=>e===t?0:e==null?1:t==null?-1:typeof e==`string`&&typeof t==`string`?e.localeCompare(t):e<t?-1:1),(i.hash?.reverse===!0||i.hash?.reverse===`true`)&&a.reverse();let o=``;for(let e of a)o+=i.fn(e);return o}},{name:`filter`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){if(!Array.isArray(e)||!n)return n?.inverse?n.inverse(this)??``:``;let r=e.filter(e=>e===t);return r.length>0&&n.fn?n.fn(this):r.length===0&&n.inverse?n.inverse(this):``}},{name:`map`,category:`array`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>!Array.isArray(e)||typeof t!=`function`?[]:e.map(t)},{name:`pluck`,category:`array`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>!Array.isArray(e)||typeof t!=`string`?[]:e.map(e=>{if(typeof e!=`object`||!e)return;let n=t.split(`.`),r=e;for(let e of n){if(typeof r!=`object`||!r)return;r=r[e]}return r})},{name:`reverse`,category:`array`,compatibility:[`browser`,`nodejs`],fn:e=>{if(typeof e==`string`)return e.split(``).reverse().join(``);if(Array.isArray(e))return[...e].reverse()}},{name:`sort`,category:`array`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{if(!Array.isArray(e))return[];let n=[...e];return typeof t==`function`?n.sort(t):typeof t==`string`?n.sort((e,n)=>{let r=e?.[t],i=n?.[t];return r===i?0:r==null?1:i==null?-1:typeof r==`string`&&typeof i==`string`?r.localeCompare(i):r<i?-1:1}):n.sort((e,t)=>e===t?0:e==null?1:t==null?-1:typeof e==`string`&&typeof t==`string`?e.localeCompare(t):e<t?-1:1),n}},{name:`sortBy`,category:`array`,compatibility:[`browser`,`nodejs`],fn:(e,...t)=>{if(!Array.isArray(e)||t.length===0)return[];let n=[...e];return n.sort((e,n)=>{for(let r of t){let t=e?.[r],i=n?.[r];if(t!==i){if(t==null)return 1;if(i==null)return-1;if(typeof t==`string`&&typeof i==`string`){let e=t.localeCompare(i);if(e!==0)return e}else return t<i?-1:1}}return 0}),n}},{name:`unique`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t){if(!Array.isArray(e))return t?t.inverse?t.inverse(this)??``:``:[];let n=[...new Set(e)];if(!t)return n;if(n.length===0&&t.inverse)return t.inverse(this);if(n.length>0&&t.fn){let e=``;for(let r of n)e+=t.fn(r);return e}return``}}],oe=e=>e!==void 0&&(e===`/`||e===`!`||e===`?`||/[a-zA-Z]/.test(e)),se=e=>{let t=``,n=!1,r=!1,i=null;for(let a=0;a<e.length;a++){let o=e[a];if(r){o===`-`&&e[a+1]===`-`&&e[a+2]===`>`&&(r=!1,a+=2);continue}if(n){i?o===i&&(i=null):o===`"`||o===`'`?i=o:o===`>`&&(n=!1);continue}if(o===`<`){if(e[a+1]===`!`&&e[a+2]===`-`&&e[a+3]===`-`){r=!0,a+=3;continue}if(oe(e[a+1])){n=!0;continue}}t+=o}return t},ce=new Set([`area`,`base`,`br`,`col`,`command`,`embed`,`hr`,`img`,`input`,`keygen`,`link`,`meta`,`param`,`source`,`track`,`wbr`,`circle`,`ellipse`,`line`,`path`,`polygon`,`polyline`,`rect`,`stop`,`use`]),x=(e,t={},n=``)=>{let r=`<${e}`;for(let[e,n]of Object.entries(t))n===!0?r+=` ${e}`:(typeof n==`string`||typeof n==`number`)&&(r+=` ${e}="${le(String(n))}"`);return ce.has(e.toLowerCase())?`${r}>`:`${r}>${ue(n)}</${e}>`},le=e=>e.replace(/&/g,`&`).replace(/"/g,`"`).replace(/</g,`<`).replace(/>/g,`>`),ue=e=>e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`),S=(e={})=>Object.keys(e).map(t=>`${t}="${String(e[t]).replace(/^['"]|["']$/g,``)}"`).join(` `),de=[{name:`attr`,category:`html`,compatibility:[`browser`,`nodejs`],fn:e=>{let t=S(e?.hash??{});return t.trim()?` ${t}`:``}},{name:`sanitize`,category:`html`,compatibility:[`browser`,`nodejs`],fn:e=>typeof e==`string`?se(e).trim():``},{name:`ul`,category:`html`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=S(t.hash??{}),r=e.map(e=>typeof e==`string`?e:t.fn(e));return`${n?`<ul ${n}>`:`<ul>`}${r.map(e=>`<li>${e}</li>`).join(`
|
|
2
|
-
`)}</ul>`}},{name:`ol`,category:`html`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=
|
|
3
|
-
`)}</ol>`}},{name:`thumbnailImage`,category:`html`,compatibility:[`browser`,`nodejs`],fn:e=>{let t=``,n=``,r=e.full||!1,i={alt:e.alt,src:e.thumbnail,width:e.size.width,height:e.size.height},a={id:`image-${e.id}`},o={href:r,rel:`thumbnail`};return e.classes&&(e.classes.image&&(i.class=e.classes.image.join(` `)),e.classes.figure&&(a.class=e.classes.figure.join(` `)),e.classes.link&&(o.class=e.classes.link.join(` `))),t+=`<figure ${S(a)}>\n`,n+=`<img ${S(i)}>\n`,r?t+=`<a ${S(o)}>\n${n}</a>\n`:t+=n,e.caption&&(t+=`<figcaption>${e.caption}</figcaption>\n`),t+=`</figure>`,t}}],fe=[{name:`gist`,category:`code`,compatibility:[`browser`,`nodejs`],fn:e=>x(`script`,{src:`https://gist.github.com/${e}.js`})},{name:`jsfiddle`,category:`code`,compatibility:[`browser`,`nodejs`],fn:e=>{if(!e?.id)throw Error("jsfiddle helper expects an `id`");let{id:t,width:n=`100%`,height:r=`300`,skin:i=`/presentation/`,tabs:a=`result,js,html,css`,allowfullscreen:o=`allowfullscreen`,frameborder:s=`0`}=e;return x(`iframe`,{width:n,height:r,src:`http://jsfiddle.net/${t}/embedded/${a}${i}`,allowfullscreen:o,frameborder:s})}}],pe=[{name:`isEmpty`,category:`collection`,compatibility:[`browser`,`nodejs`],fn:e=>e==null?!0:Array.isArray(e)?e.length===0:typeof e==`object`?Object.keys(e).length===0:!1},{name:`iterate`,category:`collection`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{if(Array.isArray(e)){let n=``;for(let r=0;r<e.length;r++)n+=t(e[r],r);return n}if(e&&typeof e==`object`){let n=``;for(let r of Object.keys(e))n+=t(e[r],r);return n}return n?n():``}}],me=(...e)=>e.every(Boolean),he=(e,t,n)=>{switch(t){case`==`:return e==n;case`===`:return e===n;case`!=`:return e!=n;case`!==`:return e!==n;case`<`:return e<n;case`>`:return e>n;case`<=`:return e<=n;case`>=`:return e>=n;case`typeof`:return typeof e===n;default:throw Error(`helper {{compare}}: invalid operator: '${t}'`)}},ge=(e,t,n=0)=>e==null?!1:typeof e==`string`||Array.isArray(e)?e.indexOf(t,n)>-1:typeof e==`object`?t in e:!1,_e=(...e)=>{for(let t of e)if(t!=null)return t;return``},ve=(e,t)=>e===t,ye=(e,t)=>e>t,be=(e,t)=>e>=t,xe=(e,t)=>e==null||t==null?!1:Array.isArray(e)||typeof e==`string`?e.indexOf(t)>-1:typeof e==`object`?t in e:!1,C=(e,t)=>{if(!e)return!0;let n=Array.isArray(t)?t:t==null?[`0`,`false`,`nada`,`nil`,`nay`,`nah`,`negative`,`no`,`none`,`nope`,`nul`,`null`,`nix`,`nyet`,`uh-uh`,`veto`,`zero`]:[t],r=typeof e==`string`?e.toLowerCase():null;for(let t of n)if(t===e||r!=null&&t===r)return!0;return!1},Se=[{name:`and`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:me},{name:`compare`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:he},{name:`contains`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:ge},{name:`default`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:_e},{name:`eq`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:ve},{name:`gt`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:ye},{name:`gte`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:be},{name:`has`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:xe},{name:`isFalsey`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:e=>C(e)},{name:`isTruthy`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:e=>!C(e)},{name:`ifEven`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:e=>typeof e==`number`&&e%2==0},{name:`ifNth`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>typeof e==`number`&&typeof t==`number`&&t%e===0},{name:`ifOdd`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:e=>typeof e==`number`&&Math.abs(e%2)===1},{name:`is`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e==t},{name:`isnt`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e!=t},{name:`lt`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e<t},{name:`lte`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e<=t},{name:`neither`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>!e&&!t},{name:`not`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:e=>!e},{name:`or`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(...e)=>e.some(Boolean)},{name:`unlessEq`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e!==t},{name:`unlessGt`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e<=t},{name:`unlessLt`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e>=t},{name:`unlessGteq`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e<t},{name:`unlessLteq`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e>t}];d.default.extend(p.default),d.default.extend(f.default),d.default.extend(h.default),d.default.extend(m.default);const w=e=>{if(!e)return(0,d.default)();if(typeof e==`string`){let t=(0,u.parseDate)(e);return t?(0,d.default)(t):(0,d.default)(e)}return(0,d.default)(e)},Ce=()=>new Date().getFullYear().toString(),T=e=>e.replace(/yyyy/g,`YYYY`).replace(/yy/g,`YY`).replace(/dd/g,`DD`).replace(/mm/g,`MM`).replace(/hh/g,`HH`),E=(e,t)=>{let n=t||`YYYY-MM-DD`,r=w(e);if(!r.isValid())throw Error(`Unable to parse date: ${e}`);let i=T(n);return r.format(i)},we=()=>Date.now().toString(),Te=e=>{let t=T(e||`YYYY-MM-DD HH:mm:ss`);return(0,d.default)().format(t)},D=e=>{let t=w(e);if(!t.isValid())throw Error(`Unable to parse date: ${e}`);return t.fromNow()},Ee=[{name:`year`,category:`date`,compatibility:[`browser`,`nodejs`],fn:Ce},{name:`date`,category:`date`,compatibility:[`browser`,`nodejs`],fn:E},{name:`moment`,category:`date`,compatibility:[`browser`,`nodejs`],fn:E},{name:`timestamp`,category:`date`,compatibility:[`browser`,`nodejs`],fn:we},{name:`now`,category:`date`,compatibility:[`browser`,`nodejs`],fn:Te},{name:`fromNow`,category:`date`,compatibility:[`browser`,`nodejs`],fn:D},{name:`toNow`,category:`date`,compatibility:[`browser`,`nodejs`],fn:e=>{let t=w(e);if(!t.isValid())throw Error(`Unable to parse date: ${e}`);return t.toNow()}},{name:`ago`,category:`date`,compatibility:[`browser`,`nodejs`],fn:e=>D(e)},{name:`dateAdd`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=w(e);if(!r.isValid())throw Error(`Unable to parse date: ${e}`);return r.add(t,n).format(`YYYY-MM-DD HH:mm:ss`)}},{name:`dateSubtract`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=w(e);if(!r.isValid())throw Error(`Unable to parse date: ${e}`);return r.subtract(t,n).format(`YYYY-MM-DD HH:mm:ss`)}},{name:`startOf`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=w(e);if(!n.isValid())throw Error(`Unable to parse date: ${e}`);return n.startOf(t).format(`YYYY-MM-DD HH:mm:ss`)}},{name:`endOf`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=w(e);if(!n.isValid())throw Error(`Unable to parse date: ${e}`);return n.endOf(t).format(`YYYY-MM-DD HH:mm:ss`)}},{name:`isBefore`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=w(e),r=w(t);if(!n.isValid()||!r.isValid())throw Error(`Unable to parse dates: ${e}, ${t}`);return n.isBefore(r)}},{name:`isAfter`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=w(e),r=w(t);if(!n.isValid()||!r.isValid())throw Error(`Unable to parse dates: ${e}, ${t}`);return n.isAfter(r)}},{name:`isSame`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=w(e),i=w(t);if(!r.isValid()||!i.isValid())throw Error(`Unable to parse dates: ${e}, ${t}`);return r.isSame(i,n)}},{name:`isBetween`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=w(e),i=w(t),a=w(n);if(!r.isValid()||!i.isValid()||!a.isValid())throw Error(`Unable to parse dates: ${e}, ${t}, ${n}`);return r.isBetween(i,a,null,`[]`)}},{name:`diff`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=w(e),i=w(t);if(!r.isValid()||!i.isValid())throw Error(`Unable to parse dates: ${e}, ${t}`);return r.diff(i,n)}},{name:`toISOString`,category:`date`,compatibility:[`browser`,`nodejs`],fn:e=>{let t=w(e);if(!t.isValid())throw Error(`Unable to parse date: ${e}`);return t.toISOString()}},{name:`dateTimezone`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=T(n||`YYYY-MM-DD HH:mm:ss`),i=w(e);if(!i.isValid())throw Error(`Unable to parse date: ${e}`);return i.tz(t).format(r)}},{name:`dateLocale`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=T(n||`YYYY-MM-DD HH:mm:ss`),i=w(e);if(!i.isValid())throw Error(`Unable to parse date: ${e}`);return i.locale(t).format(r)}}],O=(e,t)=>{if(!e||typeof e!=`object`)return;let n=Array.isArray(t)?t:t.split(`.`),r=e;for(let e of n){if(typeof r!=`object`||!r)return;r=r[e]}return r},k=(e,t)=>{if(!e||typeof e!=`object`)return;let n=Array.isArray(t)?t:t.split(`.`);if(n.length===0)return;let r=e;for(let e=0;e<n.length-1;e++){if(typeof r!=`object`||!r)return;r=r[n[e]]}let i=n[n.length-1];if(!(typeof r!=`object`||!r||!(i in r)))return{[i]:r[i]}},A=(e,t,n)=>{let r={};return e&&typeof e==`object`&&e.options&&Object.assign(r,e.options),t&&typeof t==`object`&&(`hash`in t?Object.assign(r,t.hash):Object.assign(r,t)),n&&typeof n==`object`&&(`hash`in n?Object.assign(r,n.hash):Object.assign(r,n)),r},De=[{name:`i18n`,category:`i18n`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){if(t&&typeof t==`object`&&`hash`in t&&n===void 0&&(n=t,t={}),typeof e!=`string`)throw Error(`{{i18n}} helper expected "key" to be a string`);let r={...this,...t,...n?.hash??{}},i=r.language||r.lang;if(typeof i!=`string`)throw TypeError(`{{i18n}} helper expected "language" to be a string`);let a=r[i];if(a===void 0)throw Error(`{{i18n}} helper cannot find language "${i}"`);let o=O(a,e);if(o===void 0)throw Error(`{{i18n}} helper cannot find property "`+String(e)+`" for language "`+i+`"`);return String(o)}}],Oe=[{name:`inflect`,category:`inflection`,compatibility:[`browser`,`nodejs`],fn:(e,t,n,r)=>{let i=e>1||e===0?n:t;return r?`${e} ${i}`:i}},{name:`ordinalize`,category:`inflection`,compatibility:[`browser`,`nodejs`],fn:e=>{let t=Math.abs(Math.round(Number(e))),n=String(e),r=t%100;if([11,12,13].includes(r))return`${n}th`;switch(t%10){case 1:return`${n}st`;case 2:return`${n}nd`;case 3:return`${n}rd`;default:return`${n}th`}}}],j=(e,t,n)=>{let r=typeof t==`string`?t.split(/, */):t;return(0,g.default)(typeof e==`string`?[e]:e,r,n)},ke=[{name:`match`,category:`match`,compatibility:[`browser`,`nodejs`],fn:j},{name:`isMatch`,category:`match`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>g.default.isMatch(e,t,n)},{name:`mm`,category:`match`,compatibility:[`browser`,`nodejs`],fn:(...e)=>(console.log(`the {{mm}} helper is depcrecated and will be removed`),console.log(`in handlebars-helpers v1.0.0, please use the {{match}}`),console.log(`helper instead.`),j(...e))}],M=e=>typeof e==`number`&&!Number.isNaN(e)||typeof e==`string`&&e.trim()!==``&&!Number.isNaN(Number(e)),N=(e,t=`expected a number`)=>{if(M(e))return Number(e);throw TypeError(t)},Ae=e=>{let t=N(e);return Math.abs(t)},je=(e,t)=>M(e)&&M(t)?Number(e)+Number(t):``,Me=(...e)=>{let t=e.flat().map(e=>Number(e));return F(t)/t.length},Ne=e=>{let t=N(e);return Math.ceil(t)},Pe=(e,t)=>N(e,`expected the first argument to be a number`)/N(t,`expected the second argument to be a number`),Fe=e=>{let t=N(e);return Math.floor(t)},Ie=(e,t)=>N(e,`expected the first argument to be a number`)-N(t,`expected the second argument to be a number`),Le=(e,t)=>N(e,`expected the first argument to be a number`)%N(t,`expected the second argument to be a number`),P=(e,t)=>N(e,`expected the first argument to be a number`)*N(t,`expected the second argument to be a number`),Re=(e,t)=>N(e,`expected the first argument to be a number`)+N(t,`expected the second argument to be a number`),ze=(e,t)=>{let n=N(e,`expected minimum to be a number`),r=N(t,`expected maximum to be a number`);return n+Math.floor(Math.random()*(r-n+1))},Be=(e,t)=>e%t,Ve=e=>{let t=N(e);return Math.round(t)},He=(e,t)=>N(e,`expected the first argument to be a number`)-N(t,`expected the second argument to be a number`),F=(...e)=>{let t=e.flat(),n=0;for(let e of t)M(e)&&(n+=Number(e));return n},Ue=[{name:`abs`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Ae},{name:`add`,category:`math`,compatibility:[`browser`,`nodejs`],fn:je},{name:`avg`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Me},{name:`ceil`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Ne},{name:`divide`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Pe},{name:`floor`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Fe},{name:`minus`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Ie},{name:`modulo`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Le},{name:`multiply`,category:`math`,compatibility:[`browser`,`nodejs`],fn:P},{name:`plus`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Re},{name:`random`,category:`math`,compatibility:[`browser`,`nodejs`],fn:ze},{name:`remainder`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Be},{name:`round`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Ve},{name:`subtract`,category:`math`,compatibility:[`browser`,`nodejs`],fn:He},{name:`sum`,category:`math`,compatibility:[`browser`,`nodejs`],fn:F},{name:`times`,category:`math`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>P(e,t)}],We=new v.default({breaks:!0,html:!0,langPrefix:`lang-`,typographer:!1,xhtmlOut:!1});function Ge(e){return new l.default.SafeString(_.default.decode(We.render(e)))}const I=function(e,t){return typeof e==`object`&&e&&`fn`in e&&typeof e.fn==`function`?e=e.fn(this):typeof e!=`string`&&(e=``),Ge(e)},Ke=[{name:`md`,category:`markdown`,compatibility:[`browser`,`nodejs`],fn:I},{name:`markdown`,category:`markdown`,compatibility:[`browser`,`nodejs`],fn:I}],L=Object.prototype.toString;function R(e){return typeof e.constructor==`function`?e.constructor.name:null}function qe(e){return R(e)===`GeneratorFunction`}function Je(e){return typeof e.throw==`function`&&typeof e.return==`function`&&typeof e.next==`function`}function Ye(e){return typeof e.toDateString==`function`&&typeof e.getDate==`function`&&typeof e.setDate==`function`}function Xe(e){return typeof e.message==`string`&&e.constructor&&typeof e.constructor.stackTraceLimit==`number`}function Ze(e){return typeof e.flags==`string`&&typeof e.ignoreCase==`boolean`&&typeof e.multiline==`boolean`&&typeof e.global==`boolean`}function Qe(e){if(e===void 0)return`undefined`;if(e===null)return`null`;let t=typeof e;if(t===`boolean`)return`boolean`;if(t===`string`)return`string`;if(t===`number`)return`number`;if(t===`symbol`)return`symbol`;if(t===`bigint`)return`bigint`;if(t===`function`)return qe(e)?`generatorfunction`:`function`;if(Array.isArray(e))return`array`;if(typeof Buffer<`u`&&Buffer.isBuffer?.(e))return`buffer`;if(typeof e.length==`number`&&L.call(e)===`[object Arguments]`)return`arguments`;if(e instanceof Date||Ye(e))return`date`;if(e instanceof Error||Xe(e))return`error`;if(e instanceof RegExp||Ze(e))return`regexp`;switch(R(e)){case`Promise`:return`promise`;case`WeakMap`:return`weakmap`;case`WeakSet`:return`weakset`;case`Map`:return`map`;case`Set`:return`set`;case`Int8Array`:return`int8array`;case`Uint8Array`:return`uint8array`;case`Uint8ClampedArray`:return`uint8clampedarray`;case`Int16Array`:return`int16array`;case`Uint16Array`:return`uint16array`;case`Int32Array`:return`int32array`;case`Uint32Array`:return`uint32array`;case`Float32Array`:return`float32array`;case`Float64Array`:return`float64array`}if(Je(e))return`generator`;let n=L.call(e);switch(n){case`[object Object]`:return`object`;case`[object Map Iterator]`:return`mapiterator`;case`[object Set Iterator]`:return`setiterator`;case`[object String Iterator]`:return`stringiterator`;case`[object Array Iterator]`:return`arrayiterator`}return n.slice(8,-1).toLowerCase().replace(/\s/g,``)}function $e(e,t){typeof e==`object`&&e&&`hash`in e&&(t=e,e=t.data);let n=l.default.createFrame(e||{});return(typeof t!=`object`||!t)&&(t={}),t.hash&&typeof t.hash==`object`&&Object.assign(n,t.hash),t.fn(this,{data:n})}function et(e,t,n){return O(A(this,t,n),e)}function tt(e){return e.fn(this)}const nt=Qe;function rt(e){return e.hash&&Object.keys(e.hash).length?e.fn(e.hash):e.inverse(this)}const it=[{name:`frame`,category:`misc`,compatibility:[`browser`,`nodejs`],fn:$e},{name:`option`,category:`misc`,compatibility:[`browser`,`nodejs`],fn:et},{name:`noop`,category:`misc`,compatibility:[`browser`,`nodejs`],fn:tt},{name:`typeOf`,category:`misc`,compatibility:[`browser`,`nodejs`],fn:nt},{name:`withHash`,category:`misc`,compatibility:[`browser`,`nodejs`],fn:rt}],z=e=>typeof e==`number`&&!Number.isNaN(e),at=[{name:`bytes`,category:`number`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{if(e==null)return`0 B`;let n;if(typeof e==`string`){if(n=e.length,!n)return`0 B`}else if(z(e))n=Number(e);else if(typeof e.length==`number`){if(n=e.length,!n)return`0 B`}else return`0 B`;let r=typeof t==`number`&&!Number.isNaN(t)?t:2,i=[`B`,`kB`,`MB`,`GB`,`TB`,`PB`,`EB`,`ZB`,`YB`],a=10**r;for(let e=i.length-1;e>=0;e--){let t=10**(e*3);if(t<=n+1)return`${Math.round(n*a/t)/a} ${i[e]}`}return`${n}`}},{name:`addCommas`,category:`number`,compatibility:[`browser`,`nodejs`],fn:e=>e.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g,`$1,`)},{name:`phoneNumber`,category:`number`,compatibility:[`browser`,`nodejs`],fn:e=>{let t=e.toString();return`(${t.substr(0,3)}) ${t.substr(3,3)}-${t.substr(6,4)}`}},{name:`toAbbr`,category:`number`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=z(e)?Number(e):0,r=10**(typeof t==`number`&&!Number.isNaN(t)?t:2),i=[`k`,`m`,`b`,`t`,`q`];for(let e=i.length-1;e>=0;e--){let t=10**((e+1)*3);if(t<=n+1)return`${Math.round(n*r/t)/r}${i[e]}`}return`${n}`}},{name:`toExponential`,category:`number`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=z(e)?Number(e):0,r=typeof t==`number`&&!Number.isNaN(t)?t:0;return Number(n).toExponential(r)}},{name:`toFixed`,category:`number`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=z(e)?Number(e):0,r=typeof t==`number`&&!Number.isNaN(t)?t:0;return Number(n).toFixed(r)}},{name:`toFloat`,category:`number`,compatibility:[`browser`,`nodejs`],fn:e=>parseFloat(String(e))},{name:`toInt`,category:`number`,compatibility:[`browser`,`nodejs`],fn:e=>parseInt(String(e),10)},{name:`toPrecision`,category:`number`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=z(e)?Number(e):0,r=typeof t==`number`&&!Number.isNaN(t)?t:1;return Number(n).toPrecision(r)}}],B=e=>!!(e&&typeof e==`object`&&`hash`in e),V=(e,t)=>({...e?.data||{},...t}),ot=(...e)=>{let t=[...e];if(t.length&&B(t[t.length-1])){let e=t.pop();t.push(e.hash)}let n={};for(let e of t)e&&typeof e==`object`&&!Array.isArray(e)&&Object.assign(n,e);return n},st=(e,t)=>{if(!B(t))return t?.inverse?.(e)??``;let n=V(t,t.hash||{}),r=``;for(let i in e)n.key=i,r+=t.fn(e[i],{data:n});return r},ct=(e,t)=>{if(!B(t))return t?.inverse?.(e)??``;let n=V(t,t.hash||{}),r=``;for(let i in e)Object.hasOwn(e,i)&&(n.key=i,r+=t.fn(e[i],{data:n}));return r},lt=(...e)=>{let t=[];for(let n of e)(typeof n==`string`||typeof n==`number`)&&t.push(n);return t.join(`.`)},ut=(e,t,n)=>{let r=O(t,e);return n&&typeof n.fn==`function`?r?n.fn(r):n.inverse?.(t):r},dt=(e,t)=>k(t,e),ft=(e,t)=>Object.hasOwn(e,t),pt=e=>!!e&&typeof e==`object`&&!Array.isArray(e),H=e=>JSON.parse(e),U=(e,t)=>JSON.stringify(e,null,typeof t==`number`?t:0),mt=[{name:`extend`,category:`object`,compatibility:[`browser`,`nodejs`],fn:ot},{name:`forIn`,category:`object`,compatibility:[`browser`,`nodejs`],fn:st},{name:`forOwn`,category:`object`,compatibility:[`browser`,`nodejs`],fn:ct},{name:`toPath`,category:`object`,compatibility:[`browser`,`nodejs`],fn:lt},{name:`get`,category:`object`,compatibility:[`browser`,`nodejs`],fn:ut},{name:`getObject`,category:`object`,compatibility:[`browser`,`nodejs`],fn:dt},{name:`hasOwn`,category:`object`,compatibility:[`browser`,`nodejs`],fn:ft},{name:`isObject`,category:`object`,compatibility:[`browser`,`nodejs`],fn:pt},{name:`JSONparse`,category:`object`,compatibility:[`browser`,`nodejs`],fn:H},{name:`JSONstringify`,category:`object`,compatibility:[`browser`,`nodejs`],fn:U},{name:`merge`,category:`object`,compatibility:[`browser`,`nodejs`],fn:(e,...t)=>{let n=[e,...t];if(n.length&&B(n[n.length-1])){let e=n.pop();n.push(e.hash)}return Object.assign(n[0],...n.slice(1))}},{name:`parseJSON`,category:`object`,compatibility:[`browser`,`nodejs`],fn:H},{name:`pick`,category:`object`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=y(e),i={};for(let e of r)i=Object.assign({},i,k(t,e));return n&&typeof n.fn==`function`?Object.keys(i).length?n.fn(i):n.inverse?.(t):i}},{name:`stringify`,category:`object`,compatibility:[`browser`,`nodejs`],fn:U}],ht=[{name:`toRegex`,category:`regex`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=A({},t,n);return new RegExp(e,r.flags)}},{name:`test`,category:`regex`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{if(typeof e!=`string`)return!1;if(!(t instanceof RegExp))throw TypeError(`expected a regular expression`);return t.test(e)}}],W=e=>e.trim().replace(/^[-_.\W\s]+|[-_.\W\s]+$/g,``),G=(e,t)=>e.length===1?e.toLowerCase():W(e).toLowerCase().replace(/[-_.\W\s]+(\w|$)/g,(e,n)=>t(n)),gt=(e,t)=>typeof e==`string`&&typeof t==`string`?e+t:e,_t=e=>typeof e==`string`?G(e,e=>e.toUpperCase()):``,K=e=>typeof e!=`string`||e.length===0?``:e.charAt(0).toUpperCase()+e.slice(1),vt=e=>typeof e==`string`?e.replace(/\w\S*/g,e=>K(e)):``,yt=(e,t)=>{if(typeof e!=`string`)return``;let n=``;for(let e=0;e<t;e++)n+=` `;return n+e+n},bt=e=>typeof e==`string`?W(e):``,xt=e=>typeof e==`string`?G(e,e=>`-${e}`):``,St=e=>typeof e==`string`?G(e,e=>`.${e}`):``,q=(e,t,n)=>typeof e==`string`?(typeof n!=`string`&&(n=``),e.length>t?e.slice(0,t-n.length)+n:e):``,Ct=(e,t)=>typeof e==`string`?e.length<=t?e:`${q(e,t)}…`:``,wt=e=>typeof e==`string`?e.split(` `).join(`-`):``,Tt=e=>typeof e==`string`,J=e=>typeof e==`object`&&e&&`fn`in e&&typeof e.fn==`function`?String(e.fn()).toLowerCase():typeof e==`string`?e.toLowerCase():``,Et=e=>J(e),Dt=(e,t)=>{if(typeof e!=`string`)return``;let n=t.length,r=e.indexOf(t,0),i=0;for(;r>-1;)i++,r=e.indexOf(t,r+n);return i},Ot=e=>{if(typeof e!=`string`)return``;let t=G(e,e=>e.toUpperCase());return t.charAt(0).toUpperCase()+t.slice(1)},kt=e=>typeof e==`string`?G(e,e=>`/${e}`):``,At=(e,t)=>typeof e==`string`?(typeof t!=`string`&&(t=` `),e.split(t).join(`+`)):``,jt=(e,t)=>typeof e==`string`&&typeof t==`string`?t+e:e,Mt=(e,t)=>typeof e==`string`?typeof t==`string`?e.split(t).join(``):e:``,Nt=(e,t)=>typeof e==`string`?typeof t==`string`?e.replace(t,``):e:``,Pt=(e,t,n)=>typeof e==`string`?typeof t==`string`?(typeof n!=`string`&&(n=``),e.split(t).join(n)):e:``,Ft=(e,t,n)=>typeof e==`string`?typeof t==`string`?(typeof n!=`string`&&(n=``),e.replace(t,n)):e:``,It=e=>typeof e==`string`?e.split(``).reverse().join(``):``,Lt=e=>typeof e==`string`?e.replace(/((?:\S[^.?!]*)[.?!]*)/g,e=>e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()):``,Rt=e=>typeof e==`string`?G(e,e=>`_${e}`):``,zt=e=>typeof e==`string`?e.trim():``,Bt=e=>typeof e==`string`?e.replace(/^\s+/,``):``,Vt=e=>typeof e==`string`?e.replace(/\s+$/,``):``,Ht=(e,t,n)=>{if(typeof e==`string`&&typeof t==`number`&&Number.isFinite(t)){typeof n!=`string`&&(n=`...`);let r=Math.trunc(t),i=e.split(` `);return r<i.length&&(i=i.slice(0,r)),i.join(` `).trim()+n}return``},Y=e=>typeof e==`object`&&e&&`fn`in e&&typeof e.fn==`function`?String(e.fn()).toUpperCase():typeof e==`string`?e.toUpperCase():``,Ut=[{name:`append`,category:`string`,compatibility:[`browser`,`nodejs`],fn:gt},{name:`camelcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:_t},{name:`capitalize`,category:`string`,compatibility:[`browser`,`nodejs`],fn:K},{name:`capitalizeAll`,category:`string`,compatibility:[`browser`,`nodejs`],fn:vt},{name:`center`,category:`string`,compatibility:[`browser`,`nodejs`],fn:yt},{name:`chop`,category:`string`,compatibility:[`browser`,`nodejs`],fn:bt},{name:`dashcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:xt},{name:`dotcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:St},{name:`ellipsis`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Ct},{name:`hyphenate`,category:`string`,compatibility:[`browser`,`nodejs`],fn:wt},{name:`isString`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Tt},{name:`lowercase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:J},{name:`downcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Et},{name:`occurrences`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Dt},{name:`pascalcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Ot},{name:`pathcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:kt},{name:`plusify`,category:`string`,compatibility:[`browser`,`nodejs`],fn:At},{name:`prepend`,category:`string`,compatibility:[`browser`,`nodejs`],fn:jt},{name:`remove`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Mt},{name:`removeFirst`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Nt},{name:`replace`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Pt},{name:`replaceFirst`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Ft},{name:`reverse`,category:`string`,compatibility:[`browser`,`nodejs`],fn:It},{name:`sentence`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Lt},{name:`snakecase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Rt},{name:`trim`,category:`string`,compatibility:[`browser`,`nodejs`],fn:zt},{name:`trimLeft`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Bt},{name:`trimRight`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Vt},{name:`truncate`,category:`string`,compatibility:[`browser`,`nodejs`],fn:q},{name:`truncateWords`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Ht},{name:`uppercase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Y},{name:`upcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:e=>Y(e)},{name:`split`,category:`string`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>typeof e==`string`?(typeof t!=`string`&&(t=``),e.split(t)):``},{name:`startsWith`,category:`string`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>typeof e!=`string`||typeof t!=`string`?!1:t.startsWith(e)},{name:`titleize`,category:`string`,compatibility:[`browser`,`nodejs`],fn:e=>typeof e==`string`?e.replace(/\w\S*/g,e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()):``},{name:`raw`,category:`string`,compatibility:[`browser`,`nodejs`],fn:e=>e&&typeof e.fn==`function`?e.fn():``}],X=[`browser`,`nodejs`],Z=e=>{if(typeof e==`string`)return encodeURIComponent(e)},Q=e=>{if(typeof e==`string`)return decodeURIComponent(e)};function Wt(...e){return Z.apply(this,e)}function Gt(...e){return Q.apply(this,e)}const Kt=[{name:`encodeURI`,category:`url`,compatibility:X,fn:Z},{name:`decodeURI`,category:`url`,compatibility:X,fn:Q},{name:`url_encode`,category:`url`,compatibility:X,fn:Wt},{name:`url_decode`,category:`url`,compatibility:X,fn:Gt},{name:`stripQuerystring`,category:`url`,compatibility:X,fn:e=>{if(typeof e==`string`)return e.split(`?`)[0]}}];var $=class extends ee{init(){this.registerHelpers(ae),this.registerHelpers(pe),this.registerHelpers(Ee),this.registerHelpers(fe),this.registerHelpers(de),this.registerHelpers(Se),this.registerHelpers(De),this.registerHelpers(Oe),this.registerHelpers(ke),this.registerHelpers(Ue),this.registerHelpers(Ke),this.registerHelpers(it),this.registerHelpers(at),this.registerHelpers(ht),this.registerHelpers(Ut),this.registerHelpers(Kt),this.registerHelpers(mt)}};const qt=l.default,Jt=l.default.create();function Yt(e){new $().load(e.handlebars??e.hbs)}async function Xt(){let e=new $,t=l.default.create();return Object.keys(l.default.partials).length>0&&t.registerPartial(l.default.partials),e.load(t),typeof process<`u`&&process.env?.NODE_ENV===`development`&&console.warn("createHandlebars will be deprecated in future versions, use `fumanchu` instead."),t}function Zt(e){let t=new $,n=l.default.create();if(e?.handlebars?n=e.handlebars:Object.keys(l.default.partials).length>0&&n.registerPartial(l.default.partials),t.load(n),e?.caching){let t;t=e.caching instanceof c.CacheableMemory?e.caching:typeof e.caching==`object`?new c.CacheableMemory({useClone:!1,...e.caching}):new c.CacheableMemory({useClone:!1});let r=n.compile.bind(n);n.compile=(e,n)=>{let i=n?`${e}\0${JSON.stringify(n)}`:e,a=t.get(i);if(a)return a;let o=r(e,n);return t.set(i,o),o}}return n}exports.CacheableMemory=c.CacheableMemory,exports.Handlebars=qt,exports.HelperRegistry=$,exports.createHandlebars=Xt,exports.fumanchu=Zt,exports.handlebars=Jt,exports.helpers=Yt;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require("@cacheable/memory"),l=require("handlebars");l=s(l,1);let u=require("chrono-node"),d=require("dayjs");d=s(d,1);let f=require("dayjs/plugin/isBetween.js");f=s(f,1);let p=require("dayjs/plugin/relativeTime.js");p=s(p,1);let m=require("dayjs/plugin/timezone.js");m=s(m,1);let h=require("dayjs/plugin/utc.js");h=s(h,1);let g=require("micromatch");g=s(g,1);let _=require("markdown-it");_=s(_,1);var ee=class{_helpers=[];constructor(){this.init()}get helpers(){return this._helpers}init(){}register(e){return this.has(e.name)?!1:(this._helpers.push(e),!0)}registerHelpers(e){for(let t of e)this.register(t)}has(e){return this._helpers.some(t=>t.name===e)}filter(e){let t=this._helpers;if(e.names){let n=e.names;t=t.filter(e=>n.includes(e.name))}if(e.categories){let n=e.categories;t=t.filter(e=>n.includes(e.category))}if(e.compatibility){let n=e.compatibility;t=t.filter(e=>e.compatibility?.some(e=>n.includes(e)))}return t}load(e,t){let n=this._helpers;t&&(n=this.filter(t));for(let t of n)e.registerHelper(t.name,t.fn)}swap(e){for(let t of this._helpers)e.registerHelper(t.name,t.fn)}};const te=(e,t)=>Array.isArray(e)?e.slice(t):[],ne=(e,t)=>Array.isArray(e)?e.slice(0,-t):[],v=e=>e==null?[]:Array.isArray(e)?e:[e],re=(e,t)=>{if(Array.isArray(e))return typeof t==`number`?e.slice(0,t):e[0]},ie=(e,t)=>{if(!Array.isArray(e)&&typeof e!=`string`)return;if(typeof t!=`number`){let t=e;return t[t.length-1]}let n=Math.abs(t);return e.slice(-n)},y=e=>e&&typeof e==`object`&&!Array.isArray(e)?Object.keys(e).length:typeof e==`string`||Array.isArray(e)?e.length:0,ae=[{name:`after`,category:`array`,compatibility:[`browser`,`nodejs`],fn:te},{name:`before`,category:`array`,compatibility:[`browser`,`nodejs`],fn:ne},{name:`arrayify`,category:`array`,compatibility:[`browser`,`nodejs`],fn:v},{name:`first`,category:`array`,compatibility:[`browser`,`nodejs`],fn:re},{name:`last`,category:`array`,compatibility:[`browser`,`nodejs`],fn:ie},{name:`length`,category:`array`,compatibility:[`browser`,`nodejs`],fn:y},{name:`join`,category:`array`,compatibility:[`browser`,`nodejs`],fn:(e,t=`, `)=>typeof e==`string`?e:Array.isArray(e)?e.join(t):``},{name:`forEach`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t){if(!Array.isArray(e)||!t||typeof t.fn!=`function`)return t?.inverse?t.inverse(this)??``:``;if(e.length===0)return t.inverse?t.inverse(this)??``:``;let n=e.length,r=t.hash??{},i=t.data?{...t.data}:void 0,a=``;for(let o=0;o<n;o++){let s=e[o],c={index:o,total:n,isFirst:o===0,isLast:o===n-1},l={...i?{...i}:{},...r,...c},u;u=typeof s==`object`&&s?{...s,...r,...c}:{value:s,...r,...c},a+=t.fn(u,{data:l})}return a}},{name:`inArray`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){if(!Array.isArray(e)||!n)return``;let r=e.includes(t);return r&&n.fn?n.fn(this):!r&&n.inverse?n.inverse(this):``}},{name:`isArray`,category:`array`,compatibility:[`browser`,`nodejs`],fn:e=>Array.isArray(e)},{name:`itemAt`,category:`array`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{if(Array.isArray(e))return e[t]}},{name:`equalsLength`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){let r=y(e)===t;return n&&(n.fn||n.inverse)?r&&n.fn?n.fn(this):!r&&n.inverse?n.inverse(this):``:r}},{name:`some`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){if(!Array.isArray(e)||typeof t!=`function`||!n)return n?.inverse?n.inverse(this)??``:``;let r=e.some(t);return r&&n.fn?n.fn(this):!r&&n.inverse?n.inverse(this):``}},{name:`eachIndex`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t){if(!Array.isArray(e)||!t||typeof t.fn!=`function`)return t?.inverse?t.inverse(this)??``:``;if(e.length===0)return t.inverse?t.inverse(this)??``:``;let n=``;for(let r=0;r<e.length;r++){let i={item:e[r],index:r};n+=t.fn(i)}return n}},{name:`withAfter`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){if(!Array.isArray(e)||!n||typeof n.fn!=`function`)return``;let r=e.slice(t+1);if(r.length===0)return n.inverse?n.inverse(this)??``:``;let i=``;for(let e of r)i+=n.fn(e);return i}},{name:`withBefore`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){if(!Array.isArray(e)||!n||typeof n.fn!=`function`)return``;let r=e.slice(0,t);if(r.length===0)return n.inverse?n.inverse(this)??``:``;let i=``;for(let e of r)i+=n.fn(e);return i}},{name:`withFirst`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){let r=1,i=n;if(typeof t==`object`&&t&&!Array.isArray(t)?i=t:typeof t==`number`&&(r=t),!Array.isArray(e)||!i||typeof i.fn!=`function`)return``;if(e.length===0)return i.inverse?i.inverse(this)??``:``;let a=e.slice(0,r),o=``;for(let e of a)o+=i.fn(e);return o}},{name:`withLast`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){let r=1,i=n;if(typeof t==`object`&&t&&!Array.isArray(t)?i=t:typeof t==`number`&&(r=t),!Array.isArray(e)||!i||typeof i.fn!=`function`)return``;if(e.length===0)return i.inverse?i.inverse(this)??``:``;let a=e.slice(-r),o=``;for(let e of a)o+=i.fn(e);return o}},{name:`withGroup`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){if(!Array.isArray(e)||typeof t!=`number`||t<=0||!n||typeof n.fn!=`function`)return``;if(e.length===0)return n.inverse?n.inverse(this)??``:``;let r=``,i=[];for(let n=0;n<e.length;n+=t)i.push(e.slice(n,n+t));for(let e of i)r+=n.fn(e);return r}},{name:`withSort`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){let r,i=n;if(typeof t==`object`&&t&&!Array.isArray(t)?i=t:typeof t==`string`&&(r=t),!Array.isArray(e)||!i||typeof i.fn!=`function`)return``;if(e.length===0)return i.inverse?i.inverse(this)??``:``;let a=[...e];r?a.sort((e,t)=>{let n=e?.[r],i=t?.[r];return n===i?0:n==null?1:i==null?-1:typeof n==`string`&&typeof i==`string`?n.localeCompare(i):n<i?-1:1}):a.sort((e,t)=>e===t?0:e==null?1:t==null?-1:typeof e==`string`&&typeof t==`string`?e.localeCompare(t):e<t?-1:1),(i.hash?.reverse===!0||i.hash?.reverse===`true`)&&a.reverse();let o=``;for(let e of a)o+=i.fn(e);return o}},{name:`filter`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){if(!Array.isArray(e)||!n)return n?.inverse?n.inverse(this)??``:``;let r=e.filter(e=>e===t);return r.length>0&&n.fn?n.fn(this):r.length===0&&n.inverse?n.inverse(this):``}},{name:`map`,category:`array`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>!Array.isArray(e)||typeof t!=`function`?[]:e.map(t)},{name:`pluck`,category:`array`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>!Array.isArray(e)||typeof t!=`string`?[]:e.map(e=>{if(typeof e!=`object`||!e)return;let n=t.split(`.`),r=e;for(let e of n){if(typeof r!=`object`||!r)return;r=r[e]}return r})},{name:`reverse`,category:`array`,compatibility:[`browser`,`nodejs`],fn:e=>{if(typeof e==`string`)return e.split(``).reverse().join(``);if(Array.isArray(e))return[...e].reverse()}},{name:`sort`,category:`array`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{if(!Array.isArray(e))return[];let n=[...e];return typeof t==`function`?n.sort(t):typeof t==`string`?n.sort((e,n)=>{let r=e?.[t],i=n?.[t];return r===i?0:r==null?1:i==null?-1:typeof r==`string`&&typeof i==`string`?r.localeCompare(i):r<i?-1:1}):n.sort((e,t)=>e===t?0:e==null?1:t==null?-1:typeof e==`string`&&typeof t==`string`?e.localeCompare(t):e<t?-1:1),n}},{name:`sortBy`,category:`array`,compatibility:[`browser`,`nodejs`],fn:(e,...t)=>{if(!Array.isArray(e)||t.length===0)return[];let n=[...e];return n.sort((e,n)=>{for(let r of t){let t=e?.[r],i=n?.[r];if(t!==i){if(t==null)return 1;if(i==null)return-1;if(typeof t==`string`&&typeof i==`string`){let e=t.localeCompare(i);if(e!==0)return e}else return t<i?-1:1}}return 0}),n}},{name:`unique`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t){if(!Array.isArray(e))return t?t.inverse?t.inverse(this)??``:``:[];let n=[...new Set(e)];if(!t)return n;if(n.length===0&&t.inverse)return t.inverse(this);if(n.length>0&&t.fn){let e=``;for(let r of n)e+=t.fn(r);return e}return``}}],oe=e=>e!==void 0&&(e===`/`||e===`!`||e===`?`||/[a-zA-Z]/.test(e)),se=e=>{let t=``,n=!1,r=!1,i=null;for(let a=0;a<e.length;a++){let o=e[a];if(r){o===`-`&&e[a+1]===`-`&&e[a+2]===`>`&&(r=!1,a+=2);continue}if(n){i?o===i&&(i=null):o===`"`||o===`'`?i=o:o===`>`&&(n=!1);continue}if(o===`<`){if(e[a+1]===`!`&&e[a+2]===`-`&&e[a+3]===`-`){r=!0,a+=3;continue}if(oe(e[a+1])){n=!0;continue}}t+=o}return t},ce=new Set([`area`,`base`,`br`,`col`,`command`,`embed`,`hr`,`img`,`input`,`keygen`,`link`,`meta`,`param`,`source`,`track`,`wbr`,`circle`,`ellipse`,`line`,`path`,`polygon`,`polyline`,`rect`,`stop`,`use`]),b=(e,t={},n=``)=>{let r=`<${e}`;for(let[e,n]of Object.entries(t))n===!0?r+=` ${e}`:(typeof n==`string`||typeof n==`number`)&&(r+=` ${e}="${le(String(n))}"`);return ce.has(e.toLowerCase())?`${r}>`:`${r}>${ue(n)}</${e}>`},le=e=>e.replace(/&/g,`&`).replace(/"/g,`"`).replace(/</g,`<`).replace(/>/g,`>`),ue=e=>e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`),x=(e={})=>Object.keys(e).map(t=>`${t}="${String(e[t]).replace(/^['"]|["']$/g,``)}"`).join(` `),de=[{name:`attr`,category:`html`,compatibility:[`browser`,`nodejs`],fn:e=>{let t=x(e?.hash??{});return t.trim()?` ${t}`:``}},{name:`sanitize`,category:`html`,compatibility:[`browser`,`nodejs`],fn:e=>typeof e==`string`?se(e).trim():``},{name:`ul`,category:`html`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=x(t.hash??{}),r=e.map(e=>typeof e==`string`?e:t.fn(e));return`${n?`<ul ${n}>`:`<ul>`}${r.map(e=>`<li>${e}</li>`).join(`
|
|
2
|
+
`)}</ul>`}},{name:`ol`,category:`html`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=x(t.hash??{}),r=e.map(e=>typeof e==`string`?e:t.fn(e));return`${n?`<ol ${n}>`:`<ol>`}${r.map(e=>`<li>${e}</li>`).join(`
|
|
3
|
+
`)}</ol>`}},{name:`thumbnailImage`,category:`html`,compatibility:[`browser`,`nodejs`],fn:e=>{let t=``,n=``,r=e.full||!1,i={alt:e.alt,src:e.thumbnail,width:e.size.width,height:e.size.height},a={id:`image-${e.id}`},o={href:r,rel:`thumbnail`};return e.classes&&(e.classes.image&&(i.class=e.classes.image.join(` `)),e.classes.figure&&(a.class=e.classes.figure.join(` `)),e.classes.link&&(o.class=e.classes.link.join(` `))),t+=`<figure ${x(a)}>\n`,n+=`<img ${x(i)}>\n`,r?t+=`<a ${x(o)}>\n${n}</a>\n`:t+=n,e.caption&&(t+=`<figcaption>${e.caption}</figcaption>\n`),t+=`</figure>`,t}}],fe=[{name:`gist`,category:`code`,compatibility:[`browser`,`nodejs`],fn:e=>b(`script`,{src:`https://gist.github.com/${e}.js`})},{name:`jsfiddle`,category:`code`,compatibility:[`browser`,`nodejs`],fn:e=>{if(!e?.id)throw Error("jsfiddle helper expects an `id`");let{id:t,width:n=`100%`,height:r=`300`,skin:i=`/presentation/`,tabs:a=`result,js,html,css`,allowfullscreen:o=`allowfullscreen`,frameborder:s=`0`}=e;return b(`iframe`,{width:n,height:r,src:`http://jsfiddle.net/${t}/embedded/${a}${i}`,allowfullscreen:o,frameborder:s})}}],pe=[{name:`isEmpty`,category:`collection`,compatibility:[`browser`,`nodejs`],fn:e=>e==null?!0:Array.isArray(e)?e.length===0:typeof e==`object`&&Object.keys(e).length===0},{name:`iterate`,category:`collection`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{if(Array.isArray(e)){let n=``;for(let r=0;r<e.length;r++)n+=t(e[r],r);return n}if(e&&typeof e==`object`){let n=``;for(let r of Object.keys(e))n+=t(e[r],r);return n}return n?n():``}}],me=(...e)=>e.every(Boolean),he=(e,t,n)=>{switch(t){case`==`:return e==n;case`===`:return e===n;case`!=`:return e!=n;case`!==`:return e!==n;case`<`:return e<n;case`>`:return e>n;case`<=`:return e<=n;case`>=`:return e>=n;case`typeof`:return typeof e===n;default:throw Error(`helper {{compare}}: invalid operator: '${t}'`)}},ge=(e,t,n=0)=>e==null?!1:typeof e==`string`||Array.isArray(e)?e.indexOf(t,n)>-1:typeof e==`object`&&t in e,_e=(...e)=>{for(let t of e)if(t!=null)return t;return``},ve=(e,t)=>e===t,ye=(e,t)=>e>t,be=(e,t)=>e>=t,xe=(e,t)=>e==null||t==null?!1:Array.isArray(e)||typeof e==`string`?e.indexOf(t)>-1:typeof e==`object`&&t in e,S=(e,t)=>{if(!e)return!0;let n=Array.isArray(t)?t:t==null?[`0`,`false`,`nada`,`nil`,`nay`,`nah`,`negative`,`no`,`none`,`nope`,`nul`,`null`,`nix`,`nyet`,`uh-uh`,`veto`,`zero`]:[t],r=typeof e==`string`?e.toLowerCase():null;for(let t of n)if(t===e||r!=null&&t===r)return!0;return!1},Se=[{name:`and`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:me},{name:`compare`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:he},{name:`contains`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:ge},{name:`default`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:_e},{name:`eq`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:ve},{name:`gt`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:ye},{name:`gte`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:be},{name:`has`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:xe},{name:`isFalsey`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:e=>S(e)},{name:`isTruthy`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:e=>!S(e)},{name:`ifEven`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:e=>typeof e==`number`&&e%2==0},{name:`ifNth`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>typeof e==`number`&&typeof t==`number`&&t%e===0},{name:`ifOdd`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:e=>typeof e==`number`&&Math.abs(e%2)===1},{name:`is`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e==t},{name:`isnt`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e!=t},{name:`lt`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e<t},{name:`lte`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e<=t},{name:`neither`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>!e&&!t},{name:`not`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:e=>!e},{name:`or`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(...e)=>e.some(Boolean)},{name:`unlessEq`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e!==t},{name:`unlessGt`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e<=t},{name:`unlessLt`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e>=t},{name:`unlessGteq`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e<t},{name:`unlessLteq`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e>t}];d.default.extend(p.default),d.default.extend(f.default),d.default.extend(h.default),d.default.extend(m.default);const C=e=>{if(!e)return(0,d.default)();if(typeof e==`string`){let t=(0,u.parseDate)(e);return t?(0,d.default)(t):(0,d.default)(e)}return(0,d.default)(e)},Ce=()=>new Date().getFullYear().toString(),w=e=>e.replace(/yyyy/g,`YYYY`).replace(/yy/g,`YY`).replace(/dd/g,`DD`).replace(/mm/g,`MM`).replace(/hh/g,`HH`),T=(e,t)=>{let n=t||`YYYY-MM-DD`,r=C(e);if(!r.isValid())throw Error(`Unable to parse date: ${e}`);let i=w(n);return r.format(i)},we=()=>Date.now().toString(),Te=e=>{let t=w(e||`YYYY-MM-DD HH:mm:ss`);return(0,d.default)().format(t)},E=e=>{let t=C(e);if(!t.isValid())throw Error(`Unable to parse date: ${e}`);return t.fromNow()},Ee=[{name:`year`,category:`date`,compatibility:[`browser`,`nodejs`],fn:Ce},{name:`date`,category:`date`,compatibility:[`browser`,`nodejs`],fn:T},{name:`moment`,category:`date`,compatibility:[`browser`,`nodejs`],fn:T},{name:`timestamp`,category:`date`,compatibility:[`browser`,`nodejs`],fn:we},{name:`now`,category:`date`,compatibility:[`browser`,`nodejs`],fn:Te},{name:`fromNow`,category:`date`,compatibility:[`browser`,`nodejs`],fn:E},{name:`toNow`,category:`date`,compatibility:[`browser`,`nodejs`],fn:e=>{let t=C(e);if(!t.isValid())throw Error(`Unable to parse date: ${e}`);return t.toNow()}},{name:`ago`,category:`date`,compatibility:[`browser`,`nodejs`],fn:e=>E(e)},{name:`dateAdd`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=C(e);if(!r.isValid())throw Error(`Unable to parse date: ${e}`);return r.add(t,n).format(`YYYY-MM-DD HH:mm:ss`)}},{name:`dateSubtract`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=C(e);if(!r.isValid())throw Error(`Unable to parse date: ${e}`);return r.subtract(t,n).format(`YYYY-MM-DD HH:mm:ss`)}},{name:`startOf`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=C(e);if(!n.isValid())throw Error(`Unable to parse date: ${e}`);return n.startOf(t).format(`YYYY-MM-DD HH:mm:ss`)}},{name:`endOf`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=C(e);if(!n.isValid())throw Error(`Unable to parse date: ${e}`);return n.endOf(t).format(`YYYY-MM-DD HH:mm:ss`)}},{name:`isBefore`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=C(e),r=C(t);if(!n.isValid()||!r.isValid())throw Error(`Unable to parse dates: ${e}, ${t}`);return n.isBefore(r)}},{name:`isAfter`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=C(e),r=C(t);if(!n.isValid()||!r.isValid())throw Error(`Unable to parse dates: ${e}, ${t}`);return n.isAfter(r)}},{name:`isSame`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=C(e),i=C(t);if(!r.isValid()||!i.isValid())throw Error(`Unable to parse dates: ${e}, ${t}`);return r.isSame(i,n)}},{name:`isBetween`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=C(e),i=C(t),a=C(n);if(!r.isValid()||!i.isValid()||!a.isValid())throw Error(`Unable to parse dates: ${e}, ${t}, ${n}`);return r.isBetween(i,a,null,`[]`)}},{name:`diff`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=C(e),i=C(t);if(!r.isValid()||!i.isValid())throw Error(`Unable to parse dates: ${e}, ${t}`);return r.diff(i,n)}},{name:`toISOString`,category:`date`,compatibility:[`browser`,`nodejs`],fn:e=>{let t=C(e);if(!t.isValid())throw Error(`Unable to parse date: ${e}`);return t.toISOString()}},{name:`dateTimezone`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=w(n||`YYYY-MM-DD HH:mm:ss`),i=C(e);if(!i.isValid())throw Error(`Unable to parse date: ${e}`);return i.tz(t).format(r)}},{name:`dateLocale`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=w(n||`YYYY-MM-DD HH:mm:ss`),i=C(e);if(!i.isValid())throw Error(`Unable to parse date: ${e}`);return i.locale(t).format(r)}}],D=(e,t)=>{if(!e||typeof e!=`object`)return;let n=Array.isArray(t)?t:t.split(`.`),r=e;for(let e of n){if(typeof r!=`object`||!r)return;r=r[e]}return r},O=(e,t)=>{if(!e||typeof e!=`object`)return;let n=Array.isArray(t)?t:t.split(`.`);if(n.length===0)return;let r=e;for(let e=0;e<n.length-1;e++){if(typeof r!=`object`||!r)return;r=r[n[e]]}let i=n[n.length-1];if(!(typeof r!=`object`||!r||!(i in r)))return{[i]:r[i]}},k=(e,t,n)=>{let r={};return e&&typeof e==`object`&&e.options&&Object.assign(r,e.options),t&&typeof t==`object`&&(`hash`in t?Object.assign(r,t.hash):Object.assign(r,t)),n&&typeof n==`object`&&(`hash`in n?Object.assign(r,n.hash):Object.assign(r,n)),r},De=[{name:`i18n`,category:`i18n`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){if(t&&typeof t==`object`&&`hash`in t&&n===void 0&&(n=t,t={}),typeof e!=`string`)throw Error(`{{i18n}} helper expected "key" to be a string`);let r={...this,...t,...n?.hash??{}},i=r.language||r.lang;if(typeof i!=`string`)throw TypeError(`{{i18n}} helper expected "language" to be a string`);let a=r[i];if(a===void 0)throw Error(`{{i18n}} helper cannot find language "${i}"`);let o=D(a,e);if(o===void 0)throw Error(`{{i18n}} helper cannot find property "`+String(e)+`" for language "`+i+`"`);return String(o)}}],Oe=[{name:`inflect`,category:`inflection`,compatibility:[`browser`,`nodejs`],fn:(e,t,n,r)=>{let i=e>1||e===0?n:t;return r?`${e} ${i}`:i}},{name:`ordinalize`,category:`inflection`,compatibility:[`browser`,`nodejs`],fn:e=>{let t=Math.abs(Math.round(Number(e))),n=String(e),r=t%100;if([11,12,13].includes(r))return`${n}th`;switch(t%10){case 1:return`${n}st`;case 2:return`${n}nd`;case 3:return`${n}rd`;default:return`${n}th`}}}],A=(e,t,n)=>{let r=typeof t==`string`?t.split(/, */):t;return(0,g.default)(typeof e==`string`?[e]:e,r,n)},ke=[{name:`match`,category:`match`,compatibility:[`browser`,`nodejs`],fn:A},{name:`isMatch`,category:`match`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>g.default.isMatch(e,t,n)},{name:`mm`,category:`match`,compatibility:[`browser`,`nodejs`],fn:(...e)=>(console.log(`the {{mm}} helper is depcrecated and will be removed`),console.log(`in handlebars-helpers v1.0.0, please use the {{match}}`),console.log(`helper instead.`),A(...e))}],j=e=>typeof e==`number`&&!Number.isNaN(e)||typeof e==`string`&&e.trim()!==``&&!Number.isNaN(Number(e)),M=(e,t=`expected a number`)=>{if(j(e))return Number(e);throw TypeError(t)},Ae=e=>{let t=M(e);return Math.abs(t)},je=(e,t)=>j(e)&&j(t)?Number(e)+Number(t):``,Me=(...e)=>{let t=e.flat().map(e=>Number(e));return P(t)/t.length},Ne=e=>{let t=M(e);return Math.ceil(t)},Pe=(e,t)=>M(e,`expected the first argument to be a number`)/M(t,`expected the second argument to be a number`),Fe=e=>{let t=M(e);return Math.floor(t)},Ie=(e,t)=>M(e,`expected the first argument to be a number`)-M(t,`expected the second argument to be a number`),Le=(e,t)=>M(e,`expected the first argument to be a number`)%M(t,`expected the second argument to be a number`),N=(e,t)=>M(e,`expected the first argument to be a number`)*M(t,`expected the second argument to be a number`),Re=(e,t)=>M(e,`expected the first argument to be a number`)+M(t,`expected the second argument to be a number`),ze=(e,t)=>{let n=M(e,`expected minimum to be a number`),r=M(t,`expected maximum to be a number`);return n+Math.floor(Math.random()*(r-n+1))},Be=(e,t)=>e%t,Ve=e=>{let t=M(e);return Math.round(t)},He=(e,t)=>M(e,`expected the first argument to be a number`)-M(t,`expected the second argument to be a number`),P=(...e)=>{let t=e.flat(),n=0;for(let e of t)j(e)&&(n+=Number(e));return n},Ue=[{name:`abs`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Ae},{name:`add`,category:`math`,compatibility:[`browser`,`nodejs`],fn:je},{name:`avg`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Me},{name:`ceil`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Ne},{name:`divide`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Pe},{name:`floor`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Fe},{name:`minus`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Ie},{name:`modulo`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Le},{name:`multiply`,category:`math`,compatibility:[`browser`,`nodejs`],fn:N},{name:`plus`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Re},{name:`random`,category:`math`,compatibility:[`browser`,`nodejs`],fn:ze},{name:`remainder`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Be},{name:`round`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Ve},{name:`subtract`,category:`math`,compatibility:[`browser`,`nodejs`],fn:He},{name:`sum`,category:`math`,compatibility:[`browser`,`nodejs`],fn:P},{name:`times`,category:`math`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>N(e,t)}],We=new _.default({breaks:!0,html:!0,langPrefix:`lang-`,typographer:!1,xhtmlOut:!1});function Ge(e){return new l.default.SafeString(We.render(e))}const F=function(e,t){return typeof e==`object`&&e&&`fn`in e&&typeof e.fn==`function`?e=e.fn(this):typeof e!=`string`&&(e=``),Ge(e)},Ke=[{name:`md`,category:`markdown`,compatibility:[`browser`,`nodejs`],fn:F},{name:`markdown`,category:`markdown`,compatibility:[`browser`,`nodejs`],fn:F}],I=Object.prototype.toString;function L(e){return typeof e.constructor==`function`?e.constructor.name:null}function qe(e){return L(e)===`GeneratorFunction`}function Je(e){return typeof e.throw==`function`&&typeof e.return==`function`&&typeof e.next==`function`}function Ye(e){return typeof e.toDateString==`function`&&typeof e.getDate==`function`&&typeof e.setDate==`function`}function Xe(e){return typeof e.message==`string`&&e.constructor&&typeof e.constructor.stackTraceLimit==`number`}function Ze(e){return typeof e.flags==`string`&&typeof e.ignoreCase==`boolean`&&typeof e.multiline==`boolean`&&typeof e.global==`boolean`}function Qe(e){if(e===void 0)return`undefined`;if(e===null)return`null`;let t=typeof e;if(t===`boolean`)return`boolean`;if(t===`string`)return`string`;if(t===`number`)return`number`;if(t===`symbol`)return`symbol`;if(t===`bigint`)return`bigint`;if(t===`function`)return qe(e)?`generatorfunction`:`function`;if(Array.isArray(e))return`array`;if(typeof Buffer<`u`&&Buffer.isBuffer?.(e))return`buffer`;if(typeof e.length==`number`&&I.call(e)===`[object Arguments]`)return`arguments`;if(e instanceof Date||Ye(e))return`date`;if(e instanceof Error||Xe(e))return`error`;if(e instanceof RegExp||Ze(e))return`regexp`;switch(L(e)){case`Promise`:return`promise`;case`WeakMap`:return`weakmap`;case`WeakSet`:return`weakset`;case`Map`:return`map`;case`Set`:return`set`;case`Int8Array`:return`int8array`;case`Uint8Array`:return`uint8array`;case`Uint8ClampedArray`:return`uint8clampedarray`;case`Int16Array`:return`int16array`;case`Uint16Array`:return`uint16array`;case`Int32Array`:return`int32array`;case`Uint32Array`:return`uint32array`;case`Float32Array`:return`float32array`;case`Float64Array`:return`float64array`}if(Je(e))return`generator`;let n=I.call(e);switch(n){case`[object Object]`:return`object`;case`[object Map Iterator]`:return`mapiterator`;case`[object Set Iterator]`:return`setiterator`;case`[object String Iterator]`:return`stringiterator`;case`[object Array Iterator]`:return`arrayiterator`}return n.slice(8,-1).toLowerCase().replace(/\s/g,``)}function $e(e,t){typeof e==`object`&&e&&`hash`in e&&(t=e,e=t.data);let n=l.default.createFrame(e||{});return(typeof t!=`object`||!t)&&(t={}),t.hash&&typeof t.hash==`object`&&Object.assign(n,t.hash),t.fn(this,{data:n})}function et(e,t,n){return D(k(this,t,n),e)}function tt(e){return e.fn(this)}const nt=Qe;function rt(e){return e.hash&&Object.keys(e.hash).length?e.fn(e.hash):e.inverse(this)}const it=[{name:`frame`,category:`misc`,compatibility:[`browser`,`nodejs`],fn:$e},{name:`option`,category:`misc`,compatibility:[`browser`,`nodejs`],fn:et},{name:`noop`,category:`misc`,compatibility:[`browser`,`nodejs`],fn:tt},{name:`typeOf`,category:`misc`,compatibility:[`browser`,`nodejs`],fn:nt},{name:`withHash`,category:`misc`,compatibility:[`browser`,`nodejs`],fn:rt}],R=e=>typeof e==`number`&&!Number.isNaN(e),at=[{name:`bytes`,category:`number`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{if(e==null)return`0 B`;let n;if(typeof e==`string`){if(n=e.length,!n)return`0 B`}else if(R(e))n=Number(e);else if(typeof e.length==`number`){if(n=e.length,!n)return`0 B`}else return`0 B`;let r=typeof t==`number`&&!Number.isNaN(t)?t:2,i=[`B`,`kB`,`MB`,`GB`,`TB`,`PB`,`EB`,`ZB`,`YB`],a=10**r;for(let e=i.length-1;e>=0;e--){let t=10**(e*3);if(t<=n+1)return`${Math.round(n*a/t)/a} ${i[e]}`}return`${n}`}},{name:`addCommas`,category:`number`,compatibility:[`browser`,`nodejs`],fn:e=>e.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g,`$1,`)},{name:`phoneNumber`,category:`number`,compatibility:[`browser`,`nodejs`],fn:e=>{let t=e.toString();return`(${t.substr(0,3)}) ${t.substr(3,3)}-${t.substr(6,4)}`}},{name:`toAbbr`,category:`number`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=R(e)?Number(e):0,r=10**(typeof t==`number`&&!Number.isNaN(t)?t:2),i=[`k`,`m`,`b`,`t`,`q`];for(let e=i.length-1;e>=0;e--){let t=10**((e+1)*3);if(t<=n+1)return`${Math.round(n*r/t)/r}${i[e]}`}return`${n}`}},{name:`toExponential`,category:`number`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=R(e)?Number(e):0,r=typeof t==`number`&&!Number.isNaN(t)?t:0;return Number(n).toExponential(r)}},{name:`toFixed`,category:`number`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=R(e)?Number(e):0,r=typeof t==`number`&&!Number.isNaN(t)?t:0;return Number(n).toFixed(r)}},{name:`toFloat`,category:`number`,compatibility:[`browser`,`nodejs`],fn:e=>parseFloat(String(e))},{name:`toInt`,category:`number`,compatibility:[`browser`,`nodejs`],fn:e=>parseInt(String(e),10)},{name:`toPrecision`,category:`number`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=R(e)?Number(e):0,r=typeof t==`number`&&!Number.isNaN(t)?t:1;return Number(n).toPrecision(r)}}],z=e=>!!(e&&typeof e==`object`&&`hash`in e),B=(e,t)=>({...e?.data||{},...t}),ot=(...e)=>{let t=[...e];if(t.length&&z(t[t.length-1])){let e=t.pop();t.push(e.hash)}let n={};for(let e of t)e&&typeof e==`object`&&!Array.isArray(e)&&Object.assign(n,e);return n},st=(e,t)=>{if(!z(t))return t?.inverse?.(e)??``;let n=B(t,t.hash||{}),r=``;for(let i in e)n.key=i,r+=t.fn(e[i],{data:n});return r},ct=(e,t)=>{if(!z(t))return t?.inverse?.(e)??``;let n=B(t,t.hash||{}),r=``;for(let i in e)Object.hasOwn(e,i)&&(n.key=i,r+=t.fn(e[i],{data:n}));return r},lt=(...e)=>{let t=[];for(let n of e)(typeof n==`string`||typeof n==`number`)&&t.push(n);return t.join(`.`)},ut=(e,t,n)=>{let r=D(t,e);return n&&typeof n.fn==`function`?r?n.fn(r):n.inverse?.(t):r},dt=(e,t)=>O(t,e),ft=(e,t)=>Object.hasOwn(e,t),pt=e=>!!e&&typeof e==`object`&&!Array.isArray(e),V=e=>JSON.parse(e),H=(e,t)=>JSON.stringify(e,null,typeof t==`number`?t:0),mt=[{name:`extend`,category:`object`,compatibility:[`browser`,`nodejs`],fn:ot},{name:`forIn`,category:`object`,compatibility:[`browser`,`nodejs`],fn:st},{name:`forOwn`,category:`object`,compatibility:[`browser`,`nodejs`],fn:ct},{name:`toPath`,category:`object`,compatibility:[`browser`,`nodejs`],fn:lt},{name:`get`,category:`object`,compatibility:[`browser`,`nodejs`],fn:ut},{name:`getObject`,category:`object`,compatibility:[`browser`,`nodejs`],fn:dt},{name:`hasOwn`,category:`object`,compatibility:[`browser`,`nodejs`],fn:ft},{name:`isObject`,category:`object`,compatibility:[`browser`,`nodejs`],fn:pt},{name:`JSONparse`,category:`object`,compatibility:[`browser`,`nodejs`],fn:V},{name:`JSONstringify`,category:`object`,compatibility:[`browser`,`nodejs`],fn:H},{name:`merge`,category:`object`,compatibility:[`browser`,`nodejs`],fn:(e,...t)=>{let n=[e,...t];if(n.length&&z(n[n.length-1])){let e=n.pop();n.push(e.hash)}return Object.assign(n[0],...n.slice(1))}},{name:`parseJSON`,category:`object`,compatibility:[`browser`,`nodejs`],fn:V},{name:`pick`,category:`object`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=v(e),i={};for(let e of r)i=Object.assign({},i,O(t,e));return n&&typeof n.fn==`function`?Object.keys(i).length?n.fn(i):n.inverse?.(t):i}},{name:`stringify`,category:`object`,compatibility:[`browser`,`nodejs`],fn:H}],ht=[{name:`toRegex`,category:`regex`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=k({},t,n);return new RegExp(e,r.flags)}},{name:`test`,category:`regex`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{if(typeof e!=`string`)return!1;if(!(t instanceof RegExp))throw TypeError(`expected a regular expression`);return t.test(e)}}],U=e=>e.trim().replace(/^[-_.\W\s]+|[-_.\W\s]+$/g,``),W=(e,t)=>e.length===1?e.toLowerCase():U(e).toLowerCase().replace(/[-_.\W\s]+(\w|$)/g,(e,n)=>t(n)),gt=(e,t)=>typeof e==`string`&&typeof t==`string`?e+t:e,_t=e=>typeof e==`string`?W(e,e=>e.toUpperCase()):``,G=e=>typeof e!=`string`||e.length===0?``:e.charAt(0).toUpperCase()+e.slice(1),vt=e=>typeof e==`string`?e.replace(/\w\S*/g,e=>G(e)):``,yt=(e,t)=>{if(typeof e!=`string`)return``;let n=``;for(let e=0;e<t;e++)n+=` `;return n+e+n},bt=e=>typeof e==`string`?U(e):``,xt=e=>typeof e==`string`?W(e,e=>`-${e}`):``,St=e=>typeof e==`string`?W(e,e=>`.${e}`):``,K=(e,t,n)=>typeof e==`string`?(typeof n!=`string`&&(n=``),e.length>t?e.slice(0,t-n.length)+n:e):``,Ct=(e,t)=>typeof e==`string`?e.length<=t?e:`${K(e,t)}…`:``,wt=e=>typeof e==`string`?e.split(` `).join(`-`):``,Tt=e=>typeof e==`string`,q=e=>typeof e==`object`&&e&&`fn`in e&&typeof e.fn==`function`?String(e.fn()).toLowerCase():typeof e==`string`?e.toLowerCase():``,Et=e=>q(e),Dt=(e,t)=>{if(typeof e!=`string`)return``;let n=t.length,r=e.indexOf(t,0),i=0;for(;r>-1;)i++,r=e.indexOf(t,r+n);return i},Ot=e=>{if(typeof e!=`string`)return``;let t=W(e,e=>e.toUpperCase());return t.charAt(0).toUpperCase()+t.slice(1)},kt=e=>typeof e==`string`?W(e,e=>`/${e}`):``,At=(e,t)=>typeof e==`string`?(typeof t!=`string`&&(t=` `),e.split(t).join(`+`)):``,jt=(e,t)=>typeof e==`string`&&typeof t==`string`?t+e:e,Mt=(e,t)=>typeof e==`string`?typeof t==`string`?e.split(t).join(``):e:``,Nt=(e,t)=>typeof e==`string`?typeof t==`string`?e.replace(t,``):e:``,Pt=(e,t,n)=>typeof e==`string`?typeof t==`string`?(typeof n!=`string`&&(n=``),e.split(t).join(n)):e:``,Ft=(e,t,n)=>typeof e==`string`?typeof t==`string`?(typeof n!=`string`&&(n=``),e.replace(t,n)):e:``,It=e=>typeof e==`string`?e.split(``).reverse().join(``):``,Lt=e=>typeof e==`string`?e.replace(/((?:\S[^.?!]*)[.?!]*)/g,e=>e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()):``,Rt=e=>typeof e==`string`?W(e,e=>`_${e}`):``,J=e=>typeof e==`string`?e.trim():``,zt=e=>typeof e==`string`?e.replace(/^\s+/,``):``,Bt=e=>typeof e==`string`?e.replace(/\s+$/,``):``,Vt=(e,t,n)=>{if(typeof e==`string`&&typeof t==`number`&&Number.isFinite(t)){typeof n!=`string`&&(n=`...`);let r=Math.trunc(t),i=e.split(` `);return r<i.length&&(i=i.slice(0,r)),i.join(` `).trim()+n}return``},Y=e=>typeof e==`object`&&e&&`fn`in e&&typeof e.fn==`function`?String(e.fn()).toUpperCase():typeof e==`string`?e.toUpperCase():``,Ht=[{name:`append`,category:`string`,compatibility:[`browser`,`nodejs`],fn:gt},{name:`camelcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:_t},{name:`capitalize`,category:`string`,compatibility:[`browser`,`nodejs`],fn:G},{name:`capitalizeAll`,category:`string`,compatibility:[`browser`,`nodejs`],fn:vt},{name:`center`,category:`string`,compatibility:[`browser`,`nodejs`],fn:yt},{name:`chop`,category:`string`,compatibility:[`browser`,`nodejs`],fn:bt},{name:`dashcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:xt},{name:`dotcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:St},{name:`ellipsis`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Ct},{name:`hyphenate`,category:`string`,compatibility:[`browser`,`nodejs`],fn:wt},{name:`isString`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Tt},{name:`lowercase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:q},{name:`downcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Et},{name:`occurrences`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Dt},{name:`pascalcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Ot},{name:`pathcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:kt},{name:`plusify`,category:`string`,compatibility:[`browser`,`nodejs`],fn:At},{name:`prepend`,category:`string`,compatibility:[`browser`,`nodejs`],fn:jt},{name:`remove`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Mt},{name:`removeFirst`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Nt},{name:`replace`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Pt},{name:`replaceFirst`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Ft},{name:`reverse`,category:`string`,compatibility:[`browser`,`nodejs`],fn:It},{name:`sentence`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Lt},{name:`snakecase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Rt},{name:`trim`,category:`string`,compatibility:[`browser`,`nodejs`],fn:J},{name:`trimLeft`,category:`string`,compatibility:[`browser`,`nodejs`],fn:zt},{name:`trimRight`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Bt},{name:`truncate`,category:`string`,compatibility:[`browser`,`nodejs`],fn:K},{name:`truncateWords`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Vt},{name:`uppercase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Y},{name:`upcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:e=>Y(e)},{name:`split`,category:`string`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>typeof e==`string`?(typeof t!=`string`&&(t=``),e.split(t)):``},{name:`startsWith`,category:`string`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>typeof e!=`string`||typeof t!=`string`?!1:t.startsWith(e)},{name:`titleize`,category:`string`,compatibility:[`browser`,`nodejs`],fn:e=>typeof e==`string`?e.replace(/\w\S*/g,e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()):``},{name:`raw`,category:`string`,compatibility:[`browser`,`nodejs`],fn:e=>e&&typeof e.fn==`function`?e.fn():``}],X=[`browser`,`nodejs`],Z=e=>{if(typeof e==`string`)return encodeURIComponent(e)},Q=e=>{if(typeof e==`string`)return decodeURIComponent(e)};function Ut(...e){return Z.apply(this,e)}function Wt(...e){return Q.apply(this,e)}const Gt=[{name:`encodeURI`,category:`url`,compatibility:X,fn:Z},{name:`decodeURI`,category:`url`,compatibility:X,fn:Q},{name:`url_encode`,category:`url`,compatibility:X,fn:Ut},{name:`url_decode`,category:`url`,compatibility:X,fn:Wt},{name:`stripQuerystring`,category:`url`,compatibility:X,fn:e=>{if(typeof e==`string`)return e.split(`?`)[0]}}];var $=class extends ee{init(){this.registerHelpers(ae),this.registerHelpers(pe),this.registerHelpers(Ee),this.registerHelpers(fe),this.registerHelpers(de),this.registerHelpers(Se),this.registerHelpers(De),this.registerHelpers(Oe),this.registerHelpers(ke),this.registerHelpers(Ue),this.registerHelpers(Ke),this.registerHelpers(it),this.registerHelpers(at),this.registerHelpers(ht),this.registerHelpers(Ht),this.registerHelpers(Gt),this.registerHelpers(mt)}};const Kt=l.default,qt=l.default.create();function Jt(e){new $().load(e.handlebars??e.hbs)}async function Yt(){let e=new $,t=l.default.create();return Object.keys(l.default.partials).length>0&&t.registerPartial(l.default.partials),e.load(t),typeof process<`u`&&process.env?.NODE_ENV===`development`&&console.warn("createHandlebars will be deprecated in future versions, use `fumanchu` instead."),t}function Xt(e){let t=new $,n=l.default.create();if(e?.handlebars?n=e.handlebars:Object.keys(l.default.partials).length>0&&n.registerPartial(l.default.partials),t.load(n),e?.caching){let t;t=e.caching instanceof c.CacheableMemory?e.caching:typeof e.caching==`object`?new c.CacheableMemory({useClone:!1,...e.caching}):new c.CacheableMemory({useClone:!1});let r=n.compile.bind(n);n.compile=(e,n)=>{let i=n?`${e}\0${JSON.stringify(n)}`:e,a=t.get(i);if(a)return a;let o=r(e,n);return t.set(i,o),o}}return n}exports.CacheableMemory=c.CacheableMemory,exports.Handlebars=Kt,exports.HelperRegistry=$,exports.createHandlebars=Yt,exports.fumanchu=Xt,exports.handlebars=qt,exports.helpers=Jt;
|
package/dist/index.browser.d.cts
CHANGED
package/dist/index.browser.d.mts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { CacheableMemory, CacheableMemoryOptions } from "@cacheable/memory";
|
|
2
|
-
import
|
|
3
|
-
|
|
2
|
+
import Handlebars$1 from "handlebars";
|
|
4
3
|
//#region src/helper-registry-base.d.ts
|
|
5
4
|
type Helper = {
|
|
6
5
|
name: string;
|
|
@@ -73,18 +72,18 @@ declare class HelperRegistryBrowser extends HelperRegistryBase {
|
|
|
73
72
|
* Handlebars library not initiated with helpers
|
|
74
73
|
* @type {Handlebars}
|
|
75
74
|
*/
|
|
76
|
-
declare const Handlebars: typeof
|
|
75
|
+
declare const Handlebars: typeof Handlebars$1;
|
|
77
76
|
/**
|
|
78
77
|
* Fumanchu Handlebars instance not initiated with helpers
|
|
79
78
|
* @type {Handlebars}
|
|
80
79
|
*/
|
|
81
|
-
declare const handlebars: typeof
|
|
80
|
+
declare const handlebars: typeof Handlebars$1;
|
|
82
81
|
/**
|
|
83
82
|
* Fumanchu Handlebars helpers
|
|
84
83
|
*/
|
|
85
84
|
type HelpersOptions = {
|
|
86
|
-
handlebars?: typeof
|
|
87
|
-
hbs?: typeof
|
|
85
|
+
handlebars?: typeof Handlebars$1;
|
|
86
|
+
hbs?: typeof Handlebars$1;
|
|
88
87
|
};
|
|
89
88
|
/**
|
|
90
89
|
* Register Fumanchu browser-safe Handlebars helpers.
|
|
@@ -95,15 +94,15 @@ declare function helpers(options: HelpersOptions): void;
|
|
|
95
94
|
* @returns {Promise<Handlebars>}
|
|
96
95
|
* @deprecated Will be deprecated in future versions, use `fumanchu()` instead.
|
|
97
96
|
*/
|
|
98
|
-
declare function createHandlebars(): Promise<typeof
|
|
97
|
+
declare function createHandlebars(): Promise<typeof Handlebars$1>;
|
|
99
98
|
type FumanchuOptions = {
|
|
100
|
-
handlebars?: typeof
|
|
99
|
+
handlebars?: typeof Handlebars$1;
|
|
101
100
|
filter?: HelperFilter;
|
|
102
101
|
caching?: boolean | CacheableMemory | CacheableMemoryOptions;
|
|
103
102
|
};
|
|
104
103
|
/**
|
|
105
104
|
* Return a Handlebars instance with Fumanchu browser-safe helpers.
|
|
106
105
|
*/
|
|
107
|
-
declare function fumanchu(options?: FumanchuOptions): typeof
|
|
106
|
+
declare function fumanchu(options?: FumanchuOptions): typeof Handlebars$1;
|
|
108
107
|
//#endregion
|
|
109
108
|
export { CacheableMemory, type CacheableMemoryOptions, FumanchuOptions, Handlebars, type HelperFilter, HelperRegistryBrowser as HelperRegistry, HelpersOptions, createHandlebars, fumanchu, handlebars, helpers };
|
package/dist/index.browser.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{CacheableMemory as e}from"@cacheable/memory";import t from"handlebars";import{parseDate as n}from"chrono-node";import r from"dayjs";import i from"dayjs/plugin/isBetween.js";import a from"dayjs/plugin/relativeTime.js";import o from"dayjs/plugin/timezone.js";import s from"dayjs/plugin/utc.js";import c from"micromatch";import l from"
|
|
2
|
-
`)}</ul>`}},{name:`ol`,category:`html`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=
|
|
3
|
-
`)}</ol>`}},{name:`thumbnailImage`,category:`html`,compatibility:[`browser`,`nodejs`],fn:e=>{let t=``,n=``,r=e.full||!1,i={alt:e.alt,src:e.thumbnail,width:e.size.width,height:e.size.height},a={id:`image-${e.id}`},o={href:r,rel:`thumbnail`};return e.classes&&(e.classes.image&&(i.class=e.classes.image.join(` `)),e.classes.figure&&(a.class=e.classes.figure.join(` `)),e.classes.link&&(o.class=e.classes.link.join(` `))),t+=`<figure ${m(a)}>\n`,n+=`<img ${m(i)}>\n`,r?t+=`<a ${m(o)}>\n${n}</a>\n`:t+=n,e.caption&&(t+=`<figcaption>${e.caption}</figcaption>\n`),t+=`</figure>`,t}}],fe=[{name:`gist`,category:`code`,compatibility:[`browser`,`nodejs`],fn:e=>p(`script`,{src:`https://gist.github.com/${e}.js`})},{name:`jsfiddle`,category:`code`,compatibility:[`browser`,`nodejs`],fn:e=>{if(!e?.id)throw Error("jsfiddle helper expects an `id`");let{id:t,width:n=`100%`,height:r=`300`,skin:i=`/presentation/`,tabs:a=`result,js,html,css`,allowfullscreen:o=`allowfullscreen`,frameborder:s=`0`}=e;return p(`iframe`,{width:n,height:r,src:`http://jsfiddle.net/${t}/embedded/${a}${i}`,allowfullscreen:o,frameborder:s})}}],h=[{name:`isEmpty`,category:`collection`,compatibility:[`browser`,`nodejs`],fn:e=>e==null?!0:Array.isArray(e)?e.length===0:typeof e==`object`?Object.keys(e).length===0:!1},{name:`iterate`,category:`collection`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{if(Array.isArray(e)){let n=``;for(let r=0;r<e.length;r++)n+=t(e[r],r);return n}if(e&&typeof e==`object`){let n=``;for(let r of Object.keys(e))n+=t(e[r],r);return n}return n?n():``}}],g=(...e)=>e.every(Boolean),_=(e,t,n)=>{switch(t){case`==`:return e==n;case`===`:return e===n;case`!=`:return e!=n;case`!==`:return e!==n;case`<`:return e<n;case`>`:return e>n;case`<=`:return e<=n;case`>=`:return e>=n;case`typeof`:return typeof e===n;default:throw Error(`helper {{compare}}: invalid operator: '${t}'`)}},v=(e,t,n=0)=>e==null?!1:typeof e==`string`||Array.isArray(e)?e.indexOf(t,n)>-1:typeof e==`object`?t in e:!1,pe=(...e)=>{for(let t of e)if(t!=null)return t;return``},me=(e,t)=>e===t,he=(e,t)=>e>t,ge=(e,t)=>e>=t,_e=(e,t)=>e==null||t==null?!1:Array.isArray(e)||typeof e==`string`?e.indexOf(t)>-1:typeof e==`object`?t in e:!1,y=(e,t)=>{if(!e)return!0;let n=Array.isArray(t)?t:t==null?[`0`,`false`,`nada`,`nil`,`nay`,`nah`,`negative`,`no`,`none`,`nope`,`nul`,`null`,`nix`,`nyet`,`uh-uh`,`veto`,`zero`]:[t],r=typeof e==`string`?e.toLowerCase():null;for(let t of n)if(t===e||r!=null&&t===r)return!0;return!1},ve=[{name:`and`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:g},{name:`compare`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:_},{name:`contains`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:v},{name:`default`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:pe},{name:`eq`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:me},{name:`gt`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:he},{name:`gte`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:ge},{name:`has`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:_e},{name:`isFalsey`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:e=>y(e)},{name:`isTruthy`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:e=>!y(e)},{name:`ifEven`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:e=>typeof e==`number`&&e%2==0},{name:`ifNth`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>typeof e==`number`&&typeof t==`number`&&t%e===0},{name:`ifOdd`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:e=>typeof e==`number`&&Math.abs(e%2)===1},{name:`is`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e==t},{name:`isnt`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e!=t},{name:`lt`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e<t},{name:`lte`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e<=t},{name:`neither`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>!e&&!t},{name:`not`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:e=>!e},{name:`or`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(...e)=>e.some(Boolean)},{name:`unlessEq`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e!==t},{name:`unlessGt`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e<=t},{name:`unlessLt`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e>=t},{name:`unlessGteq`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e<t},{name:`unlessLteq`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e>t}];r.extend(a),r.extend(i),r.extend(s),r.extend(o);const b=e=>e?r(typeof e==`string`&&n(e)||e):r(),ye=()=>new Date().getFullYear().toString(),x=e=>e.replace(/yyyy/g,`YYYY`).replace(/yy/g,`YY`).replace(/dd/g,`DD`).replace(/mm/g,`MM`).replace(/hh/g,`HH`),S=(e,t)=>{let n=t||`YYYY-MM-DD`,r=b(e);if(!r.isValid())throw Error(`Unable to parse date: ${e}`);let i=x(n);return r.format(i)},be=()=>Date.now().toString(),xe=e=>{let t=x(e||`YYYY-MM-DD HH:mm:ss`);return r().format(t)},C=e=>{let t=b(e);if(!t.isValid())throw Error(`Unable to parse date: ${e}`);return t.fromNow()},Se=[{name:`year`,category:`date`,compatibility:[`browser`,`nodejs`],fn:ye},{name:`date`,category:`date`,compatibility:[`browser`,`nodejs`],fn:S},{name:`moment`,category:`date`,compatibility:[`browser`,`nodejs`],fn:S},{name:`timestamp`,category:`date`,compatibility:[`browser`,`nodejs`],fn:be},{name:`now`,category:`date`,compatibility:[`browser`,`nodejs`],fn:xe},{name:`fromNow`,category:`date`,compatibility:[`browser`,`nodejs`],fn:C},{name:`toNow`,category:`date`,compatibility:[`browser`,`nodejs`],fn:e=>{let t=b(e);if(!t.isValid())throw Error(`Unable to parse date: ${e}`);return t.toNow()}},{name:`ago`,category:`date`,compatibility:[`browser`,`nodejs`],fn:e=>C(e)},{name:`dateAdd`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=b(e);if(!r.isValid())throw Error(`Unable to parse date: ${e}`);return r.add(t,n).format(`YYYY-MM-DD HH:mm:ss`)}},{name:`dateSubtract`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=b(e);if(!r.isValid())throw Error(`Unable to parse date: ${e}`);return r.subtract(t,n).format(`YYYY-MM-DD HH:mm:ss`)}},{name:`startOf`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=b(e);if(!n.isValid())throw Error(`Unable to parse date: ${e}`);return n.startOf(t).format(`YYYY-MM-DD HH:mm:ss`)}},{name:`endOf`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=b(e);if(!n.isValid())throw Error(`Unable to parse date: ${e}`);return n.endOf(t).format(`YYYY-MM-DD HH:mm:ss`)}},{name:`isBefore`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=b(e),r=b(t);if(!n.isValid()||!r.isValid())throw Error(`Unable to parse dates: ${e}, ${t}`);return n.isBefore(r)}},{name:`isAfter`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=b(e),r=b(t);if(!n.isValid()||!r.isValid())throw Error(`Unable to parse dates: ${e}, ${t}`);return n.isAfter(r)}},{name:`isSame`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=b(e),i=b(t);if(!r.isValid()||!i.isValid())throw Error(`Unable to parse dates: ${e}, ${t}`);return r.isSame(i,n)}},{name:`isBetween`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=b(e),i=b(t),a=b(n);if(!r.isValid()||!i.isValid()||!a.isValid())throw Error(`Unable to parse dates: ${e}, ${t}, ${n}`);return r.isBetween(i,a,null,`[]`)}},{name:`diff`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=b(e),i=b(t);if(!r.isValid()||!i.isValid())throw Error(`Unable to parse dates: ${e}, ${t}`);return r.diff(i,n)}},{name:`toISOString`,category:`date`,compatibility:[`browser`,`nodejs`],fn:e=>{let t=b(e);if(!t.isValid())throw Error(`Unable to parse date: ${e}`);return t.toISOString()}},{name:`dateTimezone`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=x(n||`YYYY-MM-DD HH:mm:ss`),i=b(e);if(!i.isValid())throw Error(`Unable to parse date: ${e}`);return i.tz(t).format(r)}},{name:`dateLocale`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=x(n||`YYYY-MM-DD HH:mm:ss`),i=b(e);if(!i.isValid())throw Error(`Unable to parse date: ${e}`);return i.locale(t).format(r)}}],w=(e,t)=>{if(!e||typeof e!=`object`)return;let n=Array.isArray(t)?t:t.split(`.`),r=e;for(let e of n){if(typeof r!=`object`||!r)return;r=r[e]}return r},T=(e,t)=>{if(!e||typeof e!=`object`)return;let n=Array.isArray(t)?t:t.split(`.`);if(n.length===0)return;let r=e;for(let e=0;e<n.length-1;e++){if(typeof r!=`object`||!r)return;r=r[n[e]]}let i=n[n.length-1];if(!(typeof r!=`object`||!r||!(i in r)))return{[i]:r[i]}},E=(e,t,n)=>{let r={};return e&&typeof e==`object`&&e.options&&Object.assign(r,e.options),t&&typeof t==`object`&&(`hash`in t?Object.assign(r,t.hash):Object.assign(r,t)),n&&typeof n==`object`&&(`hash`in n?Object.assign(r,n.hash):Object.assign(r,n)),r},D=[{name:`i18n`,category:`i18n`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){if(t&&typeof t==`object`&&`hash`in t&&n===void 0&&(n=t,t={}),typeof e!=`string`)throw Error(`{{i18n}} helper expected "key" to be a string`);let r={...this,...t,...n?.hash??{}},i=r.language||r.lang;if(typeof i!=`string`)throw TypeError(`{{i18n}} helper expected "language" to be a string`);let a=r[i];if(a===void 0)throw Error(`{{i18n}} helper cannot find language "${i}"`);let o=w(a,e);if(o===void 0)throw Error(`{{i18n}} helper cannot find property "`+String(e)+`" for language "`+i+`"`);return String(o)}}],O=[{name:`inflect`,category:`inflection`,compatibility:[`browser`,`nodejs`],fn:(e,t,n,r)=>{let i=e>1||e===0?n:t;return r?`${e} ${i}`:i}},{name:`ordinalize`,category:`inflection`,compatibility:[`browser`,`nodejs`],fn:e=>{let t=Math.abs(Math.round(Number(e))),n=String(e),r=t%100;if([11,12,13].includes(r))return`${n}th`;switch(t%10){case 1:return`${n}st`;case 2:return`${n}nd`;case 3:return`${n}rd`;default:return`${n}th`}}}],k=(e,t,n)=>{let r=typeof t==`string`?t.split(/, */):t;return c(typeof e==`string`?[e]:e,r,n)},A=[{name:`match`,category:`match`,compatibility:[`browser`,`nodejs`],fn:k},{name:`isMatch`,category:`match`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>c.isMatch(e,t,n)},{name:`mm`,category:`match`,compatibility:[`browser`,`nodejs`],fn:(...e)=>(console.log(`the {{mm}} helper is depcrecated and will be removed`),console.log(`in handlebars-helpers v1.0.0, please use the {{match}}`),console.log(`helper instead.`),k(...e))}],j=e=>typeof e==`number`&&!Number.isNaN(e)||typeof e==`string`&&e.trim()!==``&&!Number.isNaN(Number(e)),M=(e,t=`expected a number`)=>{if(j(e))return Number(e);throw TypeError(t)},Ce=e=>{let t=M(e);return Math.abs(t)},we=(e,t)=>j(e)&&j(t)?Number(e)+Number(t):``,Te=(...e)=>{let t=e.flat().map(e=>Number(e));return P(t)/t.length},Ee=e=>{let t=M(e);return Math.ceil(t)},De=(e,t)=>M(e,`expected the first argument to be a number`)/M(t,`expected the second argument to be a number`),Oe=e=>{let t=M(e);return Math.floor(t)},ke=(e,t)=>M(e,`expected the first argument to be a number`)-M(t,`expected the second argument to be a number`),Ae=(e,t)=>M(e,`expected the first argument to be a number`)%M(t,`expected the second argument to be a number`),N=(e,t)=>M(e,`expected the first argument to be a number`)*M(t,`expected the second argument to be a number`),je=(e,t)=>M(e,`expected the first argument to be a number`)+M(t,`expected the second argument to be a number`),Me=(e,t)=>{let n=M(e,`expected minimum to be a number`),r=M(t,`expected maximum to be a number`);return n+Math.floor(Math.random()*(r-n+1))},Ne=(e,t)=>e%t,Pe=e=>{let t=M(e);return Math.round(t)},Fe=(e,t)=>M(e,`expected the first argument to be a number`)-M(t,`expected the second argument to be a number`),P=(...e)=>{let t=e.flat(),n=0;for(let e of t)j(e)&&(n+=Number(e));return n},Ie=[{name:`abs`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Ce},{name:`add`,category:`math`,compatibility:[`browser`,`nodejs`],fn:we},{name:`avg`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Te},{name:`ceil`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Ee},{name:`divide`,category:`math`,compatibility:[`browser`,`nodejs`],fn:De},{name:`floor`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Oe},{name:`minus`,category:`math`,compatibility:[`browser`,`nodejs`],fn:ke},{name:`modulo`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Ae},{name:`multiply`,category:`math`,compatibility:[`browser`,`nodejs`],fn:N},{name:`plus`,category:`math`,compatibility:[`browser`,`nodejs`],fn:je},{name:`random`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Me},{name:`remainder`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Ne},{name:`round`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Pe},{name:`subtract`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Fe},{name:`sum`,category:`math`,compatibility:[`browser`,`nodejs`],fn:P},{name:`times`,category:`math`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>N(e,t)}],Le=new u({breaks:!0,html:!0,langPrefix:`lang-`,typographer:!1,xhtmlOut:!1});function Re(e){return new t.SafeString(l.decode(Le.render(e)))}const F=function(e,t){return typeof e==`object`&&e&&`fn`in e&&typeof e.fn==`function`?e=e.fn(this):typeof e!=`string`&&(e=``),Re(e)},ze=[{name:`md`,category:`markdown`,compatibility:[`browser`,`nodejs`],fn:F},{name:`markdown`,category:`markdown`,compatibility:[`browser`,`nodejs`],fn:F}],I=Object.prototype.toString;function L(e){return typeof e.constructor==`function`?e.constructor.name:null}function Be(e){return L(e)===`GeneratorFunction`}function Ve(e){return typeof e.throw==`function`&&typeof e.return==`function`&&typeof e.next==`function`}function He(e){return typeof e.toDateString==`function`&&typeof e.getDate==`function`&&typeof e.setDate==`function`}function Ue(e){return typeof e.message==`string`&&e.constructor&&typeof e.constructor.stackTraceLimit==`number`}function We(e){return typeof e.flags==`string`&&typeof e.ignoreCase==`boolean`&&typeof e.multiline==`boolean`&&typeof e.global==`boolean`}function Ge(e){if(e===void 0)return`undefined`;if(e===null)return`null`;let t=typeof e;if(t===`boolean`)return`boolean`;if(t===`string`)return`string`;if(t===`number`)return`number`;if(t===`symbol`)return`symbol`;if(t===`bigint`)return`bigint`;if(t===`function`)return Be(e)?`generatorfunction`:`function`;if(Array.isArray(e))return`array`;if(typeof Buffer<`u`&&Buffer.isBuffer?.(e))return`buffer`;if(typeof e.length==`number`&&I.call(e)===`[object Arguments]`)return`arguments`;if(e instanceof Date||He(e))return`date`;if(e instanceof Error||Ue(e))return`error`;if(e instanceof RegExp||We(e))return`regexp`;switch(L(e)){case`Promise`:return`promise`;case`WeakMap`:return`weakmap`;case`WeakSet`:return`weakset`;case`Map`:return`map`;case`Set`:return`set`;case`Int8Array`:return`int8array`;case`Uint8Array`:return`uint8array`;case`Uint8ClampedArray`:return`uint8clampedarray`;case`Int16Array`:return`int16array`;case`Uint16Array`:return`uint16array`;case`Int32Array`:return`int32array`;case`Uint32Array`:return`uint32array`;case`Float32Array`:return`float32array`;case`Float64Array`:return`float64array`}if(Ve(e))return`generator`;let n=I.call(e);switch(n){case`[object Object]`:return`object`;case`[object Map Iterator]`:return`mapiterator`;case`[object Set Iterator]`:return`setiterator`;case`[object String Iterator]`:return`stringiterator`;case`[object Array Iterator]`:return`arrayiterator`}return n.slice(8,-1).toLowerCase().replace(/\s/g,``)}function Ke(e,n){typeof e==`object`&&e&&`hash`in e&&(n=e,e=n.data);let r=t.createFrame(e||{});return(typeof n!=`object`||!n)&&(n={}),n.hash&&typeof n.hash==`object`&&Object.assign(r,n.hash),n.fn(this,{data:r})}function qe(e,t,n){return w(E(this,t,n),e)}function Je(e){return e.fn(this)}const Ye=Ge;function Xe(e){return e.hash&&Object.keys(e.hash).length?e.fn(e.hash):e.inverse(this)}const Ze=[{name:`frame`,category:`misc`,compatibility:[`browser`,`nodejs`],fn:Ke},{name:`option`,category:`misc`,compatibility:[`browser`,`nodejs`],fn:qe},{name:`noop`,category:`misc`,compatibility:[`browser`,`nodejs`],fn:Je},{name:`typeOf`,category:`misc`,compatibility:[`browser`,`nodejs`],fn:Ye},{name:`withHash`,category:`misc`,compatibility:[`browser`,`nodejs`],fn:Xe}],R=e=>typeof e==`number`&&!Number.isNaN(e),Qe=[{name:`bytes`,category:`number`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{if(e==null)return`0 B`;let n;if(typeof e==`string`){if(n=e.length,!n)return`0 B`}else if(R(e))n=Number(e);else if(typeof e.length==`number`){if(n=e.length,!n)return`0 B`}else return`0 B`;let r=typeof t==`number`&&!Number.isNaN(t)?t:2,i=[`B`,`kB`,`MB`,`GB`,`TB`,`PB`,`EB`,`ZB`,`YB`],a=10**r;for(let e=i.length-1;e>=0;e--){let t=10**(e*3);if(t<=n+1)return`${Math.round(n*a/t)/a} ${i[e]}`}return`${n}`}},{name:`addCommas`,category:`number`,compatibility:[`browser`,`nodejs`],fn:e=>e.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g,`$1,`)},{name:`phoneNumber`,category:`number`,compatibility:[`browser`,`nodejs`],fn:e=>{let t=e.toString();return`(${t.substr(0,3)}) ${t.substr(3,3)}-${t.substr(6,4)}`}},{name:`toAbbr`,category:`number`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=R(e)?Number(e):0,r=10**(typeof t==`number`&&!Number.isNaN(t)?t:2),i=[`k`,`m`,`b`,`t`,`q`];for(let e=i.length-1;e>=0;e--){let t=10**((e+1)*3);if(t<=n+1)return`${Math.round(n*r/t)/r}${i[e]}`}return`${n}`}},{name:`toExponential`,category:`number`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=R(e)?Number(e):0,r=typeof t==`number`&&!Number.isNaN(t)?t:0;return Number(n).toExponential(r)}},{name:`toFixed`,category:`number`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=R(e)?Number(e):0,r=typeof t==`number`&&!Number.isNaN(t)?t:0;return Number(n).toFixed(r)}},{name:`toFloat`,category:`number`,compatibility:[`browser`,`nodejs`],fn:e=>parseFloat(String(e))},{name:`toInt`,category:`number`,compatibility:[`browser`,`nodejs`],fn:e=>parseInt(String(e),10)},{name:`toPrecision`,category:`number`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=R(e)?Number(e):0,r=typeof t==`number`&&!Number.isNaN(t)?t:1;return Number(n).toPrecision(r)}}],z=e=>!!(e&&typeof e==`object`&&`hash`in e),B=(e,t)=>({...e?.data||{},...t}),V=(...e)=>{let t=[...e];if(t.length&&z(t[t.length-1])){let e=t.pop();t.push(e.hash)}let n={};for(let e of t)e&&typeof e==`object`&&!Array.isArray(e)&&Object.assign(n,e);return n},$e=(e,t)=>{if(!z(t))return t?.inverse?.(e)??``;let n=B(t,t.hash||{}),r=``;for(let i in e)n.key=i,r+=t.fn(e[i],{data:n});return r},et=(e,t)=>{if(!z(t))return t?.inverse?.(e)??``;let n=B(t,t.hash||{}),r=``;for(let i in e)Object.hasOwn(e,i)&&(n.key=i,r+=t.fn(e[i],{data:n}));return r},tt=(...e)=>{let t=[];for(let n of e)(typeof n==`string`||typeof n==`number`)&&t.push(n);return t.join(`.`)},nt=(e,t,n)=>{let r=w(t,e);return n&&typeof n.fn==`function`?r?n.fn(r):n.inverse?.(t):r},rt=(e,t)=>T(t,e),it=(e,t)=>Object.hasOwn(e,t),at=e=>!!e&&typeof e==`object`&&!Array.isArray(e),H=e=>JSON.parse(e),U=(e,t)=>JSON.stringify(e,null,typeof t==`number`?t:0),ot=[{name:`extend`,category:`object`,compatibility:[`browser`,`nodejs`],fn:V},{name:`forIn`,category:`object`,compatibility:[`browser`,`nodejs`],fn:$e},{name:`forOwn`,category:`object`,compatibility:[`browser`,`nodejs`],fn:et},{name:`toPath`,category:`object`,compatibility:[`browser`,`nodejs`],fn:tt},{name:`get`,category:`object`,compatibility:[`browser`,`nodejs`],fn:nt},{name:`getObject`,category:`object`,compatibility:[`browser`,`nodejs`],fn:rt},{name:`hasOwn`,category:`object`,compatibility:[`browser`,`nodejs`],fn:it},{name:`isObject`,category:`object`,compatibility:[`browser`,`nodejs`],fn:at},{name:`JSONparse`,category:`object`,compatibility:[`browser`,`nodejs`],fn:H},{name:`JSONstringify`,category:`object`,compatibility:[`browser`,`nodejs`],fn:U},{name:`merge`,category:`object`,compatibility:[`browser`,`nodejs`],fn:(e,...t)=>{let n=[e,...t];if(n.length&&z(n[n.length-1])){let e=n.pop();n.push(e.hash)}return Object.assign(n[0],...n.slice(1))}},{name:`parseJSON`,category:`object`,compatibility:[`browser`,`nodejs`],fn:H},{name:`pick`,category:`object`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=d(e),i={};for(let e of r)i=Object.assign({},i,T(t,e));return n&&typeof n.fn==`function`?Object.keys(i).length?n.fn(i):n.inverse?.(t):i}},{name:`stringify`,category:`object`,compatibility:[`browser`,`nodejs`],fn:U}],st=[{name:`toRegex`,category:`regex`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=E({},t,n);return new RegExp(e,r.flags)}},{name:`test`,category:`regex`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{if(typeof e!=`string`)return!1;if(!(t instanceof RegExp))throw TypeError(`expected a regular expression`);return t.test(e)}}],W=e=>e.trim().replace(/^[-_.\W\s]+|[-_.\W\s]+$/g,``),G=(e,t)=>e.length===1?e.toLowerCase():W(e).toLowerCase().replace(/[-_.\W\s]+(\w|$)/g,(e,n)=>t(n)),ct=(e,t)=>typeof e==`string`&&typeof t==`string`?e+t:e,lt=e=>typeof e==`string`?G(e,e=>e.toUpperCase()):``,K=e=>typeof e!=`string`||e.length===0?``:e.charAt(0).toUpperCase()+e.slice(1),ut=e=>typeof e==`string`?e.replace(/\w\S*/g,e=>K(e)):``,dt=(e,t)=>{if(typeof e!=`string`)return``;let n=``;for(let e=0;e<t;e++)n+=` `;return n+e+n},ft=e=>typeof e==`string`?W(e):``,pt=e=>typeof e==`string`?G(e,e=>`-${e}`):``,mt=e=>typeof e==`string`?G(e,e=>`.${e}`):``,q=(e,t,n)=>typeof e==`string`?(typeof n!=`string`&&(n=``),e.length>t?e.slice(0,t-n.length)+n:e):``,ht=(e,t)=>typeof e==`string`?e.length<=t?e:`${q(e,t)}…`:``,gt=e=>typeof e==`string`?e.split(` `).join(`-`):``,_t=e=>typeof e==`string`,J=e=>typeof e==`object`&&e&&`fn`in e&&typeof e.fn==`function`?String(e.fn()).toLowerCase():typeof e==`string`?e.toLowerCase():``,vt=e=>J(e),yt=(e,t)=>{if(typeof e!=`string`)return``;let n=t.length,r=e.indexOf(t,0),i=0;for(;r>-1;)i++,r=e.indexOf(t,r+n);return i},bt=e=>{if(typeof e!=`string`)return``;let t=G(e,e=>e.toUpperCase());return t.charAt(0).toUpperCase()+t.slice(1)},xt=e=>typeof e==`string`?G(e,e=>`/${e}`):``,St=(e,t)=>typeof e==`string`?(typeof t!=`string`&&(t=` `),e.split(t).join(`+`)):``,Ct=(e,t)=>typeof e==`string`&&typeof t==`string`?t+e:e,wt=(e,t)=>typeof e==`string`?typeof t==`string`?e.split(t).join(``):e:``,Tt=(e,t)=>typeof e==`string`?typeof t==`string`?e.replace(t,``):e:``,Et=(e,t,n)=>typeof e==`string`?typeof t==`string`?(typeof n!=`string`&&(n=``),e.split(t).join(n)):e:``,Dt=(e,t,n)=>typeof e==`string`?typeof t==`string`?(typeof n!=`string`&&(n=``),e.replace(t,n)):e:``,Ot=e=>typeof e==`string`?e.split(``).reverse().join(``):``,kt=e=>typeof e==`string`?e.replace(/((?:\S[^.?!]*)[.?!]*)/g,e=>e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()):``,At=e=>typeof e==`string`?G(e,e=>`_${e}`):``,jt=e=>typeof e==`string`?e.trim():``,Mt=e=>typeof e==`string`?e.replace(/^\s+/,``):``,Nt=e=>typeof e==`string`?e.replace(/\s+$/,``):``,Pt=(e,t,n)=>{if(typeof e==`string`&&typeof t==`number`&&Number.isFinite(t)){typeof n!=`string`&&(n=`...`);let r=Math.trunc(t),i=e.split(` `);return r<i.length&&(i=i.slice(0,r)),i.join(` `).trim()+n}return``},Y=e=>typeof e==`object`&&e&&`fn`in e&&typeof e.fn==`function`?String(e.fn()).toUpperCase():typeof e==`string`?e.toUpperCase():``,Ft=[{name:`append`,category:`string`,compatibility:[`browser`,`nodejs`],fn:ct},{name:`camelcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:lt},{name:`capitalize`,category:`string`,compatibility:[`browser`,`nodejs`],fn:K},{name:`capitalizeAll`,category:`string`,compatibility:[`browser`,`nodejs`],fn:ut},{name:`center`,category:`string`,compatibility:[`browser`,`nodejs`],fn:dt},{name:`chop`,category:`string`,compatibility:[`browser`,`nodejs`],fn:ft},{name:`dashcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:pt},{name:`dotcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:mt},{name:`ellipsis`,category:`string`,compatibility:[`browser`,`nodejs`],fn:ht},{name:`hyphenate`,category:`string`,compatibility:[`browser`,`nodejs`],fn:gt},{name:`isString`,category:`string`,compatibility:[`browser`,`nodejs`],fn:_t},{name:`lowercase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:J},{name:`downcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:vt},{name:`occurrences`,category:`string`,compatibility:[`browser`,`nodejs`],fn:yt},{name:`pascalcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:bt},{name:`pathcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:xt},{name:`plusify`,category:`string`,compatibility:[`browser`,`nodejs`],fn:St},{name:`prepend`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Ct},{name:`remove`,category:`string`,compatibility:[`browser`,`nodejs`],fn:wt},{name:`removeFirst`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Tt},{name:`replace`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Et},{name:`replaceFirst`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Dt},{name:`reverse`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Ot},{name:`sentence`,category:`string`,compatibility:[`browser`,`nodejs`],fn:kt},{name:`snakecase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:At},{name:`trim`,category:`string`,compatibility:[`browser`,`nodejs`],fn:jt},{name:`trimLeft`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Mt},{name:`trimRight`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Nt},{name:`truncate`,category:`string`,compatibility:[`browser`,`nodejs`],fn:q},{name:`truncateWords`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Pt},{name:`uppercase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Y},{name:`upcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:e=>Y(e)},{name:`split`,category:`string`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>typeof e==`string`?(typeof t!=`string`&&(t=``),e.split(t)):``},{name:`startsWith`,category:`string`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>typeof e!=`string`||typeof t!=`string`?!1:t.startsWith(e)},{name:`titleize`,category:`string`,compatibility:[`browser`,`nodejs`],fn:e=>typeof e==`string`?e.replace(/\w\S*/g,e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()):``},{name:`raw`,category:`string`,compatibility:[`browser`,`nodejs`],fn:e=>e&&typeof e.fn==`function`?e.fn():``}],X=[`browser`,`nodejs`],Z=e=>{if(typeof e==`string`)return encodeURIComponent(e)},Q=e=>{if(typeof e==`string`)return decodeURIComponent(e)};function It(...e){return Z.apply(this,e)}function Lt(...e){return Q.apply(this,e)}const Rt=[{name:`encodeURI`,category:`url`,compatibility:X,fn:Z},{name:`decodeURI`,category:`url`,compatibility:X,fn:Q},{name:`url_encode`,category:`url`,compatibility:X,fn:It},{name:`url_decode`,category:`url`,compatibility:X,fn:Lt},{name:`stripQuerystring`,category:`url`,compatibility:X,fn:e=>{if(typeof e==`string`)return e.split(`?`)[0]}}];var $=class extends ee{init(){this.registerHelpers(ae),this.registerHelpers(h),this.registerHelpers(Se),this.registerHelpers(fe),this.registerHelpers(de),this.registerHelpers(ve),this.registerHelpers(D),this.registerHelpers(O),this.registerHelpers(A),this.registerHelpers(Ie),this.registerHelpers(ze),this.registerHelpers(Ze),this.registerHelpers(Qe),this.registerHelpers(st),this.registerHelpers(Ft),this.registerHelpers(Rt),this.registerHelpers(ot)}};const zt=t,Bt=t.create();function Vt(e){new $().load(e.handlebars??e.hbs)}async function Ht(){let e=new $,n=t.create();return Object.keys(t.partials).length>0&&n.registerPartial(t.partials),e.load(n),n}function Ut(n){let r=new $,i=t.create();if(n?.handlebars?i=n.handlebars:Object.keys(t.partials).length>0&&i.registerPartial(t.partials),r.load(i),n?.caching){let t;t=n.caching instanceof e?n.caching:typeof n.caching==`object`?new e({useClone:!1,...n.caching}):new e({useClone:!1});let r=i.compile.bind(i);i.compile=(e,n)=>{let i=n?`${e}\0${JSON.stringify(n)}`:e,a=t.get(i);if(a)return a;let o=r(e,n);return t.set(i,o),o}}return i}export{e as CacheableMemory,zt as Handlebars,$ as HelperRegistry,Ht as createHandlebars,Ut as fumanchu,Bt as handlebars,Vt as helpers};
|
|
1
|
+
import{CacheableMemory as e}from"@cacheable/memory";import t from"handlebars";import{parseDate as n}from"chrono-node";import r from"dayjs";import i from"dayjs/plugin/isBetween.js";import a from"dayjs/plugin/relativeTime.js";import o from"dayjs/plugin/timezone.js";import s from"dayjs/plugin/utc.js";import c from"micromatch";import l from"markdown-it";var u=class{_helpers=[];constructor(){this.init()}get helpers(){return this._helpers}init(){}register(e){return this.has(e.name)?!1:(this._helpers.push(e),!0)}registerHelpers(e){for(let t of e)this.register(t)}has(e){return this._helpers.some(t=>t.name===e)}filter(e){let t=this._helpers;if(e.names){let n=e.names;t=t.filter(e=>n.includes(e.name))}if(e.categories){let n=e.categories;t=t.filter(e=>n.includes(e.category))}if(e.compatibility){let n=e.compatibility;t=t.filter(e=>e.compatibility?.some(e=>n.includes(e)))}return t}load(e,t){let n=this._helpers;t&&(n=this.filter(t));for(let t of n)e.registerHelper(t.name,t.fn)}swap(e){for(let t of this._helpers)e.registerHelper(t.name,t.fn)}};const ee=(e,t)=>Array.isArray(e)?e.slice(t):[],te=(e,t)=>Array.isArray(e)?e.slice(0,-t):[],d=e=>e==null?[]:Array.isArray(e)?e:[e],f=(e,t)=>{if(Array.isArray(e))return typeof t==`number`?e.slice(0,t):e[0]},ne=(e,t)=>{if(!Array.isArray(e)&&typeof e!=`string`)return;if(typeof t!=`number`){let t=e;return t[t.length-1]}let n=Math.abs(t);return e.slice(-n)},p=e=>e&&typeof e==`object`&&!Array.isArray(e)?Object.keys(e).length:typeof e==`string`||Array.isArray(e)?e.length:0,re=[{name:`after`,category:`array`,compatibility:[`browser`,`nodejs`],fn:ee},{name:`before`,category:`array`,compatibility:[`browser`,`nodejs`],fn:te},{name:`arrayify`,category:`array`,compatibility:[`browser`,`nodejs`],fn:d},{name:`first`,category:`array`,compatibility:[`browser`,`nodejs`],fn:f},{name:`last`,category:`array`,compatibility:[`browser`,`nodejs`],fn:ne},{name:`length`,category:`array`,compatibility:[`browser`,`nodejs`],fn:p},{name:`join`,category:`array`,compatibility:[`browser`,`nodejs`],fn:(e,t=`, `)=>typeof e==`string`?e:Array.isArray(e)?e.join(t):``},{name:`forEach`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t){if(!Array.isArray(e)||!t||typeof t.fn!=`function`)return t?.inverse?t.inverse(this)??``:``;if(e.length===0)return t.inverse?t.inverse(this)??``:``;let n=e.length,r=t.hash??{},i=t.data?{...t.data}:void 0,a=``;for(let o=0;o<n;o++){let s=e[o],c={index:o,total:n,isFirst:o===0,isLast:o===n-1},l={...i?{...i}:{},...r,...c},u;u=typeof s==`object`&&s?{...s,...r,...c}:{value:s,...r,...c},a+=t.fn(u,{data:l})}return a}},{name:`inArray`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){if(!Array.isArray(e)||!n)return``;let r=e.includes(t);return r&&n.fn?n.fn(this):!r&&n.inverse?n.inverse(this):``}},{name:`isArray`,category:`array`,compatibility:[`browser`,`nodejs`],fn:e=>Array.isArray(e)},{name:`itemAt`,category:`array`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{if(Array.isArray(e))return e[t]}},{name:`equalsLength`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){let r=p(e)===t;return n&&(n.fn||n.inverse)?r&&n.fn?n.fn(this):!r&&n.inverse?n.inverse(this):``:r}},{name:`some`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){if(!Array.isArray(e)||typeof t!=`function`||!n)return n?.inverse?n.inverse(this)??``:``;let r=e.some(t);return r&&n.fn?n.fn(this):!r&&n.inverse?n.inverse(this):``}},{name:`eachIndex`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t){if(!Array.isArray(e)||!t||typeof t.fn!=`function`)return t?.inverse?t.inverse(this)??``:``;if(e.length===0)return t.inverse?t.inverse(this)??``:``;let n=``;for(let r=0;r<e.length;r++){let i={item:e[r],index:r};n+=t.fn(i)}return n}},{name:`withAfter`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){if(!Array.isArray(e)||!n||typeof n.fn!=`function`)return``;let r=e.slice(t+1);if(r.length===0)return n.inverse?n.inverse(this)??``:``;let i=``;for(let e of r)i+=n.fn(e);return i}},{name:`withBefore`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){if(!Array.isArray(e)||!n||typeof n.fn!=`function`)return``;let r=e.slice(0,t);if(r.length===0)return n.inverse?n.inverse(this)??``:``;let i=``;for(let e of r)i+=n.fn(e);return i}},{name:`withFirst`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){let r=1,i=n;if(typeof t==`object`&&t&&!Array.isArray(t)?i=t:typeof t==`number`&&(r=t),!Array.isArray(e)||!i||typeof i.fn!=`function`)return``;if(e.length===0)return i.inverse?i.inverse(this)??``:``;let a=e.slice(0,r),o=``;for(let e of a)o+=i.fn(e);return o}},{name:`withLast`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){let r=1,i=n;if(typeof t==`object`&&t&&!Array.isArray(t)?i=t:typeof t==`number`&&(r=t),!Array.isArray(e)||!i||typeof i.fn!=`function`)return``;if(e.length===0)return i.inverse?i.inverse(this)??``:``;let a=e.slice(-r),o=``;for(let e of a)o+=i.fn(e);return o}},{name:`withGroup`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){if(!Array.isArray(e)||typeof t!=`number`||t<=0||!n||typeof n.fn!=`function`)return``;if(e.length===0)return n.inverse?n.inverse(this)??``:``;let r=``,i=[];for(let n=0;n<e.length;n+=t)i.push(e.slice(n,n+t));for(let e of i)r+=n.fn(e);return r}},{name:`withSort`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){let r,i=n;if(typeof t==`object`&&t&&!Array.isArray(t)?i=t:typeof t==`string`&&(r=t),!Array.isArray(e)||!i||typeof i.fn!=`function`)return``;if(e.length===0)return i.inverse?i.inverse(this)??``:``;let a=[...e];r?a.sort((e,t)=>{let n=e?.[r],i=t?.[r];return n===i?0:n==null?1:i==null?-1:typeof n==`string`&&typeof i==`string`?n.localeCompare(i):n<i?-1:1}):a.sort((e,t)=>e===t?0:e==null?1:t==null?-1:typeof e==`string`&&typeof t==`string`?e.localeCompare(t):e<t?-1:1),(i.hash?.reverse===!0||i.hash?.reverse===`true`)&&a.reverse();let o=``;for(let e of a)o+=i.fn(e);return o}},{name:`filter`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){if(!Array.isArray(e)||!n)return n?.inverse?n.inverse(this)??``:``;let r=e.filter(e=>e===t);return r.length>0&&n.fn?n.fn(this):r.length===0&&n.inverse?n.inverse(this):``}},{name:`map`,category:`array`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>!Array.isArray(e)||typeof t!=`function`?[]:e.map(t)},{name:`pluck`,category:`array`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>!Array.isArray(e)||typeof t!=`string`?[]:e.map(e=>{if(typeof e!=`object`||!e)return;let n=t.split(`.`),r=e;for(let e of n){if(typeof r!=`object`||!r)return;r=r[e]}return r})},{name:`reverse`,category:`array`,compatibility:[`browser`,`nodejs`],fn:e=>{if(typeof e==`string`)return e.split(``).reverse().join(``);if(Array.isArray(e))return[...e].reverse()}},{name:`sort`,category:`array`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{if(!Array.isArray(e))return[];let n=[...e];return typeof t==`function`?n.sort(t):typeof t==`string`?n.sort((e,n)=>{let r=e?.[t],i=n?.[t];return r===i?0:r==null?1:i==null?-1:typeof r==`string`&&typeof i==`string`?r.localeCompare(i):r<i?-1:1}):n.sort((e,t)=>e===t?0:e==null?1:t==null?-1:typeof e==`string`&&typeof t==`string`?e.localeCompare(t):e<t?-1:1),n}},{name:`sortBy`,category:`array`,compatibility:[`browser`,`nodejs`],fn:(e,...t)=>{if(!Array.isArray(e)||t.length===0)return[];let n=[...e];return n.sort((e,n)=>{for(let r of t){let t=e?.[r],i=n?.[r];if(t!==i){if(t==null)return 1;if(i==null)return-1;if(typeof t==`string`&&typeof i==`string`){let e=t.localeCompare(i);if(e!==0)return e}else return t<i?-1:1}}return 0}),n}},{name:`unique`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t){if(!Array.isArray(e))return t?t.inverse?t.inverse(this)??``:``:[];let n=[...new Set(e)];if(!t)return n;if(n.length===0&&t.inverse)return t.inverse(this);if(n.length>0&&t.fn){let e=``;for(let r of n)e+=t.fn(r);return e}return``}}],ie=e=>e!==void 0&&(e===`/`||e===`!`||e===`?`||/[a-zA-Z]/.test(e)),ae=e=>{let t=``,n=!1,r=!1,i=null;for(let a=0;a<e.length;a++){let o=e[a];if(r){o===`-`&&e[a+1]===`-`&&e[a+2]===`>`&&(r=!1,a+=2);continue}if(n){i?o===i&&(i=null):o===`"`||o===`'`?i=o:o===`>`&&(n=!1);continue}if(o===`<`){if(e[a+1]===`!`&&e[a+2]===`-`&&e[a+3]===`-`){r=!0,a+=3;continue}if(ie(e[a+1])){n=!0;continue}}t+=o}return t},oe=new Set([`area`,`base`,`br`,`col`,`command`,`embed`,`hr`,`img`,`input`,`keygen`,`link`,`meta`,`param`,`source`,`track`,`wbr`,`circle`,`ellipse`,`line`,`path`,`polygon`,`polyline`,`rect`,`stop`,`use`]),m=(e,t={},n=``)=>{let r=`<${e}`;for(let[e,n]of Object.entries(t))n===!0?r+=` ${e}`:(typeof n==`string`||typeof n==`number`)&&(r+=` ${e}="${h(String(n))}"`);return oe.has(e.toLowerCase())?`${r}>`:`${r}>${g(n)}</${e}>`},h=e=>e.replace(/&/g,`&`).replace(/"/g,`"`).replace(/</g,`<`).replace(/>/g,`>`),g=e=>e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`),_=(e={})=>Object.keys(e).map(t=>`${t}="${String(e[t]).replace(/^['"]|["']$/g,``)}"`).join(` `),v=[{name:`attr`,category:`html`,compatibility:[`browser`,`nodejs`],fn:e=>{let t=_(e?.hash??{});return t.trim()?` ${t}`:``}},{name:`sanitize`,category:`html`,compatibility:[`browser`,`nodejs`],fn:e=>typeof e==`string`?ae(e).trim():``},{name:`ul`,category:`html`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=_(t.hash??{}),r=e.map(e=>typeof e==`string`?e:t.fn(e));return`${n?`<ul ${n}>`:`<ul>`}${r.map(e=>`<li>${e}</li>`).join(`
|
|
2
|
+
`)}</ul>`}},{name:`ol`,category:`html`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=_(t.hash??{}),r=e.map(e=>typeof e==`string`?e:t.fn(e));return`${n?`<ol ${n}>`:`<ol>`}${r.map(e=>`<li>${e}</li>`).join(`
|
|
3
|
+
`)}</ol>`}},{name:`thumbnailImage`,category:`html`,compatibility:[`browser`,`nodejs`],fn:e=>{let t=``,n=``,r=e.full||!1,i={alt:e.alt,src:e.thumbnail,width:e.size.width,height:e.size.height},a={id:`image-${e.id}`},o={href:r,rel:`thumbnail`};return e.classes&&(e.classes.image&&(i.class=e.classes.image.join(` `)),e.classes.figure&&(a.class=e.classes.figure.join(` `)),e.classes.link&&(o.class=e.classes.link.join(` `))),t+=`<figure ${_(a)}>\n`,n+=`<img ${_(i)}>\n`,r?t+=`<a ${_(o)}>\n${n}</a>\n`:t+=n,e.caption&&(t+=`<figcaption>${e.caption}</figcaption>\n`),t+=`</figure>`,t}}],se=[{name:`gist`,category:`code`,compatibility:[`browser`,`nodejs`],fn:e=>m(`script`,{src:`https://gist.github.com/${e}.js`})},{name:`jsfiddle`,category:`code`,compatibility:[`browser`,`nodejs`],fn:e=>{if(!e?.id)throw Error("jsfiddle helper expects an `id`");let{id:t,width:n=`100%`,height:r=`300`,skin:i=`/presentation/`,tabs:a=`result,js,html,css`,allowfullscreen:o=`allowfullscreen`,frameborder:s=`0`}=e;return m(`iframe`,{width:n,height:r,src:`http://jsfiddle.net/${t}/embedded/${a}${i}`,allowfullscreen:o,frameborder:s})}}],ce=[{name:`isEmpty`,category:`collection`,compatibility:[`browser`,`nodejs`],fn:e=>e==null?!0:Array.isArray(e)?e.length===0:typeof e==`object`&&Object.keys(e).length===0},{name:`iterate`,category:`collection`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{if(Array.isArray(e)){let n=``;for(let r=0;r<e.length;r++)n+=t(e[r],r);return n}if(e&&typeof e==`object`){let n=``;for(let r of Object.keys(e))n+=t(e[r],r);return n}return n?n():``}}],le=(...e)=>e.every(Boolean),ue=(e,t,n)=>{switch(t){case`==`:return e==n;case`===`:return e===n;case`!=`:return e!=n;case`!==`:return e!==n;case`<`:return e<n;case`>`:return e>n;case`<=`:return e<=n;case`>=`:return e>=n;case`typeof`:return typeof e===n;default:throw Error(`helper {{compare}}: invalid operator: '${t}'`)}},de=(e,t,n=0)=>e==null?!1:typeof e==`string`||Array.isArray(e)?e.indexOf(t,n)>-1:typeof e==`object`&&t in e,fe=(...e)=>{for(let t of e)if(t!=null)return t;return``},pe=(e,t)=>e===t,me=(e,t)=>e>t,he=(e,t)=>e>=t,ge=(e,t)=>e==null||t==null?!1:Array.isArray(e)||typeof e==`string`?e.indexOf(t)>-1:typeof e==`object`&&t in e,y=(e,t)=>{if(!e)return!0;let n=Array.isArray(t)?t:t==null?[`0`,`false`,`nada`,`nil`,`nay`,`nah`,`negative`,`no`,`none`,`nope`,`nul`,`null`,`nix`,`nyet`,`uh-uh`,`veto`,`zero`]:[t],r=typeof e==`string`?e.toLowerCase():null;for(let t of n)if(t===e||r!=null&&t===r)return!0;return!1},_e=[{name:`and`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:le},{name:`compare`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:ue},{name:`contains`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:de},{name:`default`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:fe},{name:`eq`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:pe},{name:`gt`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:me},{name:`gte`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:he},{name:`has`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:ge},{name:`isFalsey`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:e=>y(e)},{name:`isTruthy`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:e=>!y(e)},{name:`ifEven`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:e=>typeof e==`number`&&e%2==0},{name:`ifNth`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>typeof e==`number`&&typeof t==`number`&&t%e===0},{name:`ifOdd`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:e=>typeof e==`number`&&Math.abs(e%2)===1},{name:`is`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e==t},{name:`isnt`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e!=t},{name:`lt`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e<t},{name:`lte`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e<=t},{name:`neither`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>!e&&!t},{name:`not`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:e=>!e},{name:`or`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(...e)=>e.some(Boolean)},{name:`unlessEq`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e!==t},{name:`unlessGt`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e<=t},{name:`unlessLt`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e>=t},{name:`unlessGteq`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e<t},{name:`unlessLteq`,category:`comparison`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>e>t}];r.extend(a),r.extend(i),r.extend(s),r.extend(o);const b=e=>e?r(typeof e==`string`&&n(e)||e):r(),ve=()=>new Date().getFullYear().toString(),x=e=>e.replace(/yyyy/g,`YYYY`).replace(/yy/g,`YY`).replace(/dd/g,`DD`).replace(/mm/g,`MM`).replace(/hh/g,`HH`),S=(e,t)=>{let n=t||`YYYY-MM-DD`,r=b(e);if(!r.isValid())throw Error(`Unable to parse date: ${e}`);let i=x(n);return r.format(i)},ye=()=>Date.now().toString(),be=e=>{let t=x(e||`YYYY-MM-DD HH:mm:ss`);return r().format(t)},C=e=>{let t=b(e);if(!t.isValid())throw Error(`Unable to parse date: ${e}`);return t.fromNow()},xe=[{name:`year`,category:`date`,compatibility:[`browser`,`nodejs`],fn:ve},{name:`date`,category:`date`,compatibility:[`browser`,`nodejs`],fn:S},{name:`moment`,category:`date`,compatibility:[`browser`,`nodejs`],fn:S},{name:`timestamp`,category:`date`,compatibility:[`browser`,`nodejs`],fn:ye},{name:`now`,category:`date`,compatibility:[`browser`,`nodejs`],fn:be},{name:`fromNow`,category:`date`,compatibility:[`browser`,`nodejs`],fn:C},{name:`toNow`,category:`date`,compatibility:[`browser`,`nodejs`],fn:e=>{let t=b(e);if(!t.isValid())throw Error(`Unable to parse date: ${e}`);return t.toNow()}},{name:`ago`,category:`date`,compatibility:[`browser`,`nodejs`],fn:e=>C(e)},{name:`dateAdd`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=b(e);if(!r.isValid())throw Error(`Unable to parse date: ${e}`);return r.add(t,n).format(`YYYY-MM-DD HH:mm:ss`)}},{name:`dateSubtract`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=b(e);if(!r.isValid())throw Error(`Unable to parse date: ${e}`);return r.subtract(t,n).format(`YYYY-MM-DD HH:mm:ss`)}},{name:`startOf`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=b(e);if(!n.isValid())throw Error(`Unable to parse date: ${e}`);return n.startOf(t).format(`YYYY-MM-DD HH:mm:ss`)}},{name:`endOf`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=b(e);if(!n.isValid())throw Error(`Unable to parse date: ${e}`);return n.endOf(t).format(`YYYY-MM-DD HH:mm:ss`)}},{name:`isBefore`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=b(e),r=b(t);if(!n.isValid()||!r.isValid())throw Error(`Unable to parse dates: ${e}, ${t}`);return n.isBefore(r)}},{name:`isAfter`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=b(e),r=b(t);if(!n.isValid()||!r.isValid())throw Error(`Unable to parse dates: ${e}, ${t}`);return n.isAfter(r)}},{name:`isSame`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=b(e),i=b(t);if(!r.isValid()||!i.isValid())throw Error(`Unable to parse dates: ${e}, ${t}`);return r.isSame(i,n)}},{name:`isBetween`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=b(e),i=b(t),a=b(n);if(!r.isValid()||!i.isValid()||!a.isValid())throw Error(`Unable to parse dates: ${e}, ${t}, ${n}`);return r.isBetween(i,a,null,`[]`)}},{name:`diff`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=b(e),i=b(t);if(!r.isValid()||!i.isValid())throw Error(`Unable to parse dates: ${e}, ${t}`);return r.diff(i,n)}},{name:`toISOString`,category:`date`,compatibility:[`browser`,`nodejs`],fn:e=>{let t=b(e);if(!t.isValid())throw Error(`Unable to parse date: ${e}`);return t.toISOString()}},{name:`dateTimezone`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=x(n||`YYYY-MM-DD HH:mm:ss`),i=b(e);if(!i.isValid())throw Error(`Unable to parse date: ${e}`);return i.tz(t).format(r)}},{name:`dateLocale`,category:`date`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=x(n||`YYYY-MM-DD HH:mm:ss`),i=b(e);if(!i.isValid())throw Error(`Unable to parse date: ${e}`);return i.locale(t).format(r)}}],w=(e,t)=>{if(!e||typeof e!=`object`)return;let n=Array.isArray(t)?t:t.split(`.`),r=e;for(let e of n){if(typeof r!=`object`||!r)return;r=r[e]}return r},T=(e,t)=>{if(!e||typeof e!=`object`)return;let n=Array.isArray(t)?t:t.split(`.`);if(n.length===0)return;let r=e;for(let e=0;e<n.length-1;e++){if(typeof r!=`object`||!r)return;r=r[n[e]]}let i=n[n.length-1];if(!(typeof r!=`object`||!r||!(i in r)))return{[i]:r[i]}},E=(e,t,n)=>{let r={};return e&&typeof e==`object`&&e.options&&Object.assign(r,e.options),t&&typeof t==`object`&&(`hash`in t?Object.assign(r,t.hash):Object.assign(r,t)),n&&typeof n==`object`&&(`hash`in n?Object.assign(r,n.hash):Object.assign(r,n)),r},D=[{name:`i18n`,category:`i18n`,compatibility:[`browser`,`nodejs`],fn:function(e,t,n){if(t&&typeof t==`object`&&`hash`in t&&n===void 0&&(n=t,t={}),typeof e!=`string`)throw Error(`{{i18n}} helper expected "key" to be a string`);let r={...this,...t,...n?.hash??{}},i=r.language||r.lang;if(typeof i!=`string`)throw TypeError(`{{i18n}} helper expected "language" to be a string`);let a=r[i];if(a===void 0)throw Error(`{{i18n}} helper cannot find language "${i}"`);let o=w(a,e);if(o===void 0)throw Error(`{{i18n}} helper cannot find property "`+String(e)+`" for language "`+i+`"`);return String(o)}}],O=[{name:`inflect`,category:`inflection`,compatibility:[`browser`,`nodejs`],fn:(e,t,n,r)=>{let i=e>1||e===0?n:t;return r?`${e} ${i}`:i}},{name:`ordinalize`,category:`inflection`,compatibility:[`browser`,`nodejs`],fn:e=>{let t=Math.abs(Math.round(Number(e))),n=String(e),r=t%100;if([11,12,13].includes(r))return`${n}th`;switch(t%10){case 1:return`${n}st`;case 2:return`${n}nd`;case 3:return`${n}rd`;default:return`${n}th`}}}],k=(e,t,n)=>{let r=typeof t==`string`?t.split(/, */):t;return c(typeof e==`string`?[e]:e,r,n)},A=[{name:`match`,category:`match`,compatibility:[`browser`,`nodejs`],fn:k},{name:`isMatch`,category:`match`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>c.isMatch(e,t,n)},{name:`mm`,category:`match`,compatibility:[`browser`,`nodejs`],fn:(...e)=>(console.log(`the {{mm}} helper is depcrecated and will be removed`),console.log(`in handlebars-helpers v1.0.0, please use the {{match}}`),console.log(`helper instead.`),k(...e))}],j=e=>typeof e==`number`&&!Number.isNaN(e)||typeof e==`string`&&e.trim()!==``&&!Number.isNaN(Number(e)),M=(e,t=`expected a number`)=>{if(j(e))return Number(e);throw TypeError(t)},Se=e=>{let t=M(e);return Math.abs(t)},Ce=(e,t)=>j(e)&&j(t)?Number(e)+Number(t):``,we=(...e)=>{let t=e.flat().map(e=>Number(e));return P(t)/t.length},Te=e=>{let t=M(e);return Math.ceil(t)},Ee=(e,t)=>M(e,`expected the first argument to be a number`)/M(t,`expected the second argument to be a number`),De=e=>{let t=M(e);return Math.floor(t)},Oe=(e,t)=>M(e,`expected the first argument to be a number`)-M(t,`expected the second argument to be a number`),ke=(e,t)=>M(e,`expected the first argument to be a number`)%M(t,`expected the second argument to be a number`),N=(e,t)=>M(e,`expected the first argument to be a number`)*M(t,`expected the second argument to be a number`),Ae=(e,t)=>M(e,`expected the first argument to be a number`)+M(t,`expected the second argument to be a number`),je=(e,t)=>{let n=M(e,`expected minimum to be a number`),r=M(t,`expected maximum to be a number`);return n+Math.floor(Math.random()*(r-n+1))},Me=(e,t)=>e%t,Ne=e=>{let t=M(e);return Math.round(t)},Pe=(e,t)=>M(e,`expected the first argument to be a number`)-M(t,`expected the second argument to be a number`),P=(...e)=>{let t=e.flat(),n=0;for(let e of t)j(e)&&(n+=Number(e));return n},Fe=[{name:`abs`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Se},{name:`add`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Ce},{name:`avg`,category:`math`,compatibility:[`browser`,`nodejs`],fn:we},{name:`ceil`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Te},{name:`divide`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Ee},{name:`floor`,category:`math`,compatibility:[`browser`,`nodejs`],fn:De},{name:`minus`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Oe},{name:`modulo`,category:`math`,compatibility:[`browser`,`nodejs`],fn:ke},{name:`multiply`,category:`math`,compatibility:[`browser`,`nodejs`],fn:N},{name:`plus`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Ae},{name:`random`,category:`math`,compatibility:[`browser`,`nodejs`],fn:je},{name:`remainder`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Me},{name:`round`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Ne},{name:`subtract`,category:`math`,compatibility:[`browser`,`nodejs`],fn:Pe},{name:`sum`,category:`math`,compatibility:[`browser`,`nodejs`],fn:P},{name:`times`,category:`math`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>N(e,t)}],Ie=new l({breaks:!0,html:!0,langPrefix:`lang-`,typographer:!1,xhtmlOut:!1});function Le(e){return new t.SafeString(Ie.render(e))}const F=function(e,t){return typeof e==`object`&&e&&`fn`in e&&typeof e.fn==`function`?e=e.fn(this):typeof e!=`string`&&(e=``),Le(e)},Re=[{name:`md`,category:`markdown`,compatibility:[`browser`,`nodejs`],fn:F},{name:`markdown`,category:`markdown`,compatibility:[`browser`,`nodejs`],fn:F}],I=Object.prototype.toString;function L(e){return typeof e.constructor==`function`?e.constructor.name:null}function ze(e){return L(e)===`GeneratorFunction`}function Be(e){return typeof e.throw==`function`&&typeof e.return==`function`&&typeof e.next==`function`}function Ve(e){return typeof e.toDateString==`function`&&typeof e.getDate==`function`&&typeof e.setDate==`function`}function He(e){return typeof e.message==`string`&&e.constructor&&typeof e.constructor.stackTraceLimit==`number`}function Ue(e){return typeof e.flags==`string`&&typeof e.ignoreCase==`boolean`&&typeof e.multiline==`boolean`&&typeof e.global==`boolean`}function We(e){if(e===void 0)return`undefined`;if(e===null)return`null`;let t=typeof e;if(t===`boolean`)return`boolean`;if(t===`string`)return`string`;if(t===`number`)return`number`;if(t===`symbol`)return`symbol`;if(t===`bigint`)return`bigint`;if(t===`function`)return ze(e)?`generatorfunction`:`function`;if(Array.isArray(e))return`array`;if(typeof Buffer<`u`&&Buffer.isBuffer?.(e))return`buffer`;if(typeof e.length==`number`&&I.call(e)===`[object Arguments]`)return`arguments`;if(e instanceof Date||Ve(e))return`date`;if(e instanceof Error||He(e))return`error`;if(e instanceof RegExp||Ue(e))return`regexp`;switch(L(e)){case`Promise`:return`promise`;case`WeakMap`:return`weakmap`;case`WeakSet`:return`weakset`;case`Map`:return`map`;case`Set`:return`set`;case`Int8Array`:return`int8array`;case`Uint8Array`:return`uint8array`;case`Uint8ClampedArray`:return`uint8clampedarray`;case`Int16Array`:return`int16array`;case`Uint16Array`:return`uint16array`;case`Int32Array`:return`int32array`;case`Uint32Array`:return`uint32array`;case`Float32Array`:return`float32array`;case`Float64Array`:return`float64array`}if(Be(e))return`generator`;let n=I.call(e);switch(n){case`[object Object]`:return`object`;case`[object Map Iterator]`:return`mapiterator`;case`[object Set Iterator]`:return`setiterator`;case`[object String Iterator]`:return`stringiterator`;case`[object Array Iterator]`:return`arrayiterator`}return n.slice(8,-1).toLowerCase().replace(/\s/g,``)}function Ge(e,n){typeof e==`object`&&e&&`hash`in e&&(n=e,e=n.data);let r=t.createFrame(e||{});return(typeof n!=`object`||!n)&&(n={}),n.hash&&typeof n.hash==`object`&&Object.assign(r,n.hash),n.fn(this,{data:r})}function Ke(e,t,n){return w(E(this,t,n),e)}function qe(e){return e.fn(this)}const Je=We;function Ye(e){return e.hash&&Object.keys(e.hash).length?e.fn(e.hash):e.inverse(this)}const Xe=[{name:`frame`,category:`misc`,compatibility:[`browser`,`nodejs`],fn:Ge},{name:`option`,category:`misc`,compatibility:[`browser`,`nodejs`],fn:Ke},{name:`noop`,category:`misc`,compatibility:[`browser`,`nodejs`],fn:qe},{name:`typeOf`,category:`misc`,compatibility:[`browser`,`nodejs`],fn:Je},{name:`withHash`,category:`misc`,compatibility:[`browser`,`nodejs`],fn:Ye}],R=e=>typeof e==`number`&&!Number.isNaN(e),Ze=[{name:`bytes`,category:`number`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{if(e==null)return`0 B`;let n;if(typeof e==`string`){if(n=e.length,!n)return`0 B`}else if(R(e))n=Number(e);else if(typeof e.length==`number`){if(n=e.length,!n)return`0 B`}else return`0 B`;let r=typeof t==`number`&&!Number.isNaN(t)?t:2,i=[`B`,`kB`,`MB`,`GB`,`TB`,`PB`,`EB`,`ZB`,`YB`],a=10**r;for(let e=i.length-1;e>=0;e--){let t=10**(e*3);if(t<=n+1)return`${Math.round(n*a/t)/a} ${i[e]}`}return`${n}`}},{name:`addCommas`,category:`number`,compatibility:[`browser`,`nodejs`],fn:e=>e.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g,`$1,`)},{name:`phoneNumber`,category:`number`,compatibility:[`browser`,`nodejs`],fn:e=>{let t=e.toString();return`(${t.substr(0,3)}) ${t.substr(3,3)}-${t.substr(6,4)}`}},{name:`toAbbr`,category:`number`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=R(e)?Number(e):0,r=10**(typeof t==`number`&&!Number.isNaN(t)?t:2),i=[`k`,`m`,`b`,`t`,`q`];for(let e=i.length-1;e>=0;e--){let t=10**((e+1)*3);if(t<=n+1)return`${Math.round(n*r/t)/r}${i[e]}`}return`${n}`}},{name:`toExponential`,category:`number`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=R(e)?Number(e):0,r=typeof t==`number`&&!Number.isNaN(t)?t:0;return Number(n).toExponential(r)}},{name:`toFixed`,category:`number`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=R(e)?Number(e):0,r=typeof t==`number`&&!Number.isNaN(t)?t:0;return Number(n).toFixed(r)}},{name:`toFloat`,category:`number`,compatibility:[`browser`,`nodejs`],fn:e=>parseFloat(String(e))},{name:`toInt`,category:`number`,compatibility:[`browser`,`nodejs`],fn:e=>parseInt(String(e),10)},{name:`toPrecision`,category:`number`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{let n=R(e)?Number(e):0,r=typeof t==`number`&&!Number.isNaN(t)?t:1;return Number(n).toPrecision(r)}}],z=e=>!!(e&&typeof e==`object`&&`hash`in e),B=(e,t)=>({...e?.data||{},...t}),Qe=(...e)=>{let t=[...e];if(t.length&&z(t[t.length-1])){let e=t.pop();t.push(e.hash)}let n={};for(let e of t)e&&typeof e==`object`&&!Array.isArray(e)&&Object.assign(n,e);return n},$e=(e,t)=>{if(!z(t))return t?.inverse?.(e)??``;let n=B(t,t.hash||{}),r=``;for(let i in e)n.key=i,r+=t.fn(e[i],{data:n});return r},et=(e,t)=>{if(!z(t))return t?.inverse?.(e)??``;let n=B(t,t.hash||{}),r=``;for(let i in e)Object.hasOwn(e,i)&&(n.key=i,r+=t.fn(e[i],{data:n}));return r},tt=(...e)=>{let t=[];for(let n of e)(typeof n==`string`||typeof n==`number`)&&t.push(n);return t.join(`.`)},nt=(e,t,n)=>{let r=w(t,e);return n&&typeof n.fn==`function`?r?n.fn(r):n.inverse?.(t):r},rt=(e,t)=>T(t,e),it=(e,t)=>Object.hasOwn(e,t),at=e=>!!e&&typeof e==`object`&&!Array.isArray(e),V=e=>JSON.parse(e),H=(e,t)=>JSON.stringify(e,null,typeof t==`number`?t:0),ot=[{name:`extend`,category:`object`,compatibility:[`browser`,`nodejs`],fn:Qe},{name:`forIn`,category:`object`,compatibility:[`browser`,`nodejs`],fn:$e},{name:`forOwn`,category:`object`,compatibility:[`browser`,`nodejs`],fn:et},{name:`toPath`,category:`object`,compatibility:[`browser`,`nodejs`],fn:tt},{name:`get`,category:`object`,compatibility:[`browser`,`nodejs`],fn:nt},{name:`getObject`,category:`object`,compatibility:[`browser`,`nodejs`],fn:rt},{name:`hasOwn`,category:`object`,compatibility:[`browser`,`nodejs`],fn:it},{name:`isObject`,category:`object`,compatibility:[`browser`,`nodejs`],fn:at},{name:`JSONparse`,category:`object`,compatibility:[`browser`,`nodejs`],fn:V},{name:`JSONstringify`,category:`object`,compatibility:[`browser`,`nodejs`],fn:H},{name:`merge`,category:`object`,compatibility:[`browser`,`nodejs`],fn:(e,...t)=>{let n=[e,...t];if(n.length&&z(n[n.length-1])){let e=n.pop();n.push(e.hash)}return Object.assign(n[0],...n.slice(1))}},{name:`parseJSON`,category:`object`,compatibility:[`browser`,`nodejs`],fn:V},{name:`pick`,category:`object`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=d(e),i={};for(let e of r)i=Object.assign({},i,T(t,e));return n&&typeof n.fn==`function`?Object.keys(i).length?n.fn(i):n.inverse?.(t):i}},{name:`stringify`,category:`object`,compatibility:[`browser`,`nodejs`],fn:H}],st=[{name:`toRegex`,category:`regex`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>{let r=E({},t,n);return new RegExp(e,r.flags)}},{name:`test`,category:`regex`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>{if(typeof e!=`string`)return!1;if(!(t instanceof RegExp))throw TypeError(`expected a regular expression`);return t.test(e)}}],U=e=>e.trim().replace(/^[-_.\W\s]+|[-_.\W\s]+$/g,``),W=(e,t)=>e.length===1?e.toLowerCase():U(e).toLowerCase().replace(/[-_.\W\s]+(\w|$)/g,(e,n)=>t(n)),ct=(e,t)=>typeof e==`string`&&typeof t==`string`?e+t:e,lt=e=>typeof e==`string`?W(e,e=>e.toUpperCase()):``,G=e=>typeof e!=`string`||e.length===0?``:e.charAt(0).toUpperCase()+e.slice(1),ut=e=>typeof e==`string`?e.replace(/\w\S*/g,e=>G(e)):``,dt=(e,t)=>{if(typeof e!=`string`)return``;let n=``;for(let e=0;e<t;e++)n+=` `;return n+e+n},ft=e=>typeof e==`string`?U(e):``,pt=e=>typeof e==`string`?W(e,e=>`-${e}`):``,mt=e=>typeof e==`string`?W(e,e=>`.${e}`):``,K=(e,t,n)=>typeof e==`string`?(typeof n!=`string`&&(n=``),e.length>t?e.slice(0,t-n.length)+n:e):``,ht=(e,t)=>typeof e==`string`?e.length<=t?e:`${K(e,t)}…`:``,gt=e=>typeof e==`string`?e.split(` `).join(`-`):``,_t=e=>typeof e==`string`,q=e=>typeof e==`object`&&e&&`fn`in e&&typeof e.fn==`function`?String(e.fn()).toLowerCase():typeof e==`string`?e.toLowerCase():``,vt=e=>q(e),yt=(e,t)=>{if(typeof e!=`string`)return``;let n=t.length,r=e.indexOf(t,0),i=0;for(;r>-1;)i++,r=e.indexOf(t,r+n);return i},bt=e=>{if(typeof e!=`string`)return``;let t=W(e,e=>e.toUpperCase());return t.charAt(0).toUpperCase()+t.slice(1)},xt=e=>typeof e==`string`?W(e,e=>`/${e}`):``,St=(e,t)=>typeof e==`string`?(typeof t!=`string`&&(t=` `),e.split(t).join(`+`)):``,Ct=(e,t)=>typeof e==`string`&&typeof t==`string`?t+e:e,wt=(e,t)=>typeof e==`string`?typeof t==`string`?e.split(t).join(``):e:``,Tt=(e,t)=>typeof e==`string`?typeof t==`string`?e.replace(t,``):e:``,Et=(e,t,n)=>typeof e==`string`?typeof t==`string`?(typeof n!=`string`&&(n=``),e.split(t).join(n)):e:``,Dt=(e,t,n)=>typeof e==`string`?typeof t==`string`?(typeof n!=`string`&&(n=``),e.replace(t,n)):e:``,Ot=e=>typeof e==`string`?e.split(``).reverse().join(``):``,kt=e=>typeof e==`string`?e.replace(/((?:\S[^.?!]*)[.?!]*)/g,e=>e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()):``,At=e=>typeof e==`string`?W(e,e=>`_${e}`):``,jt=e=>typeof e==`string`?e.trim():``,J=e=>typeof e==`string`?e.replace(/^\s+/,``):``,Mt=e=>typeof e==`string`?e.replace(/\s+$/,``):``,Nt=(e,t,n)=>{if(typeof e==`string`&&typeof t==`number`&&Number.isFinite(t)){typeof n!=`string`&&(n=`...`);let r=Math.trunc(t),i=e.split(` `);return r<i.length&&(i=i.slice(0,r)),i.join(` `).trim()+n}return``},Y=e=>typeof e==`object`&&e&&`fn`in e&&typeof e.fn==`function`?String(e.fn()).toUpperCase():typeof e==`string`?e.toUpperCase():``,Pt=[{name:`append`,category:`string`,compatibility:[`browser`,`nodejs`],fn:ct},{name:`camelcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:lt},{name:`capitalize`,category:`string`,compatibility:[`browser`,`nodejs`],fn:G},{name:`capitalizeAll`,category:`string`,compatibility:[`browser`,`nodejs`],fn:ut},{name:`center`,category:`string`,compatibility:[`browser`,`nodejs`],fn:dt},{name:`chop`,category:`string`,compatibility:[`browser`,`nodejs`],fn:ft},{name:`dashcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:pt},{name:`dotcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:mt},{name:`ellipsis`,category:`string`,compatibility:[`browser`,`nodejs`],fn:ht},{name:`hyphenate`,category:`string`,compatibility:[`browser`,`nodejs`],fn:gt},{name:`isString`,category:`string`,compatibility:[`browser`,`nodejs`],fn:_t},{name:`lowercase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:q},{name:`downcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:vt},{name:`occurrences`,category:`string`,compatibility:[`browser`,`nodejs`],fn:yt},{name:`pascalcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:bt},{name:`pathcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:xt},{name:`plusify`,category:`string`,compatibility:[`browser`,`nodejs`],fn:St},{name:`prepend`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Ct},{name:`remove`,category:`string`,compatibility:[`browser`,`nodejs`],fn:wt},{name:`removeFirst`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Tt},{name:`replace`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Et},{name:`replaceFirst`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Dt},{name:`reverse`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Ot},{name:`sentence`,category:`string`,compatibility:[`browser`,`nodejs`],fn:kt},{name:`snakecase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:At},{name:`trim`,category:`string`,compatibility:[`browser`,`nodejs`],fn:jt},{name:`trimLeft`,category:`string`,compatibility:[`browser`,`nodejs`],fn:J},{name:`trimRight`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Mt},{name:`truncate`,category:`string`,compatibility:[`browser`,`nodejs`],fn:K},{name:`truncateWords`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Nt},{name:`uppercase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:Y},{name:`upcase`,category:`string`,compatibility:[`browser`,`nodejs`],fn:e=>Y(e)},{name:`split`,category:`string`,compatibility:[`browser`,`nodejs`],fn:(e,t)=>typeof e==`string`?(typeof t!=`string`&&(t=``),e.split(t)):``},{name:`startsWith`,category:`string`,compatibility:[`browser`,`nodejs`],fn:(e,t,n)=>typeof e!=`string`||typeof t!=`string`?!1:t.startsWith(e)},{name:`titleize`,category:`string`,compatibility:[`browser`,`nodejs`],fn:e=>typeof e==`string`?e.replace(/\w\S*/g,e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()):``},{name:`raw`,category:`string`,compatibility:[`browser`,`nodejs`],fn:e=>e&&typeof e.fn==`function`?e.fn():``}],X=[`browser`,`nodejs`],Z=e=>{if(typeof e==`string`)return encodeURIComponent(e)},Q=e=>{if(typeof e==`string`)return decodeURIComponent(e)};function Ft(...e){return Z.apply(this,e)}function It(...e){return Q.apply(this,e)}const Lt=[{name:`encodeURI`,category:`url`,compatibility:X,fn:Z},{name:`decodeURI`,category:`url`,compatibility:X,fn:Q},{name:`url_encode`,category:`url`,compatibility:X,fn:Ft},{name:`url_decode`,category:`url`,compatibility:X,fn:It},{name:`stripQuerystring`,category:`url`,compatibility:X,fn:e=>{if(typeof e==`string`)return e.split(`?`)[0]}}];var $=class extends u{init(){this.registerHelpers(re),this.registerHelpers(ce),this.registerHelpers(xe),this.registerHelpers(se),this.registerHelpers(v),this.registerHelpers(_e),this.registerHelpers(D),this.registerHelpers(O),this.registerHelpers(A),this.registerHelpers(Fe),this.registerHelpers(Re),this.registerHelpers(Xe),this.registerHelpers(Ze),this.registerHelpers(st),this.registerHelpers(Pt),this.registerHelpers(Lt),this.registerHelpers(ot)}};const Rt=t,zt=t.create();function Bt(e){new $().load(e.handlebars??e.hbs)}async function Vt(){let e=new $,n=t.create();return Object.keys(t.partials).length>0&&n.registerPartial(t.partials),e.load(n),n}function Ht(n){let r=new $,i=t.create();if(n?.handlebars?i=n.handlebars:Object.keys(t.partials).length>0&&i.registerPartial(t.partials),r.load(i),n?.caching){let t;t=n.caching instanceof e?n.caching:typeof n.caching==`object`?new e({useClone:!1,...n.caching}):new e({useClone:!1});let r=i.compile.bind(i);i.compile=(e,n)=>{let i=n?`${e}\0${JSON.stringify(n)}`:e,a=t.get(i);if(a)return a;let o=r(e,n);return t.set(i,o),o}}return i}export{e as CacheableMemory,Rt as Handlebars,$ as HelperRegistry,Vt as createHandlebars,Ht as fumanchu,zt as handlebars,Bt as helpers};
|
package/dist/index.node.cjs
CHANGED
|
@@ -23,30 +23,28 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
23
23
|
//#endregion
|
|
24
24
|
let _cacheable_memory = require("@cacheable/memory");
|
|
25
25
|
let handlebars = require("handlebars");
|
|
26
|
-
handlebars = __toESM(handlebars);
|
|
26
|
+
handlebars = __toESM(handlebars, 1);
|
|
27
27
|
let node_fs = require("node:fs");
|
|
28
|
-
node_fs = __toESM(node_fs);
|
|
28
|
+
node_fs = __toESM(node_fs, 1);
|
|
29
29
|
let node_path = require("node:path");
|
|
30
|
-
node_path = __toESM(node_path);
|
|
30
|
+
node_path = __toESM(node_path, 1);
|
|
31
31
|
let chrono_node = require("chrono-node");
|
|
32
32
|
let dayjs = require("dayjs");
|
|
33
|
-
dayjs = __toESM(dayjs);
|
|
33
|
+
dayjs = __toESM(dayjs, 1);
|
|
34
34
|
let dayjs_plugin_isBetween_js = require("dayjs/plugin/isBetween.js");
|
|
35
|
-
dayjs_plugin_isBetween_js = __toESM(dayjs_plugin_isBetween_js);
|
|
35
|
+
dayjs_plugin_isBetween_js = __toESM(dayjs_plugin_isBetween_js, 1);
|
|
36
36
|
let dayjs_plugin_relativeTime_js = require("dayjs/plugin/relativeTime.js");
|
|
37
|
-
dayjs_plugin_relativeTime_js = __toESM(dayjs_plugin_relativeTime_js);
|
|
37
|
+
dayjs_plugin_relativeTime_js = __toESM(dayjs_plugin_relativeTime_js, 1);
|
|
38
38
|
let dayjs_plugin_timezone_js = require("dayjs/plugin/timezone.js");
|
|
39
|
-
dayjs_plugin_timezone_js = __toESM(dayjs_plugin_timezone_js);
|
|
39
|
+
dayjs_plugin_timezone_js = __toESM(dayjs_plugin_timezone_js, 1);
|
|
40
40
|
let dayjs_plugin_utc_js = require("dayjs/plugin/utc.js");
|
|
41
|
-
dayjs_plugin_utc_js = __toESM(dayjs_plugin_utc_js);
|
|
41
|
+
dayjs_plugin_utc_js = __toESM(dayjs_plugin_utc_js, 1);
|
|
42
42
|
let micromatch = require("micromatch");
|
|
43
|
-
micromatch = __toESM(micromatch);
|
|
43
|
+
micromatch = __toESM(micromatch, 1);
|
|
44
44
|
let node_process = require("node:process");
|
|
45
|
-
node_process = __toESM(node_process);
|
|
46
|
-
let ent = require("ent");
|
|
47
|
-
ent = __toESM(ent);
|
|
45
|
+
node_process = __toESM(node_process, 1);
|
|
48
46
|
let markdown_it = require("markdown-it");
|
|
49
|
-
markdown_it = __toESM(markdown_it);
|
|
47
|
+
markdown_it = __toESM(markdown_it, 1);
|
|
50
48
|
let node_querystring = require("node:querystring");
|
|
51
49
|
let node_url = require("node:url");
|
|
52
50
|
//#region src/helper-registry-base.ts
|
|
@@ -635,7 +633,7 @@ const stripTags = (str) => {
|
|
|
635
633
|
}
|
|
636
634
|
return result;
|
|
637
635
|
};
|
|
638
|
-
const VOID_ELEMENTS = new Set([
|
|
636
|
+
const VOID_ELEMENTS = /* @__PURE__ */ new Set([
|
|
639
637
|
"area",
|
|
640
638
|
"base",
|
|
641
639
|
"br",
|
|
@@ -1933,7 +1931,7 @@ const md = new markdown_it.default({
|
|
|
1933
1931
|
xhtmlOut: false
|
|
1934
1932
|
});
|
|
1935
1933
|
function renderString(input) {
|
|
1936
|
-
return new handlebars.default.SafeString(
|
|
1934
|
+
return new handlebars.default.SafeString(md.render(input));
|
|
1937
1935
|
}
|
|
1938
1936
|
//#endregion
|
|
1939
1937
|
//#region src/helpers/md.node.ts
|
package/dist/index.node.d.cts
CHANGED
package/dist/index.node.d.mts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { CacheableMemory, CacheableMemoryOptions } from "@cacheable/memory";
|
|
2
|
-
import
|
|
3
|
-
|
|
2
|
+
import Handlebars$1 from "handlebars";
|
|
4
3
|
//#region src/helper-registry-base.d.ts
|
|
5
4
|
type Helper = {
|
|
6
5
|
name: string;
|
|
@@ -68,18 +67,18 @@ declare class HelperRegistry extends HelperRegistryBase {
|
|
|
68
67
|
* Handlebars library not initiated with helpers
|
|
69
68
|
* @type {Handlebars}
|
|
70
69
|
*/
|
|
71
|
-
declare const Handlebars: typeof
|
|
70
|
+
declare const Handlebars: typeof Handlebars$1;
|
|
72
71
|
/**
|
|
73
72
|
* Fumanchu Handlebars instance not initiated with helpers
|
|
74
73
|
* @type {Handlebars}
|
|
75
74
|
*/
|
|
76
|
-
declare const handlebars: typeof
|
|
75
|
+
declare const handlebars: typeof Handlebars$1;
|
|
77
76
|
/**
|
|
78
77
|
* Fumanchu Handlebars helpers
|
|
79
78
|
*/
|
|
80
79
|
type HelpersOptions = {
|
|
81
|
-
handlebars?: typeof
|
|
82
|
-
hbs?: typeof
|
|
80
|
+
handlebars?: typeof Handlebars$1;
|
|
81
|
+
hbs?: typeof Handlebars$1;
|
|
83
82
|
};
|
|
84
83
|
/**
|
|
85
84
|
* Register Handlebars helpers
|
|
@@ -91,9 +90,9 @@ declare function helpers(options: HelpersOptions): void;
|
|
|
91
90
|
* @returns {Promise<Handlebars>}
|
|
92
91
|
* @deprecated Will be deprecated in future versions, use `fumanchu()` instead.
|
|
93
92
|
*/
|
|
94
|
-
declare function createHandlebars(): Promise<typeof
|
|
93
|
+
declare function createHandlebars(): Promise<typeof Handlebars$1>;
|
|
95
94
|
type FumanchuOptions = {
|
|
96
|
-
handlebars?: typeof
|
|
95
|
+
handlebars?: typeof Handlebars$1;
|
|
97
96
|
filter?: HelperFilter;
|
|
98
97
|
caching?: boolean | CacheableMemory | CacheableMemoryOptions;
|
|
99
98
|
};
|
|
@@ -102,6 +101,6 @@ type FumanchuOptions = {
|
|
|
102
101
|
* @param {FumanchuOptions} [options] - Options for Fumanchu
|
|
103
102
|
* @returns {Handlebars} Handlebars instance with helpers
|
|
104
103
|
*/
|
|
105
|
-
declare function fumanchu(options?: FumanchuOptions): typeof
|
|
104
|
+
declare function fumanchu(options?: FumanchuOptions): typeof Handlebars$1;
|
|
106
105
|
//#endregion
|
|
107
106
|
export { CacheableMemory, type CacheableMemoryOptions, FumanchuOptions, Handlebars, type HelperFilter, HelperRegistry, HelpersOptions, createHandlebars, fumanchu, handlebars, helpers };
|
package/dist/index.node.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CacheableMemory } from "@cacheable/memory";
|
|
2
|
-
import
|
|
2
|
+
import Handlebars$1 from "handlebars";
|
|
3
3
|
import fs from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { parseDate } from "chrono-node";
|
|
@@ -10,7 +10,6 @@ import timezone from "dayjs/plugin/timezone.js";
|
|
|
10
10
|
import utc from "dayjs/plugin/utc.js";
|
|
11
11
|
import micromatch from "micromatch";
|
|
12
12
|
import process$1 from "node:process";
|
|
13
|
-
import ent from "ent";
|
|
14
13
|
import MarkdownIt from "markdown-it";
|
|
15
14
|
import { escape } from "node:querystring";
|
|
16
15
|
import { format, parse, resolve } from "node:url";
|
|
@@ -600,7 +599,7 @@ const stripTags = (str) => {
|
|
|
600
599
|
}
|
|
601
600
|
return result;
|
|
602
601
|
};
|
|
603
|
-
const VOID_ELEMENTS = new Set([
|
|
602
|
+
const VOID_ELEMENTS = /* @__PURE__ */ new Set([
|
|
604
603
|
"area",
|
|
605
604
|
"base",
|
|
606
605
|
"br",
|
|
@@ -1898,7 +1897,7 @@ const md = new MarkdownIt({
|
|
|
1898
1897
|
xhtmlOut: false
|
|
1899
1898
|
});
|
|
1900
1899
|
function renderString(input) {
|
|
1901
|
-
return new
|
|
1900
|
+
return new Handlebars$1.SafeString(md.render(input));
|
|
1902
1901
|
}
|
|
1903
1902
|
//#endregion
|
|
1904
1903
|
//#region src/helpers/md.node.ts
|
|
@@ -2002,7 +2001,7 @@ function frame(context, options) {
|
|
|
2002
2001
|
options = context;
|
|
2003
2002
|
context = options.data;
|
|
2004
2003
|
}
|
|
2005
|
-
const data =
|
|
2004
|
+
const data = Handlebars$1.createFrame(context || {});
|
|
2006
2005
|
if (typeof options !== "object" || options === null) options = {};
|
|
2007
2006
|
if (options.hash && typeof options.hash === "object") Object.assign(data, options.hash);
|
|
2008
2007
|
return options.fn(this, { data });
|
|
@@ -2960,12 +2959,12 @@ var HelperRegistry = class extends HelperRegistryBase {
|
|
|
2960
2959
|
* Handlebars library not initiated with helpers
|
|
2961
2960
|
* @type {Handlebars}
|
|
2962
2961
|
*/
|
|
2963
|
-
const Handlebars =
|
|
2962
|
+
const Handlebars = Handlebars$1;
|
|
2964
2963
|
/**
|
|
2965
2964
|
* Fumanchu Handlebars instance not initiated with helpers
|
|
2966
2965
|
* @type {Handlebars}
|
|
2967
2966
|
*/
|
|
2968
|
-
const handlebars =
|
|
2967
|
+
const handlebars = Handlebars$1.create();
|
|
2969
2968
|
/**
|
|
2970
2969
|
* Register Handlebars helpers
|
|
2971
2970
|
* @param {HelpersOptions} options - Options for Fumanchu helpers
|
|
@@ -2980,8 +2979,8 @@ function helpers(options) {
|
|
|
2980
2979
|
*/
|
|
2981
2980
|
async function createHandlebars() {
|
|
2982
2981
|
const registry = new HelperRegistry();
|
|
2983
|
-
const handlebars =
|
|
2984
|
-
if (Object.keys(
|
|
2982
|
+
const handlebars = Handlebars$1.create();
|
|
2983
|
+
if (Object.keys(Handlebars$1.partials).length > 0) handlebars.registerPartial(Handlebars$1.partials);
|
|
2985
2984
|
registry.load(handlebars);
|
|
2986
2985
|
/* c8 ignore next -- @preserve */
|
|
2987
2986
|
if (process.env.NODE_ENV === "development") console.warn("createHandlebars will be deprecated in future versions, use `fumanchu` instead.");
|
|
@@ -2994,10 +2993,10 @@ async function createHandlebars() {
|
|
|
2994
2993
|
*/
|
|
2995
2994
|
function fumanchu(options) {
|
|
2996
2995
|
const registry = new HelperRegistry();
|
|
2997
|
-
let handlebars =
|
|
2996
|
+
let handlebars = Handlebars$1.create();
|
|
2998
2997
|
/* c8 ignore next -- @preserve */
|
|
2999
2998
|
if (options?.handlebars) handlebars = options.handlebars;
|
|
3000
|
-
else if (Object.keys(
|
|
2999
|
+
else if (Object.keys(Handlebars$1.partials).length > 0) handlebars.registerPartial(Handlebars$1.partials);
|
|
3001
3000
|
registry.load(handlebars);
|
|
3002
3001
|
if (options?.caching) {
|
|
3003
3002
|
let cache;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jaredwray/fumanchu",
|
|
3
3
|
"description": "Handlebars + Helpers = Fumanchu",
|
|
4
|
-
"version": "4.7.
|
|
4
|
+
"version": "4.7.2",
|
|
5
5
|
"homepage": "https://github.com/jaredwray/fumanchu",
|
|
6
6
|
"author": "Jared Wray (me@jaredwray.com)",
|
|
7
7
|
"type": "module",
|
|
@@ -38,18 +38,6 @@
|
|
|
38
38
|
"./package.json": "./package.json"
|
|
39
39
|
},
|
|
40
40
|
"types": "dist/index.node.d.mts",
|
|
41
|
-
"scripts": {
|
|
42
|
-
"lint": "biome check --write --error-on-warnings",
|
|
43
|
-
"lint:ci": "biome check --error-on-warnings",
|
|
44
|
-
"test": "pnpm lint && vitest run --coverage",
|
|
45
|
-
"test:ci": "pnpm lint:ci && vitest run --coverage",
|
|
46
|
-
"build": "tsdown",
|
|
47
|
-
"prepublishOnly": "pnpm build",
|
|
48
|
-
"clean": "rimraf ./node_modules ./coverage yarn.lock package-lock.json ./dist ./site/dist",
|
|
49
|
-
"website:build": "docula build",
|
|
50
|
-
"website:dev": "docula dev",
|
|
51
|
-
"benchmark": "pnpm tsx benchmark/compile.ts"
|
|
52
|
-
},
|
|
53
41
|
"keywords": [
|
|
54
42
|
"array",
|
|
55
43
|
"assemble",
|
|
@@ -91,32 +79,30 @@
|
|
|
91
79
|
"license"
|
|
92
80
|
],
|
|
93
81
|
"dependencies": {
|
|
94
|
-
"@cacheable/memory": "^2.0
|
|
95
|
-
"chrono-node": "2.
|
|
96
|
-
"dayjs": "^1.11.
|
|
97
|
-
"ent": "^2.2.2",
|
|
82
|
+
"@cacheable/memory": "^2.2.0",
|
|
83
|
+
"chrono-node": "2.10.1",
|
|
84
|
+
"dayjs": "^1.11.21",
|
|
98
85
|
"handlebars": "^4.7.9",
|
|
99
|
-
"markdown-it": "^14.
|
|
86
|
+
"markdown-it": "^14.3.0",
|
|
100
87
|
"micromatch": "^4.0.8"
|
|
101
88
|
},
|
|
102
89
|
"devDependencies": {
|
|
103
|
-
"@biomejs/biome": "^2.
|
|
104
|
-
"@faker-js/faker": "^10.
|
|
90
|
+
"@biomejs/biome": "^2.5.5",
|
|
91
|
+
"@faker-js/faker": "^10.5.0",
|
|
105
92
|
"@monstermann/tinybench-pretty-printer": "^0.3.0",
|
|
106
|
-
"@types/ent": "^2.2.8",
|
|
107
93
|
"@types/markdown-it": "^14.1.2",
|
|
108
94
|
"@types/micromatch": "^4.0.10",
|
|
109
|
-
"@types/node": "^
|
|
110
|
-
"@vitest/coverage-v8": "^4.1.
|
|
111
|
-
"docula": "^
|
|
95
|
+
"@types/node": "^24.13.3",
|
|
96
|
+
"@vitest/coverage-v8": "^4.1.10",
|
|
97
|
+
"docula": "^2.2.0",
|
|
112
98
|
"dotenv": "^17.4.2",
|
|
113
|
-
"happy-dom": "^20.
|
|
99
|
+
"happy-dom": "^20.11.1",
|
|
114
100
|
"rimraf": "^6.1.3",
|
|
115
|
-
"tinybench": "^6.0.
|
|
116
|
-
"tsdown": "^0.
|
|
117
|
-
"tsx": "^4.
|
|
118
|
-
"typescript": "^6.0.
|
|
119
|
-
"vitest": "^4.1.
|
|
101
|
+
"tinybench": "^6.0.2",
|
|
102
|
+
"tsdown": "^0.22.13",
|
|
103
|
+
"tsx": "^4.23.1",
|
|
104
|
+
"typescript": "^6.0.3",
|
|
105
|
+
"vitest": "^4.1.10"
|
|
120
106
|
},
|
|
121
107
|
"contributors": [
|
|
122
108
|
"Jared Wray (https://jaredwray.com)",
|
|
@@ -168,5 +154,16 @@
|
|
|
168
154
|
"Tim Douglas (https://github.com/timdouglas)",
|
|
169
155
|
"(https://github.com/homersimpsons)",
|
|
170
156
|
"Jonathas Ribeiro (https://github.com/jonathas)"
|
|
171
|
-
]
|
|
172
|
-
|
|
157
|
+
],
|
|
158
|
+
"scripts": {
|
|
159
|
+
"lint": "biome check --write --error-on-warnings",
|
|
160
|
+
"lint:ci": "biome check --error-on-warnings",
|
|
161
|
+
"test": "pnpm lint && vitest run --coverage",
|
|
162
|
+
"test:ci": "pnpm lint:ci && vitest run --coverage",
|
|
163
|
+
"build": "tsdown",
|
|
164
|
+
"clean": "rimraf ./node_modules ./coverage yarn.lock package-lock.json ./dist ./site/dist",
|
|
165
|
+
"website:build": "docula build",
|
|
166
|
+
"website:dev": "docula dev",
|
|
167
|
+
"benchmark": "pnpm tsx benchmark/compile.ts"
|
|
168
|
+
}
|
|
169
|
+
}
|