@jaredwray/fumanchu 4.7.2 → 4.7.4

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/README.md CHANGED
@@ -17,8 +17,8 @@ Handlebars + Helpers Together
17
17
  Easily use it as a drop in replacement when using handlebars directly. More than 160 Handlebars helpers in ~20 categories. Helpers can be used with Assemble, Generate, Verb, Ghost, gulp-handlebars, grunt-handlebars, consolidate, or any node.js/Handlebars project. Currently **189 helpers** in **20 categories**! 🎉
18
18
 
19
19
  # Table of Contents
20
- * [Using in Nodejs](#usage-nodejs)
21
- * [Using in the Browser](#usage-in-the-browser)
20
+ * [Node.js Support](https://fumanchu.org/docs/nodejs/)
21
+ * [Browser Support](https://fumanchu.org/docs/browser/)
22
22
  * [Just using Handlebar Helpers](#using-handlebars-helpers)
23
23
  * [Migrating from v2 to v3](https://fumanchu.org/docs/migration/v2-to-v3/)
24
24
  * [Migrating from v3 to v4](https://fumanchu.org/docs/migration/v3-to-v4/)
@@ -1,3 +1,77 @@
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,`&amp;`).replace(/"/g,`&quot;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`),ue=e=>e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`),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(`
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,s)=>(s=n==null?{}:e(i(n)),o(r||!n||!n.__esModule||!a.call(n,`default`)?t(s,`default`,{value:n,enumerable:!0}):s,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)&&(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){
2
+ /* v8 ignore next -- @preserve */
3
+ 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)??``:``;
4
+ /* v8 ignore next -- @preserve */
5
+ 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);
6
+ /* v8 ignore next -- @preserve */
7
+ 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);
8
+ /* v8 ignore next -- @preserve */
9
+ 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``;
10
+ /* v8 ignore next -- @preserve */
11
+ 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``;
12
+ /* v8 ignore next -- @preserve */
13
+ 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``;
14
+ /* v8 ignore next -- @preserve */
15
+ 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``;
16
+ /* v8 ignore next -- @preserve */
17
+ 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];
18
+ /* v8 ignore next -- @preserve */
19
+ return n===i?0:n==null?1:i==null?-1:
20
+ /* v8 ignore next -- @preserve */
21
+ 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){
22
+ /* v8 ignore next -- @preserve */
23
+ if(!Array.isArray(e)||!n)return n?.inverse?n.inverse(this)??``:``;let r=e.filter(e=>e===t);
24
+ /* v8 ignore next -- @preserve */
25
+ return r.length>0&&n.fn?n.fn(this):
26
+ /* v8 ignore next -- @preserve */
27
+ 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){
28
+ /* v8 ignore next -- @preserve */
29
+ 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`?
30
+ /* v8 ignore next -- @preserve */
31
+ n.sort((e,n)=>{let r=e?.[t],i=n?.[t];
32
+ /* v8 ignore next -- @preserve */
33
+ return r===i?0:
34
+ /* v8 ignore next -- @preserve */
35
+ 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);
36
+ /* v8 ignore next -- @preserve */
37
+ if(e!==0)return e}else return t<i?-1:1}}
38
+ /* v8 ignore next -- @preserve */
39
+ return 0}),n}},{name:`unique`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t){if(!Array.isArray(e))
40
+ /* v8 ignore next -- @preserve */
41
+ 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=/* @__PURE__ */ 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,`&amp;`).replace(/"/g,`&quot;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`),ue=e=>e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`),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
42
  `)}</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+=`&nbsp;`;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;
43
+ `)}</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`,t+=r?`<a ${x(o)}>\n${n}</a>\n`: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,c=`http://jsfiddle.net/${t}/embedded/${a}${i}`;return b(`iframe`,{width:n,height:r,src:c,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=()=>(/* @__PURE__ */ 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);
44
+ /* v8 ignore next -- @preserve */
45
+ 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);
46
+ /* v8 ignore next -- @preserve */
47
+ 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);
48
+ /* v8 ignore next -- @preserve */
49
+ 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);
50
+ /* v8 ignore next -- @preserve */
51
+ 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);
52
+ /* v8 ignore next -- @preserve */
53
+ 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);
54
+ /* v8 ignore next -- @preserve */
55
+ 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);
56
+ /* v8 ignore next -- @preserve */
57
+ 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);
58
+ /* v8 ignore next -- @preserve */
59
+ 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);
60
+ /* v8 ignore next -- @preserve */
61
+ 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);
62
+ /* v8 ignore next -- @preserve */
63
+ 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);
64
+ /* v8 ignore next -- @preserve */
65
+ 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);
66
+ /* v8 ignore next -- @preserve */
67
+ 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);
68
+ /* v8 ignore next -- @preserve */
69
+ 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);
70
+ /* v8 ignore next -- @preserve */
71
+ 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);
72
+ /* v8 ignore next -- @preserve */
73
+ 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+=`&nbsp;`;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)){
74
+ /* c8 ignore next -- @preserve */
75
+ 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();
76
+ /* c8 ignore stop */
77
+ 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;
@@ -72,30 +72,30 @@ declare class HelperRegistryBrowser extends HelperRegistryBase {
72
72
  * Handlebars library not initiated with helpers
73
73
  * @type {Handlebars}
74
74
  */
75
- declare const Handlebars: typeof HandlebarsLib;
75
+ export declare const Handlebars: typeof HandlebarsLib;
76
76
  /**
77
77
  * Fumanchu Handlebars instance not initiated with helpers
78
78
  * @type {Handlebars}
79
79
  */
80
- declare const handlebars: typeof HandlebarsLib;
80
+ export declare const handlebars: typeof HandlebarsLib;
81
81
  /**
82
82
  * Fumanchu Handlebars helpers
83
83
  */
84
- type HelpersOptions = {
84
+ export type HelpersOptions = {
85
85
  handlebars?: typeof HandlebarsLib;
86
86
  hbs?: typeof HandlebarsLib;
87
87
  };
88
88
  /**
89
89
  * Register Fumanchu browser-safe Handlebars helpers.
90
90
  */
91
- declare function helpers(options: HelpersOptions): void;
91
+ export declare function helpers(options: HelpersOptions): void;
92
92
  /**
93
93
  * Create a new Handlebars instance with Fumanchu browser-safe helpers.
94
94
  * @returns {Promise<Handlebars>}
95
95
  * @deprecated Will be deprecated in future versions, use `fumanchu()` instead.
96
96
  */
97
- declare function createHandlebars(): Promise<typeof HandlebarsLib>;
98
- type FumanchuOptions = {
97
+ export declare function createHandlebars(): Promise<typeof HandlebarsLib>;
98
+ export type FumanchuOptions = {
99
99
  handlebars?: typeof HandlebarsLib;
100
100
  filter?: HelperFilter;
101
101
  caching?: boolean | CacheableMemory | CacheableMemoryOptions;
@@ -103,6 +103,6 @@ type FumanchuOptions = {
103
103
  /**
104
104
  * Return a Handlebars instance with Fumanchu browser-safe helpers.
105
105
  */
106
- declare function fumanchu(options?: FumanchuOptions): typeof HandlebarsLib;
106
+ export declare function fumanchu(options?: FumanchuOptions): typeof HandlebarsLib;
107
107
  //#endregion
108
- export { CacheableMemory, type CacheableMemoryOptions, FumanchuOptions, Handlebars, type HelperFilter, HelperRegistryBrowser as HelperRegistry, HelpersOptions, createHandlebars, fumanchu, handlebars, helpers };
108
+ export { CacheableMemory, type CacheableMemoryOptions, type HelperFilter, HelperRegistryBrowser as HelperRegistry };
@@ -72,30 +72,30 @@ declare class HelperRegistryBrowser extends HelperRegistryBase {
72
72
  * Handlebars library not initiated with helpers
73
73
  * @type {Handlebars}
74
74
  */
75
- declare const Handlebars: typeof Handlebars$1;
75
+ export declare const Handlebars: typeof Handlebars$1;
76
76
  /**
77
77
  * Fumanchu Handlebars instance not initiated with helpers
78
78
  * @type {Handlebars}
79
79
  */
80
- declare const handlebars: typeof Handlebars$1;
80
+ export declare const handlebars: typeof Handlebars$1;
81
81
  /**
82
82
  * Fumanchu Handlebars helpers
83
83
  */
84
- type HelpersOptions = {
84
+ export type HelpersOptions = {
85
85
  handlebars?: typeof Handlebars$1;
86
86
  hbs?: typeof Handlebars$1;
87
87
  };
88
88
  /**
89
89
  * Register Fumanchu browser-safe Handlebars helpers.
90
90
  */
91
- declare function helpers(options: HelpersOptions): void;
91
+ export declare function helpers(options: HelpersOptions): void;
92
92
  /**
93
93
  * Create a new Handlebars instance with Fumanchu browser-safe helpers.
94
94
  * @returns {Promise<Handlebars>}
95
95
  * @deprecated Will be deprecated in future versions, use `fumanchu()` instead.
96
96
  */
97
- declare function createHandlebars(): Promise<typeof Handlebars$1>;
98
- type FumanchuOptions = {
97
+ export declare function createHandlebars(): Promise<typeof Handlebars$1>;
98
+ export type FumanchuOptions = {
99
99
  handlebars?: typeof Handlebars$1;
100
100
  filter?: HelperFilter;
101
101
  caching?: boolean | CacheableMemory | CacheableMemoryOptions;
@@ -103,6 +103,6 @@ type FumanchuOptions = {
103
103
  /**
104
104
  * Return a Handlebars instance with Fumanchu browser-safe helpers.
105
105
  */
106
- declare function fumanchu(options?: FumanchuOptions): typeof Handlebars$1;
106
+ export declare function fumanchu(options?: FumanchuOptions): typeof Handlebars$1;
107
107
  //#endregion
108
- export { CacheableMemory, type CacheableMemoryOptions, FumanchuOptions, Handlebars, type HelperFilter, HelperRegistryBrowser as HelperRegistry, HelpersOptions, createHandlebars, fumanchu, handlebars, helpers };
108
+ export { CacheableMemory, type CacheableMemoryOptions, type HelperFilter, HelperRegistryBrowser as HelperRegistry };
@@ -1,3 +1,77 @@
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,`&amp;`).replace(/"/g,`&quot;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`),g=e=>e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`),_=(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(`
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)&&(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){
2
+ /* v8 ignore next -- @preserve */
3
+ 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)??``:``;
4
+ /* v8 ignore next -- @preserve */
5
+ 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);
6
+ /* v8 ignore next -- @preserve */
7
+ 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);
8
+ /* v8 ignore next -- @preserve */
9
+ 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``;
10
+ /* v8 ignore next -- @preserve */
11
+ 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``;
12
+ /* v8 ignore next -- @preserve */
13
+ 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``;
14
+ /* v8 ignore next -- @preserve */
15
+ 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``;
16
+ /* v8 ignore next -- @preserve */
17
+ 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];
18
+ /* v8 ignore next -- @preserve */
19
+ return n===i?0:n==null?1:i==null?-1:
20
+ /* v8 ignore next -- @preserve */
21
+ 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){
22
+ /* v8 ignore next -- @preserve */
23
+ if(!Array.isArray(e)||!n)return n?.inverse?n.inverse(this)??``:``;let r=e.filter(e=>e===t);
24
+ /* v8 ignore next -- @preserve */
25
+ return r.length>0&&n.fn?n.fn(this):
26
+ /* v8 ignore next -- @preserve */
27
+ 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){
28
+ /* v8 ignore next -- @preserve */
29
+ 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`?
30
+ /* v8 ignore next -- @preserve */
31
+ n.sort((e,n)=>{let r=e?.[t],i=n?.[t];
32
+ /* v8 ignore next -- @preserve */
33
+ return r===i?0:
34
+ /* v8 ignore next -- @preserve */
35
+ 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);
36
+ /* v8 ignore next -- @preserve */
37
+ if(e!==0)return e}else return t<i?-1:1}}
38
+ /* v8 ignore next -- @preserve */
39
+ return 0}),n}},{name:`unique`,category:`array`,compatibility:[`browser`,`nodejs`],fn:function(e,t){if(!Array.isArray(e))
40
+ /* v8 ignore next -- @preserve */
41
+ 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=/* @__PURE__ */ 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,`&amp;`).replace(/"/g,`&quot;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`),g=e=>e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`),_=(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
42
  `)}</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+=`&nbsp;`;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};
43
+ `)}</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`,t+=r?`<a ${_(o)}>\n${n}</a>\n`: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,c=`http://jsfiddle.net/${t}/embedded/${a}${i}`;return m(`iframe`,{width:n,height:r,src:c,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=>{if(!e)return r();if(typeof e==`string`){let t=n(e);return r(t||e)}return r(e)},ve=()=>(/* @__PURE__ */ 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);
44
+ /* v8 ignore next -- @preserve */
45
+ 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);
46
+ /* v8 ignore next -- @preserve */
47
+ 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);
48
+ /* v8 ignore next -- @preserve */
49
+ 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);
50
+ /* v8 ignore next -- @preserve */
51
+ 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);
52
+ /* v8 ignore next -- @preserve */
53
+ 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);
54
+ /* v8 ignore next -- @preserve */
55
+ 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);
56
+ /* v8 ignore next -- @preserve */
57
+ 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);
58
+ /* v8 ignore next -- @preserve */
59
+ 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);
60
+ /* v8 ignore next -- @preserve */
61
+ 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);
62
+ /* v8 ignore next -- @preserve */
63
+ 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);
64
+ /* v8 ignore next -- @preserve */
65
+ 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);
66
+ /* v8 ignore next -- @preserve */
67
+ 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);
68
+ /* v8 ignore next -- @preserve */
69
+ 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);
70
+ /* v8 ignore next -- @preserve */
71
+ 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);
72
+ /* v8 ignore next -- @preserve */
73
+ 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+=`&nbsp;`;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)){
74
+ /* c8 ignore next -- @preserve */
75
+ 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();
76
+ /* c8 ignore stop */
77
+ 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};
@@ -16,7 +16,7 @@ var __copyProps = (to, from, except, desc) => {
16
16
  }
17
17
  return to;
18
18
  };
19
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, "default") ? __defProp(target, "default", {
20
20
  value: mod,
21
21
  enumerable: true
22
22
  }) : target, mod));
@@ -758,10 +758,11 @@ const gist = (id) => {
758
758
  const jsfiddle = (options) => {
759
759
  if (!options?.id) throw new Error("jsfiddle helper expects an `id`");
760
760
  const { id, width = "100%", height = "300", skin = "/presentation/", tabs = "result,js,html,css", allowfullscreen = "allowfullscreen", frameborder = "0" } = options;
761
+ const src = `http://jsfiddle.net/${id}/embedded/${tabs}${skin}`;
761
762
  return tag("iframe", {
762
763
  width,
763
764
  height,
764
- src: `http://jsfiddle.net/${id}/embedded/${tabs}${skin}`,
765
+ src,
765
766
  allowfullscreen,
766
767
  frameborder
767
768
  });
@@ -1475,10 +1476,14 @@ const getObject = (object, path) => {
1475
1476
  const options = (thisArg, locals, opts) => {
1476
1477
  const result = {};
1477
1478
  if (thisArg && typeof thisArg === "object" && thisArg.options) Object.assign(result, thisArg.options);
1478
- if (locals && typeof locals === "object") if ("hash" in locals) Object.assign(result, locals.hash);
1479
- else Object.assign(result, locals);
1480
- if (opts && typeof opts === "object") if ("hash" in opts) Object.assign(result, opts.hash);
1481
- else Object.assign(result, opts);
1479
+ if (locals && typeof locals === "object") {
1480
+ if ("hash" in locals) Object.assign(result, locals.hash);
1481
+ else Object.assign(result, locals);
1482
+ }
1483
+ if (opts && typeof opts === "object") {
1484
+ if ("hash" in opts) Object.assign(result, opts.hash);
1485
+ else Object.assign(result, opts);
1486
+ }
1482
1487
  return result;
1483
1488
  };
1484
1489
  //#endregion
@@ -58,7 +58,7 @@ declare class HelperRegistryBase {
58
58
  }
59
59
  //#endregion
60
60
  //#region src/helper-registry.d.ts
61
- declare class HelperRegistry extends HelperRegistryBase {
61
+ export declare class HelperRegistry extends HelperRegistryBase {
62
62
  init(): void;
63
63
  }
64
64
  //#endregion
@@ -67,16 +67,16 @@ declare class HelperRegistry extends HelperRegistryBase {
67
67
  * Handlebars library not initiated with helpers
68
68
  * @type {Handlebars}
69
69
  */
70
- declare const Handlebars: typeof HandlebarsLib;
70
+ export declare const Handlebars: typeof HandlebarsLib;
71
71
  /**
72
72
  * Fumanchu Handlebars instance not initiated with helpers
73
73
  * @type {Handlebars}
74
74
  */
75
- declare const handlebars: typeof HandlebarsLib;
75
+ export declare const handlebars: typeof HandlebarsLib;
76
76
  /**
77
77
  * Fumanchu Handlebars helpers
78
78
  */
79
- type HelpersOptions = {
79
+ export type HelpersOptions = {
80
80
  handlebars?: typeof HandlebarsLib;
81
81
  hbs?: typeof HandlebarsLib;
82
82
  };
@@ -84,14 +84,14 @@ type HelpersOptions = {
84
84
  * Register Handlebars helpers
85
85
  * @param {HelpersOptions} options - Options for Fumanchu helpers
86
86
  */
87
- declare function helpers(options: HelpersOptions): void;
87
+ export declare function helpers(options: HelpersOptions): void;
88
88
  /**
89
89
  * Create a new Handlebars instance with Fumanchu helpers
90
90
  * @returns {Promise<Handlebars>}
91
91
  * @deprecated Will be deprecated in future versions, use `fumanchu()` instead.
92
92
  */
93
- declare function createHandlebars(): Promise<typeof HandlebarsLib>;
94
- type FumanchuOptions = {
93
+ export declare function createHandlebars(): Promise<typeof HandlebarsLib>;
94
+ export type FumanchuOptions = {
95
95
  handlebars?: typeof HandlebarsLib;
96
96
  filter?: HelperFilter;
97
97
  caching?: boolean | CacheableMemory | CacheableMemoryOptions;
@@ -101,6 +101,6 @@ type FumanchuOptions = {
101
101
  * @param {FumanchuOptions} [options] - Options for Fumanchu
102
102
  * @returns {Handlebars} Handlebars instance with helpers
103
103
  */
104
- declare function fumanchu(options?: FumanchuOptions): typeof HandlebarsLib;
104
+ export declare function fumanchu(options?: FumanchuOptions): typeof HandlebarsLib;
105
105
  //#endregion
106
- export { CacheableMemory, type CacheableMemoryOptions, FumanchuOptions, Handlebars, type HelperFilter, HelperRegistry, HelpersOptions, createHandlebars, fumanchu, handlebars, helpers };
106
+ export { CacheableMemory, type CacheableMemoryOptions, type HelperFilter };
@@ -58,7 +58,7 @@ declare class HelperRegistryBase {
58
58
  }
59
59
  //#endregion
60
60
  //#region src/helper-registry.d.ts
61
- declare class HelperRegistry extends HelperRegistryBase {
61
+ export declare class HelperRegistry extends HelperRegistryBase {
62
62
  init(): void;
63
63
  }
64
64
  //#endregion
@@ -67,16 +67,16 @@ declare class HelperRegistry extends HelperRegistryBase {
67
67
  * Handlebars library not initiated with helpers
68
68
  * @type {Handlebars}
69
69
  */
70
- declare const Handlebars: typeof Handlebars$1;
70
+ export declare const Handlebars: typeof Handlebars$1;
71
71
  /**
72
72
  * Fumanchu Handlebars instance not initiated with helpers
73
73
  * @type {Handlebars}
74
74
  */
75
- declare const handlebars: typeof Handlebars$1;
75
+ export declare const handlebars: typeof Handlebars$1;
76
76
  /**
77
77
  * Fumanchu Handlebars helpers
78
78
  */
79
- type HelpersOptions = {
79
+ export type HelpersOptions = {
80
80
  handlebars?: typeof Handlebars$1;
81
81
  hbs?: typeof Handlebars$1;
82
82
  };
@@ -84,14 +84,14 @@ type HelpersOptions = {
84
84
  * Register Handlebars helpers
85
85
  * @param {HelpersOptions} options - Options for Fumanchu helpers
86
86
  */
87
- declare function helpers(options: HelpersOptions): void;
87
+ export declare function helpers(options: HelpersOptions): void;
88
88
  /**
89
89
  * Create a new Handlebars instance with Fumanchu helpers
90
90
  * @returns {Promise<Handlebars>}
91
91
  * @deprecated Will be deprecated in future versions, use `fumanchu()` instead.
92
92
  */
93
- declare function createHandlebars(): Promise<typeof Handlebars$1>;
94
- type FumanchuOptions = {
93
+ export declare function createHandlebars(): Promise<typeof Handlebars$1>;
94
+ export type FumanchuOptions = {
95
95
  handlebars?: typeof Handlebars$1;
96
96
  filter?: HelperFilter;
97
97
  caching?: boolean | CacheableMemory | CacheableMemoryOptions;
@@ -101,6 +101,6 @@ type FumanchuOptions = {
101
101
  * @param {FumanchuOptions} [options] - Options for Fumanchu
102
102
  * @returns {Handlebars} Handlebars instance with helpers
103
103
  */
104
- declare function fumanchu(options?: FumanchuOptions): typeof Handlebars$1;
104
+ export declare function fumanchu(options?: FumanchuOptions): typeof Handlebars$1;
105
105
  //#endregion
106
- export { CacheableMemory, type CacheableMemoryOptions, FumanchuOptions, Handlebars, type HelperFilter, HelperRegistry, HelpersOptions, createHandlebars, fumanchu, handlebars, helpers };
106
+ export { CacheableMemory, type CacheableMemoryOptions, type HelperFilter };
@@ -724,10 +724,11 @@ const gist = (id) => {
724
724
  const jsfiddle = (options) => {
725
725
  if (!options?.id) throw new Error("jsfiddle helper expects an `id`");
726
726
  const { id, width = "100%", height = "300", skin = "/presentation/", tabs = "result,js,html,css", allowfullscreen = "allowfullscreen", frameborder = "0" } = options;
727
+ const src = `http://jsfiddle.net/${id}/embedded/${tabs}${skin}`;
727
728
  return tag("iframe", {
728
729
  width,
729
730
  height,
730
- src: `http://jsfiddle.net/${id}/embedded/${tabs}${skin}`,
731
+ src,
731
732
  allowfullscreen,
732
733
  frameborder
733
734
  });
@@ -1441,10 +1442,14 @@ const getObject = (object, path) => {
1441
1442
  const options = (thisArg, locals, opts) => {
1442
1443
  const result = {};
1443
1444
  if (thisArg && typeof thisArg === "object" && thisArg.options) Object.assign(result, thisArg.options);
1444
- if (locals && typeof locals === "object") if ("hash" in locals) Object.assign(result, locals.hash);
1445
- else Object.assign(result, locals);
1446
- if (opts && typeof opts === "object") if ("hash" in opts) Object.assign(result, opts.hash);
1447
- else Object.assign(result, opts);
1445
+ if (locals && typeof locals === "object") {
1446
+ if ("hash" in locals) Object.assign(result, locals.hash);
1447
+ else Object.assign(result, locals);
1448
+ }
1449
+ if (opts && typeof opts === "object") {
1450
+ if ("hash" in opts) Object.assign(result, opts.hash);
1451
+ else Object.assign(result, opts);
1452
+ }
1448
1453
  return result;
1449
1454
  };
1450
1455
  //#endregion
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.2",
4
+ "version": "4.7.4",
5
5
  "homepage": "https://github.com/jaredwray/fumanchu",
6
6
  "author": "Jared Wray (me@jaredwray.com)",
7
7
  "type": "module",
@@ -81,28 +81,27 @@
81
81
  "dependencies": {
82
82
  "@cacheable/memory": "^2.2.0",
83
83
  "chrono-node": "2.10.1",
84
- "dayjs": "^1.11.21",
84
+ "dayjs": "^1.11.23",
85
85
  "handlebars": "^4.7.9",
86
- "markdown-it": "^14.3.0",
86
+ "markdown-it": "^15.0.2",
87
87
  "micromatch": "^4.0.8"
88
88
  },
89
89
  "devDependencies": {
90
- "@biomejs/biome": "^2.5.5",
91
- "@faker-js/faker": "^10.5.0",
90
+ "@biomejs/biome": "^2.5.14",
91
+ "@faker-js/faker": "^10.6.0",
92
92
  "@monstermann/tinybench-pretty-printer": "^0.3.0",
93
- "@types/markdown-it": "^14.1.2",
94
93
  "@types/micromatch": "^4.0.10",
95
- "@types/node": "^24.13.3",
96
- "@vitest/coverage-v8": "^4.1.10",
97
- "docula": "^2.2.0",
94
+ "@types/node": "^24.13.5",
95
+ "@vitest/coverage-v8": "^5.0.1",
96
+ "docula": "^3.0.0",
98
97
  "dotenv": "^17.4.2",
99
- "happy-dom": "^20.11.1",
98
+ "happy-dom": "^20.14.5",
100
99
  "rimraf": "^6.1.3",
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"
100
+ "tinybench": "^6.2.0",
101
+ "tsdown": "^0.23.0",
102
+ "tsx": "^4.23.13",
103
+ "typescript": "^7.0.2",
104
+ "vitest": "^5.0.1"
106
105
  },
107
106
  "contributors": [
108
107
  "Jared Wray (https://jaredwray.com)",