diff --git a/404.html b/404.html index 748319d2..64823242 100644 --- a/404.html +++ b/404.html @@ -18,7 +18,7 @@ - + diff --git a/assets/js/08133570.197f603c.js b/assets/js/08133570.197f603c.js new file mode 100644 index 00000000..4c98700f --- /dev/null +++ b/assets/js/08133570.197f603c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_athenna_docs=self.webpackChunk_athenna_docs||[]).push([[6467],{4918:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>s,contentTitle:()=>o,default:()=>h,frontMatter:()=>l,metadata:()=>r,toc:()=>d});var t=i(5893),a=i(1151);const l={title:"Mail",sidebar_position:4,description:"See how to send emails in Athenna."},o="Mail",r={id:"digging-deeper/mail",title:"Mail",description:"See how to send emails in Athenna.",source:"@site/docs/digging-deeper/mail.mdx",sourceDirName:"digging-deeper",slug:"/digging-deeper/mail",permalink:"/docs/digging-deeper/mail",draft:!1,unlisted:!1,editUrl:"https://github.com/AthennaIO/Docs/tree/main/docs/digging-deeper/mail.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Mail",sidebar_position:4,description:"See how to send emails in Athenna."},sidebar:"tutorialSidebar",previous:{title:"Collections",permalink:"/docs/digging-deeper/collections"},next:{title:"Library Development",permalink:"/docs/digging-deeper/library-development"}},s={},d=[{value:"Introduction",id:"introduction",level:2},{value:"Installation",id:"installation",level:2},{value:"Configuration",id:"configuration",level:2},{value:"Available mail drivers",id:"available-mail-drivers",level:3},{value:"Sending mail",id:"sending-mail",level:2},{value:"Sending mail via a specific mailer",id:"sending-mail-via-a-specific-mailer",level:3},{value:"Sending Text and Markdown as content",id:"sending-text-and-markdown-as-content",level:3},{value:"Using view template as content",id:"using-view-template-as-content",level:3},{value:"Previewing mail templates in the browser",id:"previewing-mail-templates-in-the-browser",level:3}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,a.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"mail",children:"Mail"}),"\n",(0,t.jsx)(n.p,{children:"See how to send emails in Athenna."}),"\n",(0,t.jsx)(n.h2,{id:"introduction",children:"Introduction"}),"\n",(0,t.jsxs)(n.p,{children:["Sending email doesn't have to be complicated. Athenna provides a\nclean, simple email API powered by the popular ",(0,t.jsx)(n.a,{href:"https://nodemailer.com/",children:"nodemailer"}),"\npackage. Right now Athenna provide drivers for sending email via\nSMTP only, but in the future we will add support for Mailgun,\nMailtrap, Amazon SES, and sendmail."]}),"\n",(0,t.jsx)(n.h2,{id:"installation",children:"Installation"}),"\n",(0,t.jsxs)(n.p,{children:["First of all you need to install ",(0,t.jsx)(n.code,{children:"@athenna/mail"})," package\nand configure it. Artisan provides a very simple command to\ninstall and configure the mail library in your project.\nSimply run the following:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"node artisan install @athenna/mail\n"})}),"\n",(0,t.jsx)(n.p,{children:"The mail configurer will do the following operations in\nyour project:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Create the ",(0,t.jsx)(n.code,{children:"mail.ts"})," configuration file."]}),"\n",(0,t.jsxs)(n.li,{children:["Add all mail providers in your ",(0,t.jsx)(n.code,{children:".athennarc.json"})," file."]}),"\n",(0,t.jsxs)(n.li,{children:["Add mail environment variables to ",(0,t.jsx)(n.code,{children:".env"}),", ",(0,t.jsx)(n.code,{children:".env.test"})," and ",(0,t.jsx)(n.code,{children:".env.example"}),"."]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"configuration",children:"Configuration"}),"\n",(0,t.jsxs)(n.p,{children:["Athenna's email services may be configured via your application's\n",(0,t.jsx)(n.code,{children:"Path.config('mail.ts')"}),' configuration file. Each mailer configured\nwithin this file may have its own unique configuration and even\nits own unique "transport", allowing your application to use different\nemail services to send certain email messages.']}),"\n",(0,t.jsx)(n.h3,{id:"available-mail-drivers",children:"Available mail drivers"}),"\n",(0,t.jsxs)(n.p,{children:['Each mailer is powered by a "driver". The driver determines how\nthe mail will be transported. The following mail drivers are\navailable in every Athenna application. An entry for most of\nthese drivers is already present in your application\'s\n',(0,t.jsx)(n.code,{children:"Path.config('mail.ts')"})," configuration file, so be sure to\nreview this file to become familiar with its contents:"]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{style:{textAlign:"left"},children:"Driver name"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"Website"}),(0,t.jsx)(n.th,{style:{textAlign:"right"},children:"Built with"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:(0,t.jsx)(n.code,{children:"smtp"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:(0,t.jsx)(n.a,{href:"https://nodemailer.com/smtp/",children:"https://nodemailer.com/smtp/"})}),(0,t.jsx)(n.td,{style:{textAlign:"right"},children:(0,t.jsx)(n.a,{href:"https://www.npmjs.com/package/nodemailer",children:"nodemailer"})})]})})]}),"\n",(0,t.jsx)(n.admonition,{type:"note",children:(0,t.jsxs)(n.p,{children:["Athenna has another driver called ",(0,t.jsx)(n.code,{children:"fake"})," that is very helpful when running tests.\nThe ",(0,t.jsx)(n.code,{children:"fake"})," driver got the same signature of all other drivers, but it don't execute\nany operation when calling executors methods like ",(0,t.jsx)(n.code,{children:"send()"}),", which is perfect to use\nwithin the ",(0,t.jsx)(n.a,{href:"/docs/testing/mocking",children:(0,t.jsx)(n.code,{children:"Mock"})})," class. For more information\nabout the ",(0,t.jsx)(n.code,{children:"FakeDriver"}),", take a look at the\n",(0,t.jsx)(n.a,{href:"/docs/testing/mocking#mocking-mail",children:"mocking mail documentation section."})]})}),"\n",(0,t.jsx)(n.h2,{id:"sending-mail",children:"Sending mail"}),"\n",(0,t.jsx)(n.p,{children:"Let's see the simplest way to send a mail using Mail facade:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"import { Mail } from '@athenna/mail'\n\nawait Mail.from('support@athenna.io')\n .to('user@gmail.com')\n .content('

Mail content

')\n .send()\n"})}),"\n",(0,t.jsx)(n.p,{children:'You can add "to", "cc" and "bcc" recipientes by chaining\ntheir respective method together:'}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"await Mail.from('support@athenna.io')\n .to('user@gmail.com')\n .cc('txsoura@athenna.io')\n .bcc('support@athenna.io')\n .content('

Mail content

')\n .send()\n"})}),"\n",(0,t.jsx)(n.h3,{id:"sending-mail-via-a-specific-mailer",children:"Sending mail via a specific mailer"}),"\n",(0,t.jsxs)(n.p,{children:["By default, Athenna will send email using the mailer configured\nas the ",(0,t.jsx)(n.code,{children:"default"})," mailer in your application's ",(0,t.jsx)(n.code,{children:"mail"})," configuration\nfile. However, you may use the ",(0,t.jsx)(n.code,{children:"mailer()"})," method to send a message\nusing a specific mailer configuration:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"await Mail.mailer('my-mailer') \ud83d\udc48\n .from('support@athenna.io')\n .to('lenon@athenna.io')\n .content('Mail content')\n .send()\n"})}),"\n",(0,t.jsx)(n.h3,{id:"sending-text-and-markdown-as-content",children:"Sending Text and Markdown as content"}),"\n",(0,t.jsxs)(n.p,{children:["To send text as the content of the mail, you can set the\n",(0,t.jsx)(n.code,{children:"type"})," property in second argument:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"await Mail.mailer('my-mailer')\n .from('support@athenna.io')\n .to('lenon@athenna.io')\n .content('Mail content', { type: 'text' }) \ud83d\udc48\n .send()\n"})}),"\n",(0,t.jsxs)(n.p,{children:["And for markdowns you can use the ",(0,t.jsx)(n.code,{children:"markdown"})," type:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"await Mail.mailer('my-mailer')\n .from('support@athenna.io')\n .to('lenon@athenna.io')\n .content('# Mail content', { type: 'markdown' }) \ud83d\udc48\n .send()\n"})}),"\n",(0,t.jsx)(n.h3,{id:"using-view-template-as-content",children:"Using view template as content"}),"\n",(0,t.jsxs)(n.p,{children:["The mail component is integrated with the view component to be\nable to render and send a view as the body of the email. To do\nso you can use the ",(0,t.jsx)(n.code,{children:"view()"})," method of the Mail facade:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"const userEmail = 'lenon@athenna.io'\n\nawait Mail.from('support@athenna.io')\n .to(userEmail)\n .cc('mailer1@athenna.io, mailer2@athenna.io')\n .bcc('mailer3@athenna.io, mailer4@athenna.io')\n .content('This is the mail body')\n .view('mail/welcome', { email: userEmail }) \ud83d\udc48\n .send()\n"})}),"\n",(0,t.jsxs)(n.p,{children:["Any data that you provide using the ",(0,t.jsx)(n.code,{children:"Mail"})," facade will be\navailable to you in your view:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-html",metastring:"title=\"Path.views('mail/welcome.edge')\"",children:"\x3c!-- Provided by you also but using Mail facade --\x3e\n

{{ to }}

\n

{{ cc }}

\n

{{ bcc }}

\n

{{ from }}

\n

{{ content }}

\n\n\x3c!-- Provided by you in second argument --\x3e\n

{{ email }}

\n"})}),"\n",(0,t.jsx)(n.h3,{id:"previewing-mail-templates-in-the-browser",children:"Previewing mail templates in the browser"}),"\n",(0,t.jsxs)(n.p,{children:["When designing a mailable's template, it is convenient to quickly\npreview the rendered mailable in your browser like a typical\nEdge template. For this reason, Athenna allows you to return any\nmailable directly from a route using the ",(0,t.jsx)(n.code,{children:"Route.view()"})," method,\nallowing you to quickly preview its design without needing to\nsend it to an actual email address:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",metastring:"title=\"Path.routes('http.ts')\"",children:"Route.view('/mailable', 'mail.welcome', { email: 'lenon@athenna.io' })\n"})})]})}function h(e={}){const{wrapper:n}={...(0,a.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},1151:(e,n,i)=>{i.d(n,{Z:()=>r,a:()=>o});var t=i(7294);const a={},l=t.createContext(a);function o(e){const n=t.useContext(l);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),t.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/08133570.1d3d9f95.js b/assets/js/08133570.1d3d9f95.js deleted file mode 100644 index c1b10954..00000000 --- a/assets/js/08133570.1d3d9f95.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_athenna_docs=self.webpackChunk_athenna_docs||[]).push([[6467],{4918:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>s,contentTitle:()=>r,default:()=>h,frontMatter:()=>l,metadata:()=>o,toc:()=>d});var t=i(5893),a=i(1151);const l={title:"Mail",sidebar_position:4,description:"See how to send emails in Athenna."},r="Mail",o={id:"digging-deeper/mail",title:"Mail",description:"See how to send emails in Athenna.",source:"@site/docs/digging-deeper/mail.mdx",sourceDirName:"digging-deeper",slug:"/digging-deeper/mail",permalink:"/docs/digging-deeper/mail",draft:!1,unlisted:!1,editUrl:"https://github.com/AthennaIO/Docs/tree/main/docs/digging-deeper/mail.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Mail",sidebar_position:4,description:"See how to send emails in Athenna."},sidebar:"tutorialSidebar",previous:{title:"Collections",permalink:"/docs/digging-deeper/collections"},next:{title:"Library Development",permalink:"/docs/digging-deeper/library-development"}},s={},d=[{value:"Introduction",id:"introduction",level:2},{value:"Installation",id:"installation",level:2},{value:"Configuration",id:"configuration",level:2},{value:"Available mail drivers",id:"available-mail-drivers",level:3},{value:"Sending mail",id:"sending-mail",level:2},{value:"Sending mail via a specific mailer",id:"sending-mail-via-a-specific-mailer",level:3},{value:"Sending HTML and Markdown as content",id:"sending-html-and-markdown-as-content",level:3},{value:"Using view template as content",id:"using-view-template-as-content",level:3},{value:"Previewing mail templates in the browser",id:"previewing-mail-templates-in-the-browser",level:3}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,a.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"mail",children:"Mail"}),"\n",(0,t.jsx)(n.p,{children:"See how to send emails in Athenna."}),"\n",(0,t.jsx)(n.h2,{id:"introduction",children:"Introduction"}),"\n",(0,t.jsx)(n.p,{children:"Sending email doesn't have to be complicated. Athenna provides a\nclean, simple email API powered by the popular [nodemailer] package.\nRight now Athenna provide drivers for sending email via SMTP, only\nbut in the future we will add support for Mailgun, Mailtrap,\nAmazon SES, and sendmail."}),"\n",(0,t.jsx)(n.h2,{id:"installation",children:"Installation"}),"\n",(0,t.jsxs)(n.p,{children:["First of all you need to install ",(0,t.jsx)(n.code,{children:"@athenna/mail"})," package\nand configure it. Artisan provides a very simple command to\ninstall and configure the mail library in your project.\nSimply run the following:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"node artisan install @athenna/mail\n"})}),"\n",(0,t.jsx)(n.p,{children:"The mail configurer will do the following operations in\nyour project:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Create the ",(0,t.jsx)(n.code,{children:"mail.ts"})," configuration file."]}),"\n",(0,t.jsxs)(n.li,{children:["Add all mail providers in your ",(0,t.jsx)(n.code,{children:".athennarc.json"})," file."]}),"\n",(0,t.jsxs)(n.li,{children:["Add mail environment variables to ",(0,t.jsx)(n.code,{children:".env"}),", ",(0,t.jsx)(n.code,{children:".env.test"})," and ",(0,t.jsx)(n.code,{children:".env.example"}),"."]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"configuration",children:"Configuration"}),"\n",(0,t.jsxs)(n.p,{children:["Athenna's email services may be configured via your application's\n",(0,t.jsx)(n.code,{children:"Path.config('mail.ts')"}),' configuration file. Each mailer configured\nwithin this file may have its own unique configuration and even\nits own unique "transport", allowing your application to use different\nemail services to send certain email messages.']}),"\n",(0,t.jsx)(n.h3,{id:"available-mail-drivers",children:"Available mail drivers"}),"\n",(0,t.jsxs)(n.p,{children:['Each mailer is powered by a "driver". The driver determines how\nthe mail will be transported. The following mail drivers are\navailable in every Athenna application. An entry for most of\nthese drivers is already present in your application\'s\n',(0,t.jsx)(n.code,{children:"Path.config('mail.ts')"})," configuration file, so be sure to\nreview this file to become familiar with its contents:"]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{style:{textAlign:"left"},children:"Driver name"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"Website"}),(0,t.jsx)(n.th,{style:{textAlign:"right"},children:"Built with"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:(0,t.jsx)(n.code,{children:"smtp"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:(0,t.jsx)(n.a,{href:"https://nodemailer.com/smtp/",children:"https://nodemailer.com/smtp/"})}),(0,t.jsx)(n.td,{style:{textAlign:"right"},children:(0,t.jsx)(n.a,{href:"https://www.npmjs.com/package/nodemailer",children:"nodemailer"})})]})})]}),"\n",(0,t.jsx)(n.admonition,{type:"note",children:(0,t.jsxs)(n.p,{children:["Athenna has another driver called ",(0,t.jsx)(n.code,{children:"fake"})," that is very helpful when running tests.\nThe ",(0,t.jsx)(n.code,{children:"fake"})," driver got the same signature of all other drivers, but it don't execute\nany operation when calling executors methods like ",(0,t.jsx)(n.code,{children:"send()"}),", which is perfect to use\nwithin the ",(0,t.jsx)(n.a,{href:"/docs/testing/mocking",children:(0,t.jsx)(n.code,{children:"Mock"})})," class. For more information\nabout the ",(0,t.jsx)(n.code,{children:"FakeDriver"}),", take a look at the\n",(0,t.jsx)(n.a,{href:"/docs/testing/mocking#mocking-mail",children:"mocking mail documentation section."})]})}),"\n",(0,t.jsx)(n.h2,{id:"sending-mail",children:"Sending mail"}),"\n",(0,t.jsx)(n.p,{children:"Let's see the simplest way to send a mail using Mail facade:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"import { Mail } from '@athenna/mail'\n\nawait Mail.from('support@athenna.io')\n .to('user@gmail.com')\n .text('Mail content')\n .send()\n"})}),"\n",(0,t.jsx)(n.p,{children:'You can add "to", "cc" and "bcc" recipientes by chaining\ntheir respective method together:'}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"await Mail.from('support@athenna.io')\n .to('user@gmail.com')\n .cc('txsoura@athenna.io')\n .bcc('support@athenna.io')\n .text('Mail content')\n .send()\n"})}),"\n",(0,t.jsx)(n.h3,{id:"sending-mail-via-a-specific-mailer",children:"Sending mail via a specific mailer"}),"\n",(0,t.jsxs)(n.p,{children:["By default, Athenna will send email using the mailer configured\nas the ",(0,t.jsx)(n.code,{children:"default"})," mailer in your application's ",(0,t.jsx)(n.code,{children:"mail"})," configuration\nfile. However, you may use the ",(0,t.jsx)(n.code,{children:"mailer()"})," method to send a message\nusing a specific mailer configuration:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"await Mail.mailer('my-mailer')\n .from('support@athenna.io')\n .to('lenon@athenna.io')\n .text('Mail content')\n .send()\n"})}),"\n",(0,t.jsx)(n.h3,{id:"sending-html-and-markdown-as-content",children:"Sending HTML and Markdown as content"}),"\n",(0,t.jsxs)(n.p,{children:["To send HTML as the content of the mail, you can use the ",(0,t.jsx)(n.code,{children:"html()"}),"\nmethod:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"await Mail.mailer('my-mailer')\n .from('support@athenna.io')\n .to('lenon@athenna.io')\n .html('

Mail content

')\n .send()\n"})}),"\n",(0,t.jsxs)(n.p,{children:["And for markdowns you can use the ",(0,t.jsx)(n.code,{children:"markdown()"})," method:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"await Mail.mailer('my-mailer')\n .from('support@athenna.io')\n .to('lenon@athenna.io')\n .markdown('# Mail content')\n .send()\n"})}),"\n",(0,t.jsx)(n.h3,{id:"using-view-template-as-content",children:"Using view template as content"}),"\n",(0,t.jsxs)(n.p,{children:["The mail component is integrated with the view component to be\nable to render and send a view as the body of the email. To do\nso you can use the ",(0,t.jsx)(n.code,{children:"view()"})," method of the Mail facade:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"const userEmail = 'lenon@athenna.io'\n\nawait Mail.from('support@athenna.io')\n .to(userEmail)\n .view('mail/welcome', { email: userEmail })\n .send()\n"})}),"\n",(0,t.jsx)(n.h3,{id:"previewing-mail-templates-in-the-browser",children:"Previewing mail templates in the browser"}),"\n",(0,t.jsxs)(n.p,{children:["When designing a mailable's template, it is convenient to quickly\npreview the rendered mailable in your browser like a typical\nEdge template. For this reason, Athenna allows you to return any\nmailable directly from a route closure or controller by using the\n",(0,t.jsx)(n.code,{children:"response.view()"})," method, allowing you to quickly preview its\ndesign without needing to send it to an actual email address:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",metastring:"title=\"Path.routes('http.ts')\"",children:"Route.get('/mailable', ({ response }) => {\n return response.view('mail.welcome', { email: 'lenon@athenna.io' })\n})\n"})})]})}function h(e={}){const{wrapper:n}={...(0,a.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},1151:(e,n,i)=>{i.d(n,{Z:()=>o,a:()=>r});var t=i(7294);const a={},l=t.createContext(a);function r(e){const n=t.useContext(l);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),t.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.4653fca8.js b/assets/js/runtime~main.54fd68e0.js similarity index 98% rename from assets/js/runtime~main.4653fca8.js rename to assets/js/runtime~main.54fd68e0.js index b05f31d6..efc51fcd 100644 --- a/assets/js/runtime~main.4653fca8.js +++ b/assets/js/runtime~main.54fd68e0.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,c,r,d,t={},f={};function b(e){var a=f[e];if(void 0!==a)return a.exports;var c=f[e]={exports:{}};return t[e].call(c.exports,c,c.exports,b),c.exports}b.m=t,e=[],b.O=(a,c,r,d)=>{if(!c){var t=1/0;for(l=0;l=d)&&Object.keys(b.O).every((e=>b.O[e](c[o])))?c.splice(o--,1):(f=!1,d0&&e[l-1][2]>d;l--)e[l]=e[l-1];e[l]=[c,r,d]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var d=Object.create(null);b.r(d);var t={};a=a||[null,c({}),c([]),c(c)];for(var f=2&r&&e;"object"==typeof f&&!~a.indexOf(f);f=c(f))Object.getOwnPropertyNames(f).forEach((a=>t[a]=()=>e[a]));return t.default=()=>e,b.d(d,t),d},b.d=(e,a)=>{for(var c in a)b.o(a,c)&&!b.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,c)=>(b.f[c](e,a),a)),[])),b.u=e=>"assets/js/"+({53:"935f2afb",110:"8416df86",134:"391d9c20",261:"reactPlayerKaltura",784:"ba3d4959",805:"84dac133",899:"1f33cfc6",1002:"60418129",1066:"e71332dd",1401:"bfc576a4",1535:"e2eeca55",1944:"3f163355",1977:"3aefb2a9",2121:"reactPlayerFacebook",2204:"f3e8f525",2206:"801e3691",2419:"94cba6ed",2546:"reactPlayerStreamable",2628:"77db9a17",3085:"1f391b9e",3237:"1df93b7f",3347:"f991d430",3594:"cbe663fe",3650:"30d27832",3743:"reactPlayerVimeo",3902:"98b8cc29",3942:"e6388bba",4085:"4ca25bb5",4088:"cc784980",4180:"25ef7947",4246:"28a593c7",4368:"a94703ab",4439:"reactPlayerYouTube",4464:"bfc34fa7",4667:"reactPlayerMixcloud",4677:"76be5683",4962:"8f88d278",5087:"22c3a07e",5378:"1bfe5704",5689:"ad6f9ff5",5691:"26455d6c",6011:"reactPlayerFilePlayer",6125:"reactPlayerSoundCloud",6216:"reactPlayerTwitch",6467:"08133570",6485:"f210ba15",6546:"3ebc3d67",6805:"1cb4e3ed",7291:"21dc2778",7454:"a4d3e054",7596:"reactPlayerDailyMotion",7664:"reactPlayerPreview",7806:"d295d49b",7868:"6459b84b",7918:"17896441",8043:"59190afd",8055:"reactPlayerWistia",8223:"50bfad63",8334:"a2c501c8",8518:"a7bd4aaa",8578:"d550161c",8794:"3fb3fb7f",8813:"a21dcd43",8888:"reactPlayerVidyard",8943:"0b6406e9",8984:"751a75f6",9022:"31058b07",9080:"2ab4562b",9192:"ead3bc46",9661:"5e95c892",9736:"c24fb5a2",9918:"62e3c86b"}[e]||e)+"."+{53:"81dce83d",110:"3199682b",134:"53d14b68",230:"f24d31b3",261:"a01c8f0d",360:"090aa725",762:"4ca7866e",784:"df025922",805:"b04bb491",899:"16c8544e",1002:"24976881",1066:"6c157557",1401:"a3b25428",1535:"bfe6cbe7",1644:"0dcfb256",1688:"9b5abf8f",1772:"072dd336",1944:"1f047cbf",1977:"4801e826",2027:"58a68e7f",2121:"29d829e4",2127:"edae4370",2204:"91cce953",2206:"37bd374e",2244:"581b5672",2419:"984b5c72",2546:"73717b36",2628:"8893f074",2924:"f6df9113",3085:"890bdb41",3237:"a3f54be7",3347:"e5ca1bed",3506:"9edd1dee",3594:"000adc1b",3601:"97f94c19",3650:"8e174e4b",3743:"7c82082c",3902:"018426d5",3942:"9c793527",4085:"93ace705",4088:"50d26df0",4148:"09d16561",4180:"e2795dcf",4246:"a6331d38",4368:"f6df80e0",4439:"0ed3e867",4464:"cc2205c4",4667:"628d2aad",4677:"2c91368a",4962:"b1b8a32a",5087:"4b4c4682",5131:"5e46ae6f",5254:"3eb9ebd8",5283:"99849d12",5373:"d484caaa",5378:"4503ab9a",5689:"80bf0e10",5691:"e57178ed",6011:"369ebcd2",6046:"05219399",6125:"a9caeb97",6216:"29de27b3",6254:"534a8984",6278:"afd805f6",6284:"5a5433cb",6467:"1d3d9f95",6485:"c22ae324",6546:"458ba45d",6715:"e8cb9fbd",6805:"b885b82f",7111:"50abb3d1",7291:"4fa88f77",7454:"195d0863",7596:"738f2818",7664:"be88363a",7707:"39e71ec4",7740:"3c8b4943",7806:"155d0e62",7807:"45746fce",7868:"e461bf2d",7918:"20e27d3c",8043:"bc0b8c99",8055:"2f05a362",8189:"052631a2",8223:"aead9967",8334:"62e4cbe1",8365:"91257d46",8371:"753404ac",8518:"8ed155cd",8578:"53c5d3f1",8687:"a3f8295e",8794:"3eaa8c87",8813:"aedcb4db",8888:"3062dff8",8943:"ea213bb9",8984:"bb0a106f",9022:"3fa75a06",9080:"fc83a82a",9192:"ec825d14",9205:"1b6742f5",9469:"73800656",9610:"b4783ee8",9661:"98ec5397",9736:"2573f260",9816:"a49284d7",9918:"d055b31f"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),r={},d="@athenna/docs:",b.l=(e,a,c,t)=>{if(r[e])r[e].push(a);else{var f,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),l=0;l{f.onerror=f.onload=null,clearTimeout(s);var d=r[e];if(delete r[e],f.parentNode&&f.parentNode.removeChild(f),d&&d.forEach((e=>e(c))),a)return a(c)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=u.bind(null,f.onerror),f.onload=u.bind(null,f.onload),o&&document.head.appendChild(f)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/",b.gca=function(e){return e={17896441:"7918",60418129:"1002","935f2afb":"53","8416df86":"110","391d9c20":"134",reactPlayerKaltura:"261",ba3d4959:"784","84dac133":"805","1f33cfc6":"899",e71332dd:"1066",bfc576a4:"1401",e2eeca55:"1535","3f163355":"1944","3aefb2a9":"1977",reactPlayerFacebook:"2121",f3e8f525:"2204","801e3691":"2206","94cba6ed":"2419",reactPlayerStreamable:"2546","77db9a17":"2628","1f391b9e":"3085","1df93b7f":"3237",f991d430:"3347",cbe663fe:"3594","30d27832":"3650",reactPlayerVimeo:"3743","98b8cc29":"3902",e6388bba:"3942","4ca25bb5":"4085",cc784980:"4088","25ef7947":"4180","28a593c7":"4246",a94703ab:"4368",reactPlayerYouTube:"4439",bfc34fa7:"4464",reactPlayerMixcloud:"4667","76be5683":"4677","8f88d278":"4962","22c3a07e":"5087","1bfe5704":"5378",ad6f9ff5:"5689","26455d6c":"5691",reactPlayerFilePlayer:"6011",reactPlayerSoundCloud:"6125",reactPlayerTwitch:"6216","08133570":"6467",f210ba15:"6485","3ebc3d67":"6546","1cb4e3ed":"6805","21dc2778":"7291",a4d3e054:"7454",reactPlayerDailyMotion:"7596",reactPlayerPreview:"7664",d295d49b:"7806","6459b84b":"7868","59190afd":"8043",reactPlayerWistia:"8055","50bfad63":"8223",a2c501c8:"8334",a7bd4aaa:"8518",d550161c:"8578","3fb3fb7f":"8794",a21dcd43:"8813",reactPlayerVidyard:"8888","0b6406e9":"8943","751a75f6":"8984","31058b07":"9022","2ab4562b":"9080",ead3bc46:"9192","5e95c892":"9661",c24fb5a2:"9736","62e3c86b":"9918"}[e]||e,b.p+b.u(e)},(()=>{var e={1303:0,532:0};b.f.j=(a,c)=>{var r=b.o(e,a)?e[a]:void 0;if(0!==r)if(r)c.push(r[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var d=new Promise(((c,d)=>r=e[a]=[c,d]));c.push(r[2]=d);var t=b.p+b.u(a),f=new Error;b.l(t,(c=>{if(b.o(e,a)&&(0!==(r=e[a])&&(e[a]=void 0),r)){var d=c&&("load"===c.type?"missing":c.type),t=c&&c.target&&c.target.src;f.message="Loading chunk "+a+" failed.\n("+d+": "+t+")",f.name="ChunkLoadError",f.type=d,f.request=t,r[1](f)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,c)=>{var r,d,t=c[0],f=c[1],o=c[2],n=0;if(t.some((a=>0!==e[a]))){for(r in f)b.o(f,r)&&(b.m[r]=f[r]);if(o)var l=o(b)}for(a&&a(c);n{"use strict";var e,a,c,r,d,t={},f={};function b(e){var a=f[e];if(void 0!==a)return a.exports;var c=f[e]={exports:{}};return t[e].call(c.exports,c,c.exports,b),c.exports}b.m=t,e=[],b.O=(a,c,r,d)=>{if(!c){var t=1/0;for(l=0;l=d)&&Object.keys(b.O).every((e=>b.O[e](c[o])))?c.splice(o--,1):(f=!1,d0&&e[l-1][2]>d;l--)e[l]=e[l-1];e[l]=[c,r,d]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var d=Object.create(null);b.r(d);var t={};a=a||[null,c({}),c([]),c(c)];for(var f=2&r&&e;"object"==typeof f&&!~a.indexOf(f);f=c(f))Object.getOwnPropertyNames(f).forEach((a=>t[a]=()=>e[a]));return t.default=()=>e,b.d(d,t),d},b.d=(e,a)=>{for(var c in a)b.o(a,c)&&!b.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,c)=>(b.f[c](e,a),a)),[])),b.u=e=>"assets/js/"+({53:"935f2afb",110:"8416df86",134:"391d9c20",261:"reactPlayerKaltura",784:"ba3d4959",805:"84dac133",899:"1f33cfc6",1002:"60418129",1066:"e71332dd",1401:"bfc576a4",1535:"e2eeca55",1944:"3f163355",1977:"3aefb2a9",2121:"reactPlayerFacebook",2204:"f3e8f525",2206:"801e3691",2419:"94cba6ed",2546:"reactPlayerStreamable",2628:"77db9a17",3085:"1f391b9e",3237:"1df93b7f",3347:"f991d430",3594:"cbe663fe",3650:"30d27832",3743:"reactPlayerVimeo",3902:"98b8cc29",3942:"e6388bba",4085:"4ca25bb5",4088:"cc784980",4180:"25ef7947",4246:"28a593c7",4368:"a94703ab",4439:"reactPlayerYouTube",4464:"bfc34fa7",4667:"reactPlayerMixcloud",4677:"76be5683",4962:"8f88d278",5087:"22c3a07e",5378:"1bfe5704",5689:"ad6f9ff5",5691:"26455d6c",6011:"reactPlayerFilePlayer",6125:"reactPlayerSoundCloud",6216:"reactPlayerTwitch",6467:"08133570",6485:"f210ba15",6546:"3ebc3d67",6805:"1cb4e3ed",7291:"21dc2778",7454:"a4d3e054",7596:"reactPlayerDailyMotion",7664:"reactPlayerPreview",7806:"d295d49b",7868:"6459b84b",7918:"17896441",8043:"59190afd",8055:"reactPlayerWistia",8223:"50bfad63",8334:"a2c501c8",8518:"a7bd4aaa",8578:"d550161c",8794:"3fb3fb7f",8813:"a21dcd43",8888:"reactPlayerVidyard",8943:"0b6406e9",8984:"751a75f6",9022:"31058b07",9080:"2ab4562b",9192:"ead3bc46",9661:"5e95c892",9736:"c24fb5a2",9918:"62e3c86b"}[e]||e)+"."+{53:"81dce83d",110:"3199682b",134:"53d14b68",230:"f24d31b3",261:"a01c8f0d",360:"090aa725",762:"4ca7866e",784:"df025922",805:"b04bb491",899:"16c8544e",1002:"24976881",1066:"6c157557",1401:"a3b25428",1535:"bfe6cbe7",1644:"0dcfb256",1688:"9b5abf8f",1772:"072dd336",1944:"1f047cbf",1977:"4801e826",2027:"58a68e7f",2121:"29d829e4",2127:"edae4370",2204:"91cce953",2206:"37bd374e",2244:"581b5672",2419:"984b5c72",2546:"73717b36",2628:"8893f074",2924:"f6df9113",3085:"890bdb41",3237:"a3f54be7",3347:"e5ca1bed",3506:"9edd1dee",3594:"000adc1b",3601:"97f94c19",3650:"8e174e4b",3743:"7c82082c",3902:"018426d5",3942:"9c793527",4085:"93ace705",4088:"50d26df0",4148:"09d16561",4180:"e2795dcf",4246:"a6331d38",4368:"f6df80e0",4439:"0ed3e867",4464:"cc2205c4",4667:"628d2aad",4677:"2c91368a",4962:"b1b8a32a",5087:"4b4c4682",5131:"5e46ae6f",5254:"3eb9ebd8",5283:"99849d12",5373:"d484caaa",5378:"4503ab9a",5689:"80bf0e10",5691:"e57178ed",6011:"369ebcd2",6046:"05219399",6125:"a9caeb97",6216:"29de27b3",6254:"534a8984",6278:"afd805f6",6284:"5a5433cb",6467:"197f603c",6485:"c22ae324",6546:"458ba45d",6715:"e8cb9fbd",6805:"b885b82f",7111:"50abb3d1",7291:"4fa88f77",7454:"195d0863",7596:"738f2818",7664:"be88363a",7707:"39e71ec4",7740:"3c8b4943",7806:"155d0e62",7807:"45746fce",7868:"e461bf2d",7918:"20e27d3c",8043:"bc0b8c99",8055:"2f05a362",8189:"052631a2",8223:"aead9967",8334:"62e4cbe1",8365:"91257d46",8371:"753404ac",8518:"8ed155cd",8578:"53c5d3f1",8687:"a3f8295e",8794:"3eaa8c87",8813:"aedcb4db",8888:"3062dff8",8943:"ea213bb9",8984:"bb0a106f",9022:"3fa75a06",9080:"fc83a82a",9192:"ec825d14",9205:"1b6742f5",9469:"73800656",9610:"b4783ee8",9661:"98ec5397",9736:"2573f260",9816:"a49284d7",9918:"d055b31f"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),r={},d="@athenna/docs:",b.l=(e,a,c,t)=>{if(r[e])r[e].push(a);else{var f,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),l=0;l{f.onerror=f.onload=null,clearTimeout(s);var d=r[e];if(delete r[e],f.parentNode&&f.parentNode.removeChild(f),d&&d.forEach((e=>e(c))),a)return a(c)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=u.bind(null,f.onerror),f.onload=u.bind(null,f.onload),o&&document.head.appendChild(f)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/",b.gca=function(e){return e={17896441:"7918",60418129:"1002","935f2afb":"53","8416df86":"110","391d9c20":"134",reactPlayerKaltura:"261",ba3d4959:"784","84dac133":"805","1f33cfc6":"899",e71332dd:"1066",bfc576a4:"1401",e2eeca55:"1535","3f163355":"1944","3aefb2a9":"1977",reactPlayerFacebook:"2121",f3e8f525:"2204","801e3691":"2206","94cba6ed":"2419",reactPlayerStreamable:"2546","77db9a17":"2628","1f391b9e":"3085","1df93b7f":"3237",f991d430:"3347",cbe663fe:"3594","30d27832":"3650",reactPlayerVimeo:"3743","98b8cc29":"3902",e6388bba:"3942","4ca25bb5":"4085",cc784980:"4088","25ef7947":"4180","28a593c7":"4246",a94703ab:"4368",reactPlayerYouTube:"4439",bfc34fa7:"4464",reactPlayerMixcloud:"4667","76be5683":"4677","8f88d278":"4962","22c3a07e":"5087","1bfe5704":"5378",ad6f9ff5:"5689","26455d6c":"5691",reactPlayerFilePlayer:"6011",reactPlayerSoundCloud:"6125",reactPlayerTwitch:"6216","08133570":"6467",f210ba15:"6485","3ebc3d67":"6546","1cb4e3ed":"6805","21dc2778":"7291",a4d3e054:"7454",reactPlayerDailyMotion:"7596",reactPlayerPreview:"7664",d295d49b:"7806","6459b84b":"7868","59190afd":"8043",reactPlayerWistia:"8055","50bfad63":"8223",a2c501c8:"8334",a7bd4aaa:"8518",d550161c:"8578","3fb3fb7f":"8794",a21dcd43:"8813",reactPlayerVidyard:"8888","0b6406e9":"8943","751a75f6":"8984","31058b07":"9022","2ab4562b":"9080",ead3bc46:"9192","5e95c892":"9661",c24fb5a2:"9736","62e3c86b":"9918"}[e]||e,b.p+b.u(e)},(()=>{var e={1303:0,532:0};b.f.j=(a,c)=>{var r=b.o(e,a)?e[a]:void 0;if(0!==r)if(r)c.push(r[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var d=new Promise(((c,d)=>r=e[a]=[c,d]));c.push(r[2]=d);var t=b.p+b.u(a),f=new Error;b.l(t,(c=>{if(b.o(e,a)&&(0!==(r=e[a])&&(e[a]=void 0),r)){var d=c&&("load"===c.type?"missing":c.type),t=c&&c.target&&c.target.src;f.message="Loading chunk "+a+" failed.\n("+d+": "+t+")",f.name="ChunkLoadError",f.type=d,f.request=t,r[1](f)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,c)=>{var r,d,t=c[0],f=c[1],o=c[2],n=0;if(t.some((a=>0!==e[a]))){for(r in f)b.o(f,r)&&(b.m[r]=f[r]);if(o)var l=o(b)}for(a&&a(c);n - + diff --git a/docs/architecture-concepts/application-lifecycle.html b/docs/architecture-concepts/application-lifecycle.html index 03b57f2a..42b19236 100644 --- a/docs/architecture-concepts/application-lifecycle.html +++ b/docs/architecture-concepts/application-lifecycle.html @@ -18,7 +18,7 @@ - + diff --git a/docs/architecture-concepts/facades.html b/docs/architecture-concepts/facades.html index 97590083..a8cf7a69 100644 --- a/docs/architecture-concepts/facades.html +++ b/docs/architecture-concepts/facades.html @@ -18,7 +18,7 @@ - + diff --git a/docs/architecture-concepts/service-container.html b/docs/architecture-concepts/service-container.html index 2dead36f..d9549384 100644 --- a/docs/architecture-concepts/service-container.html +++ b/docs/architecture-concepts/service-container.html @@ -18,7 +18,7 @@ - + diff --git a/docs/architecture-concepts/service-providers.html b/docs/architecture-concepts/service-providers.html index 1ab1fd2f..ff0444d7 100644 --- a/docs/architecture-concepts/service-providers.html +++ b/docs/architecture-concepts/service-providers.html @@ -18,7 +18,7 @@ - + diff --git a/docs/cli-application/annotations.html b/docs/cli-application/annotations.html index 6c9f273a..2d1d8316 100644 --- a/docs/cli-application/annotations.html +++ b/docs/cli-application/annotations.html @@ -18,7 +18,7 @@ - + diff --git a/docs/cli-application/commands.html b/docs/cli-application/commands.html index 1876d73f..86172a3d 100644 --- a/docs/cli-application/commands.html +++ b/docs/cli-application/commands.html @@ -18,7 +18,7 @@ - + diff --git a/docs/cli-application/error-handling.html b/docs/cli-application/error-handling.html index f6ebdf9a..11950e22 100644 --- a/docs/cli-application/error-handling.html +++ b/docs/cli-application/error-handling.html @@ -18,7 +18,7 @@ - + diff --git a/docs/cli-application/publishing.html b/docs/cli-application/publishing.html index 37d841f5..28177f66 100644 --- a/docs/cli-application/publishing.html +++ b/docs/cli-application/publishing.html @@ -18,7 +18,7 @@ - + diff --git a/docs/cli-application/running.html b/docs/cli-application/running.html index a8cb556b..94f55d7d 100644 --- a/docs/cli-application/running.html +++ b/docs/cli-application/running.html @@ -18,7 +18,7 @@ - + diff --git a/docs/database/getting-started.html b/docs/database/getting-started.html index ed53b1e7..d7d026b1 100644 --- a/docs/database/getting-started.html +++ b/docs/database/getting-started.html @@ -18,7 +18,7 @@ - + diff --git a/docs/database/migrations.html b/docs/database/migrations.html index 8c1d7fdf..9c63f8c7 100644 --- a/docs/database/migrations.html +++ b/docs/database/migrations.html @@ -18,7 +18,7 @@ - + diff --git a/docs/database/query-builder.html b/docs/database/query-builder.html index 14e2c382..d1d9f7e2 100644 --- a/docs/database/query-builder.html +++ b/docs/database/query-builder.html @@ -18,7 +18,7 @@ - + diff --git a/docs/database/seeding.html b/docs/database/seeding.html index e0560041..98747e90 100644 --- a/docs/database/seeding.html +++ b/docs/database/seeding.html @@ -18,7 +18,7 @@ - + diff --git a/docs/digging-deeper/collections.html b/docs/digging-deeper/collections.html index 01b1f174..7f92330e 100644 --- a/docs/digging-deeper/collections.html +++ b/docs/digging-deeper/collections.html @@ -18,7 +18,7 @@ - + diff --git a/docs/digging-deeper/graceful-shutdown.html b/docs/digging-deeper/graceful-shutdown.html index 332d8a3d..ca684006 100644 --- a/docs/digging-deeper/graceful-shutdown.html +++ b/docs/digging-deeper/graceful-shutdown.html @@ -18,7 +18,7 @@ - + diff --git a/docs/digging-deeper/library-development.html b/docs/digging-deeper/library-development.html index 4d718e0d..1c75d609 100644 --- a/docs/digging-deeper/library-development.html +++ b/docs/digging-deeper/library-development.html @@ -18,7 +18,7 @@ - + diff --git a/docs/digging-deeper/mail.html b/docs/digging-deeper/mail.html index 610443a8..cd755bd8 100644 --- a/docs/digging-deeper/mail.html +++ b/docs/digging-deeper/mail.html @@ -18,7 +18,7 @@ - + @@ -26,10 +26,10 @@

See how to send emails in Athenna.

Introduction

Sending email doesn't have to be complicated. Athenna provides a -clean, simple email API powered by the popular [nodemailer] package. -Right now Athenna provide drivers for sending email via SMTP, only -but in the future we will add support for Mailgun, Mailtrap, -Amazon SES, and sendmail.

+clean, simple email API powered by the popular nodemailer +package. Right now Athenna provide drivers for sending email via +SMTP only, but in the future we will add support for Mailgun, +Mailtrap, Amazon SES, and sendmail.

Installation

First of all you need to install @athenna/mail package and configure it. Artisan provides a very simple command to @@ -65,34 +65,37 @@

Avail mocking mail documentation section.

Sending mail

Let's see the simplest way to send a mail using Mail facade:

-
import { Mail } from '@athenna/mail'

await Mail.from('support@athenna.io')
.to('user@gmail.com')
.text('Mail content')
.send()
+
import { Mail } from '@athenna/mail'

await Mail.from('support@athenna.io')
.to('user@gmail.com')
.content('<h1>Mail content</h1>')
.send()

You can add "to", "cc" and "bcc" recipientes by chaining their respective method together:

-
await Mail.from('support@athenna.io')
.to('user@gmail.com')
.cc('txsoura@athenna.io')
.bcc('support@athenna.io')
.text('Mail content')
.send()
+
await Mail.from('support@athenna.io')
.to('user@gmail.com')
.cc('txsoura@athenna.io')
.bcc('support@athenna.io')
.content('<h1>Mail content</h1>')
.send()

Sending mail via a specific mailer

By default, Athenna will send email using the mailer configured as the default mailer in your application's mail configuration file. However, you may use the mailer() method to send a message using a specific mailer configuration:

-
await Mail.mailer('my-mailer')
.from('support@athenna.io')
.to('lenon@athenna.io')
.text('Mail content')
.send()
-

Sending HTML and Markdown as content

-

To send HTML as the content of the mail, you can use the html() -method:

-
await Mail.mailer('my-mailer')
.from('support@athenna.io')
.to('lenon@athenna.io')
.html('<h1>Mail content</h1>')
.send()
-

And for markdowns you can use the markdown() method:

-
await Mail.mailer('my-mailer')
.from('support@athenna.io')
.to('lenon@athenna.io')
.markdown('# Mail content')
.send()
+
await Mail.mailer('my-mailer') 👈
.from('support@athenna.io')
.to('lenon@athenna.io')
.content('Mail content')
.send()
+

Sending Text and Markdown as content

+

To send text as the content of the mail, you can set the +type property in second argument:

+
await Mail.mailer('my-mailer')
.from('support@athenna.io')
.to('lenon@athenna.io')
.content('Mail content', { type: 'text' }) 👈
.send()
+

And for markdowns you can use the markdown type:

+
await Mail.mailer('my-mailer')
.from('support@athenna.io')
.to('lenon@athenna.io')
.content('# Mail content', { type: 'markdown' }) 👈
.send()

Using view template as content

The mail component is integrated with the view component to be able to render and send a view as the body of the email. To do so you can use the view() method of the Mail facade:

-
const userEmail = 'lenon@athenna.io'

await Mail.from('support@athenna.io')
.to(userEmail)
.view('mail/welcome', { email: userEmail })
.send()
+
const userEmail = 'lenon@athenna.io'

await Mail.from('support@athenna.io')
.to(userEmail)
.cc('mailer1@athenna.io, mailer2@athenna.io')
.bcc('mailer3@athenna.io, mailer4@athenna.io')
.content('This is the mail body')
.view('mail/welcome', { email: userEmail }) 👈
.send()
+

Any data that you provide using the Mail facade will be +available to you in your view:

+
Path.views('mail/welcome.edge')
<!-- Provided by you also but using Mail facade -->
<h1>{{ to }}</h1>
<h1>{{ cc }}</h1>
<h1>{{ bcc }}</h1>
<h1>{{ from }}</h1>
<h1>{{ content }}</h1>

<!-- Provided by you in second argument -->
<h1>{{ email }}</h1>

Previewing mail templates in the browser

When designing a mailable's template, it is convenient to quickly preview the rendered mailable in your browser like a typical Edge template. For this reason, Athenna allows you to return any -mailable directly from a route closure or controller by using the -response.view() method, allowing you to quickly preview its -design without needing to send it to an actual email address:

-
Path.routes('http.ts')
Route.get('/mailable', ({ response }) => {
return response.view('mail.welcome', { email: 'lenon@athenna.io' })
})
+mailable directly from a route using the Route.view() method, +allowing you to quickly preview its design without needing to +send it to an actual email address:

+
Path.routes('http.ts')
Route.view('/mailable', 'mail.welcome', { email: 'lenon@athenna.io' })
\ No newline at end of file diff --git a/docs/digging-deeper/repl.html b/docs/digging-deeper/repl.html index 180f0996..e9d7b360 100644 --- a/docs/digging-deeper/repl.html +++ b/docs/digging-deeper/repl.html @@ -18,7 +18,7 @@ - + diff --git a/docs/getting-started/athennarc-file.html b/docs/getting-started/athennarc-file.html index dce8fb26..2668d33e 100644 --- a/docs/getting-started/athennarc-file.html +++ b/docs/getting-started/athennarc-file.html @@ -18,7 +18,7 @@ - + diff --git a/docs/getting-started/configuration.html b/docs/getting-started/configuration.html index 9b8645ba..ab8544c3 100644 --- a/docs/getting-started/configuration.html +++ b/docs/getting-started/configuration.html @@ -18,7 +18,7 @@ - + diff --git a/docs/getting-started/directory-structure.html b/docs/getting-started/directory-structure.html index b1e026b7..9430cf29 100644 --- a/docs/getting-started/directory-structure.html +++ b/docs/getting-started/directory-structure.html @@ -18,7 +18,7 @@ - + diff --git a/docs/getting-started/installation.html b/docs/getting-started/installation.html index 30ec3a3b..9674882e 100644 --- a/docs/getting-started/installation.html +++ b/docs/getting-started/installation.html @@ -18,7 +18,7 @@ - + diff --git a/docs/orm/annotations.html b/docs/orm/annotations.html index fb583e16..b169c0ad 100644 --- a/docs/orm/annotations.html +++ b/docs/orm/annotations.html @@ -18,7 +18,7 @@ - + diff --git a/docs/orm/extending-models.html b/docs/orm/extending-models.html index 304b7f3c..8be48242 100644 --- a/docs/orm/extending-models.html +++ b/docs/orm/extending-models.html @@ -18,7 +18,7 @@ - + diff --git a/docs/orm/factories.html b/docs/orm/factories.html index 4c51061b..76d0050e 100644 --- a/docs/orm/factories.html +++ b/docs/orm/factories.html @@ -18,7 +18,7 @@ - + diff --git a/docs/orm/getting-started.html b/docs/orm/getting-started.html index 8c311bd5..da7726b6 100644 --- a/docs/orm/getting-started.html +++ b/docs/orm/getting-started.html @@ -18,7 +18,7 @@ - + diff --git a/docs/orm/query-builder.html b/docs/orm/query-builder.html index 14a47dab..4497f816 100644 --- a/docs/orm/query-builder.html +++ b/docs/orm/query-builder.html @@ -18,7 +18,7 @@ - + diff --git a/docs/orm/relationships.html b/docs/orm/relationships.html index 13dcea77..58133572 100644 --- a/docs/orm/relationships.html +++ b/docs/orm/relationships.html @@ -18,7 +18,7 @@ - + diff --git a/docs/rest-api-application/annotations.html b/docs/rest-api-application/annotations.html index 04bf919a..b7dc0398 100644 --- a/docs/rest-api-application/annotations.html +++ b/docs/rest-api-application/annotations.html @@ -18,7 +18,7 @@ - + diff --git a/docs/rest-api-application/controllers.html b/docs/rest-api-application/controllers.html index 869f602f..95051724 100644 --- a/docs/rest-api-application/controllers.html +++ b/docs/rest-api-application/controllers.html @@ -18,7 +18,7 @@ - + diff --git a/docs/rest-api-application/error-handling.html b/docs/rest-api-application/error-handling.html index 482a4032..4b2099dc 100644 --- a/docs/rest-api-application/error-handling.html +++ b/docs/rest-api-application/error-handling.html @@ -18,7 +18,7 @@ - + diff --git a/docs/rest-api-application/middlewares.html b/docs/rest-api-application/middlewares.html index cd43dba2..ae215fa0 100644 --- a/docs/rest-api-application/middlewares.html +++ b/docs/rest-api-application/middlewares.html @@ -18,7 +18,7 @@ - + diff --git a/docs/rest-api-application/rate-limiting.html b/docs/rest-api-application/rate-limiting.html index 26482757..fdab3d07 100644 --- a/docs/rest-api-application/rate-limiting.html +++ b/docs/rest-api-application/rate-limiting.html @@ -18,7 +18,7 @@ - + diff --git a/docs/rest-api-application/request-context.html b/docs/rest-api-application/request-context.html index c4466f3d..d2b8afd3 100644 --- a/docs/rest-api-application/request-context.html +++ b/docs/rest-api-application/request-context.html @@ -18,7 +18,7 @@ - + diff --git a/docs/rest-api-application/routing.html b/docs/rest-api-application/routing.html index 4750745a..afce9699 100644 --- a/docs/rest-api-application/routing.html +++ b/docs/rest-api-application/routing.html @@ -18,7 +18,7 @@ - + diff --git a/docs/rest-api-application/security-with-helmet.html b/docs/rest-api-application/security-with-helmet.html index 8b1b0d65..deebb960 100644 --- a/docs/rest-api-application/security-with-helmet.html +++ b/docs/rest-api-application/security-with-helmet.html @@ -18,7 +18,7 @@ - + diff --git a/docs/rest-api-application/static-files.html b/docs/rest-api-application/static-files.html index 324b3adc..e5d99974 100644 --- a/docs/rest-api-application/static-files.html +++ b/docs/rest-api-application/static-files.html @@ -18,7 +18,7 @@ - + diff --git a/docs/rest-api-application/swagger-documentation.html b/docs/rest-api-application/swagger-documentation.html index 2ad1bf8d..35dc7acc 100644 --- a/docs/rest-api-application/swagger-documentation.html +++ b/docs/rest-api-application/swagger-documentation.html @@ -18,7 +18,7 @@ - + diff --git a/docs/rest-api-application/tracing-requests.html b/docs/rest-api-application/tracing-requests.html index 9ad5df95..eee9006a 100644 --- a/docs/rest-api-application/tracing-requests.html +++ b/docs/rest-api-application/tracing-requests.html @@ -18,7 +18,7 @@ - + diff --git a/docs/rest-api-application/views.html b/docs/rest-api-application/views.html index ed2ddec3..02378812 100644 --- a/docs/rest-api-application/views.html +++ b/docs/rest-api-application/views.html @@ -18,7 +18,7 @@ - + diff --git a/docs/testing/annotations.html b/docs/testing/annotations.html index 65a4bca0..8e89dcbd 100644 --- a/docs/testing/annotations.html +++ b/docs/testing/annotations.html @@ -18,7 +18,7 @@ - + diff --git a/docs/testing/cli-tests.html b/docs/testing/cli-tests.html index 79f5f56a..033dbd76 100644 --- a/docs/testing/cli-tests.html +++ b/docs/testing/cli-tests.html @@ -18,7 +18,7 @@ - + diff --git a/docs/testing/getting-started.html b/docs/testing/getting-started.html index 0bba94a4..a0e4d00c 100644 --- a/docs/testing/getting-started.html +++ b/docs/testing/getting-started.html @@ -18,7 +18,7 @@ - + diff --git a/docs/testing/mocking.html b/docs/testing/mocking.html index 3cf9c4bb..0e5908a1 100644 --- a/docs/testing/mocking.html +++ b/docs/testing/mocking.html @@ -18,7 +18,7 @@ - + diff --git a/docs/testing/rest-api-testing.html b/docs/testing/rest-api-testing.html index f3a58476..bd2d6dd0 100644 --- a/docs/testing/rest-api-testing.html +++ b/docs/testing/rest-api-testing.html @@ -18,7 +18,7 @@ - + diff --git a/docs/the-basics/compilation.html b/docs/the-basics/compilation.html index d94df6b4..86705a68 100644 --- a/docs/the-basics/compilation.html +++ b/docs/the-basics/compilation.html @@ -18,7 +18,7 @@ - + diff --git a/docs/the-basics/deployment.html b/docs/the-basics/deployment.html index d6dd4bf7..06687320 100644 --- a/docs/the-basics/deployment.html +++ b/docs/the-basics/deployment.html @@ -18,7 +18,7 @@ - + diff --git a/docs/the-basics/helpers.html b/docs/the-basics/helpers.html index e7a64607..521b2b75 100644 --- a/docs/the-basics/helpers.html +++ b/docs/the-basics/helpers.html @@ -18,7 +18,7 @@ - + diff --git a/docs/the-basics/logging.html b/docs/the-basics/logging.html index 48b578ee..8652049b 100644 --- a/docs/the-basics/logging.html +++ b/docs/the-basics/logging.html @@ -18,7 +18,7 @@ - + diff --git a/index.html b/index.html index 146c49a3..588183e6 100644 --- a/index.html +++ b/index.html @@ -18,7 +18,7 @@ - + diff --git a/sw.js b/sw.js index d569fc2e..4092ac34 100644 --- a/sw.js +++ b/sw.js @@ -4556,7 +4556,7 @@ function getPossibleURLs(url) { (async () => { const params = parseSwParams(); // eslint-disable-next-line no-underscore-dangle - const precacheManifest = [{"revision":"5b483d0fea85a5dbcf6805894be4e5d9","url":"404.html"},{"revision":"d1060c7075615efec6fe2e01142d9233","url":"assets/css/styles.6559cc61.css"},{"revision":"5ba4808150edef6a736427bbfba3acad","url":"assets/js/08133570.1d3d9f95.js"},{"revision":"dd5709481d209a870ef7e9edfaee0c89","url":"assets/js/0b6406e9.ea213bb9.js"},{"revision":"d623849bdc98c039bb117d9aa029fa79","url":"assets/js/111.1a77f36c.js"},{"revision":"e148b14b53e181a424045af7beaf3e9e","url":"assets/js/1644.0dcfb256.js"},{"revision":"4532300395043e346275608594bc41e5","url":"assets/js/1688.9b5abf8f.js"},{"revision":"f2d8da2578a7047cbdf1792de8ab69d8","url":"assets/js/1772.072dd336.js"},{"revision":"2a1e9ec4aab927ee3ebeb24aa4847495","url":"assets/js/17896441.20e27d3c.js"},{"revision":"f20b8eceaa2267fffd3b078f57d73d27","url":"assets/js/189.5aec15e9.js"},{"revision":"a40f99ba9c161d196a37bf5e27d8b928","url":"assets/js/1bfe5704.4503ab9a.js"},{"revision":"03347b5648e84eeca856e4b44e0f97ad","url":"assets/js/1cb4e3ed.b885b82f.js"},{"revision":"e97c69bf8c004d68260b83ccc7241ea6","url":"assets/js/1df93b7f.a3f54be7.js"},{"revision":"ca80f7605cde7b8d9e8629e4e565cb4c","url":"assets/js/1f33cfc6.16c8544e.js"},{"revision":"d1462b35eb5fcba6dac9b20c8cb088b5","url":"assets/js/1f391b9e.890bdb41.js"},{"revision":"c04a9ae246a240269ff5eabd72f9912e","url":"assets/js/2027.58a68e7f.js"},{"revision":"4fee3f82986bc69fb7555e09e27557b1","url":"assets/js/205.f53fd1d6.js"},{"revision":"3937df469df1e1081185b4c25edad612","url":"assets/js/2127.edae4370.js"},{"revision":"7cc5a731329d74df6f4ea8d808fcd55c","url":"assets/js/21dc2778.4fa88f77.js"},{"revision":"9e975c45eace316f6d67f6ce0423c5c9","url":"assets/js/2244.581b5672.js"},{"revision":"d62dee970a6f775bcedf1683a73671f8","url":"assets/js/22c3a07e.4b4c4682.js"},{"revision":"85eed12a8241696c8f1485b109c8c882","url":"assets/js/230.f24d31b3.js"},{"revision":"fb2e3d2b159be5e69d2bf771165b227c","url":"assets/js/254.da0a5da3.js"},{"revision":"1fb479a5e955a7ae17388ad092250e8f","url":"assets/js/25ef7947.e2795dcf.js"},{"revision":"c4f70ef3b2cf5828c8ab7459ffc666d5","url":"assets/js/26455d6c.e57178ed.js"},{"revision":"24d16ffe770d6f65746ec132ccf6c4b5","url":"assets/js/27.96a4e28f.js"},{"revision":"3c0c7dae0d8d210607cdfc47869a132b","url":"assets/js/278.c18a43f9.js"},{"revision":"48704b2ca446f3ea498f9231b0cd6d51","url":"assets/js/284.8091b9df.js"},{"revision":"284bfda8587e7b8241acf9dd731b8120","url":"assets/js/28a593c7.a6331d38.js"},{"revision":"a37c5a9c8e63e6329471e042ec76a20f","url":"assets/js/2924.f6df9113.js"},{"revision":"eb4ff86bdee5e54bb315e1a6f6b87cb2","url":"assets/js/2ab4562b.fc83a82a.js"},{"revision":"ee72230a45f433330b94f7058eb985ef","url":"assets/js/30d27832.8e174e4b.js"},{"revision":"046e9d5554626ed670716a0f9322eb64","url":"assets/js/31058b07.3fa75a06.js"},{"revision":"a9fcad65f41f4c20fda4358ce1050efe","url":"assets/js/313.fb64a2c4.js"},{"revision":"1188f0c0082cf8026eea6b4b29288440","url":"assets/js/3506.9edd1dee.js"},{"revision":"35ae3717974ec09b4ec1926be38cfcad","url":"assets/js/360.090aa725.js"},{"revision":"dedd92b980923d957edefee362746ae2","url":"assets/js/3601.97f94c19.js"},{"revision":"f2378835a3d149624c6291b14780d50d","url":"assets/js/365.da569cd3.js"},{"revision":"d975069d2da0f74aa7855696bc7d43d3","url":"assets/js/371.b9948998.js"},{"revision":"adca6a73c4a77a96f843f666c5472ae3","url":"assets/js/391d9c20.53d14b68.js"},{"revision":"9d3ee87ddb382e0924e608b2e37feb3c","url":"assets/js/3aefb2a9.4801e826.js"},{"revision":"644bb60d84c14d493d02148c7f8db56c","url":"assets/js/3ebc3d67.458ba45d.js"},{"revision":"96c1bfbd80a480f1cae45baf6cea76b9","url":"assets/js/3f163355.1f047cbf.js"},{"revision":"a99ca44bd688b82d0fa41dc1c38d3b1d","url":"assets/js/3fb3fb7f.3eaa8c87.js"},{"revision":"708561bffa1070a59c0932a495a05011","url":"assets/js/4148.09d16561.js"},{"revision":"9e02b44d10dd34a06c1b88a773cee0a0","url":"assets/js/46.53124cb6.js"},{"revision":"c7f92d92b4d64f98e2df19e573350329","url":"assets/js/469.66086d5a.js"},{"revision":"ea777770d112a6df4464484783000ad7","url":"assets/js/4ca25bb5.93ace705.js"},{"revision":"5e43b99f0a5c772b50e39ec84f4b338c","url":"assets/js/506.17e673b8.js"},{"revision":"c98fef91b73c9368da24ffee74e3d798","url":"assets/js/50bfad63.aead9967.js"},{"revision":"c5820adf1fd82a02bd6ad982ac7443c3","url":"assets/js/5131.5e46ae6f.js"},{"revision":"ff154e61a42bc65752dc0b867f7d78f9","url":"assets/js/5254.3eb9ebd8.js"},{"revision":"86839900fa1d953efbb286bb774b86c3","url":"assets/js/5283.99849d12.js"},{"revision":"3bc547178c7cada4f9aea1ef7f4ed08c","url":"assets/js/5373.d484caaa.js"},{"revision":"9df02537394ff95a43ff833fce5b7775","url":"assets/js/59190afd.bc0b8c99.js"},{"revision":"5bacfa0402f693f95a7e20dd1f2e0bed","url":"assets/js/5e95c892.98ec5397.js"},{"revision":"63954c348412a6ddd284f5143cc781db","url":"assets/js/601.bd9904a4.js"},{"revision":"b20fc69dfcd17bcec157649cf13bdeb4","url":"assets/js/60418129.24976881.js"},{"revision":"218b9b37f5ad36403a6aa38329344a72","url":"assets/js/6046.05219399.js"},{"revision":"dab46864f418b73d278d517c1cdb7747","url":"assets/js/6254.534a8984.js"},{"revision":"8feb79cd06f3bb0f389f786d5184e1d0","url":"assets/js/6278.afd805f6.js"},{"revision":"1b5e1564d6abcfbcdc818ef2055678f7","url":"assets/js/6284.5a5433cb.js"},{"revision":"58deb5db13efddb54a043e877a95d6f3","url":"assets/js/62e3c86b.d055b31f.js"},{"revision":"09a6fdc26c3c8f779efb79e081cee122","url":"assets/js/6459b84b.e461bf2d.js"},{"revision":"20efa2bb6044024d8a2b3304402e8072","url":"assets/js/6715.e8cb9fbd.js"},{"revision":"f019406623d57290e68c7c07b2afe6b6","url":"assets/js/687.51b2a3b6.js"},{"revision":"59e34b4558abfb52218bebb73dd92a97","url":"assets/js/688.9f1a5208.js"},{"revision":"b26775db2ec5b6037bcdbba6fcfcee0f","url":"assets/js/7111.50abb3d1.js"},{"revision":"b2b2a19bd50009733a70ff9ffcc3df15","url":"assets/js/715.7c02bf77.js"},{"revision":"92b12ce7eae6e2825039b48117453ad0","url":"assets/js/740.e410e6ba.js"},{"revision":"f8f496ef46070432458ad2f2872ad23b","url":"assets/js/751a75f6.bb0a106f.js"},{"revision":"a94c6737b1237a06026d2c9bd9d64f3f","url":"assets/js/762.4ca7866e.js"},{"revision":"4e8c9f40a0e6b4567497ed256d09e1be","url":"assets/js/762.ba125ab2.js"},{"revision":"4a781c1ea5c3eab1b5b0daf4c0f0c28a","url":"assets/js/76be5683.2c91368a.js"},{"revision":"b80eb1452f6c92f801cfd6c4309b3dff","url":"assets/js/7707.39e71ec4.js"},{"revision":"33d9981c5f63a8951e191db7939784c3","url":"assets/js/7740.3c8b4943.js"},{"revision":"f6627e2ca27e985cf213a1f5438a4a91","url":"assets/js/77db9a17.8893f074.js"},{"revision":"a8cf08f491df6c8b73a37f8995865e79","url":"assets/js/7807.45746fce.js"},{"revision":"102d9fa86047dd80a440126146d460c6","url":"assets/js/801e3691.37bd374e.js"},{"revision":"311f1eab206c7bcbfc7680ece1fa50b5","url":"assets/js/807.e8ea5136.js"},{"revision":"395e2dd4d2d25301a53133829ba44e1d","url":"assets/js/816.dcd00e38.js"},{"revision":"7705e14873847b7736d0a5d2fdd36c5e","url":"assets/js/8189.052631a2.js"},{"revision":"8604b4a1670c0ae2dceeee39e82855e5","url":"assets/js/8365.91257d46.js"},{"revision":"c6e88dc3c47386dc983231f606c16c15","url":"assets/js/8371.753404ac.js"},{"revision":"5be73b4b3d19081bf0f72170d1fdca3b","url":"assets/js/8416df86.3199682b.js"},{"revision":"41d61b92a00abd9bec40c4116124a986","url":"assets/js/84dac133.b04bb491.js"},{"revision":"b585e6f346b74ec0dfbabb50189d5183","url":"assets/js/8687.a3f8295e.js"},{"revision":"0097029ada77e14bbfac2fbca9e08026","url":"assets/js/8f88d278.b1b8a32a.js"},{"revision":"fa26e9bdf42c49df18f209ddad3e7afc","url":"assets/js/9205.1b6742f5.js"},{"revision":"08b5e734a14449bb8aba8c556b5cbd30","url":"assets/js/935f2afb.81dce83d.js"},{"revision":"90efc202d51088ee66c669f6287e0796","url":"assets/js/9469.73800656.js"},{"revision":"f34c25232d1b99aaf0d6cc9739493eb1","url":"assets/js/94cba6ed.984b5c72.js"},{"revision":"530ce61c35335274d2984aea9ac85613","url":"assets/js/9610.b4783ee8.js"},{"revision":"777b7370da233971511538d16e88237c","url":"assets/js/9816.a49284d7.js"},{"revision":"87baa2fd60289839c9b97a4687d88128","url":"assets/js/98b8cc29.018426d5.js"},{"revision":"1d00f29102d6d62c75ed10c1a340b5ea","url":"assets/js/a21dcd43.aedcb4db.js"},{"revision":"8dd1abc26e31995fdc345e5074ac644d","url":"assets/js/a2c501c8.62e4cbe1.js"},{"revision":"932a647133cacc401bb19e20579e7662","url":"assets/js/a4d3e054.195d0863.js"},{"revision":"184807c1df8fd40a79adf7cc00620c57","url":"assets/js/a7bd4aaa.8ed155cd.js"},{"revision":"0c917ca6affe9a401b55e45c949678e4","url":"assets/js/a94703ab.f6df80e0.js"},{"revision":"8ecf29d2ca81f1db85035da3913d1560","url":"assets/js/ad6f9ff5.80bf0e10.js"},{"revision":"f8c23db20dc3a22111a07f7c327b8a1c","url":"assets/js/ba3d4959.df025922.js"},{"revision":"c2f6c5607849cc7ee8232b50457d71dd","url":"assets/js/bfc34fa7.cc2205c4.js"},{"revision":"61e74e4fc8e79971a469d5bac5f58269","url":"assets/js/bfc576a4.a3b25428.js"},{"revision":"dd1252e680f7721d134b9282da06c161","url":"assets/js/c24fb5a2.2573f260.js"},{"revision":"fb0155a8a8982b728c617e4165c34562","url":"assets/js/cbe663fe.000adc1b.js"},{"revision":"f58af3f0edb34df1c949268d8938e723","url":"assets/js/cc784980.50d26df0.js"},{"revision":"25b781621ef52a79216a692f9fdfb8e9","url":"assets/js/d295d49b.155d0e62.js"},{"revision":"e63eeb54b348f9ad7f945eaeffc780ca","url":"assets/js/d550161c.53c5d3f1.js"},{"revision":"89b2e5dbdf9a5c5a513d9fa31e32dc3f","url":"assets/js/e2eeca55.bfe6cbe7.js"},{"revision":"13aeb1e25ca88ef84c77c3fbf39f07e5","url":"assets/js/e6388bba.9c793527.js"},{"revision":"3eb2f8186f00015d9d7b23b0dc107709","url":"assets/js/e71332dd.6c157557.js"},{"revision":"5aadf21a878e6363463c7e49b6a7b602","url":"assets/js/ead3bc46.ec825d14.js"},{"revision":"6bf11c05529eb3a8cc762744689df455","url":"assets/js/f210ba15.c22ae324.js"},{"revision":"55089d11b15a6ea4606375e2db6293e2","url":"assets/js/f3e8f525.91cce953.js"},{"revision":"3809b66717a58af2532442bd7ef73fd7","url":"assets/js/f991d430.e5ca1bed.js"},{"revision":"ff43f85830bc30ac5874222c77f51cd7","url":"assets/js/main.9b1355e8.js"},{"revision":"fa705e3a80cf87f249e5596bd1adb4de","url":"assets/js/reactPlayerDailyMotion.738f2818.js"},{"revision":"8b1243c191eee8e95e0a6a708eba288e","url":"assets/js/reactPlayerDailyMotion.7a0663a3.js"},{"revision":"41d19232d64d14c89e5877356f2a6b05","url":"assets/js/reactPlayerFacebook.29d829e4.js"},{"revision":"531fc2e77cca39732c317a2ddf92f575","url":"assets/js/reactPlayerFacebook.f356aabe.js"},{"revision":"25d44fac11b3ca90a1ca5986c7c09b5e","url":"assets/js/reactPlayerFilePlayer.22eac319.js"},{"revision":"04925672e5b98ff8237addbbc654444a","url":"assets/js/reactPlayerFilePlayer.369ebcd2.js"},{"revision":"bd961d2348ef52542bc55ac014b83b47","url":"assets/js/reactPlayerKaltura.a01c8f0d.js"},{"revision":"1aebf77a0a08f40af4447953558f8025","url":"assets/js/reactPlayerKaltura.d9fe8d61.js"},{"revision":"09a787e0a94458610c032d9e7324a16a","url":"assets/js/reactPlayerMixcloud.18ab793c.js"},{"revision":"f39a72db725549c1b33338baf2cb6ad0","url":"assets/js/reactPlayerMixcloud.628d2aad.js"},{"revision":"dc4525e91b4e72b24085ed2c324320a6","url":"assets/js/reactPlayerPreview.be88363a.js"},{"revision":"80f13459a4108550c89c63da753822bc","url":"assets/js/reactPlayerPreview.f231a0e4.js"},{"revision":"57abacdb1bfa69e1667f0de18abb2ee1","url":"assets/js/reactPlayerSoundCloud.a9caeb97.js"},{"revision":"2fdc9f63691eaf901e55e96a56c38755","url":"assets/js/reactPlayerSoundCloud.dbf66862.js"},{"revision":"50f78eae646780dfc8206517738c64e3","url":"assets/js/reactPlayerStreamable.73717b36.js"},{"revision":"3f6d637f1e1e22ef07b7f0869372620c","url":"assets/js/reactPlayerStreamable.a7989fed.js"},{"revision":"5739fadd9511eb996f2fba60f994dc39","url":"assets/js/reactPlayerTwitch.0e1914f9.js"},{"revision":"e590a054e445eea5a9fe152f77800727","url":"assets/js/reactPlayerTwitch.29de27b3.js"},{"revision":"a1d58f96bfead4e46ccbc7f621e138bf","url":"assets/js/reactPlayerVidyard.3062dff8.js"},{"revision":"390e012e2150ee2682cba6afeb137b08","url":"assets/js/reactPlayerVidyard.8f758e65.js"},{"revision":"70166943b6826843062d9078eeddcd7e","url":"assets/js/reactPlayerVimeo.7c82082c.js"},{"revision":"30cc853dc6fe2e438532dbb75a09ed5e","url":"assets/js/reactPlayerVimeo.9434e0c7.js"},{"revision":"a5067c38e08ec41124901f3b7e89894e","url":"assets/js/reactPlayerWistia.2f05a362.js"},{"revision":"c83930d463a9354b72ae4c0c22a13316","url":"assets/js/reactPlayerWistia.401ec54b.js"},{"revision":"7752aaf57187271b6e7d4a7086e84cf2","url":"assets/js/reactPlayerYouTube.0ed3e867.js"},{"revision":"f478a0d93d8ebf48c2d437d531deb67f","url":"assets/js/reactPlayerYouTube.57dea3d3.js"},{"revision":"2a7ad09eb11d7a14d4aa424e0b82c202","url":"assets/js/runtime~main.4653fca8.js"},{"revision":"dfc5b2406b061735b635e17d0a808cb8","url":"benchmarks.html"},{"revision":"0dd09dc1fc509cf21fe65a9bfafb5f2f","url":"css/alert.css"},{"revision":"26eccd25118cde31ccb1092089f7e247","url":"css/footer.css"},{"revision":"6f7b508d481004b9153add9f669a9550","url":"css/icons.css"},{"revision":"6b15459ec3386f0e86f1d9536797035c","url":"css/markdown.css"},{"revision":"bd1fe6dc29bd206538887be781c81aec","url":"css/navbar.css"},{"revision":"51c186622df4c68a8615c8297e8b9022","url":"css/root.css"},{"revision":"e4fc76fc7377641814373e4f23a1c935","url":"css/sidebar.css"},{"revision":"d85a13f48184e29f22ace304a716aadc","url":"css/toc.css"},{"revision":"34c77c35a4040d68db1b755b29ef386b","url":"css/video.css"},{"revision":"36f78637f288816484fb0fc27219c1ed","url":"docs/architecture-concepts/application-lifecycle.html"},{"revision":"a5dc6db19990fc89fe2a09195d496e2e","url":"docs/architecture-concepts/facades.html"},{"revision":"5d5bf879554d5d2174f4a28c25fc99a7","url":"docs/architecture-concepts/service-container.html"},{"revision":"c4df9f366f565eaf4756ee272f24b92e","url":"docs/architecture-concepts/service-providers.html"},{"revision":"cb52fbe958e793e66fdacc8fc640c64b","url":"docs/cli-application/annotations.html"},{"revision":"106e73f22dfb253d3e5fd040a2bd4c78","url":"docs/cli-application/commands.html"},{"revision":"1b523f8ce30bb6d620c33de32ed3b2bd","url":"docs/cli-application/error-handling.html"},{"revision":"e0443bba60e4fa7904b7756fa5546c08","url":"docs/cli-application/publishing.html"},{"revision":"42c0b075aab97984f8530160c765e3fc","url":"docs/cli-application/running.html"},{"revision":"2b4e5b072ec8a3f18cc69ce7106f8044","url":"docs/database/getting-started.html"},{"revision":"5c2ae091d541406a8332e1d83a298a56","url":"docs/database/migrations.html"},{"revision":"d561007ab2e6207600f66f4016b6446b","url":"docs/database/query-builder.html"},{"revision":"90c58c78ce5cb28800894d1ee344a15f","url":"docs/database/seeding.html"},{"revision":"3ecec253221691ef69df4e01023a13da","url":"docs/digging-deeper/collections.html"},{"revision":"a8fd039c613a8ddc8c8b8f850e47007b","url":"docs/digging-deeper/graceful-shutdown.html"},{"revision":"d3f540a38c0bdaecf8b0cae4475a9c94","url":"docs/digging-deeper/library-development.html"},{"revision":"b4fe6a9c3b8dad96e969a5ab7bc9779c","url":"docs/digging-deeper/mail.html"},{"revision":"1460e26b105b717527861e82b1c798f7","url":"docs/digging-deeper/repl.html"},{"revision":"69a8f9014d99a51bc9154ba59ff856e4","url":"docs/getting-started/athennarc-file.html"},{"revision":"0c33decb7d1a72c56a87ea043956f068","url":"docs/getting-started/configuration.html"},{"revision":"b674790b7ba9a724c4e17a6c16d7f47c","url":"docs/getting-started/directory-structure.html"},{"revision":"17b6ca58ca48ca939a74023178aadd58","url":"docs/getting-started/installation.html"},{"revision":"9c7af283cf77f254b8c717181db8ed7e","url":"docs/orm/annotations.html"},{"revision":"ff1f6ec11bd647f93302a08fd0c1bf85","url":"docs/orm/extending-models.html"},{"revision":"6c985b1a79fb5d427f730404e7f27d3a","url":"docs/orm/factories.html"},{"revision":"7bbac4d2967c22d19a40e37104615d71","url":"docs/orm/getting-started.html"},{"revision":"12c8fd0eed77864fe677eab296e0a637","url":"docs/orm/query-builder.html"},{"revision":"8291bff4d2be3e458fa888e3b86769e1","url":"docs/orm/relationships.html"},{"revision":"e0eb3cf97b78a0ee0a61b616bf232492","url":"docs/rest-api-application/annotations.html"},{"revision":"ac5ecb58a591a78d8560f0daa0aee8fd","url":"docs/rest-api-application/controllers.html"},{"revision":"f618b6b1f25e463564d2da4e6f2b20ee","url":"docs/rest-api-application/error-handling.html"},{"revision":"894bebdac1c2042442bc533a77689f67","url":"docs/rest-api-application/middlewares.html"},{"revision":"a0673e179ed869d13d28aee879356f92","url":"docs/rest-api-application/rate-limiting.html"},{"revision":"114449b476ce562eae664371bc8d3c1e","url":"docs/rest-api-application/request-context.html"},{"revision":"dc05b8f275f04509aef93a5a495f9cc7","url":"docs/rest-api-application/routing.html"},{"revision":"ed08ce7c97f86a635f6b4845fec5f0d6","url":"docs/rest-api-application/security-with-helmet.html"},{"revision":"5ac886b7b3641278f7d0f19c8e27be60","url":"docs/rest-api-application/static-files.html"},{"revision":"2f28664d51cd8edebb709953785fd3ff","url":"docs/rest-api-application/swagger-documentation.html"},{"revision":"044247ffa01035da4f6c3dd7e57d9c91","url":"docs/rest-api-application/tracing-requests.html"},{"revision":"5d5834d43167de7d1143ec0e4a79399d","url":"docs/rest-api-application/views.html"},{"revision":"90779f0fe3c51a91766262e012cd8424","url":"docs/testing/annotations.html"},{"revision":"a7e0233ffd5d50f99fbd31a1ef62172f","url":"docs/testing/cli-tests.html"},{"revision":"d6794de1523e4f1ad96153b5a5a72be6","url":"docs/testing/getting-started.html"},{"revision":"a8d04d0c083ea83354f1ae3bfc2d691b","url":"docs/testing/mocking.html"},{"revision":"9a2fd0e32a798694a1b704926e43f5a2","url":"docs/testing/rest-api-testing.html"},{"revision":"8769b8b1ff7def2f0f3c0838aa65ac3e","url":"docs/the-basics/compilation.html"},{"revision":"670699df6a6632a28e4bb9602688c418","url":"docs/the-basics/deployment.html"},{"revision":"f73b67f1970b28aa0e734b7c273560e1","url":"docs/the-basics/helpers.html"},{"revision":"1068af2ed39efe58240bc440b753d688","url":"docs/the-basics/logging.html"},{"revision":"abd1a74c6339b613e4f9e1ca8e5b08d4","url":"index.html"},{"revision":"b9c2d96551764c633b0de8edf9e82b16","url":"manifest.json"},{"revision":"9b5f8e4ac9bd0649aab896c55a382ed9","url":"img/codes/http-route.png"},{"revision":"8b1a6b58c0fdfe999985be48568bcaec","url":"img/codes/ignite.png"},{"revision":"1dc71eacd5e43b82f89fce76d3c79f74","url":"img/codes/test-route.png"},{"revision":"8819ca59541f4814b6a55fcf66ecabbe","url":"img/examples/artisan-ui.png"},{"revision":"5a842a80da3f7052d79847910389ecf9","url":"img/favicons/favicon.ico"},{"revision":"6441cbb8861a71fcfd9cd468b225a998","url":"img/favicons/minerva.ico"},{"revision":"d72ef880b711475e5291c0fdfb1964b3","url":"img/logos/athena.png"},{"revision":"5a842a80da3f7052d79847910389ecf9","url":"img/logos/logo.png"},{"revision":"6441cbb8861a71fcfd9cd468b225a998","url":"img/logos/minerva.png"},{"revision":"7ea4a962be30750a0653ef693b519370","url":"img/pre-visualization/home.png"},{"revision":"38d2d7a80eba1f9ba7bbcafed917c96c","url":"fonts/AbrilText-Bold.woff"},{"revision":"9fc10a629a1d43baa01c1ec8188ea3b7","url":"fonts/AbrilText-Bold.woff2"}]; + const precacheManifest = [{"revision":"35586818f586b1c1ec0c0d0f1e38d178","url":"404.html"},{"revision":"d1060c7075615efec6fe2e01142d9233","url":"assets/css/styles.6559cc61.css"},{"revision":"e7a97f3a8cb9a8f51351e15dd4623717","url":"assets/js/08133570.197f603c.js"},{"revision":"dd5709481d209a870ef7e9edfaee0c89","url":"assets/js/0b6406e9.ea213bb9.js"},{"revision":"d623849bdc98c039bb117d9aa029fa79","url":"assets/js/111.1a77f36c.js"},{"revision":"e148b14b53e181a424045af7beaf3e9e","url":"assets/js/1644.0dcfb256.js"},{"revision":"4532300395043e346275608594bc41e5","url":"assets/js/1688.9b5abf8f.js"},{"revision":"f2d8da2578a7047cbdf1792de8ab69d8","url":"assets/js/1772.072dd336.js"},{"revision":"2a1e9ec4aab927ee3ebeb24aa4847495","url":"assets/js/17896441.20e27d3c.js"},{"revision":"f20b8eceaa2267fffd3b078f57d73d27","url":"assets/js/189.5aec15e9.js"},{"revision":"a40f99ba9c161d196a37bf5e27d8b928","url":"assets/js/1bfe5704.4503ab9a.js"},{"revision":"03347b5648e84eeca856e4b44e0f97ad","url":"assets/js/1cb4e3ed.b885b82f.js"},{"revision":"e97c69bf8c004d68260b83ccc7241ea6","url":"assets/js/1df93b7f.a3f54be7.js"},{"revision":"ca80f7605cde7b8d9e8629e4e565cb4c","url":"assets/js/1f33cfc6.16c8544e.js"},{"revision":"d1462b35eb5fcba6dac9b20c8cb088b5","url":"assets/js/1f391b9e.890bdb41.js"},{"revision":"c04a9ae246a240269ff5eabd72f9912e","url":"assets/js/2027.58a68e7f.js"},{"revision":"4fee3f82986bc69fb7555e09e27557b1","url":"assets/js/205.f53fd1d6.js"},{"revision":"3937df469df1e1081185b4c25edad612","url":"assets/js/2127.edae4370.js"},{"revision":"7cc5a731329d74df6f4ea8d808fcd55c","url":"assets/js/21dc2778.4fa88f77.js"},{"revision":"9e975c45eace316f6d67f6ce0423c5c9","url":"assets/js/2244.581b5672.js"},{"revision":"d62dee970a6f775bcedf1683a73671f8","url":"assets/js/22c3a07e.4b4c4682.js"},{"revision":"85eed12a8241696c8f1485b109c8c882","url":"assets/js/230.f24d31b3.js"},{"revision":"fb2e3d2b159be5e69d2bf771165b227c","url":"assets/js/254.da0a5da3.js"},{"revision":"1fb479a5e955a7ae17388ad092250e8f","url":"assets/js/25ef7947.e2795dcf.js"},{"revision":"c4f70ef3b2cf5828c8ab7459ffc666d5","url":"assets/js/26455d6c.e57178ed.js"},{"revision":"24d16ffe770d6f65746ec132ccf6c4b5","url":"assets/js/27.96a4e28f.js"},{"revision":"3c0c7dae0d8d210607cdfc47869a132b","url":"assets/js/278.c18a43f9.js"},{"revision":"48704b2ca446f3ea498f9231b0cd6d51","url":"assets/js/284.8091b9df.js"},{"revision":"284bfda8587e7b8241acf9dd731b8120","url":"assets/js/28a593c7.a6331d38.js"},{"revision":"a37c5a9c8e63e6329471e042ec76a20f","url":"assets/js/2924.f6df9113.js"},{"revision":"eb4ff86bdee5e54bb315e1a6f6b87cb2","url":"assets/js/2ab4562b.fc83a82a.js"},{"revision":"ee72230a45f433330b94f7058eb985ef","url":"assets/js/30d27832.8e174e4b.js"},{"revision":"046e9d5554626ed670716a0f9322eb64","url":"assets/js/31058b07.3fa75a06.js"},{"revision":"a9fcad65f41f4c20fda4358ce1050efe","url":"assets/js/313.fb64a2c4.js"},{"revision":"1188f0c0082cf8026eea6b4b29288440","url":"assets/js/3506.9edd1dee.js"},{"revision":"35ae3717974ec09b4ec1926be38cfcad","url":"assets/js/360.090aa725.js"},{"revision":"dedd92b980923d957edefee362746ae2","url":"assets/js/3601.97f94c19.js"},{"revision":"f2378835a3d149624c6291b14780d50d","url":"assets/js/365.da569cd3.js"},{"revision":"d975069d2da0f74aa7855696bc7d43d3","url":"assets/js/371.b9948998.js"},{"revision":"adca6a73c4a77a96f843f666c5472ae3","url":"assets/js/391d9c20.53d14b68.js"},{"revision":"9d3ee87ddb382e0924e608b2e37feb3c","url":"assets/js/3aefb2a9.4801e826.js"},{"revision":"644bb60d84c14d493d02148c7f8db56c","url":"assets/js/3ebc3d67.458ba45d.js"},{"revision":"96c1bfbd80a480f1cae45baf6cea76b9","url":"assets/js/3f163355.1f047cbf.js"},{"revision":"a99ca44bd688b82d0fa41dc1c38d3b1d","url":"assets/js/3fb3fb7f.3eaa8c87.js"},{"revision":"708561bffa1070a59c0932a495a05011","url":"assets/js/4148.09d16561.js"},{"revision":"9e02b44d10dd34a06c1b88a773cee0a0","url":"assets/js/46.53124cb6.js"},{"revision":"c7f92d92b4d64f98e2df19e573350329","url":"assets/js/469.66086d5a.js"},{"revision":"ea777770d112a6df4464484783000ad7","url":"assets/js/4ca25bb5.93ace705.js"},{"revision":"5e43b99f0a5c772b50e39ec84f4b338c","url":"assets/js/506.17e673b8.js"},{"revision":"c98fef91b73c9368da24ffee74e3d798","url":"assets/js/50bfad63.aead9967.js"},{"revision":"c5820adf1fd82a02bd6ad982ac7443c3","url":"assets/js/5131.5e46ae6f.js"},{"revision":"ff154e61a42bc65752dc0b867f7d78f9","url":"assets/js/5254.3eb9ebd8.js"},{"revision":"86839900fa1d953efbb286bb774b86c3","url":"assets/js/5283.99849d12.js"},{"revision":"3bc547178c7cada4f9aea1ef7f4ed08c","url":"assets/js/5373.d484caaa.js"},{"revision":"9df02537394ff95a43ff833fce5b7775","url":"assets/js/59190afd.bc0b8c99.js"},{"revision":"5bacfa0402f693f95a7e20dd1f2e0bed","url":"assets/js/5e95c892.98ec5397.js"},{"revision":"63954c348412a6ddd284f5143cc781db","url":"assets/js/601.bd9904a4.js"},{"revision":"b20fc69dfcd17bcec157649cf13bdeb4","url":"assets/js/60418129.24976881.js"},{"revision":"218b9b37f5ad36403a6aa38329344a72","url":"assets/js/6046.05219399.js"},{"revision":"dab46864f418b73d278d517c1cdb7747","url":"assets/js/6254.534a8984.js"},{"revision":"8feb79cd06f3bb0f389f786d5184e1d0","url":"assets/js/6278.afd805f6.js"},{"revision":"1b5e1564d6abcfbcdc818ef2055678f7","url":"assets/js/6284.5a5433cb.js"},{"revision":"58deb5db13efddb54a043e877a95d6f3","url":"assets/js/62e3c86b.d055b31f.js"},{"revision":"09a6fdc26c3c8f779efb79e081cee122","url":"assets/js/6459b84b.e461bf2d.js"},{"revision":"20efa2bb6044024d8a2b3304402e8072","url":"assets/js/6715.e8cb9fbd.js"},{"revision":"f019406623d57290e68c7c07b2afe6b6","url":"assets/js/687.51b2a3b6.js"},{"revision":"59e34b4558abfb52218bebb73dd92a97","url":"assets/js/688.9f1a5208.js"},{"revision":"b26775db2ec5b6037bcdbba6fcfcee0f","url":"assets/js/7111.50abb3d1.js"},{"revision":"b2b2a19bd50009733a70ff9ffcc3df15","url":"assets/js/715.7c02bf77.js"},{"revision":"92b12ce7eae6e2825039b48117453ad0","url":"assets/js/740.e410e6ba.js"},{"revision":"f8f496ef46070432458ad2f2872ad23b","url":"assets/js/751a75f6.bb0a106f.js"},{"revision":"a94c6737b1237a06026d2c9bd9d64f3f","url":"assets/js/762.4ca7866e.js"},{"revision":"4e8c9f40a0e6b4567497ed256d09e1be","url":"assets/js/762.ba125ab2.js"},{"revision":"4a781c1ea5c3eab1b5b0daf4c0f0c28a","url":"assets/js/76be5683.2c91368a.js"},{"revision":"b80eb1452f6c92f801cfd6c4309b3dff","url":"assets/js/7707.39e71ec4.js"},{"revision":"33d9981c5f63a8951e191db7939784c3","url":"assets/js/7740.3c8b4943.js"},{"revision":"f6627e2ca27e985cf213a1f5438a4a91","url":"assets/js/77db9a17.8893f074.js"},{"revision":"a8cf08f491df6c8b73a37f8995865e79","url":"assets/js/7807.45746fce.js"},{"revision":"102d9fa86047dd80a440126146d460c6","url":"assets/js/801e3691.37bd374e.js"},{"revision":"311f1eab206c7bcbfc7680ece1fa50b5","url":"assets/js/807.e8ea5136.js"},{"revision":"395e2dd4d2d25301a53133829ba44e1d","url":"assets/js/816.dcd00e38.js"},{"revision":"7705e14873847b7736d0a5d2fdd36c5e","url":"assets/js/8189.052631a2.js"},{"revision":"8604b4a1670c0ae2dceeee39e82855e5","url":"assets/js/8365.91257d46.js"},{"revision":"c6e88dc3c47386dc983231f606c16c15","url":"assets/js/8371.753404ac.js"},{"revision":"5be73b4b3d19081bf0f72170d1fdca3b","url":"assets/js/8416df86.3199682b.js"},{"revision":"41d61b92a00abd9bec40c4116124a986","url":"assets/js/84dac133.b04bb491.js"},{"revision":"b585e6f346b74ec0dfbabb50189d5183","url":"assets/js/8687.a3f8295e.js"},{"revision":"0097029ada77e14bbfac2fbca9e08026","url":"assets/js/8f88d278.b1b8a32a.js"},{"revision":"fa26e9bdf42c49df18f209ddad3e7afc","url":"assets/js/9205.1b6742f5.js"},{"revision":"08b5e734a14449bb8aba8c556b5cbd30","url":"assets/js/935f2afb.81dce83d.js"},{"revision":"90efc202d51088ee66c669f6287e0796","url":"assets/js/9469.73800656.js"},{"revision":"f34c25232d1b99aaf0d6cc9739493eb1","url":"assets/js/94cba6ed.984b5c72.js"},{"revision":"530ce61c35335274d2984aea9ac85613","url":"assets/js/9610.b4783ee8.js"},{"revision":"777b7370da233971511538d16e88237c","url":"assets/js/9816.a49284d7.js"},{"revision":"87baa2fd60289839c9b97a4687d88128","url":"assets/js/98b8cc29.018426d5.js"},{"revision":"1d00f29102d6d62c75ed10c1a340b5ea","url":"assets/js/a21dcd43.aedcb4db.js"},{"revision":"8dd1abc26e31995fdc345e5074ac644d","url":"assets/js/a2c501c8.62e4cbe1.js"},{"revision":"932a647133cacc401bb19e20579e7662","url":"assets/js/a4d3e054.195d0863.js"},{"revision":"184807c1df8fd40a79adf7cc00620c57","url":"assets/js/a7bd4aaa.8ed155cd.js"},{"revision":"0c917ca6affe9a401b55e45c949678e4","url":"assets/js/a94703ab.f6df80e0.js"},{"revision":"8ecf29d2ca81f1db85035da3913d1560","url":"assets/js/ad6f9ff5.80bf0e10.js"},{"revision":"f8c23db20dc3a22111a07f7c327b8a1c","url":"assets/js/ba3d4959.df025922.js"},{"revision":"c2f6c5607849cc7ee8232b50457d71dd","url":"assets/js/bfc34fa7.cc2205c4.js"},{"revision":"61e74e4fc8e79971a469d5bac5f58269","url":"assets/js/bfc576a4.a3b25428.js"},{"revision":"dd1252e680f7721d134b9282da06c161","url":"assets/js/c24fb5a2.2573f260.js"},{"revision":"fb0155a8a8982b728c617e4165c34562","url":"assets/js/cbe663fe.000adc1b.js"},{"revision":"f58af3f0edb34df1c949268d8938e723","url":"assets/js/cc784980.50d26df0.js"},{"revision":"25b781621ef52a79216a692f9fdfb8e9","url":"assets/js/d295d49b.155d0e62.js"},{"revision":"e63eeb54b348f9ad7f945eaeffc780ca","url":"assets/js/d550161c.53c5d3f1.js"},{"revision":"89b2e5dbdf9a5c5a513d9fa31e32dc3f","url":"assets/js/e2eeca55.bfe6cbe7.js"},{"revision":"13aeb1e25ca88ef84c77c3fbf39f07e5","url":"assets/js/e6388bba.9c793527.js"},{"revision":"3eb2f8186f00015d9d7b23b0dc107709","url":"assets/js/e71332dd.6c157557.js"},{"revision":"5aadf21a878e6363463c7e49b6a7b602","url":"assets/js/ead3bc46.ec825d14.js"},{"revision":"6bf11c05529eb3a8cc762744689df455","url":"assets/js/f210ba15.c22ae324.js"},{"revision":"55089d11b15a6ea4606375e2db6293e2","url":"assets/js/f3e8f525.91cce953.js"},{"revision":"3809b66717a58af2532442bd7ef73fd7","url":"assets/js/f991d430.e5ca1bed.js"},{"revision":"ff43f85830bc30ac5874222c77f51cd7","url":"assets/js/main.9b1355e8.js"},{"revision":"fa705e3a80cf87f249e5596bd1adb4de","url":"assets/js/reactPlayerDailyMotion.738f2818.js"},{"revision":"8b1243c191eee8e95e0a6a708eba288e","url":"assets/js/reactPlayerDailyMotion.7a0663a3.js"},{"revision":"41d19232d64d14c89e5877356f2a6b05","url":"assets/js/reactPlayerFacebook.29d829e4.js"},{"revision":"531fc2e77cca39732c317a2ddf92f575","url":"assets/js/reactPlayerFacebook.f356aabe.js"},{"revision":"25d44fac11b3ca90a1ca5986c7c09b5e","url":"assets/js/reactPlayerFilePlayer.22eac319.js"},{"revision":"04925672e5b98ff8237addbbc654444a","url":"assets/js/reactPlayerFilePlayer.369ebcd2.js"},{"revision":"bd961d2348ef52542bc55ac014b83b47","url":"assets/js/reactPlayerKaltura.a01c8f0d.js"},{"revision":"1aebf77a0a08f40af4447953558f8025","url":"assets/js/reactPlayerKaltura.d9fe8d61.js"},{"revision":"09a787e0a94458610c032d9e7324a16a","url":"assets/js/reactPlayerMixcloud.18ab793c.js"},{"revision":"f39a72db725549c1b33338baf2cb6ad0","url":"assets/js/reactPlayerMixcloud.628d2aad.js"},{"revision":"dc4525e91b4e72b24085ed2c324320a6","url":"assets/js/reactPlayerPreview.be88363a.js"},{"revision":"80f13459a4108550c89c63da753822bc","url":"assets/js/reactPlayerPreview.f231a0e4.js"},{"revision":"57abacdb1bfa69e1667f0de18abb2ee1","url":"assets/js/reactPlayerSoundCloud.a9caeb97.js"},{"revision":"2fdc9f63691eaf901e55e96a56c38755","url":"assets/js/reactPlayerSoundCloud.dbf66862.js"},{"revision":"50f78eae646780dfc8206517738c64e3","url":"assets/js/reactPlayerStreamable.73717b36.js"},{"revision":"3f6d637f1e1e22ef07b7f0869372620c","url":"assets/js/reactPlayerStreamable.a7989fed.js"},{"revision":"5739fadd9511eb996f2fba60f994dc39","url":"assets/js/reactPlayerTwitch.0e1914f9.js"},{"revision":"e590a054e445eea5a9fe152f77800727","url":"assets/js/reactPlayerTwitch.29de27b3.js"},{"revision":"a1d58f96bfead4e46ccbc7f621e138bf","url":"assets/js/reactPlayerVidyard.3062dff8.js"},{"revision":"390e012e2150ee2682cba6afeb137b08","url":"assets/js/reactPlayerVidyard.8f758e65.js"},{"revision":"70166943b6826843062d9078eeddcd7e","url":"assets/js/reactPlayerVimeo.7c82082c.js"},{"revision":"30cc853dc6fe2e438532dbb75a09ed5e","url":"assets/js/reactPlayerVimeo.9434e0c7.js"},{"revision":"a5067c38e08ec41124901f3b7e89894e","url":"assets/js/reactPlayerWistia.2f05a362.js"},{"revision":"c83930d463a9354b72ae4c0c22a13316","url":"assets/js/reactPlayerWistia.401ec54b.js"},{"revision":"7752aaf57187271b6e7d4a7086e84cf2","url":"assets/js/reactPlayerYouTube.0ed3e867.js"},{"revision":"f478a0d93d8ebf48c2d437d531deb67f","url":"assets/js/reactPlayerYouTube.57dea3d3.js"},{"revision":"e1957c19ae4220a1060763059bfb00c8","url":"assets/js/runtime~main.54fd68e0.js"},{"revision":"fdbf3534e5263fb258578142d87c73cf","url":"benchmarks.html"},{"revision":"0dd09dc1fc509cf21fe65a9bfafb5f2f","url":"css/alert.css"},{"revision":"26eccd25118cde31ccb1092089f7e247","url":"css/footer.css"},{"revision":"6f7b508d481004b9153add9f669a9550","url":"css/icons.css"},{"revision":"6b15459ec3386f0e86f1d9536797035c","url":"css/markdown.css"},{"revision":"bd1fe6dc29bd206538887be781c81aec","url":"css/navbar.css"},{"revision":"51c186622df4c68a8615c8297e8b9022","url":"css/root.css"},{"revision":"e4fc76fc7377641814373e4f23a1c935","url":"css/sidebar.css"},{"revision":"d85a13f48184e29f22ace304a716aadc","url":"css/toc.css"},{"revision":"34c77c35a4040d68db1b755b29ef386b","url":"css/video.css"},{"revision":"4f43425a8ea1944e4fb08e66731138a8","url":"docs/architecture-concepts/application-lifecycle.html"},{"revision":"e9c2241d83051cfd192baedfc9140387","url":"docs/architecture-concepts/facades.html"},{"revision":"02b5060783fcce9c49b2ab24f583cdaa","url":"docs/architecture-concepts/service-container.html"},{"revision":"df10850d535d0a27e334d08dfd693bb9","url":"docs/architecture-concepts/service-providers.html"},{"revision":"ba91d0de2f5ad8437ff8eabe5c0b5ce1","url":"docs/cli-application/annotations.html"},{"revision":"1ea2c23e034f43619514b536069f78be","url":"docs/cli-application/commands.html"},{"revision":"a1cae843a96e9153318fa139a144cdd9","url":"docs/cli-application/error-handling.html"},{"revision":"2cae5f6d604c02a8e684e593bf4f30b5","url":"docs/cli-application/publishing.html"},{"revision":"ee039105d8bf74c605d63531b2bc33df","url":"docs/cli-application/running.html"},{"revision":"28bce8362dd33ec86679e159852999c2","url":"docs/database/getting-started.html"},{"revision":"1ccd7e9b50427d5223dc4b2cd5b04a2d","url":"docs/database/migrations.html"},{"revision":"aa722fd2c142460741560edd63452062","url":"docs/database/query-builder.html"},{"revision":"d8266ef87bf5aa0d534a046e5383c00b","url":"docs/database/seeding.html"},{"revision":"07a25d633697681be76d9654877c3446","url":"docs/digging-deeper/collections.html"},{"revision":"da58287ec862728622c51f5aa18f2ca2","url":"docs/digging-deeper/graceful-shutdown.html"},{"revision":"dcf06e5416e1553d4812cc5ec48b3d17","url":"docs/digging-deeper/library-development.html"},{"revision":"04da19509ae58852d89824f40bd0dadb","url":"docs/digging-deeper/mail.html"},{"revision":"bf1ca4e4877e0c5bfa054d202d3e25c7","url":"docs/digging-deeper/repl.html"},{"revision":"6459e96c589aec3c195c62b6842b4d06","url":"docs/getting-started/athennarc-file.html"},{"revision":"89a3ac3a66ae5a565671c4934073acfe","url":"docs/getting-started/configuration.html"},{"revision":"cc6d6a55228aef9eedb52fa2d32f838e","url":"docs/getting-started/directory-structure.html"},{"revision":"2424cb3194b83dc77514536e1045d48d","url":"docs/getting-started/installation.html"},{"revision":"a45e623f6d44319ce89126dbec0c1fd9","url":"docs/orm/annotations.html"},{"revision":"db4c92270daae0be900690d7323cfdca","url":"docs/orm/extending-models.html"},{"revision":"981212e513d85d73184b3d687861871d","url":"docs/orm/factories.html"},{"revision":"7f6354a69a8786093c471e982d3e2ffe","url":"docs/orm/getting-started.html"},{"revision":"484d4830e6c81c6bbf9a8b0a0acf1ce3","url":"docs/orm/query-builder.html"},{"revision":"557e8b43abbb9dbf8679223f92db7871","url":"docs/orm/relationships.html"},{"revision":"fe76f8d815e03e5bc631988c9c03555b","url":"docs/rest-api-application/annotations.html"},{"revision":"032a6e4f6fb2f15dddbd746f2ba38615","url":"docs/rest-api-application/controllers.html"},{"revision":"ca8a334111dbfda2cf2d6dd2a1d596f6","url":"docs/rest-api-application/error-handling.html"},{"revision":"f7121e9be26b51909b934425941ee218","url":"docs/rest-api-application/middlewares.html"},{"revision":"d8f88b6de4055b2cf6130a960cdff0da","url":"docs/rest-api-application/rate-limiting.html"},{"revision":"d54c1a393281cd9cca10dc454c42acc7","url":"docs/rest-api-application/request-context.html"},{"revision":"d3927fc7fdfebdc3c8d79f68a40730c8","url":"docs/rest-api-application/routing.html"},{"revision":"c2952db27a76b384c5c4a9dd7ab6f3a1","url":"docs/rest-api-application/security-with-helmet.html"},{"revision":"3ec50a6489afa8e3ab8248fa7eb22ee3","url":"docs/rest-api-application/static-files.html"},{"revision":"27f5a69bc63c7b2b6aa5da8c53c8f3a6","url":"docs/rest-api-application/swagger-documentation.html"},{"revision":"be5919b6c9ddbb0f6704328cd0621431","url":"docs/rest-api-application/tracing-requests.html"},{"revision":"367b970a5a359934138b8ccc3c78aefb","url":"docs/rest-api-application/views.html"},{"revision":"69aaf7dcbfaa1ac5c7abfd697242f927","url":"docs/testing/annotations.html"},{"revision":"3b19b51ed09fb3c2f3a8f1a790be3744","url":"docs/testing/cli-tests.html"},{"revision":"c129dad3e73d7279990e84b4cb38167b","url":"docs/testing/getting-started.html"},{"revision":"3b4f8c2bf76e6ebaa51a26a46e50621d","url":"docs/testing/mocking.html"},{"revision":"798790ef23f959390356698a7e4d6707","url":"docs/testing/rest-api-testing.html"},{"revision":"fb61199ea9980a080db7671909d36ecc","url":"docs/the-basics/compilation.html"},{"revision":"4a4103d0493fe97084344dafb425d996","url":"docs/the-basics/deployment.html"},{"revision":"4764d8237402683e1e20a2d7300b65f2","url":"docs/the-basics/helpers.html"},{"revision":"42f80c2f096adb379a0685388bfb2261","url":"docs/the-basics/logging.html"},{"revision":"73769c9730623cb267c9cdb5ca1c33af","url":"index.html"},{"revision":"b9c2d96551764c633b0de8edf9e82b16","url":"manifest.json"},{"revision":"9b5f8e4ac9bd0649aab896c55a382ed9","url":"img/codes/http-route.png"},{"revision":"8b1a6b58c0fdfe999985be48568bcaec","url":"img/codes/ignite.png"},{"revision":"1dc71eacd5e43b82f89fce76d3c79f74","url":"img/codes/test-route.png"},{"revision":"8819ca59541f4814b6a55fcf66ecabbe","url":"img/examples/artisan-ui.png"},{"revision":"5a842a80da3f7052d79847910389ecf9","url":"img/favicons/favicon.ico"},{"revision":"6441cbb8861a71fcfd9cd468b225a998","url":"img/favicons/minerva.ico"},{"revision":"d72ef880b711475e5291c0fdfb1964b3","url":"img/logos/athena.png"},{"revision":"5a842a80da3f7052d79847910389ecf9","url":"img/logos/logo.png"},{"revision":"6441cbb8861a71fcfd9cd468b225a998","url":"img/logos/minerva.png"},{"revision":"7ea4a962be30750a0653ef693b519370","url":"img/pre-visualization/home.png"},{"revision":"38d2d7a80eba1f9ba7bbcafed917c96c","url":"fonts/AbrilText-Bold.woff"},{"revision":"9fc10a629a1d43baa01c1ec8188ea3b7","url":"fonts/AbrilText-Bold.woff2"}]; const controller = new workbox_precaching__WEBPACK_IMPORTED_MODULE_0__.PrecacheController({ // Safer to turn this true? fallbackToNetwork: true,