[{"data":1,"prerenderedAt":834},["ShallowReactive",2],{"navigation":3,"\u002Fpackages\u002Fadonisjs-sentry\u002Fusage\u002Ftracing-and-middleware":421,"\u002Fpackages\u002Fadonisjs-sentry\u002Fusage\u002Ftracing-and-middleware-surround":778,"packages-data":783},[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":224,"body":423,"description":772,"extension":773,"meta":774,"navigation":775,"path":225,"seo":776,"stem":226,"__hash__":777},"docs\u002F2.packages\u002Fadonisjs-sentry\u002F2.usage\u002F2.tracing-and-middleware.md",{"type":424,"value":425,"toc":766},"minimark",[426,430,441,446,453,530,534,541,641,649,653,663,731,748,752,762],[427,428,429],"p",{},"Node.js executes concurrent asynchronous requests on a single event loop. Without proper request isolation, context data (such as user information or custom tags) from one request could accidentally leak into another.",[427,431,432,436,437,440],{},[433,434,435],"code",{},"@eienjs\u002Fadonisjs-sentry"," includes ",[433,438,439],{},"SentryMiddleware"," to ensure every incoming HTTP request runs within its own isolated scope while instrumenting transaction names and spans.",[442,443,445],"h2",{"id":444},"middleware-registration","Middleware Registration",[427,447,448,449,452],{},"When you run ",[433,450,451],{},"node ace configure @eienjs\u002Fadonisjs-sentry",", the middleware is automatically registered in your router middleware stack:",[454,455,461],"pre",{"className":456,"code":457,"filename":458,"language":459,"meta":460,"style":460},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","router.use([\n  () => import('@eienjs\u002Fadonisjs-sentry\u002Fmiddleware\u002Fsentry_middleware'),\n  \u002F\u002F ... other global middleware\n]);\n","start\u002Fkernel.ts","ts","",[433,462,463,483,514,521],{"__ignoreMap":460},[464,465,468,472,476,480],"span",{"class":466,"line":467},"line",1,[464,469,471],{"class":470},"sTEyZ","router",[464,473,475],{"class":474},"sMK4o",".",[464,477,479],{"class":478},"s2Zo4","use",[464,481,482],{"class":470},"([\n",[464,484,486,489,493,496,499,502,506,508,511],{"class":466,"line":485},2,[464,487,488],{"class":474},"  ()",[464,490,492],{"class":491},"spNyl"," =>",[464,494,495],{"class":474}," import",[464,497,498],{"class":470},"(",[464,500,501],{"class":474},"'",[464,503,505],{"class":504},"sfazB","@eienjs\u002Fadonisjs-sentry\u002Fmiddleware\u002Fsentry_middleware",[464,507,501],{"class":474},[464,509,510],{"class":470},")",[464,512,513],{"class":474},",\n",[464,515,517],{"class":466,"line":516},3,[464,518,520],{"class":519},"sHwdD","  \u002F\u002F ... other global middleware\n",[464,522,524,527],{"class":466,"line":523},4,[464,525,526],{"class":470},"])",[464,528,529],{"class":474},";\n",[442,531,533],{"id":532},"how-it-works","How It Works",[427,535,536,537,540],{},"Inside ",[433,538,539],{},"SentryMiddleware.handle(ctx, next)",":",[542,543,544,556,566,596,609,619],"ol",{},[545,546,547,551,552,555],"li",{},[548,549,550],"strong",{},"Initialization check",": If Sentry is not active, the middleware passes directly to ",[433,553,554],{},"next()"," with zero overhead.",[545,557,558,561,562,565],{},[548,559,560],{},"Isolation scope",": Wraps request handling in ",[433,563,564],{},"Sentry.withIsolationScope(...)",", ensuring all tags, breadcrumbs, and user context set during this request remain completely private to this request.",[545,567,568,571,572],{},[548,569,570],{},"Route resolution",": Computes the parameterized route pattern:\n",[573,574,575,585],"ul",{},[545,576,577,578,581,582,510],{},"Primary: ",[433,579,580],{},"ctx.route?.pattern"," (e.g. ",[433,583,584],{},"\u002Fusers\u002F:id\u002Fposts\u002F:slug",[545,586,587,588,591,592,595],{},"Fallback: ",[433,589,590],{},"ctx.routeKey"," or ",[433,593,594],{},"'unknown'"," for unmatched requests",[545,597,598,601,602,581,605,608],{},[548,599,600],{},"Transaction naming",": Constructs an expressive transaction name using ",[433,603,604],{},"${method} ${pattern}",[433,606,607],{},"GET \u002Fusers\u002F:id",").",[545,610,611,614,615,618],{},[548,612,613],{},"Span updates",": Inspects the active root span and updates its name and ",[433,616,617],{},"http.route"," attribute to match the AdonisJS route.",[545,620,621,624,625,628,629,632,633,636,637,640],{},[548,622,623],{},"Request tagging",": Sets ",[433,626,627],{},"route",", ",[433,630,631],{},"http.method",", and ",[433,634,635],{},"request_id"," (from ",[433,638,639],{},"ctx.request.id()",") on the isolated scope.",[454,642,647],{"className":643,"code":645,"language":646,"meta":460},[644],"language-text","\u002F\u002F Example transaction generated in Sentry\nTransaction: \"GET \u002Fapi\u002Fv1\u002Fprojects\u002F:id\"\nTags:\n  http.method: \"GET\"\n  route: \"\u002Fapi\u002Fv1\u002Fprojects\u002F:id\"\n  request_id: \"ckx9a8h1z000101mh25q1...\"\n","text",[433,648,645],{"__ignoreMap":460},[442,650,652],{"id":651},"performance-tracing-sample-rate","Performance Tracing Sample Rate",[427,654,655,656,659,660,540],{},"To configure the proportion of HTTP transactions captured for performance monitoring, adjust ",[433,657,658],{},"tracesSampleRate"," in ",[433,661,662],{},"config\u002Fsentry.ts",[454,664,666],{"className":456,"code":665,"filename":662,"language":459,"meta":460,"style":460},"export default defineConfig({\n  \u002F\u002F ...\n  \u002F**\n   * Sample 20% of transactions in production\n   *\u002F\n  tracesSampleRate: 0.2,\n});\n",[433,667,668,685,690,695,700,706,721],{"__ignoreMap":460},[464,669,670,674,677,680,682],{"class":466,"line":467},[464,671,673],{"class":672},"s7zQu","export",[464,675,676],{"class":672}," default",[464,678,679],{"class":478}," defineConfig",[464,681,498],{"class":470},[464,683,684],{"class":474},"{\n",[464,686,687],{"class":466,"line":485},[464,688,689],{"class":519},"  \u002F\u002F ...\n",[464,691,692],{"class":466,"line":516},[464,693,694],{"class":519},"  \u002F**\n",[464,696,697],{"class":466,"line":523},[464,698,699],{"class":519},"   * Sample 20% of transactions in production\n",[464,701,703],{"class":466,"line":702},5,[464,704,705],{"class":519},"   *\u002F\n",[464,707,709,713,715,719],{"class":466,"line":708},6,[464,710,712],{"class":711},"swJcz","  tracesSampleRate",[464,714,540],{"class":474},[464,716,718],{"class":717},"sbssI"," 0.2",[464,720,513],{"class":474},[464,722,724,727,729],{"class":466,"line":723},7,[464,725,726],{"class":474},"}",[464,728,510],{"class":470},[464,730,529],{"class":474},[732,733,734],"tip",{},[427,735,736,737,739,740,743,744,747],{},"For high-traffic production environments, consider setting ",[433,738,658],{}," between ",[433,741,742],{},"0.05"," (5%) and ",[433,745,746],{},"0.2"," (20%) to optimize quota usage while capturing representative performance data.",[442,749,751],{"id":750},"auto-instrumentation-of-database-third-party-spans","Auto-Instrumentation of Database & Third-Party Spans",[427,753,754,755,758,759,475],{},"By default, the service provider initializes Sentry during the provider ",[433,756,757],{},"register()"," lifecycle. If you need full auto-instrumentation for earlier-imported modules (like database drivers or external HTTP clients), see ",[760,761,238],"a",{"href":239},[763,764,765],"style",{},"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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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}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 .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 .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}",{"title":460,"searchDepth":467,"depth":485,"links":767},[768,769,770,771],{"id":444,"depth":485,"text":445},{"id":532,"depth":485,"text":533},{"id":651,"depth":485,"text":652},{"id":750,"depth":485,"text":751},"Isolate request scopes, monitor performance traces, and set transaction names with SentryMiddleware.","md",{},{"icon":146},{"title":224,"description":772},"cD720KEZ24LXZPRLH2R0gJYyjRBN0nqyM9kxbfT1iFc",[779,781],{"title":220,"path":221,"stem":222,"description":780,"icon":107,"children":-1},"Capture, enrich, and filter exceptions with HTTP context, user details, and smart fingerprinting.",{"title":228,"path":229,"stem":230,"description":782,"icon":231,"children":-1},"Validate your Sentry configuration and ensure exceptions can be flushed and delivered.",{"id":784,"extension":785,"meta":786,"packages":787,"stem":832,"__hash__":833},"packages\u002Fdata\u002Fpackages.json","json",{},[788,796,802,808,814,820,826],{"name":789,"title":790,"description":791,"icon":86,"category":792,"repo":793,"version":794,"docs":795,"featured":795},"adonisjs-permission","Permission","Associate users with roles and permissions in your AdonisJS app","adonisjs","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-permission","1.0.0",true,{"name":797,"title":798,"description":799,"icon":33,"category":792,"repo":800,"version":801,"docs":795,"featured":795},"adonisjs-api-query","API Query","Easily build Lucid queries from API requests","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-api-query","3.0.1",{"name":803,"title":804,"description":805,"icon":319,"category":792,"repo":806,"version":807,"docs":795,"featured":795},"adonisjs-soft-deletes","Soft Deletes","Provider-based Soft deletes for AdonisJS","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-soft-deletes","1.0.2",{"name":809,"title":810,"description":811,"icon":270,"category":792,"repo":812,"version":813,"docs":795},"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":815,"title":816,"description":817,"icon":196,"category":792,"repo":818,"version":819,"docs":795,"featured":22},"adonisjs-sentry","Sentry","Sentry service provider for AdonisJS","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-sentry","3.0.0",{"name":821,"title":344,"description":822,"icon":345,"category":823,"repo":824,"version":825,"docs":795,"featured":22},"eslint-config","EienJS ESLint Config","tooling","https:\u002F\u002Fgithub.com\u002Feienjs\u002Feslint-config","2.3.2",{"name":827,"title":828,"description":829,"icon":830,"category":823,"repo":831,"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",1794458200789]