[{"data":1,"prerenderedAt":1013},["ShallowReactive",2],{"navigation":3,"\u002Fpackages\u002Fadonisjs-sentry\u002Fadvanced\u002Fearly-preloading":421,"\u002Fpackages\u002Fadonisjs-sentry\u002Fadvanced\u002Fearly-preloading-surround":958,"packages-data":963},[4,23],{"title":5,"path":6,"stem":7,"children":8,"icon":22},"Getting Started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,12,17],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-tabler-home",{"title":13,"path":14,"stem":15,"icon":16},"Manifest","\u002Fgetting-started\u002Fmanifest","1.getting-started\u002F2.manifest","i-tabler-file-diff",{"title":18,"path":19,"stem":20,"icon":21},"Contributing","\u002Fgetting-started\u002Fcontributing","1.getting-started\u002F3.contributing","i-tabler-git-fork",false,{"title":24,"path":25,"stem":26,"children":27,"icon":30},"Packages","\u002Fpackages","2.packages\u002F1.index",[28,31,108,194,268,317,343],{"title":29,"path":25,"stem":26,"icon":30},"Overview","i-tabler-packages",{"title":32,"icon":33,"path":34,"stem":35,"children":36,"page":22},"AdonisJS API Query","i-tabler-filter-search","\u002Fpackages\u002Fadonisjs-api-query","2.packages\u002Fadonisjs-api-query",[37,56,87],{"title":5,"icon":38,"path":39,"stem":40,"children":41,"page":22},"i-tabler-rocket","\u002Fpackages\u002Fadonisjs-api-query\u002Fgetting-started","2.packages\u002Fadonisjs-api-query\u002F1.getting-started",[42,46,51],{"title":10,"path":43,"stem":44,"icon":45},"\u002Fpackages\u002Fadonisjs-api-query\u002Fgetting-started\u002Fintroduction","2.packages\u002Fadonisjs-api-query\u002F1.getting-started\u002F1.introduction","i-tabler-book",{"title":47,"path":48,"stem":49,"icon":50},"Installation","\u002Fpackages\u002Fadonisjs-api-query\u002Fgetting-started\u002Finstallation","2.packages\u002Fadonisjs-api-query\u002F1.getting-started\u002F2.installation","i-tabler-download",{"title":52,"path":53,"stem":54,"icon":55},"Configuration","\u002Fpackages\u002Fadonisjs-api-query\u002Fgetting-started\u002Fconfiguration","2.packages\u002Fadonisjs-api-query\u002F1.getting-started\u002F3.configuration","i-tabler-settings",{"title":57,"icon":58,"path":59,"stem":60,"children":61,"page":22},"Features","i-tabler-sparkles","\u002Fpackages\u002Fadonisjs-api-query\u002Ffeatures","2.packages\u002Fadonisjs-api-query\u002F2.features",[62,67,72,77,82],{"title":63,"path":64,"stem":65,"icon":66},"Filtering","\u002Fpackages\u002Fadonisjs-api-query\u002Ffeatures\u002Ffiltering","2.packages\u002Fadonisjs-api-query\u002F2.features\u002F1.filtering","i-tabler-filter",{"title":68,"path":69,"stem":70,"icon":71},"Sorting","\u002Fpackages\u002Fadonisjs-api-query\u002Ffeatures\u002Fsorting","2.packages\u002Fadonisjs-api-query\u002F2.features\u002F2.sorting","i-tabler-arrows-sort",{"title":73,"path":74,"stem":75,"icon":76},"Including Relationships","\u002Fpackages\u002Fadonisjs-api-query\u002Ffeatures\u002Fincluding-relationships","2.packages\u002Fadonisjs-api-query\u002F2.features\u002F3.including-relationships","i-tabler-hierarchy-2",{"title":78,"path":79,"stem":80,"icon":81},"Filterable Classes","\u002Fpackages\u002Fadonisjs-api-query\u002Ffeatures\u002Ffilterable-classes","2.packages\u002Fadonisjs-api-query\u002F2.features\u002F4.filterable-classes","i-tabler-box-model",{"title":83,"path":84,"stem":85,"icon":86},"Validation","\u002Fpackages\u002Fadonisjs-api-query\u002Ffeatures\u002Fvalidation","2.packages\u002Fadonisjs-api-query\u002F2.features\u002F5.validation","i-tabler-shield-check",{"title":88,"icon":89,"path":90,"stem":91,"children":92,"page":22},"Advanced Usage","i-tabler-adjustments","\u002Fpackages\u002Fadonisjs-api-query\u002Fadvanced","2.packages\u002Fadonisjs-api-query\u002F3.advanced",[93,98,103],{"title":94,"path":95,"stem":96,"icon":97},"Custom Filters, Sorts & Includes","\u002Fpackages\u002Fadonisjs-api-query\u002Fadvanced\u002Fcustom-clauses","2.packages\u002Fadonisjs-api-query\u002F3.advanced\u002F1.custom-clauses","i-tabler-puzzle",{"title":99,"path":100,"stem":101,"icon":102},"Request & Delimiters","\u002Fpackages\u002Fadonisjs-api-query\u002Fadvanced\u002Frequest-and-delimiters","2.packages\u002Fadonisjs-api-query\u002F3.advanced\u002F2.request-and-delimiters","i-tabler-brackets-contain",{"title":104,"path":105,"stem":106,"icon":107},"Exceptions","\u002Fpackages\u002Fadonisjs-api-query\u002Fadvanced\u002Fexceptions","2.packages\u002Fadonisjs-api-query\u002F3.advanced\u002F3.exceptions","i-tabler-alert-triangle",{"title":109,"icon":110,"path":111,"stem":112,"children":113,"page":22},"AdonisJS Permission","i-tabler-shield-lock","\u002Fpackages\u002Fadonisjs-permission","2.packages\u002Fadonisjs-permission",[114,127,157,183],{"title":5,"icon":38,"path":115,"stem":116,"children":117,"page":22},"\u002Fpackages\u002Fadonisjs-permission\u002Fgetting-started","2.packages\u002Fadonisjs-permission\u002F1.getting-started",[118,121,124],{"title":10,"path":119,"stem":120,"icon":45},"\u002Fpackages\u002Fadonisjs-permission\u002Fgetting-started\u002Fintroduction","2.packages\u002Fadonisjs-permission\u002F1.getting-started\u002F1.introduction",{"title":47,"path":122,"stem":123,"icon":50},"\u002Fpackages\u002Fadonisjs-permission\u002Fgetting-started\u002Finstallation","2.packages\u002Fadonisjs-permission\u002F1.getting-started\u002F2.installation",{"title":52,"path":125,"stem":126,"icon":55},"\u002Fpackages\u002Fadonisjs-permission\u002Fgetting-started\u002Fconfiguration","2.packages\u002Fadonisjs-permission\u002F1.getting-started\u002F3.configuration",{"title":128,"icon":86,"path":129,"stem":130,"children":131,"page":22},"Basic Usage","\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage","2.packages\u002Fadonisjs-permission\u002F2.basic-usage",[132,137,142,147,152],{"title":133,"path":134,"stem":135,"icon":136},"Roles & Permissions","\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage\u002Froles-and-permissions","2.packages\u002Fadonisjs-permission\u002F2.basic-usage\u002F1.roles-and-permissions","i-tabler-users",{"title":138,"path":139,"stem":140,"icon":141},"Checking Access","\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage\u002Fchecking","2.packages\u002Fadonisjs-permission\u002F2.basic-usage\u002F2.checking","i-tabler-checks",{"title":143,"path":144,"stem":145,"icon":146},"Middleware","\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage\u002Fmiddleware","2.packages\u002Fadonisjs-permission\u002F2.basic-usage\u002F3.middleware","i-tabler-route",{"title":148,"path":149,"stem":150,"icon":151},"Wildcard Permissions","\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage\u002Fwildcard-permissions","2.packages\u002Fadonisjs-permission\u002F2.basic-usage\u002F4.wildcard-permissions","i-tabler-asterisk",{"title":153,"path":154,"stem":155,"icon":156},"Catalog & Sync","\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage\u002Fcatalog","2.packages\u002Fadonisjs-permission\u002F2.basic-usage\u002F5.catalog","i-tabler-refresh",{"title":158,"icon":159,"path":160,"stem":161,"children":162,"page":22},"Advanced","i-tabler-tool","\u002Fpackages\u002Fadonisjs-permission\u002Fadvanced","2.packages\u002Fadonisjs-permission\u002F3.advanced",[163,168,173,178],{"title":164,"path":165,"stem":166,"icon":167},"Teams","\u002Fpackages\u002Fadonisjs-permission\u002Fadvanced\u002Fteams","2.packages\u002Fadonisjs-permission\u002F3.advanced\u002F1.teams","i-tabler-building",{"title":169,"path":170,"stem":171,"icon":172},"Super-Admin","\u002Fpackages\u002Fadonisjs-permission\u002Fadvanced\u002Fsuper-admin","2.packages\u002Fadonisjs-permission\u002F3.advanced\u002F2.super-admin","i-tabler-crown",{"title":174,"path":175,"stem":176,"icon":177},"Events","\u002Fpackages\u002Fadonisjs-permission\u002Fadvanced\u002Fevents","2.packages\u002Fadonisjs-permission\u002F3.advanced\u002F3.events","i-tabler-radio",{"title":179,"path":180,"stem":181,"icon":182},"Cache","\u002Fpackages\u002Fadonisjs-permission\u002Fadvanced\u002Fcache","2.packages\u002Fadonisjs-permission\u002F3.advanced\u002F4.cache","i-tabler-database",{"title":184,"icon":185,"path":186,"stem":187,"children":188,"page":22},"Upgrading","i-tabler-circle-arrow-up","\u002Fpackages\u002Fadonisjs-permission\u002Fupgrading","2.packages\u002Fadonisjs-permission\u002F4.upgrading",[189],{"title":190,"path":191,"stem":192,"icon":193},"From adonis-lucid-permission","\u002Fpackages\u002Fadonisjs-permission\u002Fupgrading\u002Ffrom-adonis-lucid-permission","2.packages\u002Fadonisjs-permission\u002F4.upgrading\u002F1.from-adonis-lucid-permission","i-tabler-git-compare",{"title":195,"icon":196,"path":197,"stem":198,"children":199,"page":22},"AdonisJS Sentry","i-tabler-brand-sentry","\u002Fpackages\u002Fadonisjs-sentry","2.packages\u002Fadonisjs-sentry",[200,213,232,252],{"title":5,"icon":38,"path":201,"stem":202,"children":203,"page":22},"\u002Fpackages\u002Fadonisjs-sentry\u002Fgetting-started","2.packages\u002Fadonisjs-sentry\u002F1.getting-started",[204,207,210],{"title":10,"path":205,"stem":206,"icon":45},"\u002Fpackages\u002Fadonisjs-sentry\u002Fgetting-started\u002Fintroduction","2.packages\u002Fadonisjs-sentry\u002F1.getting-started\u002F1.introduction",{"title":47,"path":208,"stem":209,"icon":50},"\u002Fpackages\u002Fadonisjs-sentry\u002Fgetting-started\u002Finstallation","2.packages\u002Fadonisjs-sentry\u002F1.getting-started\u002F2.installation",{"title":52,"path":211,"stem":212,"icon":55},"\u002Fpackages\u002Fadonisjs-sentry\u002Fgetting-started\u002Fconfiguration","2.packages\u002Fadonisjs-sentry\u002F1.getting-started\u002F3.configuration",{"title":214,"icon":215,"path":216,"stem":217,"children":218,"page":22},"Usage","i-tabler-activity","\u002Fpackages\u002Fadonisjs-sentry\u002Fusage","2.packages\u002Fadonisjs-sentry\u002F2.usage",[219,223,227],{"title":220,"path":221,"stem":222,"icon":107},"Exception Reporting","\u002Fpackages\u002Fadonisjs-sentry\u002Fusage\u002Fexception-reporting","2.packages\u002Fadonisjs-sentry\u002F2.usage\u002F1.exception-reporting",{"title":224,"path":225,"stem":226,"icon":146},"Tracing and Middleware","\u002Fpackages\u002Fadonisjs-sentry\u002Fusage\u002Ftracing-and-middleware","2.packages\u002Fadonisjs-sentry\u002F2.usage\u002F2.tracing-and-middleware",{"title":228,"path":229,"stem":230,"icon":231},"Verify Command","\u002Fpackages\u002Fadonisjs-sentry\u002Fusage\u002Fverify-command","2.packages\u002Fadonisjs-sentry\u002F2.usage\u002F3.verify-command","i-tabler-terminal-2",{"title":158,"icon":233,"path":234,"stem":235,"children":236,"page":22},"i-tabler-adjustments-alt","\u002Fpackages\u002Fadonisjs-sentry\u002Fadvanced","2.packages\u002Fadonisjs-sentry\u002F3.advanced",[237,242,247],{"title":238,"path":239,"stem":240,"icon":241},"Early Preloading","\u002Fpackages\u002Fadonisjs-sentry\u002Fadvanced\u002Fearly-preloading","2.packages\u002Fadonisjs-sentry\u002F3.advanced\u002F1.early-preloading","i-tabler-bolt",{"title":243,"path":244,"stem":245,"icon":246},"Source Maps and Releases","\u002Fpackages\u002Fadonisjs-sentry\u002Fadvanced\u002Fsource-maps-and-releases","2.packages\u002Fadonisjs-sentry\u002F3.advanced\u002F2.source-maps-and-releases","i-tabler-file-code",{"title":248,"path":249,"stem":250,"icon":251},"Custom Instrumentation","\u002Fpackages\u002Fadonisjs-sentry\u002Fadvanced\u002Fcustom-instrumentation","2.packages\u002Fadonisjs-sentry\u002F3.advanced\u002F3.custom-instrumentation","i-tabler-tools",{"title":253,"icon":254,"path":255,"stem":256,"children":257,"page":22},"API Reference","i-tabler-api","\u002Fpackages\u002Fadonisjs-sentry\u002Fapi-reference","2.packages\u002Fadonisjs-sentry\u002F4.api-reference",[258,263],{"title":259,"path":260,"stem":261,"icon":262},"Functions and Classes","\u002Fpackages\u002Fadonisjs-sentry\u002Fapi-reference\u002Ffunctions-and-classes","2.packages\u002Fadonisjs-sentry\u002F4.api-reference\u002F1.functions-and-classes","i-tabler-code",{"title":264,"path":265,"stem":266,"icon":267},"Types","\u002Fpackages\u002Fadonisjs-sentry\u002Fapi-reference\u002Ftypes","2.packages\u002Fadonisjs-sentry\u002F4.api-reference\u002F2.types","i-tabler-braces",{"title":269,"icon":270,"path":271,"stem":272,"children":273,"page":22},"AdonisJS Simple Auth","i-tabler-key","\u002Fpackages\u002Fadonisjs-simple-auth","2.packages\u002Fadonisjs-simple-auth",[274,288,305],{"title":5,"icon":38,"path":275,"stem":276,"children":277,"page":22},"\u002Fpackages\u002Fadonisjs-simple-auth\u002Fgetting-started","2.packages\u002Fadonisjs-simple-auth\u002F1.getting-started",[278,282,285],{"title":10,"path":279,"stem":280,"icon":281},"\u002Fpackages\u002Fadonisjs-simple-auth\u002Fgetting-started\u002Fintroduction","2.packages\u002Fadonisjs-simple-auth\u002F1.getting-started\u002F1.introduction","i-tabler-info-circle",{"title":47,"path":283,"stem":284,"icon":50},"\u002Fpackages\u002Fadonisjs-simple-auth\u002Fgetting-started\u002Finstallation","2.packages\u002Fadonisjs-simple-auth\u002F1.getting-started\u002F2.installation",{"title":52,"path":286,"stem":287,"icon":55},"\u002Fpackages\u002Fadonisjs-simple-auth\u002Fgetting-started\u002Fconfiguration","2.packages\u002Fadonisjs-simple-auth\u002F1.getting-started\u002F3.configuration",{"title":214,"icon":110,"path":289,"stem":290,"children":291,"page":22},"\u002Fpackages\u002Fadonisjs-simple-auth\u002Fusage","2.packages\u002Fadonisjs-simple-auth\u002F2.usage",[292,296,301],{"title":293,"path":294,"stem":295,"icon":231},"Generating API Keys","\u002Fpackages\u002Fadonisjs-simple-auth\u002Fusage\u002Fgenerating-api-keys","2.packages\u002Fadonisjs-simple-auth\u002F2.usage\u002F1.generating-api-keys",{"title":297,"path":298,"stem":299,"icon":300},"Protecting Routes","\u002Fpackages\u002Fadonisjs-simple-auth\u002Fusage\u002Fprotecting-routes","2.packages\u002Fadonisjs-simple-auth\u002F2.usage\u002F2.protecting-routes","i-tabler-lock",{"title":302,"path":303,"stem":304,"icon":107},"Error Handling & i18n","\u002Fpackages\u002Fadonisjs-simple-auth\u002Fusage\u002Ferror-handling","2.packages\u002Fadonisjs-simple-auth\u002F2.usage\u002F3.error-handling",{"title":158,"icon":89,"path":306,"stem":307,"children":308,"page":22},"\u002Fpackages\u002Fadonisjs-simple-auth\u002Fadvanced","2.packages\u002Fadonisjs-simple-auth\u002F3.advanced",[309,314],{"title":310,"path":311,"stem":312,"icon":313},"Testing with Japa","\u002Fpackages\u002Fadonisjs-simple-auth\u002Fadvanced\u002Ftesting-with-japa","2.packages\u002Fadonisjs-simple-auth\u002F3.advanced\u002F1.testing-with-japa","i-tabler-flask",{"title":253,"path":315,"stem":316,"icon":262},"\u002Fpackages\u002Fadonisjs-simple-auth\u002Fadvanced\u002Fapi-reference","2.packages\u002Fadonisjs-simple-auth\u002F3.advanced\u002F2.api-reference",{"title":318,"icon":319,"path":320,"stem":321,"children":322,"page":22},"AdonisJS Soft Deletes","i-tabler-trash-off","\u002Fpackages\u002Fadonisjs-soft-deletes","2.packages\u002Fadonisjs-soft-deletes",[323,333],{"title":5,"icon":38,"path":324,"stem":325,"children":326,"page":22},"\u002Fpackages\u002Fadonisjs-soft-deletes\u002Fgetting-started","2.packages\u002Fadonisjs-soft-deletes\u002F1.getting-started",[327,330],{"title":10,"path":328,"stem":329,"icon":281},"\u002Fpackages\u002Fadonisjs-soft-deletes\u002Fgetting-started\u002Fintroduction","2.packages\u002Fadonisjs-soft-deletes\u002F1.getting-started\u002F1.introduction",{"title":47,"path":331,"stem":332,"icon":50},"\u002Fpackages\u002Fadonisjs-soft-deletes\u002Fgetting-started\u002Finstallation","2.packages\u002Fadonisjs-soft-deletes\u002F1.getting-started\u002F2.installation",{"title":214,"icon":45,"path":334,"stem":335,"children":336,"page":22},"\u002Fpackages\u002Fadonisjs-soft-deletes\u002Fusage","2.packages\u002Fadonisjs-soft-deletes\u002F2.usage",[337,340],{"title":214,"path":338,"stem":339,"icon":262},"\u002Fpackages\u002Fadonisjs-soft-deletes\u002Fusage\u002Fusage","2.packages\u002Fadonisjs-soft-deletes\u002F2.usage\u002F1.usage",{"title":253,"path":341,"stem":342,"icon":45},"\u002Fpackages\u002Fadonisjs-soft-deletes\u002Fusage\u002Fapi-reference","2.packages\u002Fadonisjs-soft-deletes\u002F2.usage\u002F2.api-reference",{"title":344,"icon":345,"path":346,"stem":347,"children":348,"page":22},"ESLint Config","i-tabler-list-check","\u002Fpackages\u002Feslint-config","2.packages\u002Feslint-config",[349,362,385,404],{"title":5,"icon":38,"path":350,"stem":351,"children":352,"page":22},"\u002Fpackages\u002Feslint-config\u002Fgetting-started","2.packages\u002Feslint-config\u002F1.getting-started",[353,356,359],{"title":10,"path":354,"stem":355,"icon":281},"\u002Fpackages\u002Feslint-config\u002Fgetting-started\u002Fintroduction","2.packages\u002Feslint-config\u002F1.getting-started\u002F1.introduction",{"title":47,"path":357,"stem":358,"icon":50},"\u002Fpackages\u002Feslint-config\u002Fgetting-started\u002Finstallation","2.packages\u002Feslint-config\u002F1.getting-started\u002F2.installation",{"title":52,"path":360,"stem":361,"icon":55},"\u002Fpackages\u002Feslint-config\u002Fgetting-started\u002Fconfiguration","2.packages\u002Feslint-config\u002F1.getting-started\u002F3.configuration",{"title":363,"icon":58,"path":364,"stem":365,"children":366,"page":22},"Usage & Features","\u002Fpackages\u002Feslint-config\u002Fusage","2.packages\u002Feslint-config\u002F2.usage",[367,371,375,380],{"title":368,"path":369,"stem":370,"icon":231},"CLI Wizard","\u002Fpackages\u002Feslint-config\u002Fusage\u002Fcli-wizard","2.packages\u002Feslint-config\u002F2.usage\u002F1.cli-wizard",{"title":372,"path":373,"stem":374,"icon":97},"Frameworks","\u002Fpackages\u002Feslint-config\u002Fusage\u002Fframeworks","2.packages\u002Feslint-config\u002F2.usage\u002F2.frameworks",{"title":376,"path":377,"stem":378,"icon":379},"TypeScript & Node","\u002Fpackages\u002Feslint-config\u002Fusage\u002Ftypescript","2.packages\u002Feslint-config\u002F2.usage\u002F3.typescript","i-tabler-brand-typescript",{"title":381,"path":382,"stem":383,"icon":384},"Stylistic & Formatters","\u002Fpackages\u002Feslint-config\u002Fusage\u002Fstylistic-and-formatters","2.packages\u002Feslint-config\u002F2.usage\u002F4.stylistic-and-formatters","i-tabler-wand",{"title":386,"icon":89,"path":387,"stem":388,"children":389,"page":22},"Customization","\u002Fpackages\u002Feslint-config\u002Fcustomization","2.packages\u002Feslint-config\u002F3.customization",[390,395,400],{"title":391,"path":392,"stem":393,"icon":394},"Composer & Overrides","\u002Fpackages\u002Feslint-config\u002Fcustomization\u002Fcomposer-and-overrides","2.packages\u002Feslint-config\u002F3.customization\u002F1.composer-and-overrides","i-tabler-layers-subtract",{"title":396,"path":397,"stem":398,"icon":399},"Ignores & Globs","\u002Fpackages\u002Feslint-config\u002Fcustomization\u002Fignores-and-globs","2.packages\u002Feslint-config\u002F3.customization\u002F2.ignores-and-globs","i-tabler-file-off",{"title":401,"path":402,"stem":403,"icon":262},"Editor Integration","\u002Fpackages\u002Feslint-config\u002Fcustomization\u002Feditor-integration","2.packages\u002Feslint-config\u002F3.customization\u002F3.editor-integration",{"title":253,"icon":45,"path":405,"stem":406,"children":407,"page":22},"\u002Fpackages\u002Feslint-config\u002Fapi-reference","2.packages\u002Feslint-config\u002F4.api-reference",[408,413,417],{"title":409,"path":410,"stem":411,"icon":412},"Factory & Presets","\u002Fpackages\u002Feslint-config\u002Fapi-reference\u002Ffactory-and-presets","2.packages\u002Feslint-config\u002F4.api-reference\u002F1.factory-and-presets","i-tabler-function",{"title":414,"path":415,"stem":416,"icon":30},"Sub-Configs","\u002Fpackages\u002Feslint-config\u002Fapi-reference\u002Fsub-configs","2.packages\u002Feslint-config\u002F4.api-reference\u002F2.sub-configs",{"title":418,"path":419,"stem":420,"icon":251},"Utilities & Globs","\u002Fpackages\u002Feslint-config\u002Fapi-reference\u002Futilities-and-globs","2.packages\u002Feslint-config\u002F4.api-reference\u002F3.utilities-and-globs",{"id":422,"title":238,"body":423,"description":952,"extension":953,"meta":954,"navigation":955,"path":239,"seo":956,"stem":240,"__hash__":957},"docs\u002F2.packages\u002Fadonisjs-sentry\u002F3.advanced\u002F1.early-preloading.md",{"type":424,"value":425,"toc":948},"minimark",[426,439,459,464,475,498,502,944],[427,428,429,430,434,435,438],"p",{},"By default, ",[431,432,433],"code",{},"@eienjs\u002Fadonisjs-sentry"," initializes Sentry during the provider's ",[431,436,437],{},"register()"," lifecycle hook.",[427,440,441,442,445,446,449,450,453,454,458],{},"While this captures all unhandled exceptions and route-level spans, some third-party libraries (such as database drivers ",[431,443,444],{},"pg","\u002F",[431,447,448],{},"mysql2",", Redis clients ",[431,451,452],{},"ioredis",", or HTTP clients) require Sentry to be initialized ",[455,456,457],"em",{},"before"," those modules are first imported by Node.js in order to automatically instrument their queries and network calls.",[460,461,463],"h2",{"id":462},"how-early-preloading-works","How Early Preloading Works",[427,465,466,467,470,471,474],{},"AdonisJS provides a ",[431,468,469],{},"preloads"," mechanism in ",[431,472,473],{},"adonisrc.ts"," that runs modules at the very start of the boot cycle before providers and application code are registered.",[427,476,477,478,481,482,485,486,489,490,493,494,497],{},"When Sentry is initialized in a preload file, ",[431,479,480],{},"SentryProvider"," detects that ",[431,483,484],{},"Sentry.isInitialized()"," is already ",[431,487,488],{},"true",". The provider gracefully skips calling ",[431,491,492],{},"Sentry.init(...)"," again, configures the exception reporting rules from ",[431,495,496],{},"config\u002Fsentry.ts",", and retains ownership of the graceful shutdown hook.",[460,499,501],{"id":500},"setup-instructions","Setup Instructions",[503,504,505,510,517,769,775,784,913,937,941],"steps",{},[506,507,509],"h3",{"id":508},"_1-create-a-preload-file","1. Create a Preload File",[427,511,512,513,516],{},"Create a new file at ",[431,514,515],{},"start\u002Fsentry.ts",":",[518,519,524],"pre",{"className":520,"code":521,"filename":515,"language":522,"meta":523,"style":523},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import app from '@adonisjs\u002Fcore\u002Fservices\u002Fapp';\nimport { Sentry } from '@eienjs\u002Fadonisjs-sentry';\nimport env from '#start\u002Fenv';\n\nif (app.inProduction && env.get('SENTRY_DSN')) {\n  Sentry.init({\n    dsn: env.get('SENTRY_DSN'),\n    environment: app.nodeEnvironment,\n    release: env.get('SENTRY_RELEASE'),\n    tracesSampleRate: 0.2,\n  });\n}\n","ts","",[431,525,526,556,581,600,607,650,666,694,712,739,753,763],{"__ignoreMap":523},[527,528,531,535,539,542,546,550,553],"span",{"class":529,"line":530},"line",1,[527,532,534],{"class":533},"s7zQu","import",[527,536,538],{"class":537},"sTEyZ"," app ",[527,540,541],{"class":533},"from",[527,543,545],{"class":544},"sMK4o"," '",[527,547,549],{"class":548},"sfazB","@adonisjs\u002Fcore\u002Fservices\u002Fapp",[527,551,552],{"class":544},"'",[527,554,555],{"class":544},";\n",[527,557,559,561,564,567,570,573,575,577,579],{"class":529,"line":558},2,[527,560,534],{"class":533},[527,562,563],{"class":544}," {",[527,565,566],{"class":537}," Sentry",[527,568,569],{"class":544}," }",[527,571,572],{"class":533}," from",[527,574,545],{"class":544},[527,576,433],{"class":548},[527,578,552],{"class":544},[527,580,555],{"class":544},[527,582,584,586,589,591,593,596,598],{"class":529,"line":583},3,[527,585,534],{"class":533},[527,587,588],{"class":537}," env ",[527,590,541],{"class":533},[527,592,545],{"class":544},[527,594,595],{"class":548},"#start\u002Fenv",[527,597,552],{"class":544},[527,599,555],{"class":544},[527,601,603],{"class":529,"line":602},4,[527,604,606],{"emptyLinePlaceholder":605},true,"\n",[527,608,610,613,616,619,622,625,628,630,634,637,639,642,644,647],{"class":529,"line":609},5,[527,611,612],{"class":533},"if",[527,614,615],{"class":537}," (app",[527,617,618],{"class":544},".",[527,620,621],{"class":537},"inProduction ",[527,623,624],{"class":544},"&&",[527,626,627],{"class":537}," env",[527,629,618],{"class":544},[527,631,633],{"class":632},"s2Zo4","get",[527,635,636],{"class":537},"(",[527,638,552],{"class":544},[527,640,641],{"class":548},"SENTRY_DSN",[527,643,552],{"class":544},[527,645,646],{"class":537},")) ",[527,648,649],{"class":544},"{\n",[527,651,653,656,658,661,664],{"class":529,"line":652},6,[527,654,655],{"class":537},"  Sentry",[527,657,618],{"class":544},[527,659,660],{"class":632},"init",[527,662,636],{"class":663},"swJcz",[527,665,649],{"class":544},[527,667,669,672,674,676,678,680,682,684,686,688,691],{"class":529,"line":668},7,[527,670,671],{"class":663},"    dsn",[527,673,516],{"class":544},[527,675,627],{"class":537},[527,677,618],{"class":544},[527,679,633],{"class":632},[527,681,636],{"class":663},[527,683,552],{"class":544},[527,685,641],{"class":548},[527,687,552],{"class":544},[527,689,690],{"class":663},")",[527,692,693],{"class":544},",\n",[527,695,697,700,702,705,707,710],{"class":529,"line":696},8,[527,698,699],{"class":663},"    environment",[527,701,516],{"class":544},[527,703,704],{"class":537}," app",[527,706,618],{"class":544},[527,708,709],{"class":537},"nodeEnvironment",[527,711,693],{"class":544},[527,713,715,718,720,722,724,726,728,730,733,735,737],{"class":529,"line":714},9,[527,716,717],{"class":663},"    release",[527,719,516],{"class":544},[527,721,627],{"class":537},[527,723,618],{"class":544},[527,725,633],{"class":632},[527,727,636],{"class":663},[527,729,552],{"class":544},[527,731,732],{"class":548},"SENTRY_RELEASE",[527,734,552],{"class":544},[527,736,690],{"class":663},[527,738,693],{"class":544},[527,740,742,745,747,751],{"class":529,"line":741},10,[527,743,744],{"class":663},"    tracesSampleRate",[527,746,516],{"class":544},[527,748,750],{"class":749},"sbssI"," 0.2",[527,752,693],{"class":544},[527,754,756,759,761],{"class":529,"line":755},11,[527,757,758],{"class":544},"  }",[527,760,690],{"class":663},[527,762,555],{"class":544},[527,764,766],{"class":529,"line":765},12,[527,767,768],{"class":544},"}\n",[506,770,772,773],{"id":771},"_2-register-the-preload-in-adonisrcts","2. Register the Preload in ",[431,774,473],{},[427,776,777,778,780,781,783],{},"Add your preload to the ",[431,779,469],{}," array in ",[431,782,473],{},", ensuring it is listed early:",[518,785,787],{"className":520,"code":786,"filename":473,"language":522,"meta":523,"style":523},"export default defineConfig({\n  preloads: [\n    {\n      file: () => import('#start\u002Fsentry'),\n      environment: ['web', 'console'],\n    },\n    \u002F\u002F ... other preloads\n  ],\n  \u002F\u002F ...\n});\n",[431,788,789,804,814,819,849,881,886,892,899,904],{"__ignoreMap":523},[527,790,791,794,797,800,802],{"class":529,"line":530},[527,792,793],{"class":533},"export",[527,795,796],{"class":533}," default",[527,798,799],{"class":632}," defineConfig",[527,801,636],{"class":537},[527,803,649],{"class":544},[527,805,806,809,811],{"class":529,"line":558},[527,807,808],{"class":663},"  preloads",[527,810,516],{"class":544},[527,812,813],{"class":537}," [\n",[527,815,816],{"class":529,"line":583},[527,817,818],{"class":544},"    {\n",[527,820,821,824,826,829,833,836,838,840,843,845,847],{"class":529,"line":602},[527,822,823],{"class":632},"      file",[527,825,516],{"class":544},[527,827,828],{"class":544}," ()",[527,830,832],{"class":831},"spNyl"," =>",[527,834,835],{"class":544}," import",[527,837,636],{"class":537},[527,839,552],{"class":544},[527,841,842],{"class":548},"#start\u002Fsentry",[527,844,552],{"class":544},[527,846,690],{"class":537},[527,848,693],{"class":544},[527,850,851,854,856,859,861,864,866,869,871,874,876,879],{"class":529,"line":609},[527,852,853],{"class":663},"      environment",[527,855,516],{"class":544},[527,857,858],{"class":537}," [",[527,860,552],{"class":544},[527,862,863],{"class":548},"web",[527,865,552],{"class":544},[527,867,868],{"class":544},",",[527,870,545],{"class":544},[527,872,873],{"class":548},"console",[527,875,552],{"class":544},[527,877,878],{"class":537},"]",[527,880,693],{"class":544},[527,882,883],{"class":529,"line":652},[527,884,885],{"class":544},"    },\n",[527,887,888],{"class":529,"line":668},[527,889,891],{"class":890},"sHwdD","    \u002F\u002F ... other preloads\n",[527,893,894,897],{"class":529,"line":696},[527,895,896],{"class":537},"  ]",[527,898,693],{"class":544},[527,900,901],{"class":529,"line":714},[527,902,903],{"class":890},"  \u002F\u002F ...\n",[527,905,906,909,911],{"class":529,"line":741},[527,907,908],{"class":544},"}",[527,910,690],{"class":537},[527,912,555],{"class":544},[914,915,916],"note",{},[427,917,918,919,922,923,780,926,928,929,932,933,936],{},"Keep ",[431,920,921],{},"@eienjs\u002Fadonisjs-sentry\u002Fproviders\u002Fsentry_provider"," in your ",[431,924,925],{},"providers",[431,927,473],{},". The provider is responsible for configuring the ignore lists used by ",[431,930,931],{},"reportException"," and flushing pending events during application shutdown (",[431,934,935],{},"Sentry.close(2000)",").",[506,938,940],{"id":939},"_3-verify-auto-instrumentation","3. Verify Auto-Instrumentation",[427,942,943],{},"Run your application and verify that database queries and external HTTP requests appear as nested spans under your route transactions in the Sentry Performance dashboard.",[945,946,947],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":523,"searchDepth":530,"depth":558,"links":949},[950,951],{"id":462,"depth":558,"text":463},{"id":500,"depth":558,"text":501},"Initialize Sentry before application dependencies load to enable full third-party auto-instrumentation.","md",{},{"icon":241},{"title":238,"description":952},"6PbTPR6UiwaSDL6Idqr-owzXgM2ZfCGjBx2qdhXkHG0",[959,961],{"title":228,"path":229,"stem":230,"description":960,"icon":231,"children":-1},"Validate your Sentry configuration and ensure exceptions can be flushed and delivered.",{"title":243,"path":244,"stem":245,"description":962,"icon":246,"children":-1},"Associate Sentry releases with source maps to display original TypeScript code in stack traces.",{"id":964,"extension":965,"meta":966,"packages":967,"stem":1011,"__hash__":1012},"packages\u002Fdata\u002Fpackages.json","json",{},[968,975,981,987,993,999,1005],{"name":969,"title":970,"description":971,"icon":86,"category":972,"repo":973,"version":974,"docs":605,"featured":605},"adonisjs-permission","Permission","Associate users with roles and permissions in your AdonisJS app","adonisjs","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-permission","1.0.0",{"name":976,"title":977,"description":978,"icon":33,"category":972,"repo":979,"version":980,"docs":605,"featured":605},"adonisjs-api-query","API Query","Easily build Lucid queries from API requests","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-api-query","3.0.1",{"name":982,"title":983,"description":984,"icon":319,"category":972,"repo":985,"version":986,"docs":605,"featured":605},"adonisjs-soft-deletes","Soft Deletes","Provider-based Soft deletes for AdonisJS","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-soft-deletes","1.0.2",{"name":988,"title":989,"description":990,"icon":270,"category":972,"repo":991,"version":992,"docs":605},"adonisjs-simple-auth","Simple Auth","Single API key authentication for AdonisJS v7 applications","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-simple-auth","2.1.1",{"name":994,"title":995,"description":996,"icon":196,"category":972,"repo":997,"version":998,"docs":605,"featured":22},"adonisjs-sentry","Sentry","Sentry service provider for AdonisJS","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-sentry","3.0.0",{"name":1000,"title":344,"description":1001,"icon":345,"category":1002,"repo":1003,"version":1004,"docs":605,"featured":22},"eslint-config","EienJS ESLint Config","tooling","https:\u002F\u002Fgithub.com\u002Feienjs\u002Feslint-config","2.3.2",{"name":1006,"title":1007,"description":1008,"icon":1009,"category":1002,"repo":1010,"docs":22},"adonisjs-pkg-boilerplate","Package Boilerplate","A boilerplate for creating AdonisJS packages.","i-tabler-package","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-pkg-boilerplate","data\u002Fpackages","yO-yKHzkla0f83FSb61DlZNLzOMCkFiaPByfyH7Znkg",1794458200901]