diff --git a/404.html b/404.html index b1a7ad53..e22e35da 100644 --- a/404.html +++ b/404.html @@ -18,7 +18,7 @@ - + diff --git a/assets/js/1b2a18d5.56c143d3.js b/assets/js/1b2a18d5.3697ed96.js similarity index 93% rename from assets/js/1b2a18d5.56c143d3.js rename to assets/js/1b2a18d5.3697ed96.js index d074ad8e..c6c57937 100644 --- a/assets/js/1b2a18d5.56c143d3.js +++ b/assets/js/1b2a18d5.3697ed96.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_athenna_docs=self.webpackChunk_athenna_docs||[]).push([[6927],{7181:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var s=r(4848),t=r(8453),c=r(7049);const i={title:"Schedulers",sidebar_position:1,description:"See how to create and configure your CRON job schedulers."},a="Schedulers",o={id:"cron-application/schedulers",title:"Schedulers",description:"See how to create and configure your CRON job schedulers.",source:"@site/docs/cron-application/schedulers.mdx",sourceDirName:"cron-application",slug:"/cron-application/schedulers",permalink:"/docs/cron-application/schedulers",draft:!1,unlisted:!1,editUrl:"https://github.com/AthennaIO/Docs/tree/main/docs/cron-application/schedulers.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Schedulers",sidebar_position:1,description:"See how to create and configure your CRON job schedulers."},sidebar:"tutorialSidebar",previous:{title:"Annotations",permalink:"/docs/cli-application/annotations"},next:{title:"CRON Context",permalink:"/docs/cron-application/cron-context"}},l={},d=[{value:"Introduction",id:"introduction",level:2},{value:"Defining Schedulers",id:"defining-schedulers",level:2},{value:"Defining schedulers logic",id:"defining-schedulers-logic",level:3},{value:"Defining schedulers in route file",id:"defining-schedulers-in-route-file",level:4},{value:"Listing schedulers (Coming Soon)",id:"listing-schedulers-coming-soon",level:3},{value:"Running scheduler locally (Coming Soon)",id:"running-scheduler-locally-coming-soon",level:2},{value:"Using runOnInit option",id:"using-runoninit-option",level:3},{value:"Dependency injection in schedulers",id:"dependency-injection-in-schedulers",level:2},{value:"Automatic constructor injection",id:"automatic-constructor-injection",level:3}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"schedulers",children:"Schedulers"})}),"\n",(0,s.jsx)(n.p,{children:"See how to create and configure your CRON job schedulers."}),"\n",(0,s.jsx)(n.h2,{id:"introduction",children:"Introduction"}),"\n",(0,s.jsxs)(n.p,{children:["Athenna's scheduler offers a fresh approach to managing\nscheduled tasks on your server. The scheduler allows you\nto fluently and expressively define your scheduler within\nyour Athenna application itself. When using the scheduler,\nonly a single cron entry is needed on your server. Your\ntask schedule can be defined in your application's\n",(0,s.jsx)(c.A,{father:"routes",child:"cron.ts"})," file or as a class\ninside ",(0,s.jsx)(c.A,{father:"cron",child:"schedulers/MyScheduler.ts"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"defining-schedulers",children:"Defining Schedulers"}),"\n",(0,s.jsxs)(n.p,{children:["Schedulers are typically stored in the ",(0,s.jsx)(n.code,{children:"src/cron/scheduelrs"}),"\ndirectory; however, you are free to choose your own storage\nlocation as long as your schedulers can be imported and registered."]}),"\n",(0,s.jsxs)(n.p,{children:["To create a new scheduler, you may use the ",(0,s.jsx)(n.code,{children:"make:scheduler"}),"\nArtisan command. This command will create a new command class\nin the ",(0,s.jsx)(n.code,{children:"src/cron/schedulers"})," directory and register it inside\n",(0,s.jsx)(n.code,{children:"schedulers"})," array of ",(0,s.jsx)(n.code,{children:".athennarc.json"})," file. Don't worry if\nthis directory does not exist in your application\u2014it will be\ncreated the first time you run the ",(0,s.jsx)(n.code,{children:"make:scheduler"})," Artisan command:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"node artisan make:scheduler DeleteRecentUsers\n"})}),"\n",(0,s.jsx)(n.p,{children:"This will create the schedulers file and automatically register\nit for you:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",metastring:'title=".athennarc.json"',children:'{\n "schedulers": [\n "#src/cron/schedulers/DeleteRecentUsers" \ud83d\udc48\n ]\n}\n'})}),"\n",(0,s.jsx)(n.h3,{id:"defining-schedulers-logic",children:"Defining schedulers logic"}),"\n",(0,s.jsxs)(n.p,{children:["In this example, we will schedule a ",(0,s.jsx)(n.code,{children:"handler"})," method to be called\n",(0,s.jsx)(n.strong,{children:"every day at midnight"}),". Within the method we will execute a\ndatabase query to clear a table:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:"import { Database } from '@athenna/database'\nimport { Scheduler, type Context } from '@athenna/cron'\n\n@Scheduler({ pattern: '0 0 * * *' })\nexport class DeleteRecentUsers {\n public async handler(ctx: Context) {\n await Database.table('recent_users').delete()\n }\n}\n"})}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["You can use ",(0,s.jsx)(n.a,{href:"https://crontab.guru/",children:"Crontab.guru"})," to help you\ncreate your CRON pattern, or simply ask ",(0,s.jsx)(n.a,{href:"https://chatgpt.com/",children:"ChatGPT"})," \ud83e\udd29."]})}),"\n",(0,s.jsx)(n.h4,{id:"defining-schedulers-in-route-file",children:"Defining schedulers in route file"}),"\n",(0,s.jsxs)(n.p,{children:["If you prefer, you can use the ",(0,s.jsx)(c.A,{father:"routes",child:"cron.ts"}),"\nfile to register your schedulers:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:"import { Cron } from '@athenna/cron'\nimport { Database } from '@athenna/database'\n\nCron.schedule().name('delete_recent_users')\n .pattern('0 0 * * *')\n .handler(async (ctx) => {\n await Database.table('recent_users').delete()\n })\n"})}),"\n",(0,s.jsx)(n.h3,{id:"listing-schedulers-coming-soon",children:"Listing schedulers (Coming Soon)"}),"\n",(0,s.jsxs)(n.p,{children:["If you would like to view an overview of your scheduled tasks and the\nnext time they are scheduled to run, you may use the cron",":list"," Artisan\ncommand:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"node artisan cron:list\n"})}),"\n",(0,s.jsx)(n.h2,{id:"running-scheduler-locally-coming-soon",children:"Running scheduler locally (Coming Soon)"}),"\n",(0,s.jsxs)(n.p,{children:["When developing or even in production you might need to\nforce the scheduler to run. To do so you can use the\n",(0,s.jsx)(n.code,{children:"node artisan cron:run"})," command:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:"node artisan cron:run DeleteRecentUsers\n"})}),"\n",(0,s.jsx)(n.p,{children:"You can also use a CRON pattern, this will trigger all the\nschedulers registered with the same pattern:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:'node artisan cron:run "0 0 * * *"\n'})}),"\n",(0,s.jsxs)(n.h3,{id:"using-runoninit-option",children:["Using ",(0,s.jsx)(n.code,{children:"runOnInit"})," option"]}),"\n",(0,s.jsxs)(n.p,{children:["Another way to run your schedulers locally is to define the\n",(0,s.jsx)(n.code,{children:"runOnInit=true"})," option:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:"import { Database } from '@athenna/database'\nimport { Scheduler, type Context } from '@athenna/cron'\n\n@Scheduler({ \n runOnInit: true, \ud83d\udc48\n pattern: '0 0 * * *'\n})\nexport class DeleteRecentUsers {\n public async handler(ctx: Context) {\n await Database.table('recent_users').delete()\n }\n}\n"})}),"\n",(0,s.jsxs)(n.p,{children:["If using routes you may call the ",(0,s.jsx)(n.code,{children:"runOnInit()"})," method:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:"import { Cron } from '@athenna/cron'\nimport { Database } from '@athenna/database'\n\nCron.schedule().name('delete_recent_users')\n .runOnInit(true) \ud83d\udc48\n .pattern('0 0 * * *')\n .handler(async (ctx) => {\n await Database.table('recent_users').delete()\n })\n"})}),"\n",(0,s.jsxs)(n.p,{children:["If this option is set to ",(0,s.jsx)(n.code,{children:"true"}),", it will automatically run your\nscheduler when bootstrapping your Athenna application."]}),"\n",(0,s.jsx)(n.h2,{id:"dependency-injection-in-schedulers",children:"Dependency injection in schedulers"}),"\n",(0,s.jsxs)(n.p,{children:["When using schedulers classes you are able to use the ",(0,s.jsx)(n.code,{children:"@Inject()"}),"\nannotation to inject dependencies from you application within your\nscheduler class:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:"import { Inject } from '@athenna/ioc'\nimport { Scheduler, type Context } from '@athenna/cron'\nimport { RecentUserService } from '#src/services/RecentUserService'\n\n@Scheduler({ pattern: '0 0 * * *' })\nexport class DeleteRecentUsers {\n @Inject()\n public recentUserService: RecentUserService\n\n public async handler(ctx: Context) {\n await this.recentUserService.deleteAll()\n }\n}\n"})}),"\n",(0,s.jsx)(n.h3,{id:"automatic-constructor-injection",children:"Automatic constructor injection"}),"\n",(0,s.jsxs)(n.p,{children:["You can also use the automatic constructor injection if\nyour don't want to use the ",(0,s.jsx)(n.code,{children:"@Inject()"})," annotation:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:"import { Scheduler, type Context } from '@athenna/cron'\nimport type { RecentUserService } from '#src/services/RecentUserService'\n\n@Scheduler({ pattern: '0 0 * * *' })\nexport class DeleteRecentUsers {\n public recentUserService: RecentUserService\n\n public constructor(recentUserService: RecentUserService) {\n this.recentUserService = recentUserService\n }\n\n public async handler(ctx: Context) {\n await this.recentUserService.deleteAll()\n }\n}\n"})})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},7049:(e,n,r)=>{r.d(n,{A:()=>c});r(6540);const s={hoverCardContainer:"hoverCardContainer_jqUQ",hoverCardLink:"hoverCardLink_oDZU",hoverCard:"hoverCard_qTDS"};var t=r(4848);function c(e){let n=e.father;switch(e.father){case"storage":n="src/storage";break;case"logs":n="src/storage/logs";break;case"views":n="src/resources/views";break;case"locales":n="src/resources/locales";break;case"static":n="src/resources/static";break;case"config":n="src/config";break;case"database":n="src/database";break;case"seeders":n="src/database/seeders";break;case"migrations":n="src/database/migrations";break;case"console":n="src/console";break;case"commands":n="src/console/commands";break;case"cron":n="src/cron";break;case"schedulers":n="src/cron/schedulers";break;case"models":n="src/models";break;case"services":n="src/services";break;case"repositories":n="src/repositories";break;case"http":n="src/http";break;case"controllers":n="src/http/controllers";break;case"middlewares":n="src/http/middlewares";break;case"interceptors":n="src/http/interceptors";break;case"terminators":n="src/http/terminators";break;case"stubs":n="tests/stubs";break;case"fixtures":n="tests/fixtures";break;case"providers":n="src/providers";break;case"facades":n="src/facades";break;case"routes":n="src/routes"}return(0,t.jsxs)("div",{className:s.hoverCardContainer,children:[(0,t.jsx)("a",{className:s.hoverCardLink,href:`/docs/the-basics/helpers#path${e.father}`,children:(0,t.jsxs)("code",{children:["Path.",e.father,"(",e.child?`'${e.child}'`:"",")"]})}),(0,t.jsx)("div",{className:s.hoverCard,children:(0,t.jsxs)("p",{style:{margin:0},children:["./",n,e.child?`/${e.child}`:""]})})]})}},8453:(e,n,r)=>{r.d(n,{R:()=>i,x:()=>a});var s=r(6540);const t={},c=s.createContext(t);function i(e){const n=s.useContext(c);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),s.createElement(c.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_athenna_docs=self.webpackChunk_athenna_docs||[]).push([[6927],{7181:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var s=r(4848),t=r(8453),c=r(7049);const i={title:"Schedulers",sidebar_position:1,description:"See how to create and configure your CRON job schedulers."},a="Schedulers",o={id:"cron-application/schedulers",title:"Schedulers",description:"See how to create and configure your CRON job schedulers.",source:"@site/docs/cron-application/schedulers.mdx",sourceDirName:"cron-application",slug:"/cron-application/schedulers",permalink:"/docs/cron-application/schedulers",draft:!1,unlisted:!1,editUrl:"https://github.com/AthennaIO/Docs/tree/main/docs/cron-application/schedulers.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Schedulers",sidebar_position:1,description:"See how to create and configure your CRON job schedulers."},sidebar:"tutorialSidebar",previous:{title:"Annotations",permalink:"/docs/cli-application/annotations"},next:{title:"CRON Context",permalink:"/docs/cron-application/cron-context"}},l={},d=[{value:"Introduction",id:"introduction",level:2},{value:"Defining Schedulers",id:"defining-schedulers",level:2},{value:"Defining schedulers logic",id:"defining-schedulers-logic",level:3},{value:"Defining schedulers in route file",id:"defining-schedulers-in-route-file",level:4},{value:"Listing schedulers (Coming Soon)",id:"listing-schedulers-coming-soon",level:3},{value:"Running scheduler locally (Coming Soon)",id:"running-scheduler-locally-coming-soon",level:2},{value:"Using runOnInit option",id:"using-runoninit-option",level:3},{value:"Dependency injection in schedulers",id:"dependency-injection-in-schedulers",level:2},{value:"Automatic constructor injection",id:"automatic-constructor-injection",level:3}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"schedulers",children:"Schedulers"})}),"\n",(0,s.jsx)(n.p,{children:"See how to create and configure your CRON job schedulers."}),"\n",(0,s.jsx)(n.h2,{id:"introduction",children:"Introduction"}),"\n",(0,s.jsxs)(n.p,{children:["Athenna's scheduler offers a fresh approach to managing\nscheduled tasks on your server. The scheduler allows you\nto fluently and expressively define your scheduler within\nyour Athenna application itself. When using the scheduler,\nonly a single cron entry is needed on your server. Your\ntask schedule can be defined in your application's\n",(0,s.jsx)(c.A,{father:"routes",child:"cron.ts"})," file or as a class\ninside ",(0,s.jsx)(c.A,{father:"cron",child:"schedulers/MyScheduler.ts"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"defining-schedulers",children:"Defining Schedulers"}),"\n",(0,s.jsxs)(n.p,{children:["Schedulers are typically stored in the ",(0,s.jsx)(n.code,{children:"src/cron/scheduelrs"}),"\ndirectory; however, you are free to choose your own storage\nlocation as long as your schedulers can be imported and registered."]}),"\n",(0,s.jsxs)(n.p,{children:["To create a new scheduler, you may use the ",(0,s.jsx)(n.code,{children:"make:scheduler"}),"\nArtisan command. This command will create a new command class\nin the ",(0,s.jsx)(n.code,{children:"src/cron/schedulers"})," directory and register it inside\n",(0,s.jsx)(n.code,{children:"schedulers"})," array of ",(0,s.jsx)(n.code,{children:".athennarc.json"})," file. Don't worry if\nthis directory does not exist in your application\u2014it will be\ncreated the first time you run the ",(0,s.jsx)(n.code,{children:"make:scheduler"})," Artisan command:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"node artisan make:scheduler DeleteRecentUsers\n"})}),"\n",(0,s.jsx)(n.p,{children:"This will create the schedulers file and automatically register\nit for you:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",metastring:'title=".athennarc.json"',children:'{\n "schedulers": [\n "#src/cron/schedulers/DeleteRecentUsers" \ud83d\udc48\n ]\n}\n'})}),"\n",(0,s.jsx)(n.h3,{id:"defining-schedulers-logic",children:"Defining schedulers logic"}),"\n",(0,s.jsxs)(n.p,{children:["In this example, we will schedule a ",(0,s.jsx)(n.code,{children:"handler"})," method to be called\n",(0,s.jsx)(n.strong,{children:"every day at midnight"}),". Within the method we will execute a\ndatabase query to clear a table:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:"import { Database } from '@athenna/database'\nimport { Scheduler, type Context } from '@athenna/cron'\n\n@Scheduler({ pattern: '0 0 * * *' })\nexport class DeleteRecentUsers {\n public async handler(ctx: Context) {\n await Database.table('recent_users').delete()\n }\n}\n"})}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["You can use ",(0,s.jsx)(n.a,{href:"https://crontab.guru/",children:"Crontab.guru"})," to help you\ncreate your CRON pattern, or simply ask ",(0,s.jsx)(n.a,{href:"https://chatgpt.com/",children:"ChatGPT"})," \ud83e\udd29."]})}),"\n",(0,s.jsx)(n.h4,{id:"defining-schedulers-in-route-file",children:"Defining schedulers in route file"}),"\n",(0,s.jsxs)(n.p,{children:["If you prefer, you can use the ",(0,s.jsx)(c.A,{father:"routes",child:"cron.ts"}),"\nfile to register your schedulers:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:"import { Cron } from '@athenna/cron'\nimport { Database } from '@athenna/database'\n\nCron.schedule().name('delete_recent_users')\n .pattern('0 0 * * *')\n .handler(async (ctx) => {\n await Database.table('recent_users').delete()\n })\n"})}),"\n",(0,s.jsx)(n.h3,{id:"listing-schedulers-coming-soon",children:"Listing schedulers (Coming Soon)"}),"\n",(0,s.jsxs)(n.p,{children:["If you would like to view an overview of your scheduled tasks and the\nnext time they are scheduled to run, you may use the cron",":list"," Artisan\ncommand:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"node artisan cron:list\n"})}),"\n",(0,s.jsx)(n.h2,{id:"running-scheduler-locally-coming-soon",children:"Running scheduler locally (Coming Soon)"}),"\n",(0,s.jsxs)(n.p,{children:["When developing or even in production you might need to\nforce the scheduler to run. To do so you can use the\n",(0,s.jsx)(n.code,{children:"node artisan cron:run"})," command:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:"node artisan cron:run DeleteRecentUsers\n"})}),"\n",(0,s.jsx)(n.p,{children:"You can also use a CRON pattern, this will trigger all the\nschedulers registered with the same pattern:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:'node artisan cron:run "0 0 * * *"\n'})}),"\n",(0,s.jsxs)(n.h3,{id:"using-runoninit-option",children:["Using ",(0,s.jsx)(n.code,{children:"runOnInit"})," option"]}),"\n",(0,s.jsxs)(n.p,{children:["Another way to run your schedulers locally is to define the\n",(0,s.jsx)(n.code,{children:"runOnInit=true"})," option:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:"import { Database } from '@athenna/database'\nimport { Scheduler, type Context } from '@athenna/cron'\n\n@Scheduler({ \n runOnInit: true, \ud83d\udc48\n pattern: '0 0 * * *'\n})\nexport class DeleteRecentUsers {\n public async handler(ctx: Context) {\n await Database.table('recent_users').delete()\n }\n}\n"})}),"\n",(0,s.jsxs)(n.p,{children:["If using routes you may call the ",(0,s.jsx)(n.code,{children:"runOnInit()"})," method:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:"import { Cron } from '@athenna/cron'\nimport { Database } from '@athenna/database'\n\nCron.schedule().name('delete_recent_users')\n .runOnInit(true) \ud83d\udc48\n .pattern('0 0 * * *')\n .handler(async (ctx) => {\n await Database.table('recent_users').delete()\n })\n"})}),"\n",(0,s.jsxs)(n.p,{children:["If this option is set to ",(0,s.jsx)(n.code,{children:"true"}),", it will automatically run your\nscheduler when bootstrapping your Athenna application."]}),"\n",(0,s.jsx)(n.h2,{id:"dependency-injection-in-schedulers",children:"Dependency injection in schedulers"}),"\n",(0,s.jsxs)(n.p,{children:["When using schedulers classes you are able to use the ",(0,s.jsx)(n.code,{children:"@Inject()"}),"\nannotation to inject dependencies from your application within your\nscheduler class:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:"import { Inject } from '@athenna/ioc'\nimport { Scheduler, type Context } from '@athenna/cron'\nimport { RecentUserService } from '#src/services/RecentUserService'\n\n@Scheduler({ pattern: '0 0 * * *' })\nexport class DeleteRecentUsers {\n @Inject()\n public recentUserService: RecentUserService\n\n public async handler(ctx: Context) {\n await this.recentUserService.deleteAll()\n }\n}\n"})}),"\n",(0,s.jsx)(n.h3,{id:"automatic-constructor-injection",children:"Automatic constructor injection"}),"\n",(0,s.jsxs)(n.p,{children:["You can also use the automatic constructor injection if\nyou don't want to use the ",(0,s.jsx)(n.code,{children:"@Inject()"})," annotation:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:"import { Scheduler, type Context } from '@athenna/cron'\nimport type { RecentUserService } from '#src/services/RecentUserService'\n\n@Scheduler({ pattern: '0 0 * * *' })\nexport class DeleteRecentUsers {\n public recentUserService: RecentUserService\n\n public constructor(recentUserService: RecentUserService) {\n this.recentUserService = recentUserService\n }\n\n public async handler(ctx: Context) {\n await this.recentUserService.deleteAll()\n }\n}\n"})})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},7049:(e,n,r)=>{r.d(n,{A:()=>c});r(6540);const s={hoverCardContainer:"hoverCardContainer_jqUQ",hoverCardLink:"hoverCardLink_oDZU",hoverCard:"hoverCard_qTDS"};var t=r(4848);function c(e){let n=e.father;switch(e.father){case"storage":n="src/storage";break;case"logs":n="src/storage/logs";break;case"views":n="src/resources/views";break;case"locales":n="src/resources/locales";break;case"static":n="src/resources/static";break;case"config":n="src/config";break;case"database":n="src/database";break;case"seeders":n="src/database/seeders";break;case"migrations":n="src/database/migrations";break;case"console":n="src/console";break;case"commands":n="src/console/commands";break;case"cron":n="src/cron";break;case"schedulers":n="src/cron/schedulers";break;case"models":n="src/models";break;case"services":n="src/services";break;case"repositories":n="src/repositories";break;case"http":n="src/http";break;case"controllers":n="src/http/controllers";break;case"middlewares":n="src/http/middlewares";break;case"interceptors":n="src/http/interceptors";break;case"terminators":n="src/http/terminators";break;case"stubs":n="tests/stubs";break;case"fixtures":n="tests/fixtures";break;case"providers":n="src/providers";break;case"facades":n="src/facades";break;case"routes":n="src/routes"}return(0,t.jsxs)("div",{className:s.hoverCardContainer,children:[(0,t.jsx)("a",{className:s.hoverCardLink,href:`/docs/the-basics/helpers#path${e.father}`,children:(0,t.jsxs)("code",{children:["Path.",e.father,"(",e.child?`'${e.child}'`:"",")"]})}),(0,t.jsx)("div",{className:s.hoverCard,children:(0,t.jsxs)("p",{style:{margin:0},children:["./",n,e.child?`/${e.child}`:""]})})]})}},8453:(e,n,r)=>{r.d(n,{R:()=>i,x:()=>a});var s=r(6540);const t={},c=s.createContext(t);function i(e){const n=s.useContext(c);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),s.createElement(c.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.cf6a7cff.js b/assets/js/runtime~main.2bb103db.js similarity index 99% rename from assets/js/runtime~main.cf6a7cff.js rename to assets/js/runtime~main.2bb103db.js index dcba89d4..266ccd48 100644 --- a/assets/js/runtime~main.cf6a7cff.js +++ b/assets/js/runtime~main.2bb103db.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,c,r,d,f={},t={};function b(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={exports:{}};return f[e].call(c.exports,c,c.exports,b),c.exports}b.m=f,e=[],b.O=(a,c,r,d)=>{if(!c){var f=1/0;for(n=0;n=d)&&Object.keys(b.O).every((e=>b.O[e](c[o])))?c.splice(o--,1):(t=!1,d0&&e[n-1][2]>d;n--)e[n]=e[n-1];e[n]=[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 f={};a=a||[null,c({}),c([]),c(c)];for(var t=2&r&&e;"object"==typeof t&&!~a.indexOf(t);t=c(t))Object.getOwnPropertyNames(t).forEach((a=>f[a]=()=>e[a]));return f.default=()=>e,b.d(d,f),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/"+({177:"f3e8f525",217:"cc784980",755:"a4d3e054",773:"94e1aa3d",794:"e6388bba",849:"0058b4c6",918:"8f88d278",1235:"a7456010",1438:"3ebc3d67",1746:"391d9c20",1992:"801e3691",2042:"reactPlayerTwitch",2106:"ad6f9ff5",2190:"1cb4e3ed",2350:"3fb3fb7f",2723:"reactPlayerMux",3077:"77db9a17",3082:"50bfad63",3217:"96c97f44",3392:"reactPlayerVidyard",3582:"08133570",3699:"2ab4562b",3737:"94cba6ed",3892:"c24fb5a2",4583:"1df93b7f",4620:"84dac133",4638:"60418129",4881:"1bfe5704",4890:"30d27832",5202:"8416df86",5312:"26455d6c",5390:"25ef7947",5424:"e71332dd",5583:"f991d430",5742:"aba21aa0",6061:"1f391b9e",6173:"reactPlayerVimeo",6295:"21dc2778",6328:"reactPlayerDailyMotion",6353:"reactPlayerPreview",6427:"98b8cc29",6459:"6459b84b",6463:"reactPlayerKaltura",6563:"4a3e27c5",6619:"bfc576a4",6701:"28a593c7",6742:"807b6800",6887:"reactPlayerFacebook",6927:"1b2a18d5",7033:"ead3bc46",7098:"a7bd4aaa",7170:"ba3d4959",7182:"e2eeca55",7336:"3aefb2a9",7345:"f210ba15",7458:"reactPlayerFilePlayer",7570:"reactPlayerMixcloud",7627:"reactPlayerStreamable",7729:"76be5683",7802:"d295d49b",7867:"4ca25bb5",7952:"59190afd",8194:"a2c501c8",8401:"17896441",8446:"reactPlayerYouTube",8459:"0b6406e9",8475:"31058b07",8849:"751a75f6",8995:"cbe663fe",9048:"a94703ab",9116:"d550161c",9195:"bfc34fa7",9257:"3f163355",9340:"reactPlayerWistia",9346:"62e3c86b",9647:"5e95c892",9655:"a21dcd43",9979:"reactPlayerSoundCloud"}[e]||e)+"."+{177:"b365d540",217:"8e829d8e",755:"763b2a62",773:"4adec87c",794:"9f60e687",849:"3377be63",918:"aea094c1",1169:"da74cb51",1176:"3fa1f1a0",1235:"899d59d8",1245:"0093dbf5",1303:"3d23202d",1331:"b04ae620",1398:"b34f2eb3",1438:"710b7f21",1746:"80cef5a3",1946:"c1f898cd",1992:"ae983ce3",2042:"55051469",2106:"a065e090",2130:"e743b6f2",2190:"4ef422e6",2237:"e35c7faa",2350:"82cdc3c7",2362:"92df48f8",2376:"89729940",2453:"4efe8b38",2548:"b0f7735f",2723:"7e2e3f86",2843:"88f75fed",2925:"9d15cf56",2983:"44d58df4",3068:"a770ed84",3077:"cfdd980b",3082:"bed9431a",3217:"777fb791",3392:"090f167f",3582:"7810342c",3626:"5a9700a2",3699:"80d506c1",3706:"59d3c775",3737:"a30398e0",3892:"e249ccb5",4132:"f281ab14",4162:"d00bd1cc",4334:"66dbfd08",4583:"50f773da",4620:"690e12ba",4638:"0dee389f",4741:"8e6c530a",4881:"a89fa12e",4890:"8c09266b",4943:"60400b58",5202:"1f125844",5312:"54502484",5390:"1714955d",5424:"083d306c",5583:"a6763569",5742:"9e876600",6061:"c2f91780",6173:"6ee50fc8",6295:"d0235ee8",6328:"ea480b77",6353:"9d736f65",6420:"f2879ce4",6427:"41262bc9",6459:"41354f80",6463:"065e45b1",6563:"dedb7468",6619:"5f25d85d",6701:"2deffc28",6742:"dca80451",6788:"80aec321",6803:"73ef982b",6887:"1dd4863c",6927:"56c143d3",7033:"2dc2ba37",7098:"288b6c02",7170:"1dc5260b",7182:"706e84f8",7336:"5e2f1293",7345:"27977df4",7426:"280729df",7458:"bef56796",7570:"c3e2db4a",7627:"d93f5569",7729:"52c4503c",7802:"7eea1fd8",7867:"db049c7f",7952:"a05b5ce2",8055:"b792f2c6",8194:"3cf5e88c",8337:"8759c63e",8401:"c1b96131",8446:"6664bacb",8459:"a27a161b",8475:"0f0edd0e",8478:"e7701138",8635:"75cbcfbe",8676:"ee4f37b1",8810:"92902e39",8849:"4bd9a970",8869:"9590b926",8995:"c30f3794",9048:"27dd5686",9116:"42e59631",9195:"f99ddc31",9257:"68d2b803",9340:"5498c2c2",9346:"35430c50",9647:"506f1936",9655:"bf6ad62c",9689:"74e05a4b",9730:"aa51d1f6",9979:"d89f0440"}[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,f)=>{if(r[e])r[e].push(a);else{var t,o;if(void 0!==c)for(var l=document.getElementsByTagName("script"),n=0;n{t.onerror=t.onload=null,clearTimeout(s);var d=r[e];if(delete r[e],t.parentNode&&t.parentNode.removeChild(t),d&&d.forEach((e=>e(c))),a)return a(c)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=u.bind(null,t.onerror),t.onload=u.bind(null,t.onload),o&&document.head.appendChild(t)}},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:"8401",60418129:"4638",f3e8f525:"177",cc784980:"217",a4d3e054:"755","94e1aa3d":"773",e6388bba:"794","0058b4c6":"849","8f88d278":"918",a7456010:"1235","3ebc3d67":"1438","391d9c20":"1746","801e3691":"1992",reactPlayerTwitch:"2042",ad6f9ff5:"2106","1cb4e3ed":"2190","3fb3fb7f":"2350",reactPlayerMux:"2723","77db9a17":"3077","50bfad63":"3082","96c97f44":"3217",reactPlayerVidyard:"3392","08133570":"3582","2ab4562b":"3699","94cba6ed":"3737",c24fb5a2:"3892","1df93b7f":"4583","84dac133":"4620","1bfe5704":"4881","30d27832":"4890","8416df86":"5202","26455d6c":"5312","25ef7947":"5390",e71332dd:"5424",f991d430:"5583",aba21aa0:"5742","1f391b9e":"6061",reactPlayerVimeo:"6173","21dc2778":"6295",reactPlayerDailyMotion:"6328",reactPlayerPreview:"6353","98b8cc29":"6427","6459b84b":"6459",reactPlayerKaltura:"6463","4a3e27c5":"6563",bfc576a4:"6619","28a593c7":"6701","807b6800":"6742",reactPlayerFacebook:"6887","1b2a18d5":"6927",ead3bc46:"7033",a7bd4aaa:"7098",ba3d4959:"7170",e2eeca55:"7182","3aefb2a9":"7336",f210ba15:"7345",reactPlayerFilePlayer:"7458",reactPlayerMixcloud:"7570",reactPlayerStreamable:"7627","76be5683":"7729",d295d49b:"7802","4ca25bb5":"7867","59190afd":"7952",a2c501c8:"8194",reactPlayerYouTube:"8446","0b6406e9":"8459","31058b07":"8475","751a75f6":"8849",cbe663fe:"8995",a94703ab:"9048",d550161c:"9116",bfc34fa7:"9195","3f163355":"9257",reactPlayerWistia:"9340","62e3c86b":"9346","5e95c892":"9647",a21dcd43:"9655",reactPlayerSoundCloud:"9979"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869: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(/^(1869|5354)$/.test(a))e[a]=0;else{var d=new Promise(((c,d)=>r=e[a]=[c,d]));c.push(r[2]=d);var f=b.p+b.u(a),t=new Error;b.l(f,(c=>{if(b.o(e,a)&&(0!==(r=e[a])&&(e[a]=void 0),r)){var d=c&&("load"===c.type?"missing":c.type),f=c&&c.target&&c.target.src;t.message="Loading chunk "+a+" failed.\n("+d+": "+f+")",t.name="ChunkLoadError",t.type=d,t.request=f,r[1](t)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,c)=>{var r,d,f=c[0],t=c[1],o=c[2],l=0;if(f.some((a=>0!==e[a]))){for(r in t)b.o(t,r)&&(b.m[r]=t[r]);if(o)var n=o(b)}for(a&&a(c);l{"use strict";var e,a,c,r,d,f={},t={};function b(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={exports:{}};return f[e].call(c.exports,c,c.exports,b),c.exports}b.m=f,e=[],b.O=(a,c,r,d)=>{if(!c){var f=1/0;for(n=0;n=d)&&Object.keys(b.O).every((e=>b.O[e](c[o])))?c.splice(o--,1):(t=!1,d0&&e[n-1][2]>d;n--)e[n]=e[n-1];e[n]=[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 f={};a=a||[null,c({}),c([]),c(c)];for(var t=2&r&&e;"object"==typeof t&&!~a.indexOf(t);t=c(t))Object.getOwnPropertyNames(t).forEach((a=>f[a]=()=>e[a]));return f.default=()=>e,b.d(d,f),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/"+({177:"f3e8f525",217:"cc784980",755:"a4d3e054",773:"94e1aa3d",794:"e6388bba",849:"0058b4c6",918:"8f88d278",1235:"a7456010",1438:"3ebc3d67",1746:"391d9c20",1992:"801e3691",2042:"reactPlayerTwitch",2106:"ad6f9ff5",2190:"1cb4e3ed",2350:"3fb3fb7f",2723:"reactPlayerMux",3077:"77db9a17",3082:"50bfad63",3217:"96c97f44",3392:"reactPlayerVidyard",3582:"08133570",3699:"2ab4562b",3737:"94cba6ed",3892:"c24fb5a2",4583:"1df93b7f",4620:"84dac133",4638:"60418129",4881:"1bfe5704",4890:"30d27832",5202:"8416df86",5312:"26455d6c",5390:"25ef7947",5424:"e71332dd",5583:"f991d430",5742:"aba21aa0",6061:"1f391b9e",6173:"reactPlayerVimeo",6295:"21dc2778",6328:"reactPlayerDailyMotion",6353:"reactPlayerPreview",6427:"98b8cc29",6459:"6459b84b",6463:"reactPlayerKaltura",6563:"4a3e27c5",6619:"bfc576a4",6701:"28a593c7",6742:"807b6800",6887:"reactPlayerFacebook",6927:"1b2a18d5",7033:"ead3bc46",7098:"a7bd4aaa",7170:"ba3d4959",7182:"e2eeca55",7336:"3aefb2a9",7345:"f210ba15",7458:"reactPlayerFilePlayer",7570:"reactPlayerMixcloud",7627:"reactPlayerStreamable",7729:"76be5683",7802:"d295d49b",7867:"4ca25bb5",7952:"59190afd",8194:"a2c501c8",8401:"17896441",8446:"reactPlayerYouTube",8459:"0b6406e9",8475:"31058b07",8849:"751a75f6",8995:"cbe663fe",9048:"a94703ab",9116:"d550161c",9195:"bfc34fa7",9257:"3f163355",9340:"reactPlayerWistia",9346:"62e3c86b",9647:"5e95c892",9655:"a21dcd43",9979:"reactPlayerSoundCloud"}[e]||e)+"."+{177:"b365d540",217:"8e829d8e",755:"763b2a62",773:"4adec87c",794:"9f60e687",849:"3377be63",918:"aea094c1",1169:"da74cb51",1176:"3fa1f1a0",1235:"899d59d8",1245:"0093dbf5",1303:"3d23202d",1331:"b04ae620",1398:"b34f2eb3",1438:"710b7f21",1746:"80cef5a3",1946:"c1f898cd",1992:"ae983ce3",2042:"55051469",2106:"a065e090",2130:"e743b6f2",2190:"4ef422e6",2237:"e35c7faa",2350:"82cdc3c7",2362:"92df48f8",2376:"89729940",2453:"4efe8b38",2548:"b0f7735f",2723:"7e2e3f86",2843:"88f75fed",2925:"9d15cf56",2983:"44d58df4",3068:"a770ed84",3077:"cfdd980b",3082:"bed9431a",3217:"777fb791",3392:"090f167f",3582:"7810342c",3626:"5a9700a2",3699:"80d506c1",3706:"59d3c775",3737:"a30398e0",3892:"e249ccb5",4132:"f281ab14",4162:"d00bd1cc",4334:"66dbfd08",4583:"50f773da",4620:"690e12ba",4638:"0dee389f",4741:"8e6c530a",4881:"a89fa12e",4890:"8c09266b",4943:"60400b58",5202:"1f125844",5312:"54502484",5390:"1714955d",5424:"083d306c",5583:"a6763569",5742:"9e876600",6061:"c2f91780",6173:"6ee50fc8",6295:"d0235ee8",6328:"ea480b77",6353:"9d736f65",6420:"f2879ce4",6427:"41262bc9",6459:"41354f80",6463:"065e45b1",6563:"dedb7468",6619:"5f25d85d",6701:"2deffc28",6742:"dca80451",6788:"80aec321",6803:"73ef982b",6887:"1dd4863c",6927:"3697ed96",7033:"2dc2ba37",7098:"288b6c02",7170:"1dc5260b",7182:"706e84f8",7336:"5e2f1293",7345:"27977df4",7426:"280729df",7458:"bef56796",7570:"c3e2db4a",7627:"d93f5569",7729:"52c4503c",7802:"7eea1fd8",7867:"db049c7f",7952:"a05b5ce2",8055:"b792f2c6",8194:"3cf5e88c",8337:"8759c63e",8401:"c1b96131",8446:"6664bacb",8459:"a27a161b",8475:"0f0edd0e",8478:"e7701138",8635:"75cbcfbe",8676:"ee4f37b1",8810:"92902e39",8849:"4bd9a970",8869:"9590b926",8995:"c30f3794",9048:"27dd5686",9116:"42e59631",9195:"f99ddc31",9257:"68d2b803",9340:"5498c2c2",9346:"35430c50",9647:"506f1936",9655:"bf6ad62c",9689:"74e05a4b",9730:"aa51d1f6",9979:"d89f0440"}[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,f)=>{if(r[e])r[e].push(a);else{var t,o;if(void 0!==c)for(var l=document.getElementsByTagName("script"),n=0;n{t.onerror=t.onload=null,clearTimeout(s);var d=r[e];if(delete r[e],t.parentNode&&t.parentNode.removeChild(t),d&&d.forEach((e=>e(c))),a)return a(c)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=u.bind(null,t.onerror),t.onload=u.bind(null,t.onload),o&&document.head.appendChild(t)}},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:"8401",60418129:"4638",f3e8f525:"177",cc784980:"217",a4d3e054:"755","94e1aa3d":"773",e6388bba:"794","0058b4c6":"849","8f88d278":"918",a7456010:"1235","3ebc3d67":"1438","391d9c20":"1746","801e3691":"1992",reactPlayerTwitch:"2042",ad6f9ff5:"2106","1cb4e3ed":"2190","3fb3fb7f":"2350",reactPlayerMux:"2723","77db9a17":"3077","50bfad63":"3082","96c97f44":"3217",reactPlayerVidyard:"3392","08133570":"3582","2ab4562b":"3699","94cba6ed":"3737",c24fb5a2:"3892","1df93b7f":"4583","84dac133":"4620","1bfe5704":"4881","30d27832":"4890","8416df86":"5202","26455d6c":"5312","25ef7947":"5390",e71332dd:"5424",f991d430:"5583",aba21aa0:"5742","1f391b9e":"6061",reactPlayerVimeo:"6173","21dc2778":"6295",reactPlayerDailyMotion:"6328",reactPlayerPreview:"6353","98b8cc29":"6427","6459b84b":"6459",reactPlayerKaltura:"6463","4a3e27c5":"6563",bfc576a4:"6619","28a593c7":"6701","807b6800":"6742",reactPlayerFacebook:"6887","1b2a18d5":"6927",ead3bc46:"7033",a7bd4aaa:"7098",ba3d4959:"7170",e2eeca55:"7182","3aefb2a9":"7336",f210ba15:"7345",reactPlayerFilePlayer:"7458",reactPlayerMixcloud:"7570",reactPlayerStreamable:"7627","76be5683":"7729",d295d49b:"7802","4ca25bb5":"7867","59190afd":"7952",a2c501c8:"8194",reactPlayerYouTube:"8446","0b6406e9":"8459","31058b07":"8475","751a75f6":"8849",cbe663fe:"8995",a94703ab:"9048",d550161c:"9116",bfc34fa7:"9195","3f163355":"9257",reactPlayerWistia:"9340","62e3c86b":"9346","5e95c892":"9647",a21dcd43:"9655",reactPlayerSoundCloud:"9979"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869: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(/^(1869|5354)$/.test(a))e[a]=0;else{var d=new Promise(((c,d)=>r=e[a]=[c,d]));c.push(r[2]=d);var f=b.p+b.u(a),t=new Error;b.l(f,(c=>{if(b.o(e,a)&&(0!==(r=e[a])&&(e[a]=void 0),r)){var d=c&&("load"===c.type?"missing":c.type),f=c&&c.target&&c.target.src;t.message="Loading chunk "+a+" failed.\n("+d+": "+f+")",t.name="ChunkLoadError",t.type=d,t.request=f,r[1](t)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,c)=>{var r,d,f=c[0],t=c[1],o=c[2],l=0;if(f.some((a=>0!==e[a]))){for(r in t)b.o(t,r)&&(b.m[r]=t[r]);if(o)var n=o(b)}for(a&&a(c);l - + diff --git a/docs/architecture-concepts/application-lifecycle.html b/docs/architecture-concepts/application-lifecycle.html index 88ddafd8..6c047a93 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 8f8b4e3e..5b082835 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 87f2dfcf..3c5ea384 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 9c0c7307..6f6348a9 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 e2e94562..5f871912 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 8a2d337d..fb14dbf2 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 f555d363..500d5053 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 bb4a5f48..7a703d34 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 2588249b..b22679e3 100644 --- a/docs/cli-application/running.html +++ b/docs/cli-application/running.html @@ -18,7 +18,7 @@ - + diff --git a/docs/cron-application/annotations.html b/docs/cron-application/annotations.html index 8af91eac..43f7d1cc 100644 --- a/docs/cron-application/annotations.html +++ b/docs/cron-application/annotations.html @@ -18,7 +18,7 @@ - + diff --git a/docs/cron-application/cron-context.html b/docs/cron-application/cron-context.html index e72b6d7e..c91b41ea 100644 --- a/docs/cron-application/cron-context.html +++ b/docs/cron-application/cron-context.html @@ -18,7 +18,7 @@ - + diff --git a/docs/cron-application/error-handling.html b/docs/cron-application/error-handling.html index 7e025012..b56b896b 100644 --- a/docs/cron-application/error-handling.html +++ b/docs/cron-application/error-handling.html @@ -18,7 +18,7 @@ - + diff --git a/docs/cron-application/schedulers.html b/docs/cron-application/schedulers.html index 1753a055..eb62beed 100644 --- a/docs/cron-application/schedulers.html +++ b/docs/cron-application/schedulers.html @@ -18,7 +18,7 @@ - + @@ -81,12 +81,12 @@

Using scheduler when bootstrapping your Athenna application.

Dependency injection in schedulers

When using schedulers classes you are able to use the @Inject() -annotation to inject dependencies from you application within your +annotation to inject dependencies from your application within your scheduler class:

import { Inject } from '@athenna/ioc'
import { Scheduler, type Context } from '@athenna/cron'
import { RecentUserService } from '#src/services/RecentUserService'

@Scheduler({ pattern: '0 0 * * *' })
export class DeleteRecentUsers {
@Inject()
public recentUserService: RecentUserService

public async handler(ctx: Context) {
await this.recentUserService.deleteAll()
}
}

Automatic constructor injection

You can also use the automatic constructor injection if -your don't want to use the @Inject() annotation:

+you don't want to use the @Inject() annotation:

import { Scheduler, type Context } from '@athenna/cron'
import type { RecentUserService } from '#src/services/RecentUserService'

@Scheduler({ pattern: '0 0 * * *' })
export class DeleteRecentUsers {
public recentUserService: RecentUserService

public constructor(recentUserService: RecentUserService) {
this.recentUserService = recentUserService
}

public async handler(ctx: Context) {
await this.recentUserService.deleteAll()
}
}
\ No newline at end of file diff --git a/docs/cron-application/tracing-executions.html b/docs/cron-application/tracing-executions.html index 78f1625b..72053ea5 100644 --- a/docs/cron-application/tracing-executions.html +++ b/docs/cron-application/tracing-executions.html @@ -18,7 +18,7 @@ - + diff --git a/docs/database/getting-started.html b/docs/database/getting-started.html index 6bd32ad1..e7e8201c 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 2ab5f485..cd59d6b4 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 b28074f1..44152515 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 30add955..c40dcc45 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 01c5c26b..4debfabc 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 e94c9753..717501fa 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 ac0808c4..b78462ff 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 c76859be..21b84677 100644 --- a/docs/digging-deeper/mail.html +++ b/docs/digging-deeper/mail.html @@ -18,7 +18,7 @@ - + diff --git a/docs/digging-deeper/repl.html b/docs/digging-deeper/repl.html index 12bd2eac..c5e5fb45 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 8bd9af3d..7ccf91ff 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 1ccd27fd..e940ad4e 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 33ac4fda..814f9e23 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 500b5442..f51c0418 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 4e284526..d8bbd2ce 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 531784ed..f31adb00 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 fd7823c4..9b3e0391 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 4d447836..f8026dd2 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 997c1be6..944556e6 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 b82c3f8a..49c77fe2 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 c903fe1a..b5cc15ad 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 5c7ee97b..b4c0d615 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 922158d4..760198c4 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 d937aaac..761654a5 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 2b4c0cab..c6ec522a 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 e05d74df..3f4b980f 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 eab88cfd..8fbcaf2c 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 b612892a..9d9c7dea 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 28e6ba7b..7481ca71 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 2832c7cb..9ab8a2ca 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 9cbe7912..eee2aa50 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 395bd421..27cea6ba 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 0c5ee0a3..3e494a7a 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 e465c9ee..da31f729 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 cd2c7856..0c968e14 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 fb33cd93..0eeffa1b 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 f8868e77..b9fc9b9c 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 93aa7426..1f36bbb2 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 217bca12..bfc64206 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 bf8fbdf4..e04cdbb4 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 8187442a..0f7efda3 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 9ace72e9..5f20077b 100644 --- a/index.html +++ b/index.html @@ -18,7 +18,7 @@ - + diff --git a/sw.js b/sw.js index 6ffd9757..b2536974 100644 --- a/sw.js +++ b/sw.js @@ -4554,7 +4554,7 @@ function getPossibleURLs(url) { (async () => { const params = parseSwParams(); // eslint-disable-next-line no-underscore-dangle - const precacheManifest = [{"revision":"042add3da5a41b96013acdb05c836e6b","url":"404.html"},{"revision":"f4a4d2b1f3c75aa844da99e846418970","url":"assets/css/styles.48bfade9.css"},{"revision":"2e382f6be70f6a46db82cae3d9f8ed79","url":"assets/js/0058b4c6.3377be63.js"},{"revision":"ce7692ef4f3b147260f64c48f9dc75e2","url":"assets/js/08133570.7810342c.js"},{"revision":"1637502a88b36b2bfd295f3c190990eb","url":"assets/js/0b6406e9.a27a161b.js"},{"revision":"e19084f4840e284d62d0c142caef9330","url":"assets/js/1169.da74cb51.js"},{"revision":"9676bd72b42fdf013ca9c82a51d42561","url":"assets/js/1176.3fa1f1a0.js"},{"revision":"97de0e8aa367d33e8466421f60e966d5","url":"assets/js/1245.0093dbf5.js"},{"revision":"7d0a87bfe1471fb4e0b4c15b6a56666f","url":"assets/js/130.97c3c1fe.js"},{"revision":"f641f3ab97c93b5004a4dce717bbc142","url":"assets/js/1303.3d23202d.js"},{"revision":"6272b766d7d455d86156627389112e72","url":"assets/js/1331.b04ae620.js"},{"revision":"104c301a23975290127ea90aec1feb6d","url":"assets/js/1398.b34f2eb3.js"},{"revision":"511ce3c91731fd38943d367adb6e317b","url":"assets/js/162.f053b2a6.js"},{"revision":"b2f5fca232498f368ae01015aa276171","url":"assets/js/17896441.c1b96131.js"},{"revision":"da235e0ebf45c2b02ae2068f0cba14c0","url":"assets/js/1946.c1f898cd.js"},{"revision":"8d343c69dd243bcf086d8bfb03f52907","url":"assets/js/1b2a18d5.56c143d3.js"},{"revision":"8f0811f11d0775291d9ff6da536a1e8c","url":"assets/js/1bfe5704.a89fa12e.js"},{"revision":"11ee0a784c33bd08e10b72c36fd70508","url":"assets/js/1cb4e3ed.4ef422e6.js"},{"revision":"b16db22358a337c0bd47fc5ac3ec88e9","url":"assets/js/1df93b7f.50f773da.js"},{"revision":"d27177b7fcee725ee2bd3421d9dd597c","url":"assets/js/1f391b9e.c2f91780.js"},{"revision":"361e6663f794cf23e05d1953dfc3f646","url":"assets/js/2130.e743b6f2.js"},{"revision":"e6a1fbd390c07c064d4e02fb32b8d8fb","url":"assets/js/21dc2778.d0235ee8.js"},{"revision":"7784d94fcfcac0cce8f086a9f6720948","url":"assets/js/2237.e35c7faa.js"},{"revision":"301783b3d03e40cb9438ff7515890727","url":"assets/js/2362.92df48f8.js"},{"revision":"d9021cfddd0a28239b257455099f0e74","url":"assets/js/2376.89729940.js"},{"revision":"2bd071d713f0d0616b03b807629374e8","url":"assets/js/2453.4efe8b38.js"},{"revision":"0be4901d545800984f1d5931131c4005","url":"assets/js/2548.b0f7735f.js"},{"revision":"151d3dd5067c781a83e091237c231136","url":"assets/js/25ef7947.1714955d.js"},{"revision":"1a9a9aed86896f2e95f240adc45b5c92","url":"assets/js/26455d6c.54502484.js"},{"revision":"3e1b3ba8cea7f71cf7450292c52da95f","url":"assets/js/2843.88f75fed.js"},{"revision":"24ac0bf5e9341c53d59e6279ad4a7550","url":"assets/js/28a593c7.2deffc28.js"},{"revision":"4594654b9a201cd2dc3208df9a9ea77b","url":"assets/js/2925.9d15cf56.js"},{"revision":"c933425263e5857bac88f47d8e40fea4","url":"assets/js/2983.44d58df4.js"},{"revision":"89bce76e57ad8d2cb5abcb0fecc65934","url":"assets/js/2ab4562b.80d506c1.js"},{"revision":"c66e99ecec45e367497c5cea326ee300","url":"assets/js/303.d3323750.js"},{"revision":"314d230a31c13d78509edf27404fc6ca","url":"assets/js/3068.a770ed84.js"},{"revision":"f6b831968ed3bae6202f28bc096971c7","url":"assets/js/30d27832.8c09266b.js"},{"revision":"910a3f90ed1d5bf104a6b3ae199f77bd","url":"assets/js/31058b07.0f0edd0e.js"},{"revision":"13ea34fb1d796e2fcda54866102b31f1","url":"assets/js/331.72938e66.js"},{"revision":"0948ba023ab737e06a37834d16a13e53","url":"assets/js/3626.5a9700a2.js"},{"revision":"aee193736b1d01c4b8bee1a180dd8f31","url":"assets/js/3706.59d3c775.js"},{"revision":"872f311d4e7d5b8cf5f0bec59a3a8b5b","url":"assets/js/376.396be82d.js"},{"revision":"2a9b9f46cf53610df832f8b425a144c2","url":"assets/js/391d9c20.80cef5a3.js"},{"revision":"0ea93c15ba6f6957735a426c6393cdbf","url":"assets/js/3aefb2a9.5e2f1293.js"},{"revision":"e3dfa748dfd86e375c823edc3d373523","url":"assets/js/3ebc3d67.710b7f21.js"},{"revision":"fbee006c3a5ad303d72a470be42fb79a","url":"assets/js/3f163355.68d2b803.js"},{"revision":"65f39975996a5546f6405f4aa61f94a4","url":"assets/js/3fb3fb7f.82cdc3c7.js"},{"revision":"f88d2e8046199f72af205705330df105","url":"assets/js/4132.f281ab14.js"},{"revision":"a3c92338c620521850c05b63412690d8","url":"assets/js/4162.d00bd1cc.js"},{"revision":"df91d6d96252b0a5283b2925c35fd292","url":"assets/js/420.d1a95da0.js"},{"revision":"d8b2f50e880b95812b4ce903d4b72895","url":"assets/js/426.207006fe.js"},{"revision":"9402f8182b4dcc1a3512eccd611e15a9","url":"assets/js/4334.66dbfd08.js"},{"revision":"7d3c733ccd99aed8d3e974aa2084d369","url":"assets/js/453.317c5703.js"},{"revision":"9c52d23b53494f4f9254edb49496e817","url":"assets/js/4741.8e6c530a.js"},{"revision":"68636cac918b9235cc7a8892b2cd76eb","url":"assets/js/478.de33117c.js"},{"revision":"5a96109ec6e88ad1d89351b2e66a9134","url":"assets/js/4943.60400b58.js"},{"revision":"9ce6aacefe090fc260a64e0f5564e144","url":"assets/js/4a3e27c5.dedb7468.js"},{"revision":"85f99c5efc076e9bf246dbefaf7fa020","url":"assets/js/4ca25bb5.db049c7f.js"},{"revision":"9b51d828eb6dc661951d9d18b29f9e75","url":"assets/js/50bfad63.bed9431a.js"},{"revision":"818fcd6957c4f66f7fd2579efc65b309","url":"assets/js/59190afd.a05b5ce2.js"},{"revision":"a0c0abfca02f5fc2205c03afbb7a337d","url":"assets/js/5e95c892.506f1936.js"},{"revision":"6155ddd2b7951d1a6e2343f0b505509a","url":"assets/js/60418129.0dee389f.js"},{"revision":"8e35bd9e5b1643de4840dfeaf0025c83","url":"assets/js/62e3c86b.35430c50.js"},{"revision":"5f016306ee66936fc7401e9312d4405c","url":"assets/js/635.0fc9bd4f.js"},{"revision":"503f7ee2577a64fbad78d444807da639","url":"assets/js/6420.f2879ce4.js"},{"revision":"3cee8f0242c7d98cc4a851b0ca7ae6dc","url":"assets/js/6459b84b.41354f80.js"},{"revision":"3d071628b68dca319c3e4b29e660d9cb","url":"assets/js/6788.80aec321.js"},{"revision":"008a2d54c59524f78c911d00265d0dac","url":"assets/js/68.7e6af8bd.js"},{"revision":"fb3c169e589d2b3c62f60450c85fdd78","url":"assets/js/6803.73ef982b.js"},{"revision":"80702cc5deb1f19fcbd53abea09e72a9","url":"assets/js/689.51613cea.js"},{"revision":"328fa6d6a14915ff2fe1af4e86d926b3","url":"assets/js/706.956d7499.js"},{"revision":"26fa4010f5d25f51dba1e3610047eb16","url":"assets/js/741.a0ad8db0.js"},{"revision":"0a1f199fe54ff7372217825bca28c80e","url":"assets/js/7426.280729df.js"},{"revision":"c296db481d58ac204258dcce959a0238","url":"assets/js/751a75f6.4bd9a970.js"},{"revision":"afd16cad1bab2a30e54f306ca0aebb11","url":"assets/js/76be5683.52c4503c.js"},{"revision":"e23c39e1f3d33a50d9d07f88cec7f3ed","url":"assets/js/77db9a17.cfdd980b.js"},{"revision":"56e82037fd201ab604c6b2623ba5e704","url":"assets/js/788.d55fe659.js"},{"revision":"5cf362339d506112dc97e1a2ac6c0bf3","url":"assets/js/801e3691.ae983ce3.js"},{"revision":"2735219e01aaa6d9b48dd51af32e6153","url":"assets/js/803.3585a98c.js"},{"revision":"57e93e8efa643d883f244b40a12c115b","url":"assets/js/8055.b792f2c6.js"},{"revision":"7dd848e9aca85810606fc7dae8abcbe5","url":"assets/js/807b6800.dca80451.js"},{"revision":"304cd96309fb1ee9ca04c68932470836","url":"assets/js/810.354b7339.js"},{"revision":"5e6dade83e13edd8a7ba47b6e2a05b91","url":"assets/js/8337.8759c63e.js"},{"revision":"52f4e0d8af9de48a15e57f63fc5e5765","url":"assets/js/8416df86.1f125844.js"},{"revision":"a6b5606fae934df93f0975f78387ffb4","url":"assets/js/843.b93daff8.js"},{"revision":"d3da917bbea37bd61b0afbd34a6fad75","url":"assets/js/8478.e7701138.js"},{"revision":"380625def308a5650c46a9c63a08ff9c","url":"assets/js/84dac133.690e12ba.js"},{"revision":"8dfe7e88a132eb3b998a48caecc59204","url":"assets/js/8635.75cbcfbe.js"},{"revision":"d3ce496745506dc9a9764ce84b904c46","url":"assets/js/8676.ee4f37b1.js"},{"revision":"878110b814c19daded985b82542ecab9","url":"assets/js/869.4d52d7e8.js"},{"revision":"45c4655f2ed9c325a05d732990a90586","url":"assets/js/8810.92902e39.js"},{"revision":"6ddd2f739474410e8c8108ec5d3eea97","url":"assets/js/8869.9590b926.js"},{"revision":"d5b45058bb78ceaf47c103142180426a","url":"assets/js/8f88d278.aea094c1.js"},{"revision":"4ccb76c39560f5657fa64ac523df7a08","url":"assets/js/902.d73a9e87.js"},{"revision":"0311d0a3dddf5468cd49d8d0c75ba42e","url":"assets/js/925.ecb05b21.js"},{"revision":"a1631cc7a89e7134d505d505d37c23d4","url":"assets/js/943.e677d0e4.js"},{"revision":"19ad11b257d2b8074ee6cf0aa1306d66","url":"assets/js/946.10626dca.js"},{"revision":"a7721ca061e0ae0a713c14933ff6f90f","url":"assets/js/94cba6ed.a30398e0.js"},{"revision":"172a69a6da0187def7abdaf5434d5404","url":"assets/js/94e1aa3d.4adec87c.js"},{"revision":"4141b3fbff38cfddc9c8e81408e19ce2","url":"assets/js/9689.74e05a4b.js"},{"revision":"28af91062b612aa3c3d466bd4cbe6cac","url":"assets/js/96c97f44.777fb791.js"},{"revision":"e12eeca0e99f204a095ffa0d0cf7df56","url":"assets/js/9730.aa51d1f6.js"},{"revision":"c331060c405380d2056a23bdfb397b50","url":"assets/js/98b8cc29.41262bc9.js"},{"revision":"4fb659fe8b9e903abe84b9d277bd9faf","url":"assets/js/a21dcd43.bf6ad62c.js"},{"revision":"0b476082a17adb6ee5c87bcf7afbdfdc","url":"assets/js/a2c501c8.3cf5e88c.js"},{"revision":"972fcea3eb9f6d3ead2429472ae00d9d","url":"assets/js/a4d3e054.763b2a62.js"},{"revision":"b6c9061fadabbe896a80be2b8177d539","url":"assets/js/a7456010.899d59d8.js"},{"revision":"fb16e500e22a794860ed50bef7b4486c","url":"assets/js/a7bd4aaa.288b6c02.js"},{"revision":"8d9eae61cc1539851146c6ef7c88c945","url":"assets/js/a94703ab.27dd5686.js"},{"revision":"3ea4ca2d392401fe4069db26fe8a274c","url":"assets/js/aba21aa0.9e876600.js"},{"revision":"ba5d640d504070c4a29d0de3f42df769","url":"assets/js/ad6f9ff5.a065e090.js"},{"revision":"609f464694b3d45758d54cb1cd1356f6","url":"assets/js/ba3d4959.1dc5260b.js"},{"revision":"a36c2328096808a592b1a70e4a3388ca","url":"assets/js/bfc34fa7.f99ddc31.js"},{"revision":"1daaaa3b98eaed032a0788fdedb0ad84","url":"assets/js/bfc576a4.5f25d85d.js"},{"revision":"a37dcebd7e162b38ec5961857f8434fb","url":"assets/js/c24fb5a2.e249ccb5.js"},{"revision":"e70e15e171366412e7e3d81897372bb5","url":"assets/js/cbe663fe.c30f3794.js"},{"revision":"324e5722bd1ed00aa996d5422da872a3","url":"assets/js/cc784980.8e829d8e.js"},{"revision":"ef45b512f0113812d7247cd3ef5273d0","url":"assets/js/d295d49b.7eea1fd8.js"},{"revision":"63e12462d525482045cb28db429f1941","url":"assets/js/d550161c.42e59631.js"},{"revision":"153f2577027e180d03b56abcff4555e6","url":"assets/js/e2eeca55.706e84f8.js"},{"revision":"c4b090b2fe37c6528e11051b0388c86c","url":"assets/js/e6388bba.9f60e687.js"},{"revision":"bd39f78f136bc8e1c4b26e1ffab067f6","url":"assets/js/e71332dd.083d306c.js"},{"revision":"29f54d6c43c6c26f220c154ed69b3be1","url":"assets/js/ead3bc46.2dc2ba37.js"},{"revision":"cd793c19d99a0387970e46291e6148a9","url":"assets/js/f210ba15.27977df4.js"},{"revision":"6bca8ff242de9bd6b29e475879ab4c91","url":"assets/js/f3e8f525.b365d540.js"},{"revision":"c562bbb0ebcc03d4a2c2aea45e32fee9","url":"assets/js/f991d430.a6763569.js"},{"revision":"a1f25a51db8ac0c550e91084b87986a1","url":"assets/js/main.41cc9ba1.js"},{"revision":"64fb6b9e7adc1207da6d2e844451c4a7","url":"assets/js/reactPlayerDailyMotion.bbf6379c.js"},{"revision":"e65fc68b3fdc6533cef3ffb92b4a5ed4","url":"assets/js/reactPlayerDailyMotion.ea480b77.js"},{"revision":"72051fb6e310f591288930d2e523d832","url":"assets/js/reactPlayerFacebook.1dd4863c.js"},{"revision":"4f794ec9df4fad7372b6e732450e8bc2","url":"assets/js/reactPlayerFacebook.582f7f1c.js"},{"revision":"77f6ce7877af18c507e65deba3415815","url":"assets/js/reactPlayerFilePlayer.bef56796.js"},{"revision":"8238ccb6b74d71b0d7876beb72ddd0a7","url":"assets/js/reactPlayerFilePlayer.fdcd1f51.js"},{"revision":"9e3aef44b18034d108b675ecd3ebf3f0","url":"assets/js/reactPlayerKaltura.065e45b1.js"},{"revision":"7d0b48f3535eb6ea36591253885ddf39","url":"assets/js/reactPlayerKaltura.079e6b00.js"},{"revision":"cc474f3399e102bcb6ced6d91fa7eb4f","url":"assets/js/reactPlayerMixcloud.a3fb461d.js"},{"revision":"287eb640cb324071ca486f02f9c96db3","url":"assets/js/reactPlayerMixcloud.c3e2db4a.js"},{"revision":"c357e73960498eacd122154aafbee4ec","url":"assets/js/reactPlayerMux.7e2e3f86.js"},{"revision":"b502841506cb5e660cb3322ca25eeca0","url":"assets/js/reactPlayerMux.93d5edbd.js"},{"revision":"69bf495b0b098442571d77d9ec0ea42e","url":"assets/js/reactPlayerPreview.5615f48a.js"},{"revision":"5b75706d2e33584ee907b3177327bc89","url":"assets/js/reactPlayerPreview.9d736f65.js"},{"revision":"86c37c22d0468260d0f1ed661ff5a2a0","url":"assets/js/reactPlayerSoundCloud.97cc8ff6.js"},{"revision":"ee70268c4f073d4329829299a68a6b27","url":"assets/js/reactPlayerSoundCloud.d89f0440.js"},{"revision":"0f866ba51a93b2a04cde9c1ab38ca42f","url":"assets/js/reactPlayerStreamable.ac5473ea.js"},{"revision":"11369fa54e11d259dc98e3565d5d6c3c","url":"assets/js/reactPlayerStreamable.d93f5569.js"},{"revision":"dc6e644046a7eb921a5ba34a1de1e3ee","url":"assets/js/reactPlayerTwitch.55051469.js"},{"revision":"59b9ebdedbda9512c62937c02c69fa25","url":"assets/js/reactPlayerTwitch.cc430dc4.js"},{"revision":"8c1d88b9b11a315baf6ccfba456d3075","url":"assets/js/reactPlayerVidyard.090f167f.js"},{"revision":"37521995b329b94a2a52f72d265b5bd3","url":"assets/js/reactPlayerVidyard.f5b36523.js"},{"revision":"d2f5dfb094aca90b6ca9426c7a78fcc6","url":"assets/js/reactPlayerVimeo.3dff7ecf.js"},{"revision":"91d5901ea9ca6658bcb602876a4ac8fa","url":"assets/js/reactPlayerVimeo.6ee50fc8.js"},{"revision":"d8874fdbc9d9d6ddd0ae49bbcf07c9a7","url":"assets/js/reactPlayerWistia.5498c2c2.js"},{"revision":"329d11437e736ab71a834280237e461b","url":"assets/js/reactPlayerWistia.de05d934.js"},{"revision":"6373aaa592361db789212dd58d4770f5","url":"assets/js/reactPlayerYouTube.6664bacb.js"},{"revision":"0ae73eccc2c4f6cffb240549dd7f5191","url":"assets/js/reactPlayerYouTube.ac7a68b5.js"},{"revision":"9e3377a8408bd134912429793d7b338f","url":"assets/js/runtime~main.cf6a7cff.js"},{"revision":"a7e2efff2a4ef26678fe84f41f8d3262","url":"benchmarks.html"},{"revision":"b797e91345d960a7545eede87b70fb9e","url":"css/alert.css"},{"revision":"8ff2bde63f90ec4d40c530b11ec6c4d6","url":"css/footer.css"},{"revision":"585116277f3360e08550f333b2ff177b","url":"css/icons.css"},{"revision":"779859016455ea4a6e386f3a43b1f436","url":"css/markdown.css"},{"revision":"44f3dd32bfc1b8f3456555ed3c87b16b","url":"css/navbar.css"},{"revision":"f5d35f3a2398cc72a32f4b668e34a11d","url":"css/root.css"},{"revision":"a392cff79a8a21773d4c2c71baa7d2e6","url":"css/sidebar.css"},{"revision":"6b7ab04959a7f321f3eb62175dcf18a1","url":"css/toc.css"},{"revision":"2954ca42cd6545af7821f825aa4f89e7","url":"css/video.css"},{"revision":"eb03cfd8fc8865f26787634bb6a6ca9e","url":"docs/architecture-concepts/application-lifecycle.html"},{"revision":"069f0a5a8752d2a7731ec77333bf32ab","url":"docs/architecture-concepts/facades.html"},{"revision":"1c42a0229ca15e7e5061c58aaf4c4ec6","url":"docs/architecture-concepts/service-container.html"},{"revision":"88a4d2db2865701c978efe1a83e66d24","url":"docs/architecture-concepts/service-providers.html"},{"revision":"660e5b8ea1c685fb3ae2c70408ba954f","url":"docs/cli-application/annotations.html"},{"revision":"97ad8a00a982d18557e259ca5f2e3ec7","url":"docs/cli-application/commands.html"},{"revision":"fb7beb5c3fddeb66ead274d8d65eb811","url":"docs/cli-application/error-handling.html"},{"revision":"91a31ca0d26f60848df69bab01753f91","url":"docs/cli-application/publishing.html"},{"revision":"e218618c8eafb52dfdcf0b5efeda028c","url":"docs/cli-application/running.html"},{"revision":"d3c2de516d8c7b3d0ec0593ad5cce4f9","url":"docs/cron-application/annotations.html"},{"revision":"36d09ab9eb711394e327a9b76e955206","url":"docs/cron-application/cron-context.html"},{"revision":"d83f0666c5b6e0b25e052e8e37388588","url":"docs/cron-application/error-handling.html"},{"revision":"5767047baf5cab6f1e6c97ed5563492f","url":"docs/cron-application/schedulers.html"},{"revision":"a2876184818d2762a45891960e05919b","url":"docs/cron-application/tracing-executions.html"},{"revision":"dff9f72ccaefcca17352093571deb9e4","url":"docs/database/getting-started.html"},{"revision":"5c1387d09fd38bf6b2456008752d1c0f","url":"docs/database/migrations.html"},{"revision":"1647f65ea153fdf351926424d8a8ee0d","url":"docs/database/query-builder.html"},{"revision":"0be6b758c0d0301396f3314cbe512210","url":"docs/database/seeding.html"},{"revision":"ecf1dc79b6d3feb9631e142e4dfbea16","url":"docs/digging-deeper/collections.html"},{"revision":"95b01898fd57209bf32b613527f1ec3d","url":"docs/digging-deeper/graceful-shutdown.html"},{"revision":"cbade1d2083feb5c371b41d01cecad34","url":"docs/digging-deeper/library-development.html"},{"revision":"0f937ddb3b4a3ccebfca182164d9e2dd","url":"docs/digging-deeper/mail.html"},{"revision":"e1af6da9ec4327e6100d729aaac44df4","url":"docs/digging-deeper/repl.html"},{"revision":"1591e39a5fd9653cb367934ca7d99604","url":"docs/getting-started/athennarc-file.html"},{"revision":"3111e53a3385875b24f56790e6e53aad","url":"docs/getting-started/configuration.html"},{"revision":"c2ecb09b99dd0356d8fa046b117a9fd9","url":"docs/getting-started/directory-structure.html"},{"revision":"5161e7c1072a9df4d75a5e602d78ca76","url":"docs/getting-started/installation.html"},{"revision":"14b5b17f90745550b37d1a824218adb6","url":"docs/orm/annotations.html"},{"revision":"3aa1c9c19772289746d5ec822a1d9af4","url":"docs/orm/extending-models.html"},{"revision":"14c2793d47a18c4b7e7d5eef57881972","url":"docs/orm/factories.html"},{"revision":"b7511bf9a979b9a34ec31fa700166777","url":"docs/orm/getting-started.html"},{"revision":"aefe7f66b8e8bb363521fe7dafa15f43","url":"docs/orm/query-builder.html"},{"revision":"a24071504fea350a62c3b16a875f7b6d","url":"docs/orm/relationships.html"},{"revision":"1353313c4f98c503b460ae880282d092","url":"docs/rest-api-application/annotations.html"},{"revision":"55b6ff1cd99a7399367ab95dacdbb2aa","url":"docs/rest-api-application/controllers.html"},{"revision":"d50faa5239f3c64d06085fee19186ff2","url":"docs/rest-api-application/error-handling.html"},{"revision":"f4d434fcc8b84502244fbb112d2d2a82","url":"docs/rest-api-application/middlewares.html"},{"revision":"aa3008cea8a837db44c5224c80cb2b9a","url":"docs/rest-api-application/rate-limiting.html"},{"revision":"4082d995761ee6fd36f6a11a4acfb6b0","url":"docs/rest-api-application/request-context.html"},{"revision":"0b1352f58fb29db751dc86ad6fea173b","url":"docs/rest-api-application/routing.html"},{"revision":"a450f1b88cd8e965edf8af9fb3608730","url":"docs/rest-api-application/security-with-helmet.html"},{"revision":"a93653f9ebc84395218eecc27c824f77","url":"docs/rest-api-application/static-files.html"},{"revision":"e975a1df996fa71a7e71fb3ad4a01b8b","url":"docs/rest-api-application/swagger-documentation.html"},{"revision":"02445d5457146e8d4f037ffa4291224b","url":"docs/rest-api-application/tracing-requests.html"},{"revision":"b8bf7127438508352b73b75df43b85f9","url":"docs/rest-api-application/views.html"},{"revision":"812fb03b88a9a0a5f9728fd874000a8d","url":"docs/testing/annotations.html"},{"revision":"2f588cb801837255269eaaacdb757ae6","url":"docs/testing/cli-tests.html"},{"revision":"067b8c0d9d52809b92c4cfb39da05523","url":"docs/testing/getting-started.html"},{"revision":"7e09489976bc6d9f5ed075c7078c5a51","url":"docs/testing/mocking.html"},{"revision":"ef19b6774ac926a8a99fe7ddd69e0de3","url":"docs/testing/rest-api-testing.html"},{"revision":"723346efbf60d6a38c86636ced6fab78","url":"docs/the-basics/compilation.html"},{"revision":"3d741d27346b4bab1c2f674ba134bdcd","url":"docs/the-basics/deployment.html"},{"revision":"3c44c95cd2b56b1e58301025d8c5dca3","url":"docs/the-basics/helpers.html"},{"revision":"e0a41aa443e7c3f18d6b066d4130de15","url":"docs/the-basics/logging.html"},{"revision":"49878e68011fb9cc2338f95bd0bc65e6","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":"70e4e5a28c341e0616cc9fb3f43cf611","url":"404.html"},{"revision":"f4a4d2b1f3c75aa844da99e846418970","url":"assets/css/styles.48bfade9.css"},{"revision":"2e382f6be70f6a46db82cae3d9f8ed79","url":"assets/js/0058b4c6.3377be63.js"},{"revision":"ce7692ef4f3b147260f64c48f9dc75e2","url":"assets/js/08133570.7810342c.js"},{"revision":"1637502a88b36b2bfd295f3c190990eb","url":"assets/js/0b6406e9.a27a161b.js"},{"revision":"e19084f4840e284d62d0c142caef9330","url":"assets/js/1169.da74cb51.js"},{"revision":"9676bd72b42fdf013ca9c82a51d42561","url":"assets/js/1176.3fa1f1a0.js"},{"revision":"97de0e8aa367d33e8466421f60e966d5","url":"assets/js/1245.0093dbf5.js"},{"revision":"7d0a87bfe1471fb4e0b4c15b6a56666f","url":"assets/js/130.97c3c1fe.js"},{"revision":"f641f3ab97c93b5004a4dce717bbc142","url":"assets/js/1303.3d23202d.js"},{"revision":"6272b766d7d455d86156627389112e72","url":"assets/js/1331.b04ae620.js"},{"revision":"104c301a23975290127ea90aec1feb6d","url":"assets/js/1398.b34f2eb3.js"},{"revision":"511ce3c91731fd38943d367adb6e317b","url":"assets/js/162.f053b2a6.js"},{"revision":"b2f5fca232498f368ae01015aa276171","url":"assets/js/17896441.c1b96131.js"},{"revision":"da235e0ebf45c2b02ae2068f0cba14c0","url":"assets/js/1946.c1f898cd.js"},{"revision":"09006696bdd7024c0fc2001fded77004","url":"assets/js/1b2a18d5.3697ed96.js"},{"revision":"8f0811f11d0775291d9ff6da536a1e8c","url":"assets/js/1bfe5704.a89fa12e.js"},{"revision":"11ee0a784c33bd08e10b72c36fd70508","url":"assets/js/1cb4e3ed.4ef422e6.js"},{"revision":"b16db22358a337c0bd47fc5ac3ec88e9","url":"assets/js/1df93b7f.50f773da.js"},{"revision":"d27177b7fcee725ee2bd3421d9dd597c","url":"assets/js/1f391b9e.c2f91780.js"},{"revision":"361e6663f794cf23e05d1953dfc3f646","url":"assets/js/2130.e743b6f2.js"},{"revision":"e6a1fbd390c07c064d4e02fb32b8d8fb","url":"assets/js/21dc2778.d0235ee8.js"},{"revision":"7784d94fcfcac0cce8f086a9f6720948","url":"assets/js/2237.e35c7faa.js"},{"revision":"301783b3d03e40cb9438ff7515890727","url":"assets/js/2362.92df48f8.js"},{"revision":"d9021cfddd0a28239b257455099f0e74","url":"assets/js/2376.89729940.js"},{"revision":"2bd071d713f0d0616b03b807629374e8","url":"assets/js/2453.4efe8b38.js"},{"revision":"0be4901d545800984f1d5931131c4005","url":"assets/js/2548.b0f7735f.js"},{"revision":"151d3dd5067c781a83e091237c231136","url":"assets/js/25ef7947.1714955d.js"},{"revision":"1a9a9aed86896f2e95f240adc45b5c92","url":"assets/js/26455d6c.54502484.js"},{"revision":"3e1b3ba8cea7f71cf7450292c52da95f","url":"assets/js/2843.88f75fed.js"},{"revision":"24ac0bf5e9341c53d59e6279ad4a7550","url":"assets/js/28a593c7.2deffc28.js"},{"revision":"4594654b9a201cd2dc3208df9a9ea77b","url":"assets/js/2925.9d15cf56.js"},{"revision":"c933425263e5857bac88f47d8e40fea4","url":"assets/js/2983.44d58df4.js"},{"revision":"89bce76e57ad8d2cb5abcb0fecc65934","url":"assets/js/2ab4562b.80d506c1.js"},{"revision":"c66e99ecec45e367497c5cea326ee300","url":"assets/js/303.d3323750.js"},{"revision":"314d230a31c13d78509edf27404fc6ca","url":"assets/js/3068.a770ed84.js"},{"revision":"f6b831968ed3bae6202f28bc096971c7","url":"assets/js/30d27832.8c09266b.js"},{"revision":"910a3f90ed1d5bf104a6b3ae199f77bd","url":"assets/js/31058b07.0f0edd0e.js"},{"revision":"13ea34fb1d796e2fcda54866102b31f1","url":"assets/js/331.72938e66.js"},{"revision":"0948ba023ab737e06a37834d16a13e53","url":"assets/js/3626.5a9700a2.js"},{"revision":"aee193736b1d01c4b8bee1a180dd8f31","url":"assets/js/3706.59d3c775.js"},{"revision":"872f311d4e7d5b8cf5f0bec59a3a8b5b","url":"assets/js/376.396be82d.js"},{"revision":"2a9b9f46cf53610df832f8b425a144c2","url":"assets/js/391d9c20.80cef5a3.js"},{"revision":"0ea93c15ba6f6957735a426c6393cdbf","url":"assets/js/3aefb2a9.5e2f1293.js"},{"revision":"e3dfa748dfd86e375c823edc3d373523","url":"assets/js/3ebc3d67.710b7f21.js"},{"revision":"fbee006c3a5ad303d72a470be42fb79a","url":"assets/js/3f163355.68d2b803.js"},{"revision":"65f39975996a5546f6405f4aa61f94a4","url":"assets/js/3fb3fb7f.82cdc3c7.js"},{"revision":"f88d2e8046199f72af205705330df105","url":"assets/js/4132.f281ab14.js"},{"revision":"a3c92338c620521850c05b63412690d8","url":"assets/js/4162.d00bd1cc.js"},{"revision":"df91d6d96252b0a5283b2925c35fd292","url":"assets/js/420.d1a95da0.js"},{"revision":"d8b2f50e880b95812b4ce903d4b72895","url":"assets/js/426.207006fe.js"},{"revision":"9402f8182b4dcc1a3512eccd611e15a9","url":"assets/js/4334.66dbfd08.js"},{"revision":"7d3c733ccd99aed8d3e974aa2084d369","url":"assets/js/453.317c5703.js"},{"revision":"9c52d23b53494f4f9254edb49496e817","url":"assets/js/4741.8e6c530a.js"},{"revision":"68636cac918b9235cc7a8892b2cd76eb","url":"assets/js/478.de33117c.js"},{"revision":"5a96109ec6e88ad1d89351b2e66a9134","url":"assets/js/4943.60400b58.js"},{"revision":"9ce6aacefe090fc260a64e0f5564e144","url":"assets/js/4a3e27c5.dedb7468.js"},{"revision":"85f99c5efc076e9bf246dbefaf7fa020","url":"assets/js/4ca25bb5.db049c7f.js"},{"revision":"9b51d828eb6dc661951d9d18b29f9e75","url":"assets/js/50bfad63.bed9431a.js"},{"revision":"818fcd6957c4f66f7fd2579efc65b309","url":"assets/js/59190afd.a05b5ce2.js"},{"revision":"a0c0abfca02f5fc2205c03afbb7a337d","url":"assets/js/5e95c892.506f1936.js"},{"revision":"6155ddd2b7951d1a6e2343f0b505509a","url":"assets/js/60418129.0dee389f.js"},{"revision":"8e35bd9e5b1643de4840dfeaf0025c83","url":"assets/js/62e3c86b.35430c50.js"},{"revision":"5f016306ee66936fc7401e9312d4405c","url":"assets/js/635.0fc9bd4f.js"},{"revision":"503f7ee2577a64fbad78d444807da639","url":"assets/js/6420.f2879ce4.js"},{"revision":"3cee8f0242c7d98cc4a851b0ca7ae6dc","url":"assets/js/6459b84b.41354f80.js"},{"revision":"3d071628b68dca319c3e4b29e660d9cb","url":"assets/js/6788.80aec321.js"},{"revision":"008a2d54c59524f78c911d00265d0dac","url":"assets/js/68.7e6af8bd.js"},{"revision":"fb3c169e589d2b3c62f60450c85fdd78","url":"assets/js/6803.73ef982b.js"},{"revision":"80702cc5deb1f19fcbd53abea09e72a9","url":"assets/js/689.51613cea.js"},{"revision":"328fa6d6a14915ff2fe1af4e86d926b3","url":"assets/js/706.956d7499.js"},{"revision":"26fa4010f5d25f51dba1e3610047eb16","url":"assets/js/741.a0ad8db0.js"},{"revision":"0a1f199fe54ff7372217825bca28c80e","url":"assets/js/7426.280729df.js"},{"revision":"c296db481d58ac204258dcce959a0238","url":"assets/js/751a75f6.4bd9a970.js"},{"revision":"afd16cad1bab2a30e54f306ca0aebb11","url":"assets/js/76be5683.52c4503c.js"},{"revision":"e23c39e1f3d33a50d9d07f88cec7f3ed","url":"assets/js/77db9a17.cfdd980b.js"},{"revision":"56e82037fd201ab604c6b2623ba5e704","url":"assets/js/788.d55fe659.js"},{"revision":"5cf362339d506112dc97e1a2ac6c0bf3","url":"assets/js/801e3691.ae983ce3.js"},{"revision":"2735219e01aaa6d9b48dd51af32e6153","url":"assets/js/803.3585a98c.js"},{"revision":"57e93e8efa643d883f244b40a12c115b","url":"assets/js/8055.b792f2c6.js"},{"revision":"7dd848e9aca85810606fc7dae8abcbe5","url":"assets/js/807b6800.dca80451.js"},{"revision":"304cd96309fb1ee9ca04c68932470836","url":"assets/js/810.354b7339.js"},{"revision":"5e6dade83e13edd8a7ba47b6e2a05b91","url":"assets/js/8337.8759c63e.js"},{"revision":"52f4e0d8af9de48a15e57f63fc5e5765","url":"assets/js/8416df86.1f125844.js"},{"revision":"a6b5606fae934df93f0975f78387ffb4","url":"assets/js/843.b93daff8.js"},{"revision":"d3da917bbea37bd61b0afbd34a6fad75","url":"assets/js/8478.e7701138.js"},{"revision":"380625def308a5650c46a9c63a08ff9c","url":"assets/js/84dac133.690e12ba.js"},{"revision":"8dfe7e88a132eb3b998a48caecc59204","url":"assets/js/8635.75cbcfbe.js"},{"revision":"d3ce496745506dc9a9764ce84b904c46","url":"assets/js/8676.ee4f37b1.js"},{"revision":"878110b814c19daded985b82542ecab9","url":"assets/js/869.4d52d7e8.js"},{"revision":"45c4655f2ed9c325a05d732990a90586","url":"assets/js/8810.92902e39.js"},{"revision":"6ddd2f739474410e8c8108ec5d3eea97","url":"assets/js/8869.9590b926.js"},{"revision":"d5b45058bb78ceaf47c103142180426a","url":"assets/js/8f88d278.aea094c1.js"},{"revision":"4ccb76c39560f5657fa64ac523df7a08","url":"assets/js/902.d73a9e87.js"},{"revision":"0311d0a3dddf5468cd49d8d0c75ba42e","url":"assets/js/925.ecb05b21.js"},{"revision":"a1631cc7a89e7134d505d505d37c23d4","url":"assets/js/943.e677d0e4.js"},{"revision":"19ad11b257d2b8074ee6cf0aa1306d66","url":"assets/js/946.10626dca.js"},{"revision":"a7721ca061e0ae0a713c14933ff6f90f","url":"assets/js/94cba6ed.a30398e0.js"},{"revision":"172a69a6da0187def7abdaf5434d5404","url":"assets/js/94e1aa3d.4adec87c.js"},{"revision":"4141b3fbff38cfddc9c8e81408e19ce2","url":"assets/js/9689.74e05a4b.js"},{"revision":"28af91062b612aa3c3d466bd4cbe6cac","url":"assets/js/96c97f44.777fb791.js"},{"revision":"e12eeca0e99f204a095ffa0d0cf7df56","url":"assets/js/9730.aa51d1f6.js"},{"revision":"c331060c405380d2056a23bdfb397b50","url":"assets/js/98b8cc29.41262bc9.js"},{"revision":"4fb659fe8b9e903abe84b9d277bd9faf","url":"assets/js/a21dcd43.bf6ad62c.js"},{"revision":"0b476082a17adb6ee5c87bcf7afbdfdc","url":"assets/js/a2c501c8.3cf5e88c.js"},{"revision":"972fcea3eb9f6d3ead2429472ae00d9d","url":"assets/js/a4d3e054.763b2a62.js"},{"revision":"b6c9061fadabbe896a80be2b8177d539","url":"assets/js/a7456010.899d59d8.js"},{"revision":"fb16e500e22a794860ed50bef7b4486c","url":"assets/js/a7bd4aaa.288b6c02.js"},{"revision":"8d9eae61cc1539851146c6ef7c88c945","url":"assets/js/a94703ab.27dd5686.js"},{"revision":"3ea4ca2d392401fe4069db26fe8a274c","url":"assets/js/aba21aa0.9e876600.js"},{"revision":"ba5d640d504070c4a29d0de3f42df769","url":"assets/js/ad6f9ff5.a065e090.js"},{"revision":"609f464694b3d45758d54cb1cd1356f6","url":"assets/js/ba3d4959.1dc5260b.js"},{"revision":"a36c2328096808a592b1a70e4a3388ca","url":"assets/js/bfc34fa7.f99ddc31.js"},{"revision":"1daaaa3b98eaed032a0788fdedb0ad84","url":"assets/js/bfc576a4.5f25d85d.js"},{"revision":"a37dcebd7e162b38ec5961857f8434fb","url":"assets/js/c24fb5a2.e249ccb5.js"},{"revision":"e70e15e171366412e7e3d81897372bb5","url":"assets/js/cbe663fe.c30f3794.js"},{"revision":"324e5722bd1ed00aa996d5422da872a3","url":"assets/js/cc784980.8e829d8e.js"},{"revision":"ef45b512f0113812d7247cd3ef5273d0","url":"assets/js/d295d49b.7eea1fd8.js"},{"revision":"63e12462d525482045cb28db429f1941","url":"assets/js/d550161c.42e59631.js"},{"revision":"153f2577027e180d03b56abcff4555e6","url":"assets/js/e2eeca55.706e84f8.js"},{"revision":"c4b090b2fe37c6528e11051b0388c86c","url":"assets/js/e6388bba.9f60e687.js"},{"revision":"bd39f78f136bc8e1c4b26e1ffab067f6","url":"assets/js/e71332dd.083d306c.js"},{"revision":"29f54d6c43c6c26f220c154ed69b3be1","url":"assets/js/ead3bc46.2dc2ba37.js"},{"revision":"cd793c19d99a0387970e46291e6148a9","url":"assets/js/f210ba15.27977df4.js"},{"revision":"6bca8ff242de9bd6b29e475879ab4c91","url":"assets/js/f3e8f525.b365d540.js"},{"revision":"c562bbb0ebcc03d4a2c2aea45e32fee9","url":"assets/js/f991d430.a6763569.js"},{"revision":"a1f25a51db8ac0c550e91084b87986a1","url":"assets/js/main.41cc9ba1.js"},{"revision":"64fb6b9e7adc1207da6d2e844451c4a7","url":"assets/js/reactPlayerDailyMotion.bbf6379c.js"},{"revision":"e65fc68b3fdc6533cef3ffb92b4a5ed4","url":"assets/js/reactPlayerDailyMotion.ea480b77.js"},{"revision":"72051fb6e310f591288930d2e523d832","url":"assets/js/reactPlayerFacebook.1dd4863c.js"},{"revision":"4f794ec9df4fad7372b6e732450e8bc2","url":"assets/js/reactPlayerFacebook.582f7f1c.js"},{"revision":"77f6ce7877af18c507e65deba3415815","url":"assets/js/reactPlayerFilePlayer.bef56796.js"},{"revision":"8238ccb6b74d71b0d7876beb72ddd0a7","url":"assets/js/reactPlayerFilePlayer.fdcd1f51.js"},{"revision":"9e3aef44b18034d108b675ecd3ebf3f0","url":"assets/js/reactPlayerKaltura.065e45b1.js"},{"revision":"7d0b48f3535eb6ea36591253885ddf39","url":"assets/js/reactPlayerKaltura.079e6b00.js"},{"revision":"cc474f3399e102bcb6ced6d91fa7eb4f","url":"assets/js/reactPlayerMixcloud.a3fb461d.js"},{"revision":"287eb640cb324071ca486f02f9c96db3","url":"assets/js/reactPlayerMixcloud.c3e2db4a.js"},{"revision":"c357e73960498eacd122154aafbee4ec","url":"assets/js/reactPlayerMux.7e2e3f86.js"},{"revision":"b502841506cb5e660cb3322ca25eeca0","url":"assets/js/reactPlayerMux.93d5edbd.js"},{"revision":"69bf495b0b098442571d77d9ec0ea42e","url":"assets/js/reactPlayerPreview.5615f48a.js"},{"revision":"5b75706d2e33584ee907b3177327bc89","url":"assets/js/reactPlayerPreview.9d736f65.js"},{"revision":"86c37c22d0468260d0f1ed661ff5a2a0","url":"assets/js/reactPlayerSoundCloud.97cc8ff6.js"},{"revision":"ee70268c4f073d4329829299a68a6b27","url":"assets/js/reactPlayerSoundCloud.d89f0440.js"},{"revision":"0f866ba51a93b2a04cde9c1ab38ca42f","url":"assets/js/reactPlayerStreamable.ac5473ea.js"},{"revision":"11369fa54e11d259dc98e3565d5d6c3c","url":"assets/js/reactPlayerStreamable.d93f5569.js"},{"revision":"dc6e644046a7eb921a5ba34a1de1e3ee","url":"assets/js/reactPlayerTwitch.55051469.js"},{"revision":"59b9ebdedbda9512c62937c02c69fa25","url":"assets/js/reactPlayerTwitch.cc430dc4.js"},{"revision":"8c1d88b9b11a315baf6ccfba456d3075","url":"assets/js/reactPlayerVidyard.090f167f.js"},{"revision":"37521995b329b94a2a52f72d265b5bd3","url":"assets/js/reactPlayerVidyard.f5b36523.js"},{"revision":"d2f5dfb094aca90b6ca9426c7a78fcc6","url":"assets/js/reactPlayerVimeo.3dff7ecf.js"},{"revision":"91d5901ea9ca6658bcb602876a4ac8fa","url":"assets/js/reactPlayerVimeo.6ee50fc8.js"},{"revision":"d8874fdbc9d9d6ddd0ae49bbcf07c9a7","url":"assets/js/reactPlayerWistia.5498c2c2.js"},{"revision":"329d11437e736ab71a834280237e461b","url":"assets/js/reactPlayerWistia.de05d934.js"},{"revision":"6373aaa592361db789212dd58d4770f5","url":"assets/js/reactPlayerYouTube.6664bacb.js"},{"revision":"0ae73eccc2c4f6cffb240549dd7f5191","url":"assets/js/reactPlayerYouTube.ac7a68b5.js"},{"revision":"04ce851ee3d539ff758d02d692db0938","url":"assets/js/runtime~main.2bb103db.js"},{"revision":"f52adfe652a503d5574d814e61212c21","url":"benchmarks.html"},{"revision":"b797e91345d960a7545eede87b70fb9e","url":"css/alert.css"},{"revision":"8ff2bde63f90ec4d40c530b11ec6c4d6","url":"css/footer.css"},{"revision":"585116277f3360e08550f333b2ff177b","url":"css/icons.css"},{"revision":"779859016455ea4a6e386f3a43b1f436","url":"css/markdown.css"},{"revision":"44f3dd32bfc1b8f3456555ed3c87b16b","url":"css/navbar.css"},{"revision":"f5d35f3a2398cc72a32f4b668e34a11d","url":"css/root.css"},{"revision":"a392cff79a8a21773d4c2c71baa7d2e6","url":"css/sidebar.css"},{"revision":"6b7ab04959a7f321f3eb62175dcf18a1","url":"css/toc.css"},{"revision":"2954ca42cd6545af7821f825aa4f89e7","url":"css/video.css"},{"revision":"7d29938795e9dc720e0284ab3ce70f87","url":"docs/architecture-concepts/application-lifecycle.html"},{"revision":"4e0f6e81188518547471b03b67f2ba34","url":"docs/architecture-concepts/facades.html"},{"revision":"9ee7663d06af1c96b276d4abfe488b97","url":"docs/architecture-concepts/service-container.html"},{"revision":"e5f1f2f695821ff6916d003911c6cbc4","url":"docs/architecture-concepts/service-providers.html"},{"revision":"6efe96f06b954f095b288046d96a3d60","url":"docs/cli-application/annotations.html"},{"revision":"b9cca15f50439b633fb8b32fff8f630b","url":"docs/cli-application/commands.html"},{"revision":"cad8ff0663458af3504ba119acd2967a","url":"docs/cli-application/error-handling.html"},{"revision":"0b09afd1462c1f821b5a9a41b3be0c09","url":"docs/cli-application/publishing.html"},{"revision":"0008e5c43aef194eb9c42300efa7e8c0","url":"docs/cli-application/running.html"},{"revision":"6291192679b74cab07ef4cebbaf37ddc","url":"docs/cron-application/annotations.html"},{"revision":"f9ce0f4ad74baa270ab3bd5c2d5f63c0","url":"docs/cron-application/cron-context.html"},{"revision":"ac063bad1352161098d5eadf71fafd7e","url":"docs/cron-application/error-handling.html"},{"revision":"d9dbe1d7a82a5f6124f48e177a304a98","url":"docs/cron-application/schedulers.html"},{"revision":"de147cc31dd2f651797c42d30348bac6","url":"docs/cron-application/tracing-executions.html"},{"revision":"13b769f261d9ef5ec785e739d1551b61","url":"docs/database/getting-started.html"},{"revision":"f9c385c2c81094902a315c3d48f8c85f","url":"docs/database/migrations.html"},{"revision":"4f2eabfd70988426d6f328922e374e8c","url":"docs/database/query-builder.html"},{"revision":"a5357dfa1cb4131b6b54aff5df7be73a","url":"docs/database/seeding.html"},{"revision":"d58465d36c16400a542d43c9ba3525fd","url":"docs/digging-deeper/collections.html"},{"revision":"edd50573ea06c3616229be8193b8ddbb","url":"docs/digging-deeper/graceful-shutdown.html"},{"revision":"0732685bdbf8c7101682a42ee809e84c","url":"docs/digging-deeper/library-development.html"},{"revision":"aa9f5642fb9fa2dd6e6417a9a34e2107","url":"docs/digging-deeper/mail.html"},{"revision":"b8a8b254c2f479eddff20b325335cc58","url":"docs/digging-deeper/repl.html"},{"revision":"d5393471134837057a8d83897d1cd3fe","url":"docs/getting-started/athennarc-file.html"},{"revision":"981c14dad0479761248275488baee0e6","url":"docs/getting-started/configuration.html"},{"revision":"9544c9346befc506d396da34d406a0f3","url":"docs/getting-started/directory-structure.html"},{"revision":"cfae94fdc87330f8efa833f2344e7897","url":"docs/getting-started/installation.html"},{"revision":"be74acd28f0bb1604499a3df0669e34a","url":"docs/orm/annotations.html"},{"revision":"16deada47a792fe68e84e3e1114688d5","url":"docs/orm/extending-models.html"},{"revision":"a0f03800392d2ed5ff5ea94effd1a55a","url":"docs/orm/factories.html"},{"revision":"4db065bce33b55dd2a62571b7d16c1a1","url":"docs/orm/getting-started.html"},{"revision":"4f64dc01a223135365b3868323276eda","url":"docs/orm/query-builder.html"},{"revision":"4d0630ee7f10ed1ffffe75412bbdfaf9","url":"docs/orm/relationships.html"},{"revision":"1cf148f26c11584f9890677f344ea621","url":"docs/rest-api-application/annotations.html"},{"revision":"b53ab7e0f3cb5abeef99886898455b84","url":"docs/rest-api-application/controllers.html"},{"revision":"2a09d492f664fb51d9f3a5e75621d738","url":"docs/rest-api-application/error-handling.html"},{"revision":"6b7fd6428afce4fc84f740ce3b2355ce","url":"docs/rest-api-application/middlewares.html"},{"revision":"55a566641f498f2a42c467b7cb122ae5","url":"docs/rest-api-application/rate-limiting.html"},{"revision":"5455f0b9cb783d59d98f883bf34888ed","url":"docs/rest-api-application/request-context.html"},{"revision":"143862c9d7dfc03059c5a25794d0ce61","url":"docs/rest-api-application/routing.html"},{"revision":"7b96bc1de21d8ccccd58b34ed6c2b6f5","url":"docs/rest-api-application/security-with-helmet.html"},{"revision":"5b64067fc267af02e281862fd5dc576b","url":"docs/rest-api-application/static-files.html"},{"revision":"3860e14c615b8b1f8876ffd5a78e90b6","url":"docs/rest-api-application/swagger-documentation.html"},{"revision":"50a5991d25acbe986165c7d0c26d06d9","url":"docs/rest-api-application/tracing-requests.html"},{"revision":"b9357e82c5c973877e37d96e21db8c55","url":"docs/rest-api-application/views.html"},{"revision":"4f6b05401cfc91cec587bd9733165ebe","url":"docs/testing/annotations.html"},{"revision":"f2b4c21932501ee7505e56bf46724fda","url":"docs/testing/cli-tests.html"},{"revision":"fb336ec00a2e6dd5af3c2c11205772db","url":"docs/testing/getting-started.html"},{"revision":"74e082c8734f5cd6faae5fc89c5f9d52","url":"docs/testing/mocking.html"},{"revision":"7d6da2dd7f41bc4736cba5e574f21d8a","url":"docs/testing/rest-api-testing.html"},{"revision":"bce6163ab7bca53e9b87881e522a508e","url":"docs/the-basics/compilation.html"},{"revision":"b57fe09cc0ac268de7898c0abde6f450","url":"docs/the-basics/deployment.html"},{"revision":"1ec8d952183934479aeb1ee4ae2a6c6a","url":"docs/the-basics/helpers.html"},{"revision":"8fcfc5d7c792419f16bdb26961e16c5f","url":"docs/the-basics/logging.html"},{"revision":"517cafd5049da2a0707bcdf2bf841630","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,