/**
 * Skipped minification because the original files appears to be already minified.
 * Original file: /npm/ace-api@0.7.51/dist/api.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.AceApi=t():e.AceApi=t()}(global,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,r),s.l=!0,s.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)r.d(n,s,function(t){return e[t]}.bind(null,s));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=18)}([function(e,t){e.exports=require("lodash")},function(e,t){e.exports=require("@babel/runtime/helpers/interopRequireDefault")},function(e,t){e.exports=require("@babel/runtime/regenerator")},function(e,t,r){"use strict";var n=r(1)(r(2));const s=r(0),a=r(4),i=r(6),o={_id:"config",client:{},assets:{},schemas:[],taxonomies:[],users:[],roles:(new(r(12))).roles(),provider:{},module:{}};e.exports=class{constructor(e){this.config=e}get(){var e,t=this;return n.default.async((function(r){for(;;)switch(r.prev=r.next){case 0:return e=o,r.prev=1,r.next=4,n.default.awrap(a.connect(t.config).get("config"));case 4:e=r.sent,e=s.merge({},o,e),r.next=10;break;case 8:r.prev=8,r.t0=r.catch(1);case 10:return e.slug=t.config.slug,r.abrupt("return",e);case 12:case"end":return r.stop()}}),null,null,[[1,8]],Promise)}set(e){var t=this;return n.default.async((function(r){for(;;)switch(r.prev=r.next){case 0:return e._id="config",delete e.roles,r.next=4,n.default.awrap(i.createOrUpdate(t.config,e));case 4:return e=r.sent,e=s.merge({},o,e),r.abrupt("return",e);case 7:case"end":return r.stop()}}),null,null,null,Promise)}}},function(e,t,r){"use strict";const n=r(11);class s{constructor(e,t){return this.config=e,s.connect(e,t)}static connect(e,t){return new n({url:e.db.url,maxAttempt:5,plugins:["promises",{retry:{retryDelayMultiplier:2,retryInitialDelayMsecs:500}}]}).db.use(t||e.db.name)}}e.exports=s},function(e,t){e.exports=require("bluebird")},function(e,t,r){"use strict";const n=r(0),s=r(5),a=r(4);e.exports=class{constructor(e){this.config=e,this.assistUrl=e.assist.url,this.slug=e.slug}static createOrUpdate(e,t){return new s((r,n)=>{a.connect(e).insert(t).then(e=>{t._id=e.id,t._rev=e.rev,r(t)},s=>{409===s.statusCode?a.connect(e).get(t._id).then(s=>{t._rev=s._rev,a.connect(e).insert(t).then(e=>{t._rev=e.rev,r(t)},n)},n):n(s)})})}static chunkUpdate(e,t,r=1e3){return new s((i,o)=>{const c=n.chunk(t,r),u=[];c.forEach(t=>{u.push(new s((r,n)=>{a.connect(e).bulk({docs:t}).then(r,n)}))}),s.all(u).then(i,o)})}static groupEntities(e,t=1/0){const r=[];let n={entities:[]};return e.forEach(e=>{(!e.groupBefore||n.entities.length>=t)&&(n={entities:[]}),n.entities.push(e),(!e.groupAfter||n.entities.length>=t)&&(n.ratio=0,n.entities.forEach(e=>{n.ratio+=(e.thumbnail||e).ratio}),n.entities.forEach(e=>{e.groupRatio=(e.thumbnail||e).ratio/n.ratio}),r.push(n))}),r}static now(){return JSON.stringify(new Date).replace(/"/g,"")}static replace(e,t,r){return e.map(e=>e[r]===t[r]?t:e)}thumbnailSrc(e,t,r,s){if(!e)return"";let a;"string"==typeof t&&(a=t.split(/,|;/),t={},a.forEach(e=>{e=e.split(/_|:/),t[e[0]]=e[1]}));const i=!!e.crops&&e.crops[r];i?(t.x=i[0],t.y=i[1],t.x2=i[2],t.y2=i[3]):s&&(t.g=s),a=[],n.forEach(t,(e,t)=>{a.push([t,e].join(":"))});const o=a.join(";");if(/(image)/.test(e.thumbnailType))return"svg"===e.ext?[this.assistUrl,this.slug,e.name+e.ext].join("/"):[this.assistUrl,this.slug,"transform",o,e.name+e.ext].join("/");if(/(video)/.test(e.thumbnailType))return[this.assistUrl,this.slug,"transform",o,e.name,"thumb.jpg"].join("/");if(/(oembed|proxy)/.test(e.thumbnailType)){const t=e.thumbnailUrl.replace(/https?:\/\//,"");return[this.assistUrl,this.slug,"proxy","transform",o,t].join("/")}return""}}},function(e,t){e.exports=require("path")},function(e,t){e.exports=require("axios")},function(e,t){e.exports=require("fs")},function(e,t,r){"use strict";var n=r(1)(r(2));const s=r(0),a=r(8),i=r(20),o=r(3);e.exports=class{constructor(e){this.config=e}deleteFiles(e){var t,r,c,u,l=this;return n.default.async((function(d){for(;;)switch(d.prev=d.next){case 0:return t=new o(l.config),d.next=3,n.default.awrap(t.get());case 3:if(r=d.sent,c=s.get(r,"assets.slug",l.config.slug),0!==e.length){d.next=7;break}return d.abrupt("return",[]);case 7:return d.next=9,n.default.awrap(a.post(`${l.config.assist.url}/${c}/file/delete`,{fileNames:e},{auth:{username:l.config.assist.username,password:i.generate(l.config.assist.password)}}));case 9:return u=d.sent.data,d.abrupt("return",u);case 11:case"end":return d.stop()}}),null,null,null,Promise)}}},function(e,t){e.exports=require("@cloudant/cloudant")},function(e,t,r){"use strict";const n=r(0),s=[{name:"Admin",slug:"admin",permissions:{entityGrid:!0,entityCreate:!0,entityRead:!0,entityUpdate:!0,entityDelete:!0,taxonomyCreate:!0,taxonomyRead:!0,taxonomyUpdate:!0,taxonomyDelete:!0,fileCreate:!0,fileRead:!0,fileUpdate:!0,fileDelete:!0,config:!1,schema:!1,user:!0,settings:!0,userSettings:!0,tools:!0,ecommerce:!0}},{name:"Editor",slug:"editor",permissions:{entityGrid:!0,entityCreate:!0,entityRead:!0,entityUpdate:!0,entityDelete:!0,taxonomyCreate:!0,taxonomyRead:!0,taxonomyUpdate:!0,taxonomyDelete:!0,fileCreate:!0,fileRead:!0,fileUpdate:!0,fileDelete:!0,config:!1,schema:!1,user:!1,settings:!1,userSettings:!0,tools:!1,ecommerce:!1}},{name:"Guest",slug:"guest",permissions:{entityGrid:!0,entityCreate:!1,entityRead:!0,entityUpdate:!1,entityDelete:!1,taxonomyCreate:!1,taxonomyRead:!0,taxonomyUpdate:!1,taxonomyDelete:!1,fileCreate:!1,fileRead:!0,fileUpdate:!1,fileDelete:!1,config:!1,schema:!1,user:!1,settings:!1,userSettings:!1,tools:!1,ecommerce:!1}}];e.exports=class{roles(){return s.map(e=>Object.freeze(e))}role(e){return n.find(this.roles(),{slug:e})}}},function(e,t,r){"use strict";var n=r(1)(r(2));const s=r(7),a=r(5),i=a.promisifyAll(r(9)),o=r(0),c=r(24),u=a.promisifyAll(r(25)),l=r(26),d=r(27).Inky,p=r(28),f=r(29).registerComponent,h=r(30).registerDependencies,{McSection:m,McImage:g}=r(31),y=r(32),v=r(33),x=r(34),w=r(35),_=r(36),b=r(37),E=r(38),k=r(3),S=r(6);e.exports=class{constructor(e){this.config=e,this.inky=new d,m.componentName="mc-section",g.componentName="mc-image",f(m),f(g),h({"mc-section":["mj-column","mj-group","mj-raw"],"mj-column":["mc-image"],"mj-hero":["mc-image"]})}getTemplate(e,t={},r={}){var a,c,u,l,d,f,h,m,g,T,A,I=this;return n.default.async((function(D){for(;;)switch(D.prev=D.next){case 0:return a=o.merge({},{inlineStyles:!0,inky:!1,mjml:!1,skipValidation:!1},r),c=s.join(I.config.email.templatesPath,e),D.prev=2,D.next=5,n.default.awrap(i.statAsync(c));case 5:D.next=10;break;case 7:D.prev=7,D.t0=D.catch(2),c=s.resolve("../email",e);case 10:return D.next=12,n.default.awrap(i.readdirAsync(c));case 12:if(u=D.sent,l="html",o.find(u,e=>/^html\.mjml/.test(e))&&(l="html.mjml",a.mjml=!0),d="html",o.find(u,e=>/\.pug$/.test(e))&&(d="pug"),o.find(u,e=>/\.ejs$/.test(e))&&(d="ejs"),f="",!o.find(u,e=>/^style\.scss$/.test(e))){D.next=23;break}return D.next=22,n.default.awrap(w.compileAsync(s.join(c,"style.scss"),{sourceMapContents:!a.inlineStyles,sourceMapEmbed:!a.inlineStyles}));case 22:f=D.sent.css.toString().replace(/"/g,"'");case 23:return h=new k(I.config),D.next=26,n.default.awrap(h.get());case 26:if(m=D.sent,g=new S(I.config),t=o.merge({},t,{config:o.merge({},o.pick(I.config,["cms","slug","client","assets"]),o.pick(m,["slug","client","assets"])),helpers:g,style:f,moment:v,countries:x,templateSlug:e}),"html"===d&&(T=i.readFileAsync(`${c}/${l}.${d}`)),"pug"===d&&(T=_.renderFile(`${c}/${l}.${d}`,t)),"ejs"!==d){D.next=35;break}return D.next=34,n.default.awrap(b.renderFile(`${c}/${l}.${d}`,t));case 34:T=D.sent;case 35:if(!a.mjml){D.next=40;break}if(!(A=p(T,{level:a.skipValidation?"skip":"soft"})).errors||!A.errors.length){D.next=39;break}throw new Error(o.uniq(A.errors.map(e=>e.formattedMessage)).join("\n"));case 39:T=A.html;case 40:return a.inky&&(T=I.inky.releaseTheKraken(T)),a.inlineStyles&&(T=E(T,{preserveMediaQueries:!0,preserveFontFaces:!0,removeStyleTags:!1,removeLinkTags:!1,preserveImportant:!0,webResources:{links:!1,scripts:!1,images:!1}})),D.abrupt("return",{html:T,text:y.fromString(T)});case 43:case"end":return D.stop()}}),null,null,[[2,7]],Promise)}sendEmail(e,t,r={},n={}){return new a((s,a)=>{const i=c.createTransport(l({auth:{api_key:this.config.mailgun.apiKey,domain:this.config.mailgun.domain}}));this.getTemplate(t,o.merge({},e,r),n).then(t=>{e.html=t.html,e.text=t.text,i.sendMail(e,(t,r)=>{t?a(t):s({metadata:r,email:e})})},a)})}subscribe(e,t,r){return new a((n,s)=>{new k(this.config).get().then(i=>{if("createsend"===t){if(i.provider.createsend){const t=new u({apiKey:i.provider.createsend.clientApiKey});return void a.promisifyAll(t.subscribers).addSubscriberAsync(r,{EmailAddress:e.email,Name:e.name,Resubscribe:!0,RestartSubscriptionBasedAutoresponders:!0}).then(e=>{n("Email.subscribe(): "+e.emailAddress)}).catch(e=>{s(e.Message)})}s(new Error("Subscriber list not configured"))}},s)})}}},function(e,t,r){"use strict";var n=r(1)(r(2));const s=r(0),a=r(5),i=r(41),{diff:o}=r(42),c=r(3),u=r(4),l=r(6),d=r(15),p=r(10);class f{constructor(e){this.config=e,this.flattenValues=f.flattenValues}static flattenValues(e){return e.map(e=>e.fields&&s.size(e.fields)?(e.fields=s.mapValues(e.fields,e=>(/entity/.test(e.type)&&s.isArray(e.value)&&(e.value=f.flattenValues(e.value)),e.value)),e):e)}static _filterEntityFields(e,t="guest"){const r=s.isArray(e);return e=(r?e:[e]).map(e=>(s.size(e.fields)&&(e.fields=s.mapValues(e.fields,e=>(s.isArray(e.value)&&(e.value=e.value.filter(e=>!!e&&(!e.type||"entity"!==e.type||"guest"!==t||(void 0===e.published||e.published)))),e))),e)),r?e:e[0]}static _appendChildren(e,t){return e.map(e=>s.size(e.fields)?(e.fields=s.mapValues(e.fields,e=>(s.isArray(e.value)&&(e.value=e.value.filter(e=>!!e&&("entity"!==e.type||void 0!==t[e.id])),e.value=e.value.map(e=>("entity"===e.type&&(e=s.merge(e,t[e.id])),e=s.omitBy(e,(e,t)=>t.startsWith("_"))))),e)),e):e)}static _appendParents(e,t=null,r="guest"){let n={};return e.forEach(e=>{e.doc&&"entity"===e.value.type&&(n[e.id]={...e.doc,parents:[]})}),t&&(e.forEach(e=>{e.doc&&"parent"===e.value.type&&n[e.key].parents.push(f._filterEntityFields(e.doc,r))}),n=s.mapValues(n,e=>(e.parents=s.uniqBy(e.parents,e=>e._id),e))),e=(e=e.map(e=>(e.doc=n[e.id],e))).filter(e=>"entity"===e.value.type)}static _fileNames(e){const t=[];return e.forEach(e=>{s.forEach(e.fields,e=>{e.value&&e.value.file&&t.push(e.value.file.name)})}),s.uniq(t)}fieldValues(e,t){var r,s=this;return n.default.async((function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,n.default.awrap(u.connect(s.config).viewWithList("entity","byField","search",{startkey:[e],endkey:[e,{}],group:!0,searchTerm:t}));case 2:return r=a.sent,a.abrupt("return",r);case 4:case"end":return a.stop()}}),null,null,null,Promise)}static _query(e,t,r=!1){if(t=t.replace(/(\s\s|\t|\r|\n)/g,""),r){const e=t.trim().split(/\[|\]/),r=`fields.${e[0]}.value[${e[1]||"*"}]`,n=/\]:/.test(t)?":"+t.split(/\]:/).slice(-1)[0].trim():"";t=`${r}${n}`}return i(t,{data:e,locals:{slice:(e,t,r)=>s.slice(e,t,r),sample:(e,t=1)=>s.sampleSize(e,t),group:(e,t=1/0)=>{const r=[];let n=[];return e.forEach(e=>{(!e.groupBefore||n.length>=t)&&(n=[]),n.push(e),(!e.groupAfter||n.length>=t)&&(n.ratio=0,n.forEach(e=>{n.ratio+=(e.thumbnail||e).ratio}),n.forEach(e=>{e.groupRatio=(e.thumbnail||e).ratio/n.ratio}),r.push(n))}),r},pick:(e,...t)=>s.map(e,e=>{const r={id:e.id||void 0};return(t=t.filter(e=>e)).forEach(t=>{const n=t.match(/([^\s]+)/g),a=n[0],i=n[n.length-1];s.set(r,i,s.get(e,a))}),r})},allowRegexp:!0})}static _queriesFromString(e){const t=(e=e.replace(/(\s\s|\t|\r|\n)/gm,"")).match(/\(([^)]+)\)/g);let r=(e=e.replace(/\(.*?\)/g,"()")).split(/,(?![^([]*[\])])/g);return r=r.map(e=>{const r=e.match(/\(\)/g);return r&&s.times(r.length,()=>{e=e.replace("()",t.splice(0,1))}),e.trim()}),r}_entitiesById(e=[],t={}){var r,a,i=this;return n.default.async((function(o){for(;;)switch(o.prev=o.next){case 0:return t=s.merge({parents:!1,role:"guest"},t),r={include_docs:!0},e.length&&(r.keys=e),o.next=5,n.default.awrap(u.connect(i.config).view("entity",t.parents?"byIdExtended":"byId",r));case 5:return(a=o.sent).rows=a.rows.map(e=>(e.doc=f._filterEntityFields(e.doc,t.role),e)),a.rows=f._appendParents(a.rows,t.parents,t.role),o.abrupt("return",a);case 9:case"end":return o.stop()}}),null,null,null,Promise)}static _childDepthLimit(e){let t=0;return s.isNumber(e)&&(t=e-1),s.isArray(e)&&(t=e.length-1),t}_getDocMap(e,t={},r={}){var a,i,o,c=this;return n.default.async((function(u){for(;;)switch(u.prev=u.next){case 0:if(r._childDepth=r._childDepth||0,r.parents||r.children){u.next=3;break}return u.abrupt("return",t);case 3:if(a=[],i=[],e.forEach(e=>{const t=!!e.doc;let n=t?e.doc:e;n=f._filterEntityFields(n,r.role),r.children&&n.fields&&s.size(n.fields)&&(s.isArray(r.children)?f._queriesFromString(r.children[r._childDepth]).forEach(e=>{i=i.concat(s.flatten(f._query(n,e,!0).value).map(e=>e&&e.id))}):s.forEach(n.fields,e=>{s.isArray(e.value)&&(e.value=e.value.filter(e=>e),e.value.forEach(e=>{e.id&&i.push(e.id)}))})),a.push(t?e.id:n._id||n.id)}),!((a=(a=s.uniq(a)).filter(e=>!t[e])).length>0)){u.next=14;break}return u.next=12,n.default.awrap(c._entitiesById(a,r));case 12:u.sent.rows.map(e=>e.doc).forEach(e=>{t[e._id]=e});case 14:if(i=(i=s.uniq(i)).filter(e=>!t[e]),o=[],!(i.length>0)){u.next=22;break}return u.next=20,n.default.awrap(c._entitiesById(i,{...r,parents:!1}));case 20:(o=u.sent.rows.map(e=>e.doc)).forEach(e=>{t[e._id]=e});case 22:if(r.children&&r._childDepth!==f._childDepthLimit(r.children)){u.next=24;break}return u.abrupt("return",t);case 24:return u.next=26,n.default.awrap(c._getDocMap(o,t,{...r,parents:!1,_childDepth:r._childDepth+1}));case 26:return u.abrupt("return",u.sent);case 27:case"end":return u.stop()}}),null,null,null,Promise)}static _mergeDocs(e,t,r={children:!1,parents:!1}){return r._childDepth=r._childDepth||0,r.children&&r._childDepth-1===f._childDepthLimit(r.children)?e:e=e.map(e=>{const n=!!e.doc;let a=n?e.doc:e;if(t[e.id||e._id]&&(a=s.merge({},a,t[e.id||e._id])),r.children&&a.fields&&s.size(a.fields)){let e;s.isArray(r.children)&&(e={},f._queriesFromString(r.children[r._childDepth]).forEach(t=>{const r=t.split(/\[|\]/)[0];e[r]=t})),a.fields=s.mapValues(a.fields,(n,a)=>(s.isArray(n.value)&&(n.value=n.value.filter(e=>e),(!e||e&&e[a])&&(e&&e[a]&&(n.value=n.value.filter(e=>e.id&&t[e.id])),n.value=n.value.map(e=>(e&&e.id&&t[e.id]&&(e=s.merge(e,t[e.id]||{}),e=s.omitBy(e,(e,t)=>t.startsWith("_"))),e)),n.value=f._mergeDocs(n.value,t,{...r,_childDepth:r._childDepth+1}))),n)),a.fields=s.mapValues(a.fields,(t,r)=>(s.isArray(t.value)&&e&&e[r]&&(t.value=s.flatten(f._query(a,e[r],!0).value)),t))}return s.isArray(r.parents)&&a.parents&&(a.parents=s.flatten(f._query(a.parents,r.parents[0]).value)),n?e.doc=a:e=a,e})}_extendRowsOrDocs(e,t={}){var r,a=this;return n.default.async((function(i){for(;;)switch(i.prev=i.next){case 0:return t=s.merge({select:!1,children:!1,parents:!1,role:"guest"},t),i.next=3,n.default.awrap(a._getDocMap(e,{},t));case 3:return r=i.sent,e=f._mergeDocs(e,r,t),t.select&&(e=s.flatten(f._query(e,t.select).value)),r=null,i.abrupt("return",e);case 8:case"end":return i.stop()}}),null,null,null,Promise)}_removeChildren(e){return new a((t,r)=>{0!==e.length?(e=e.map(e=>e._id),u.connect(this.config).view("entity","byChildren",{keys:e,include_docs:!0}).then(n=>{const a=s.uniqBy(n.rows,e=>e.doc._id).map(t=>(t.doc.fields=s.mapValues(t.doc.fields,t=>(s.isArray(t.value)&&(t.value=s.filter(t.value,t=>!("entity"===t.type&&-1!==e.indexOf(t.id)))),t)),t.doc));0!==a.length?l.chunkUpdate(this.config,a,1e3).then(t,r):t([])},r)):t([])})}_updateChildren(e){return new a((t,r)=>{if(0===e.length)return void t([]);const n={};e=e.map(e=>(n[e._id]=e,e._id)),u.connect(this.config).view("entity","byChildren",{keys:e,include_docs:!0}).then(e=>{const a=e.rows.map(e=>{const t=e.doc;return s.forEach(t.fields,(e,r)=>{s.isArray(e.value)&&(t.fields[r].value=e.value.filter(e=>e).map(e=>("entity"===e.type&&n[e.id]&&(e.slug=n[e.id].slug,e.title=n[e.id].title,e.schema=n[e.id].schema,e.published=n[e.id].published,n[e.id].thumbnail?e.thumbnail=n[e.id].thumbnail:e.thumbnail=null),e)))}),t});l.chunkUpdate(this.config,a,1e3).then(t,r)},r)})}entityList(e=[],t={}){var r,a,i=this;return n.default.async((function(o){for(;;)switch(o.prev=o.next){case 0:return t=s.merge({select:!1,children:!1,parents:!1,role:"guest"},t),o.next=3,n.default.awrap(i._entitiesById(e,t));case 3:return r=o.sent,o.next=6,n.default.awrap(i._extendRowsOrDocs(r.rows,t));case 6:return a=o.sent,o.abrupt("return",a);case 8:case"end":return o.stop()}}),null,null,null,Promise)}_entitySearch(e,t={}){return new a((r,n)=>{e.limit=Math.min(e.limit||200,200),t.children&&(e.include_docs=!0),e.include_fields||(e.include_fields=[]),e.sort||delete e.sort,e.bookmark||delete e.bookmark,e.index||delete e.index,e.group_field||delete e.group_field,u.connect(this.config).search("entity",e.index||"all",e).then(e=>{if(e.groups){const s=[];return e.groups=e.groups.map(e=>(s.push(new a((r,n)=>{(t.children||t.parents)&&0!==e.total_rows?this._extendRowsOrDocs(e.hits,t).then(t=>{e.hits=t,r()},n):r()})),e)),void a.all(s).then(()=>{r(e)},n)}this._extendRowsOrDocs(e.rows,t).then(t=>{e.rows=t,r(e)},n)},n)})}entitySearch(e,t={}){return t=s.merge({children:!1,parents:!1,role:"guest"},t),new a((r,n)=>{const a=e.limit||25;if(a<=200)return void this._entitySearch(e,t).then(r,n);let i=[],o=[];(function c(u){const l=s.clone(e);u&&(l.bookmark=u),this._entitySearch(l,t).then(e=>{e.rows&&(i=i.concat(e.rows)),e.groups&&(o=o.concat(e.groups)),i.length<e.total_rows&&i.length<a?c.call(this,e.bookmark):(e.rows=i,e.groups=o,r(e))},n)}).call(this)})}entityFind(e,t={}){var r,a,i,o,l=this;return n.default.async((function(p){for(;;)switch(p.prev=p.next){case 0:return t=s.merge({children:!1,parents:!1,role:"guest"},t),p.prev=1,p.next=4,n.default.awrap(u.connect(l.config).find(e));case 4:r=p.sent,p.next=20;break;case 7:if(p.prev=7,p.t0=p.catch(1),"no_usable_index"!==p.t0.error){p.next=20;break}return a=new c(l.config),p.next=13,n.default.awrap(a.get());case 13:return i=p.sent,o=new d(l.config),p.next=17,n.default.awrap(o.updateEntityIndex(i.schemas));case 17:return p.next=19,n.default.awrap(u.connect(l.config).find(e));case 19:r=p.sent;case 20:if(!1!==t.children){p.next=22;break}return p.abrupt("return",r);case 22:if(!e.fields||-1!==e.fields.indexOf("_id")){p.next=24;break}throw new Error("_id field required for `children`");case 24:return p.next=26,n.default.awrap(l._extendRowsOrDocs(r.docs,t));case 26:return r.docs=p.sent,p.abrupt("return",r);case 28:case"end":return p.stop()}}),null,null,[[1,7]],Promise)}entityRevisions(e){return new a((t,r)=>{u.connect(this.config).get(e,{revs_info:!0}).then(n=>{const a=[];n._revs_info.forEach(e=>{"available"===e.status&&a.push(e.rev)}),u.connect(this.config).get(e,{open_revs:JSON.stringify(a)}).then(e=>{const n=[],a=[];e.forEach(e=>{e.ok&&(n.push(e.ok),s.forEach(e.ok.fields,e=>{/entity/.test(e.type)&&s.forEach(e.value,e=>{e.id&&a.push(e.id)})}))}),u.connect(this.config).fetch({keys:s.uniq(a),include_docs:!0}).then(e=>{const r={};e.rows.forEach(e=>{try{r[e.doc._id]=e.doc}catch(e){console.error("Error: child no longer exists")}}),t(f._appendChildren(n,r))},r)},r)},r)})}entityCreate(e){return new a((t,r)=>{e.type="entity",u.connect(this.config).insert(e).then(r=>{e._id=r.id,e._rev=r.rev,t(e)},r)})}entityRead(e){return new a((t,r)=>{u.connect(this.config).get(e).then(t,r)})}entityUpdate(e,t){var r,a,i,c,d,p,f=this;return n.default.async((function(h){for(;;)switch(h.prev=h.next){case 0:return e=s.isArray(e)?e:[e],r={},a=e.map(e=>{let t;return s.isObject(e)&&(t=e._id,r[t]=e),s.isString(e)&&(t=e),t}),h.next=5,n.default.awrap(u.connect(f.config).fetch({keys:a,include_docs:!0}));case 5:if(i=h.sent,c=[],d=[],e=i.rows.map(e=>{const n=e.doc,i=r[n._id];let u=n;return i&&(delete i._rev,o(n,i).forEach(e=>{if(/published|slug|title|thumbnail/.test(e.path[0])&&-1===c.indexOf(i)&&-1!==a.indexOf(i._id)&&c.push(i),"fields"===e.path[0]&&"value"===e.path[2]){const t=n.fields[e.path[1]];/attachment|image|audio|video/.test(t.type)&&t.value&&d.push(t.value.file.name)}}),u=s.mergeWith({},n,i,(e,t)=>{if(s.isArray(e)&&s.isArray(t))return t})),t&&(u.trashed=!1),u}),d.length,!c.length){h.next=13;break}return h.next=13,n.default.awrap(f._updateChildren(c));case 13:return h.next=15,n.default.awrap(l.chunkUpdate(f.config,e,1e3));case 15:return p=h.sent,h.abrupt("return",p);case 17:case"end":return h.stop()}}),null,null,null,Promise)}entityDelete(e,t=!1){var r,a,i,o,c,d=this;return n.default.async((function(h){for(;;)switch(h.prev=h.next){case 0:if("trashed"!==e){h.next=7;break}return t=!0,h.next=4,n.default.awrap(u.connect(d.config).view("entity","trashed",{include_docs:!0}));case 4:r=h.sent.rows,h.next=10;break;case 7:return h.next=9,n.default.awrap(u.connect(d.config).fetch({keys:s.isArray(e)?e:[e],include_docs:!0}));case 9:r=h.sent.rows;case 10:return r=(r=r.filter(e=>!e.value||!e.value.deleted)).map(e=>e.doc),h.next=14,n.default.awrap(d._removeChildren(r));case 14:if(!t){h.next=24;break}if(!(i=f._fileNames(r)).length){h.next=21;break}return o=new p(d.config),h.next=20,n.default.awrap(o.deleteFiles(i));case 20:a=h.sent;case 21:r=r.map(e=>({_id:e._id,_rev:e._rev,_deleted:!0})),h.next=25;break;case 24:r=r.map(e=>(e.trashed=!0,e));case 25:return h.next=27,n.default.awrap(l.chunkUpdate(d.config,r,1e3));case 27:return c=h.sent,h.abrupt("return",{entities:c,files:a});case 29:case"end":return h.stop()}}),null,null,null,Promise)}}e.exports=f},function(e,t,r){"use strict";var n=r(1)(r(2));const s=r(0),a=r(3),i=r(4),o=r(16);e.exports=class{constructor(e){return this.config=e,this}create(e){var t,r,s=this;return n.default.async((function(i){for(;;)switch(i.prev=i.next){case 0:return t=new a(s.config),i.next=3,n.default.awrap(t.get());case 3:return(r=i.sent).schemas.push(e),i.next=7,n.default.awrap(s.updateEntityIndex(r.schemas));case 7:return i.abrupt("return",t.set(r));case 8:case"end":return i.stop()}}),null,null,null,Promise)}read(e){var t,r,i,o=this;return n.default.async((function(c){for(;;)switch(c.prev=c.next){case 0:return t=new a(o.config),c.next=3,n.default.awrap(t.get());case 3:if(r=c.sent,i=s.find(r.schemas,{slug:e})){c.next=7;break}throw Error("Schema not found: "+e);case 7:return c.abrupt("return",i);case 8:case"end":return c.stop()}}),null,null,null,Promise)}update(e){var t,r,i,o=this;return n.default.async((function(c){for(;;)switch(c.prev=c.next){case 0:return t=new a(o.config),c.next=3,n.default.awrap(t.get());case 3:if(r=c.sent,-1!==(i=s.findIndex(r.schemas,{slug:e.slug}))){c.next=7;break}throw Error("Schema not found: "+e.slug);case 7:return r.schemas.splice(i,1,e),c.next=10,n.default.awrap(o.updateEntityIndex(r.schemas));case 10:return c.abrupt("return",t.set(r));case 11:case"end":return c.stop()}}),null,null,null,Promise)}delete(e){var t,r,i=this;return n.default.async((function(o){for(;;)switch(o.prev=o.next){case 0:return t=new a(i.config),o.next=3,n.default.awrap(t.get());case 3:return r=o.sent,e=s.isArray(e)?e:[e],r.schemas=r.schemas.filter(t=>-1===e.indexOf(t.slug)),r.schemas=r.schemas.map(t=>t.fields?(t.fields=t.fields.map(t=>t.settings?(t.settings.schemas&&(t.settings.schemas=t.settings.schemas.filter(t=>-1===e.indexOf(t))),t):t),t):t),o.next=9,n.default.awrap(i.updateEntityIndex(r.schemas));case 9:return o.abrupt("return",t.set(r));case 10:case"end":return o.stop()}}),null,null,null,Promise)}updateAll(e){var t,r,s=this;return n.default.async((function(i){for(;;)switch(i.prev=i.next){case 0:return t=new a(s.config),i.next=3,n.default.awrap(t.get());case 3:return(r=i.sent).schemas=e,i.abrupt("return",t.set(r));case 6:case"end":return i.stop()}}),null,null,null,Promise)}updateEntityIndex(e){var t,r,a,c=this;return n.default.async((function(u){for(;;)switch(u.prev=u.next){case 0:return t=[],e.forEach(e=>{t=t.concat(e.fields)}),t=s.uniqBy(t,"slug"),r={name:"entity",type:"text",ddoc:"entityIndex",index:{default_field:{enabled:!0,analyzer:"standard"},selector:{$and:[{type:"entity"}]},fields:[{name:"published",type:"boolean"},{name:"trashed",type:"boolean"},{name:"title",type:"string"},{name:"slug",type:"string"},{name:"schema",type:"string"},{name:"modifiedAt",type:"string"},{name:"publishedAt",type:"string"}]}},t.forEach(e=>{const t=o.field(e.type);/number|string|boolean/.test(t.dataType)&&r.index.fields.push({name:`fields.${e.slug}.value`,type:t.dataType}),/array/.test(t.dataType)&&r.index.fields.push({name:`fields.${e.slug}.value.[].slug`,type:"string"}),/taxonomy/.test(e.type)&&r.index.fields.push({name:`fields.${e.slug}.value.terms.[].slug`,type:"string"})}),u.next=7,n.default.awrap(i.connect(c.config).index(r));case 7:return a=u.sent,u.abrupt("return",a);case 9:case"end":return u.stop()}}),null,null,null,Promise)}}},function(e,t,r){"use strict";const n=r(0),s=[{type:"attachment",name:"Attachment",dataType:null},{type:"audio",name:"Audio",dataType:null},{type:"checkbox",name:"Checkbox",dataType:"boolean"},{type:"color",name:"Color",dataType:"string"},{type:"date",name:"Date",dataType:"string"},{type:"embedly",name:"Embedly",dataType:null},{type:"entity",name:"Entity",dataType:"array"},{type:"entityGrid",name:"Entity Grid",dataType:"array"},{type:"entityTile",name:"Entity Tile",dataType:"array"},{type:"image",name:"Image",dataType:null},{type:"keyValue",name:"Key Value",dataType:null},{type:"number",name:"Number",dataType:"number"},{type:"richText",name:"Rich Text",dataType:null},{type:"select",name:"Select",dataType:"array"},{type:"taxonomy",name:"Taxonomy",dataType:null},{type:"text",name:"Text",dataType:"string"},{type:"textArea",name:"Text Area",dataType:"string"},{type:"user",name:"User",dataType:"array"},{type:"video",name:"Video",dataType:null},{type:"vimeo",name:"Vimeo",dataType:null}];class a{static fields(){return s.map(e=>Object.freeze(e))}static field(e){return n.find(a.fields(),{type:e})}}e.exports=a},function(e,t){e.exports=require("request-promise")},function(e,t,r){"use strict";function n(){}n.defaultConfig=r(19),n.Assist=(...e)=>new(r(10))(...e),n.Auth=(...e)=>new(r(21))(...e),n.ClientConfig=(...e)=>new(r(3))(...e),n.Db=(...e)=>new(r(4))(...e),n.Ecommerce=(...e)=>new(r(23))(...e),n.Email=(...e)=>new(r(13))(...e),n.Embedly=(...e)=>new(r(39))(...e),n.Entity=(...e)=>new(r(14))(...e),n.Fields=(...e)=>new(r(16))(...e),n.Helpers=(...e)=>new(r(6))(...e),n.Instagram=(...e)=>new(r(43))(...e),n.Jwt=(...e)=>new(r(44))(...e),n.Pdf=(...e)=>new(r(46))(...e),n.Roles=(...e)=>new(r(12))(...e),n.Schema=(...e)=>new(r(15))(...e),n.Settings=(...e)=>new(r(50))(...e),n.Shippo=(...e)=>new(r(51))(...e),n.Shopify=(...e)=>new(r(53))(...e),n.Stripe=(...e)=>new(r(57))(...e),n.Taxonomy=(...e)=>new(r(60))(...e),n.Tools=(...e)=>new(r(61))(...e),n.User=(...e)=>new(r(62))(...e),e.exports=n},function(e,t,r){"use strict";(function(t){const n=r(7),s={environment:process.env.ENVIRONMENT||"development",debug:process.env.DEBUG||!1,slug:process.env.SLUG,baseUrl:process.env.BASE_URL||"",db:{url:process.env.DB_URL,host:process.env.DB_HOST,name:process.env.DB_NAME,requestPlugin:process.env.DB_REQUEST_PLUGIN,meterType:process.env.DB_METER_TYPE},auth:{superUserId:process.env.AUTH_SUPER_USER_ID,tokenSecret:process.env.AUTH_TOKEN_SECRET||"change_this_secret"},dev:{userId:process.env.DEV_USER_ID||"dev",role:process.env.DEV_ROLE||"super"},cms:{title:process.env.CMS_TITLE,url:process.env.CMS_URL},assist:{url:process.env.ASSIST_URL,username:process.env.ASSIST_USERNAME,password:process.env.ASSIST_PASSWORD},mailgun:{apiKey:process.env.MAILGUN_API_KEY,domain:process.env.MAILGUN_DOMAIN},embedly:{apiKey:process.env.EMBEDLY_API_KEY},pdf:{templatesPath:n.resolve(t,"pdf")},email:{templatesPath:n.resolve(t,"email")},provider:{google:{clientId:process.env.GOOGLE_CLIENT_ID,clientSecret:process.env.GOOGLE_CLIENT_SECRET},instagram:{clientId:process.env.INSTAGRAM_CLIENT_ID,clientSecret:process.env.INSTAGRAM_CLIENT_SECRET},spotify:{clientId:process.env.SPOTIFY_CLIENT_ID,clientSecret:process.env.SPOTIFY_CLIENT_SECRET},stripe:{clientId:process.env.STRIPE_CLIENT_ID,clientSecret:process.env.STRIPE_CLIENT_SECRET,apiKey:process.env.STRIPE_API_KEY},twitter:{consumerKey:process.env.TWITTER_CONSUMER_KEY,consumerSecret:process.env.TWITTER_CONSUMER_SECRET,accessTokenKey:process.env.TWITTER_ACCESS_TOKEN_KEY,accessTokenSecret:process.env.TWITTER_ACCESS_TOKEN_SECRET},vimeo:{clientId:process.env.VIMEO_CLIENT_ID,clientSecret:process.env.VIMEO_CLIENT_SECRET}}};e.exports=s}).call(this,"/")},function(e,t){e.exports=require("password-hash")},function(e,t,r){"use strict";var n=r(1)(r(2));const s=r(0),a=r(22),i=r(8),o=r(3),c=r(4),u={google:"https://www.googleapis.com/oauth2/v4/token",instagram:"https://api.instagram.com/oauth/access_token",stripe:"https://connect.stripe.com/oauth/token",vimeo:"https://api.vimeo.com/oauth/access_token",spotify:"https://accounts.spotify.com/api/token"};e.exports=class{constructor(e){this.config=e}authUser(e,t){var r,a,i=this;return n.default.async((function(o){for(;;)switch(o.prev=o.next){case 0:if(!(s.get(i.config,"auth.superUserId","").split(",").map(e=>e.trim()).indexOf(t)>-1)){o.next=3;break}return o.abrupt("return",{id:t,active:!0,role:"super"});case 3:return o.next=5,n.default.awrap(c.connect(i.config,e).get("config"));case 5:if(r=o.sent,a=s.find(r.users,e=>e.email.toLowerCase()===t.toLowerCase())){o.next=9;break}throw Error("User not found: "+t);case 9:if(a.active){o.next=11;break}throw Error("User not active: "+t);case 11:return o.abrupt("return",a);case 12:case"end":return o.stop()}}),null,null,null,Promise)}authProvider(e,t={},r=null,c=!1){var l,d,p,f,h,m,g,y=this;return n.default.async((function(v){for(;;)switch(v.prev=v.next){case 0:return l=new o(y.config),v.next=3,n.default.awrap(l.get());case 3:return d=v.sent,p=s.merge({},y.config.provider[e],t||{}),(f=r?s.get(d,["userSettings",r,"provider",e]):s.get(d,["provider",e]))||(f={}),h={grant_type:c?"refresh_token":"authorization_code",code:t&&t.code?t.code:void 0,client_id:p.clientId,client_secret:p.clientSecret,redirect_uri:p.redirectUri,refresh_token:c?f.refresh_token:void 0},m=u[e],v.prev=9,v.next=12,n.default.awrap(i.post(m,a.stringify(h)));case 12:g=v.sent.data,v.next=18;break;case 15:throw v.prev=15,v.t0=v.catch(9),new Error(JSON.stringify(v.t0.response.data));case 18:if((f=s.merge({},f,g)).begins=Math.floor((new Date).getTime()/1e3),"google"!==e){v.next=30;break}return v.prev=21,v.next=24,n.default.awrap(i.get("https://www.googleapis.com/plus/v1/people/me?access_token="+f.access_token));case 24:f.user=v.sent.data,v.next=30;break;case 27:v.prev=27,v.t1=v.catch(21),console.error(v.t1);case 30:if("spotify"!==e){v.next=40;break}return v.prev=31,v.next=34,n.default.awrap(i.get("https://api.spotify.com/v1/me?access_token="+f.access_token));case 34:f.user=v.sent.data,v.next=40;break;case 37:v.prev=37,v.t2=v.catch(31),console.error(v.t2);case 40:return r?s.set(d,["userSettings",r,"provider",e],f):s.set(d,["provider",e],f),v.abrupt("return",l.set(d));case 42:case"end":return v.stop()}}),null,null,[[9,15],[21,27],[31,37]],Promise)}}},function(e,t){e.exports=require("querystring")},function(e,t,r){"use strict";const n=r(0),s=r(5),a=r(4),i=r(6);e.exports=class{constructor(e){this.config=e}getType(e,t){return new s((r,s)=>{t.sort=n.isString(t.sort)?`"${t.sort}"`:t.sort,a.connect(this.config).search("ecommerce",e,t).then(r,s)})}setType(e,t){return new s((r,n)=>{t.type=e,i.createOrUpdate(this.config,t).then(r,n)})}deleteType(e){return new s((t,r)=>{e=e.map(e=>({_id:e._id,_rev:e._rev,_deleted:!0})),i.chunkUpdate(this.config,e,1e3).then(t,r)})}getOrder(e){return new s((t,r)=>{a.connect(this.config).view("ecommerce","orderByOrderId",{key:e,include_docs:!0}).then(e=>{e.rows.length?t(e.rows[0].doc):r(new Error("Order not found"))},r)})}verifyDiscount(e){return new s((t,r)=>{a.connect(this.config).view("ecommerce","discountByCode",{keys:[e],include_docs:!0}).then(n=>{if(n.rows.length){const e=n.rows[0].doc,s=(new Date).getTime(),a=new Date(Date.parse(e.dateStart)).getTime(),i=new Date(Date.parse(e.dateEnd)).getTime();if(a>s)return void r(new Error("Discount not valid (not begun)"));if(i<s)return void r(new Error("Discount not valid (expired)"));t(e)}else r(new Error({statusCode:404,message:`Discount code not found (${e})`}))},r)})}}},function(e,t){e.exports=require("nodemailer")},function(e,t){e.exports=require("createsend-node")},function(e,t){e.exports=require("nodemailer-mailgun-transport")},function(e,t){e.exports=require("inky")},function(e,t){e.exports=require("mjml")},function(e,t){e.exports=require("mjml-core")},function(e,t){e.exports=require("mjml-validator")},function(e,t){e.exports=require("mjml-mailchimp")},function(e,t){e.exports=require("html-to-text")},function(e,t){e.exports=require("moment")},function(e,t){e.exports=require("i18n-iso-countries")},function(e,t){e.exports=require("sass")},function(e,t){e.exports=require("pug")},function(e,t){e.exports=require("ejs")},function(e,t){e.exports=require("juice")},function(e,t,r){"use strict";const n=r(0),s=r(5),a=r(40);e.exports=class{constructor(e){this.config=e}oembed(e){return new s((t,r)=>{const s=new a({key:this.config.embedly.apiKey}),i={urls:n.isArray(e)?e:[e],format:"json"};s.oembed(i,(e,n)=>{e?r(e):t(n)})})}}},function(e,t){e.exports=require("embedly")},function(e,t){e.exports=require("json-query")},function(e,t){e.exports=require("deep-diff")},function(e,t,r){"use strict";var n=r(1)(r(2));const s=r(0),a=r(17);e.exports=class{constructor(e){this.options=s.merge({},{client_id:null,access_token:null,version:"v1",host:"https://api.instagram.com"},e||{})}_request(e,t,r){var i,o,c=this;return n.default.async((function(u){for(;;)switch(u.prev=u.next){case 0:return(i={method:e,url:[c.options.host,c.options.version,t].join("/"),qs:{access_token:r.access_token||c.options.access_token,client_id:r.client_id||c.options.client_id}}).qs=s.extend({},i.qs,r),u.next=4,n.default.awrap(a(i));case 4:return o=u.sent,u.abrupt("return",JSON.parse(o));case 6:case"end":return u.stop()}}),null,null,null,Promise)}get(e,t){return this._request("GET",e,t)}}},function(e,t,r){"use strict";const n=r(45);e.exports=class{constructor(e){this.config=e}signToken(e,t={}){return n.sign(e,this.config.auth.tokenSecret,t)}verifyToken(e){return n.verify(e,this.config.auth.tokenSecret)}}},function(e,t){e.exports=require("jsonwebtoken")},function(e,t,r){"use strict";var n=r(1)(r(2));const s=r(9),a=r(7),i=r(0),o=r(47),c=r(17),u=r(48),l=r(14),d=r(3);e.exports=class{constructor(e){this.config=e}getTemplates(){var e,t=this;return n.default.async((function(s){for(;;)switch(s.prev=s.next){case 0:return e={},s.next=3,n.default.awrap(u(t.config.pdf.templatesPath));case 3:return s.sent.forEach(n=>{if(!/\.js$/.test(n))return;const s=n.replace(t.config.pdf.templatesPath+"/","").replace(".js","");e[s]=r(49)(n)}),s.abrupt("return",e);case 6:case"end":return s.stop()}}),null,null,null,Promise)}getPayload(e,t,r){var i,c,u,d,p=this;return n.default.async((function(f){for(;;)switch(f.prev=f.next){case 0:return i=o(s.readFileSync(a.join(p.config.pdf.templatesPath,e+".js"),"utf-8"),e+".js",{},!0),c=new l(p.config),f.next=4,n.default.awrap(c.entityList([t],{children:2,role:r}));case 4:if(0!==(u=f.sent.map(e=>e.doc)).length){f.next=7;break}throw new Error("Entity not found");case 7:return d=i(l.flattenValues(u)[0]),f.abrupt("return",d);case 9:case"end":return f.stop()}}),null,null,null,Promise)}getPdf(e){var t,r,s,a,o,u=this;return n.default.async((function(l){for(;;)switch(l.prev=l.next){case 0:return t=new d(u.config),l.next=3,n.default.awrap(t.get());case 3:return r=l.sent,s=i.get(r,"assets.slug",u.config.slug),a=`${u.config.assist.url}/${s}/pdf/download`,e="object"==typeof e?JSON.stringify(e).replace(/'/gi,"’"):e,l.next=9,n.default.awrap(c({method:"POST",uri:a,encoding:null,form:{payload:e}}));case 9:return o=l.sent,l.abrupt("return",o);case 11:case"end":return l.stop()}}),null,null,null,Promise)}}},function(e,t){e.exports=require("eval")},function(e,t){e.exports=require("recursive-readdir")},function(e,t){function r(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}r.keys=function(){return[]},r.resolve=r,e.exports=r,r.id=49},function(e,t,r){"use strict";var n=r(1)(r(2));const s=r(0),a=r(3);e.exports=class{constructor(e){return this.config=e,this}update(e){var t,r,i=this;return n.default.async((function(o){for(;;)switch(o.prev=o.next){case 0:return t=new a(i.config),o.next=3,n.default.awrap(t.get());case 3:return(r=o.sent).client=s.merge({},r.client,e),o.abrupt("return",t.set(r));case 6:case"end":return o.stop()}}),null,null,null,Promise)}}},function(e,t,r){"use strict";const n=r(5),s=r(52);e.exports=class{constructor(e){this.config=e,this.shippo=s(e.shippo.token)}getQuote(e,t){return new n((r,n)=>{const s={object_purpose:"QUOTE",zip:this.config.shippo.fromZip,country:this.config.shippo.fromCountry},a={object_purpose:"QUOTE",zip:e.zip,country:e.country,metadata:""};t.distance_unit="cm",t.mass_unit="kg",this.shippo.shipment.create({object_purpose:"QUOTE",address_from:s,address_to:a,parcel:t}).then(e=>{const t=(e,s)=>{("QUEUED"===e.object_status||"WAITING"===e.object_status)&&s<10?this.shippo.shipment.retrieve(e.object_id).then(e=>{t(e,s+1)}):this.shippo.shipment.rates(e.object_id).then(e=>{r(e)},e=>{console.error("There was an error retrieving rates : %s",e),n(e)})};t(e,0)},e=>{console.error("There was an error creating shipment: %s",e),n(e)})})}}},function(e,t){e.exports=require("shippo")},function(e,t,r){"use strict";var n=r(1)(r(2));const s=r(8),a=r(54),i=r(55),o=r(56),c=r(3);e.exports=class{constructor(e){this.config=e}getCatalog({shopLink:e,productLinkTemplate:t}){var r,u,l,d,p,f,h=this;return n.default.async((function(m){for(;;)switch(m.prev=m.next){case 0:return r=new c(h.config),m.next=3,n.default.awrap(r.get());case 3:return u=m.sent,m.next=6,n.default.awrap(s({url:`https://${u.provider.shopify.domain}.myshopify.com/api/graphql`,method:"post",headers:{"X-Shopify-Storefront-Access-Token":u.provider.shopify.storefrontAccessToken},data:{query:"\n          query {\n            shop {\n              name\n              primaryDomain {\n                url\n              }\n              description\n              products(first: 250) {\n                edges {\n                  node {\n                    id\n                    handle\n                    title\n                    description\n                    onlineStoreUrl\n                    images(first: 1) {\n                      edges {\n                        node {\n                          originalSrc\n                          transformedSrc\n                        }\n                      }\n                    }\n                    productType\n                    vendor\n                    availableForSale\n                    priceRange {\n                      minVariantPrice {\n                        amount\n                        currencyCode\n                      }\n                      maxVariantPrice {\n                        amount\n                        currencyCode\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        "}}));case 6:return l=m.sent.data.data,d=i.compile(t),p=l.shop.products.edges.map(e=>({"g:id":e.node.handle,"g:title":a.encode(e.node.title),"g:description":a.encode(e.node.description),"g:link":d({handle:e.node.handle}),"g:image_link":e.node.images.edges[0].node.originalSrc,"g:brand":e.node.vendor,"g:condition":"new","g:availability":e.node.availableForSale?"in stock":"out of stock","g:price":`${e.node.priceRange.minVariantPrice.amount} ${e.node.priceRange.minVariantPrice.currencyCode}`})),f=[{name:"title",text:l.shop.name},{name:"link",text:e},{name:"description",text:l.shop.description}],p.forEach(e=>{f.push({name:"item",children:e})}),m.abrupt("return",`<?xml version="1.0"?>\n    <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">\n      ${o({channel:f})}\n    </rss>`);case 12:case"end":return m.stop()}}),null,null,null,Promise)}}},function(e,t){e.exports=require("he")},function(e,t){e.exports=require("handlebars")},function(e,t){e.exports=require("jsontoxml")},function(e,t,r){"use strict";var n=r(1)(r(2));const s=r(0),a=r(58),i=r(5),o=r(59),c=r(3),u=r(13),l=r(4),d=r(6);e.exports=class{constructor(e){this.config=e,this.stripe=a(this.config.stripe.apiKey),this.email=new u(this.config),this.hashids=new o(this.config.slug,6,"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")}getSettings(){var e,t,r,s=this;return n.default.async((function(a){for(;;)switch(a.prev=a.next){case 0:return e=new c(s.config),a.next=3,n.default.awrap(e.get());case 3:t=a.sent,a.prev=4,r=t.module.ecommerce,a.next=11;break;case 8:throw a.prev=8,a.t0=a.catch(4),new Error(a.t0);case 11:a.prev=11,r.clientStripeAccountId=t.provider.stripe.stripe_user_id,a.next=18;break;case 15:throw a.prev=15,a.t1=a.catch(11),new Error(a.t1);case 18:return r.client=t.client,r.assets=t.assets,a.abrupt("return",r);case 21:case"end":return a.stop()}}),null,null,[[4,8],[11,15]],Promise)}checkout(e,t){return new i((r,n)=>{this.getSettings().then(a=>{const i=s.get(a,"createsend.checkoutSubscriberListId");t.subscribe&&i&&this.email.subscribe(t.customerDetails,"createsend",i).then(e=>{console.log(e)},e=>{console.error(e)}),this.findOrCreateCustomer(t.customerDetails.email,t).then(s=>{this.createOrder(t,s).then(t=>{this.updateOrCreateStripeCustomer(a.clientStripeAccountId,s,e,t).then(e=>{this.updateCustomer(s,e,t).then(s=>{this.createCharge(a,e,s,t).then(e=>{this.sendReceipt(a,s,t).then(i=>{e.messages.orderReceipt=i,this.sendNotification(a,s,t).then(t=>{e.messages.orderNotification=t,this.updateOrder(e).then(e=>{r(e)},n)},n)},n)},n)},n)},n)},n)},n)},n).catch(n)})}retrieveAccount(){return new i((e,t)=>{this.getSettings().then(r=>{this.stripe.accounts.retrieve(r.clientStripeAccountId).then(e,t)},t)})}refund(e,t){return new i((r,n)=>{this.getSettings().then(s=>{this.stripe.refunds.create({refund_application_fee:!0,charge:e.charge.id,amount:t},{stripe_account:s.clientStripeAccountId}).then(()=>{this.stripe.charges.retrieve(e.charge.id,{stripe_account:s.clientStripeAccountId}).then(t=>{e.charge.status=t.status,e.charge.amount=t.amount,e.charge.amountRefunded=t.amount_refunded,d.createOrUpdate(this.config,e).then(r,n)},n)},n)},n)})}findOrCreateCustomer(e,t){return new i((r,n)=>{l.connect(this.config).view("ecommerce","customerByEmail",{keys:[e],include_docs:!0}).then(e=>{if(e.rows.length)r(e.rows[0].doc);else{const e=JSON.stringify(new Date).replace(/"/g,""),s={type:"customer",createdAt:e,modifiedAt:e,email:t.customerDetails.email,name:t.customerDetails.name,phone:t.customerDetails.phone,billingAddress:t.billingAddress,shippingAddress:t.shippingAddress,orders:[]};l.connect(this.config).insert(s).then(e=>{s._id=e.id,s._rev=e.rev,r(s)},n)}},n)})}updateOrCreateStripeCustomer(e,t,r,n){return new i((s,a)=>{const i={source:r,email:n.customer.email,description:n.customer.name,metadata:{customer_id:t._id}};t.stripe&&t.stripe.customer.id?this.stripe.customers.update(t.stripe.customer.id,i,{stripe_account:e}).then(s,t=>{"StripeInvalidRequestError"===t.type&&"id"===t.param?this.stripe.customers.create(i,{stripe_account:e}).then(s,a):a(t)}):this.stripe.customers.create(i,{stripe_account:e}).then(s,a)})}createOrder(e,t){return new i((r,n)=>{const s=e.items.map(e=>({id:e.id,title:e.title.replace(/<br\s?>/gi," ").replace(/<\/?p>|<\/?span>/gi,""),price:e.price,quantity:e.quantity,metadata:e.metadata||{}})),a=JSON.stringify(new Date).replace(/"/g,""),i={type:"order",orderId:this.hashids.encode((new Date).getTime()),createdAt:a,modifiedAt:a,customer:{id:t._id,email:t.email,name:t.name},items:s,shippingMethod:{name:e.shippingMethod.name,amount:Number(e.shippingMethod.amount)},subtotal:Number(e.subtotal),tax:{rate:e.tax.rate||0,includedInPrice:e.tax.includedInPrice||!1,total:e.tax.total||0,show:e.tax.show||!1},discount:{code:e.discount.code||"",name:e.discount.name||"",total:e.discount.total||0},total:Number(e.total),billingAddress:e.billingAddress,shippingAddress:e.shippingAddress,messages:{},status:"pending",test:!0};l.connect(this.config).insert(i).then(e=>{i._id=e.id,i._rev=e.rev,r(i)},n)})}updateOrder(e){return new i((t,r)=>{l.connect(this.config).insert(e).then(r=>{e._rev=r.rev,t(e)},r)})}updateCustomer(e,t,r){return new i((n,s)=>{const a=JSON.stringify(new Date).replace(/"/g,"");e.modifiedAt=a,e.orders||(e.orders=[]),e.orders.push(r._id),e.stripe||(e.stripe={customer:{id:null}}),e.stripe.customer.id=t.id,l.connect(this.config).insert(e).then(t=>{e._rev=t.rev,n(e)},s)})}createCharge(e,t,r,n){return new i((a,i)=>{const o=100*Number(n.total),c={amount:o,currency:e.currency.iso.toLowerCase(),customer:t.id,capture:!0,description:n.orderId,metadata:{customer_id:r._id,order_id:n._id},statement_descriptor:s.kebabCase(e.storeName).toUpperCase(),application_fee:Math.ceil(.02*o)};this.stripe.charges.create(c,{stripe_account:e.clientStripeAccountId}).then(e=>{n.charge={paymentGateway:"stripe",id:e.id,status:e.status,currency:e.currency.toUpperCase(),amount:e.amount,amountRefunded:e.amount_refunded},n.test=!e.livemode,a(n)},i)})}sendReceipt(e,t,r){return new i((n,a)=>{const i={settings:e,order:r},o={from:`${e.emailSenderName} <${e.emailSenderAddress}>`,to:t.email,subject:`Your order at ${e.storeName} (${r.orderId})`},c=s.get(e,"assets.slug",this.config.slug);this.email.sendEmail(o,c+"/order-receipt",i).then(n,a)})}sendNotification(e,t,r){return new i((t,n)=>{const a={settings:e,order:r},i={from:`${e.emailSenderName} <${e.emailSenderAddress}>`,to:e.emailSenderAddress,subject:`New order at ${e.storeName} (${r.orderId})`},o=s.get(e,"assets.slug",this.config.slug);this.email.sendEmail(i,o+"/order-notification",a).then(t,n)})}}},function(e,t){e.exports=require("stripe")},function(e,t){e.exports=require("hashids")},function(e,t,r){"use strict";var n=r(1)(r(2));const s=r(0),a=r(4),i=r(3);e.exports=class{constructor(e){this.config=e}create(e){var t,r,s=this;return n.default.async((function(a){for(;;)switch(a.prev=a.next){case 0:return t=new i(s.config),a.next=3,n.default.awrap(t.get());case 3:return(r=a.sent).taxonomies.push(e),a.abrupt("return",t.set(r));case 6:case"end":return a.stop()}}),null,null,null,Promise)}read(e){var t,r,a,o=this;return n.default.async((function(c){for(;;)switch(c.prev=c.next){case 0:return t=new i(o.config),c.next=3,n.default.awrap(t.get());case 3:if(r=c.sent,a=s.find(r.taxonomies,{slug:e})){c.next=7;break}throw Error("Taxonomy not found: "+e);case 7:return c.abrupt("return",a);case 8:case"end":return c.stop()}}),null,null,null,Promise)}update(e){var t,r,a,o=this;return n.default.async((function(c){for(;;)switch(c.prev=c.next){case 0:return t=new i(o.config),c.next=3,n.default.awrap(t.get());case 3:if(r=c.sent,-1!==(a=s.findIndex(r.taxonomies,{slug:e.slug}))){c.next=7;break}throw Error("Taxonomy not found: "+e.slug);case 7:return r.taxonomies.splice(a,1,e),c.abrupt("return",t.set(r));case 9:case"end":return c.stop()}}),null,null,null,Promise)}delete(e){var t,r,a=this;return n.default.async((function(o){for(;;)switch(o.prev=o.next){case 0:return t=new i(a.config),o.next=3,n.default.awrap(t.get());case 3:return r=o.sent,e=s.isArray(e)?e:[e],r.taxonomies=r.taxonomies.filter(t=>-1===e.indexOf(t.slug)),o.abrupt("return",t.set(r));case 7:case"end":return o.stop()}}),null,null,null,Promise)}entitiesByTerm(e){var t,r,i,o,c=this;return n.default.async((function(u){for(;;)switch(u.prev=u.next){case 0:return t=a.connect(c.config),u.next=3,n.default.awrap(t.view("entity","byTaxonomyTerm",{keys:[e.id],group:!0}));case 3:if(r=u.sent.rows.map(e=>e.value)[0]){u.next=6;break}return u.abrupt("return",[]);case 6:return i=[],s.forEach(r,e=>{i=i.concat(e)}),i=s.uniq(i),u.next=11,n.default.awrap(t.fetch({keys:i,include_docs:!0}));case 11:return o=u.sent.rows.filter(e=>e.doc).map(e=>e.doc),u.abrupt("return",o);case 13:case"end":return u.stop()}}),null,null,null,Promise)}createTerm(e,t){var r,s=this;return n.default.async((function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,n.default.awrap(s.read(e));case 2:return(r=a.sent).terms.push(t),a.abrupt("return",s.update(r));case 5:case"end":return a.stop()}}),null,null,null,Promise)}updateTerm(e){var t,r=this;return n.default.async((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,n.default.awrap(r.entitiesByTerm(e));case 2:return t=(t=i.sent).map(t=>(t.fields=s.mapValues(t.fields,t=>("taxonomy"===t.type&&t.value&&(t.value.terms||(t.value.terms=[]),t.value.terms=t.value.terms.map(t=>(t.id===e.id&&(t.title=e.title,t.slug=e.slug),t.parents||(t.parents=[]),t.parents=t.parents.map(t=>(t.id===e.id&&(t.title=e.title,t.slug=e.slug),t)),t))),t)),t)),i.abrupt("return",a.connect(r.config).bulk({docs:t}));case 5:case"end":return i.stop()}}),null,null,null,Promise)}deleteTerm(e){var t,r=this;return n.default.async((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,n.default.awrap(r.entitiesByTerm(e));case 2:return t=(t=i.sent).map(t=>(t.fields=s.mapValues(t.fields,t=>("taxonomy"===t.type&&t.value&&(t.value.terms||(t.value.terms=[]),t.value.terms=t.value.terms.filter(t=>t.id!==e.id&&!(t.parents||[]).filter(t=>t.id===e.id).length)),t)),t)),i.abrupt("return",a.connect(r.config).bulk({docs:t}));case 5:case"end":return i.stop()}}),null,null,null,Promise)}}},function(e,t,r){"use strict";var n=r(1)(r(2));const s=r(5).promisifyAll(r(9)),a=r(11),i=r(4);e.exports=class{constructor(e){this.config=e}getDb(){var e,t=this;return n.default.async((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,n.default.awrap(i.connect(t.config).fetch({include_docs:!0}));case 2:return e=r.sent,r.abrupt("return",e);case 4:case"end":return r.stop()}}),null,null,null,Promise)}getChanges(){var e,t=this;return n.default.async((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,n.default.awrap(i.connect(t.config).changes({limit:50,include_docs:!0,filter:"tools/changesEntity"}));case 2:return e=r.sent,r.abrupt("return",e);case 4:case"end":return r.stop()}}),null,null,null,Promise)}importDb(e){var t,r,o,c,u,l=this;return n.default.async((function(d){for(;;)switch(d.prev=d.next){case 0:return t=l.config.db.name,d.next=3,n.default.awrap(s.readFileAsync(e.path));case 3:return r=d.sent,o=JSON.parse(r).rows.map(e=>{const{doc:t}=e;return delete t._rev,t}),d.next=7,n.default.awrap(s.unlinkAsync(e.path));case 7:return c=new a({url:l.config.db.url,plugins:["promises","retry"]}).db,d.prev=8,d.next=11,n.default.awrap(c.destroy(t));case 11:d.next=15;break;case 13:d.prev=13,d.t0=d.catch(8);case 15:return d.next=17,n.default.awrap(c.create(t));case 17:return d.next=19,n.default.awrap(i.connect(l.config,t).bulk({docs:o}));case 19:return u=d.sent,d.abrupt("return",u);case 21:case"end":return d.stop()}}),null,null,[[8,13]],Promise)}}},function(e,t,r){"use strict";var n=r(1)(r(2));const s=r(0),a=r(3);e.exports=class{constructor(e){return this.config=e,this}create(e){var t,r,s=this;return n.default.async((function(i){for(;;)switch(i.prev=i.next){case 0:return t=new a(s.config),i.next=3,n.default.awrap(t.get());case 3:return r=i.sent,e.id=e.id.toLowerCase(),e.email=e.email.toLowerCase(),r.users.push(e),i.abrupt("return",t.set(r));case 8:case"end":return i.stop()}}),null,null,null,Promise)}read(e){var t,r,i,o=this;return n.default.async((function(c){for(;;)switch(c.prev=c.next){case 0:return t=new a(o.config),c.next=3,n.default.awrap(t.get());case 3:if(r=c.sent,i=s.find(r.users,{id:e})){c.next=7;break}throw Error("User not found: "+e);case 7:return c.abrupt("return",i);case 8:case"end":return c.stop()}}),null,null,null,Promise)}update(e){var t,r,i,o=this;return n.default.async((function(c){for(;;)switch(c.prev=c.next){case 0:return t=new a(o.config),c.next=3,n.default.awrap(t.get());case 3:if(r=c.sent,-1!==(i=s.findIndex(r.users,{id:e.id}))){c.next=7;break}throw Error("User not found: "+e.id);case 7:return e.email=e.email.toLowerCase(),r.users.splice(i,1,e),c.abrupt("return",t.set(r));case 10:case"end":return c.stop()}}),null,null,null,Promise)}delete(e){var t,r,i=this;return n.default.async((function(o){for(;;)switch(o.prev=o.next){case 0:return t=new a(i.config),o.next=3,n.default.awrap(t.get());case 3:return r=o.sent,e=s.isArray(e)?e:[e],r.users=r.users.filter(t=>-1===e.indexOf(t.id)),o.abrupt("return",t.set(r));case 7:case"end":return o.stop()}}),null,null,null,Promise)}}}])}));
//# sourceMappingURL=api.js.map