[{"data":1,"prerenderedAt":1114},["ShallowReactive",2],{"navigation":3,"\u002Fpackages\u002Fadonisjs-api-query\u002Fgetting-started\u002Finstallation":273,"\u002Fpackages\u002Fadonisjs-api-query\u002Fgetting-started\u002Finstallation-surround":1060,"packages-data":1065},[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,247],{"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},"Simple Auth","i-tabler-key","\u002Fpackages\u002Fadonisjs-simple-auth","2.packages\u002Fadonisjs-simple-auth",[200,214,233],{"title":5,"icon":38,"path":201,"stem":202,"children":203,"page":22},"\u002Fpackages\u002Fadonisjs-simple-auth\u002Fgetting-started","2.packages\u002Fadonisjs-simple-auth\u002F1.getting-started",[204,208,211],{"title":10,"path":205,"stem":206,"icon":207},"\u002Fpackages\u002Fadonisjs-simple-auth\u002Fgetting-started\u002Fintroduction","2.packages\u002Fadonisjs-simple-auth\u002F1.getting-started\u002F1.introduction","i-tabler-info-circle",{"title":47,"path":209,"stem":210,"icon":50},"\u002Fpackages\u002Fadonisjs-simple-auth\u002Fgetting-started\u002Finstallation","2.packages\u002Fadonisjs-simple-auth\u002F1.getting-started\u002F2.installation",{"title":52,"path":212,"stem":213,"icon":55},"\u002Fpackages\u002Fadonisjs-simple-auth\u002Fgetting-started\u002Fconfiguration","2.packages\u002Fadonisjs-simple-auth\u002F1.getting-started\u002F3.configuration",{"title":215,"icon":110,"path":216,"stem":217,"children":218,"page":22},"Usage","\u002Fpackages\u002Fadonisjs-simple-auth\u002Fusage","2.packages\u002Fadonisjs-simple-auth\u002F2.usage",[219,224,229],{"title":220,"path":221,"stem":222,"icon":223},"Generating API Keys","\u002Fpackages\u002Fadonisjs-simple-auth\u002Fusage\u002Fgenerating-api-keys","2.packages\u002Fadonisjs-simple-auth\u002F2.usage\u002F1.generating-api-keys","i-tabler-terminal-2",{"title":225,"path":226,"stem":227,"icon":228},"Protecting Routes","\u002Fpackages\u002Fadonisjs-simple-auth\u002Fusage\u002Fprotecting-routes","2.packages\u002Fadonisjs-simple-auth\u002F2.usage\u002F2.protecting-routes","i-tabler-lock",{"title":230,"path":231,"stem":232,"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":234,"stem":235,"children":236,"page":22},"\u002Fpackages\u002Fadonisjs-simple-auth\u002Fadvanced","2.packages\u002Fadonisjs-simple-auth\u002F3.advanced",[237,242],{"title":238,"path":239,"stem":240,"icon":241},"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":243,"path":244,"stem":245,"icon":246},"API Reference","\u002Fpackages\u002Fadonisjs-simple-auth\u002Fadvanced\u002Fapi-reference","2.packages\u002Fadonisjs-simple-auth\u002F3.advanced\u002F2.api-reference","i-tabler-code",{"title":248,"icon":249,"path":250,"stem":251,"children":252,"page":22},"AdonisJS Soft Deletes","i-tabler-trash-off","\u002Fpackages\u002Fadonisjs-soft-deletes","2.packages\u002Fadonisjs-soft-deletes",[253,263],{"title":5,"icon":38,"path":254,"stem":255,"children":256,"page":22},"\u002Fpackages\u002Fadonisjs-soft-deletes\u002Fgetting-started","2.packages\u002Fadonisjs-soft-deletes\u002F1.getting-started",[257,260],{"title":10,"path":258,"stem":259,"icon":207},"\u002Fpackages\u002Fadonisjs-soft-deletes\u002Fgetting-started\u002Fintroduction","2.packages\u002Fadonisjs-soft-deletes\u002F1.getting-started\u002F1.introduction",{"title":47,"path":261,"stem":262,"icon":50},"\u002Fpackages\u002Fadonisjs-soft-deletes\u002Fgetting-started\u002Finstallation","2.packages\u002Fadonisjs-soft-deletes\u002F1.getting-started\u002F2.installation",{"title":215,"icon":45,"path":264,"stem":265,"children":266,"page":22},"\u002Fpackages\u002Fadonisjs-soft-deletes\u002Fusage","2.packages\u002Fadonisjs-soft-deletes\u002F2.usage",[267,270],{"title":215,"path":268,"stem":269,"icon":246},"\u002Fpackages\u002Fadonisjs-soft-deletes\u002Fusage\u002Fusage","2.packages\u002Fadonisjs-soft-deletes\u002F2.usage\u002F1.usage",{"title":243,"path":271,"stem":272,"icon":45},"\u002Fpackages\u002Fadonisjs-soft-deletes\u002Fusage\u002Fapi-reference","2.packages\u002Fadonisjs-soft-deletes\u002F2.usage\u002F2.api-reference",{"id":274,"title":47,"body":275,"description":1054,"extension":1055,"meta":1056,"navigation":1057,"path":48,"seo":1058,"stem":49,"__hash__":1059},"docs\u002F2.packages\u002Fadonisjs-api-query\u002F1.getting-started\u002F2.installation.md",{"type":276,"value":277,"toc":1044},"minimark",[278,283,338,342,350,378,381,409,413,416,462,469,485,489,507,519,530,806,810,836,1022,1040],[279,280,282],"h2",{"id":281},"requirements","Requirements",[284,285,286,298,311,322],"ul",{},[287,288,289,293,294],"li",{},[290,291,292],"strong",{},"Node.js",": ",[295,296,297],"code",{},">= 24.0.0",[287,299,300,303,304,307,308],{},[290,301,302],{},"AdonisJS Core"," (",[295,305,306],{},"@adonisjs\u002Fcore","): ",[295,309,310],{},"^7.3.4",[287,312,313,303,316,307,319],{},[290,314,315],{},"AdonisJS Lucid",[295,317,318],{},"@adonisjs\u002Flucid",[295,320,321],{},"^22.4.2",[287,323,324,303,327,307,330,333,334],{},[290,325,326],{},"VineJS",[295,328,329],{},"@vinejs\u002Fvine",[295,331,332],{},">= 4.4.0"," ",[335,336,337],"em",{},"(optional, only required if you use query parameter validation)",[279,339,341],{"id":340},"quick-installation","Quick Installation",[343,344,345,346,349],"p",{},"Install and configure the package automatically using the AdonisJS ",[295,347,348],{},"ace add"," command:",[351,352,357],"pre",{"className":353,"code":354,"language":355,"meta":356,"style":356},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","node ace add @eienjs\u002Fadonisjs-api-query\n","bash","",[295,358,359],{"__ignoreMap":356},[360,361,364,368,372,375],"span",{"class":362,"line":363},"line",1,[360,365,367],{"class":366},"sBMFI","node",[360,369,371],{"class":370},"sfazB"," ace",[360,373,374],{"class":370}," add",[360,376,377],{"class":370}," @eienjs\u002Fadonisjs-api-query\n",[343,379,380],{},"This command will:",[382,383,384,391,402],"ol",{},[287,385,386,387,390],{},"Install ",[295,388,389],{},"@eienjs\u002Fadonisjs-api-query"," using your detected package manager.",[287,392,393,394,397,398,401],{},"Register the ",[295,395,396],{},"@eienjs\u002Fadonisjs-api-query\u002Fproviders\u002Fapi_query_provider"," provider in your ",[295,399,400],{},"adonisrc.ts"," file.",[287,403,404,405,408],{},"Generate the ",[295,406,407],{},"config\u002Fapiquery.ts"," configuration file.",[279,410,412],{"id":411},"manual-installation","Manual Installation",[343,414,415],{},"If you prefer to install and configure the package manually, install the package with your package manager:",[417,418,419,433,448],"code-group",{},[351,420,423],{"className":353,"code":421,"filename":422,"language":355,"meta":356,"style":356},"pnpm add @eienjs\u002Fadonisjs-api-query\n","pnpm",[295,424,425],{"__ignoreMap":356},[360,426,427,429,431],{"class":362,"line":363},[360,428,422],{"class":366},[360,430,374],{"class":370},[360,432,377],{"class":370},[351,434,437],{"className":353,"code":435,"filename":436,"language":355,"meta":356,"style":356},"npm install @eienjs\u002Fadonisjs-api-query\n","npm",[295,438,439],{"__ignoreMap":356},[360,440,441,443,446],{"class":362,"line":363},[360,442,436],{"class":366},[360,444,445],{"class":370}," install",[360,447,377],{"class":370},[351,449,452],{"className":353,"code":450,"filename":451,"language":355,"meta":356,"style":356},"yarn add @eienjs\u002Fadonisjs-api-query\n","yarn",[295,453,454],{"__ignoreMap":356},[360,455,456,458,460],{"class":362,"line":363},[360,457,451],{"class":366},[360,459,374],{"class":370},[360,461,377],{"class":370},[343,463,464,465,468],{},"Then run the ",[295,466,467],{},"configure"," command to register the provider and publish the config file:",[351,470,472],{"className":353,"code":471,"language":355,"meta":356,"style":356},"node ace configure @eienjs\u002Fadonisjs-api-query\n",[295,473,474],{"__ignoreMap":356},[360,475,476,478,480,483],{"class":362,"line":363},[360,477,367],{"class":366},[360,479,371],{"class":370},[360,481,482],{"class":370}," configure",[360,484,377],{"class":370},[279,486,488],{"id":487},"passing-the-http-request-to-the-query-builder","Passing the HTTP Request to the Query Builder",[343,490,491,492,495,496,495,499,502,503,506],{},"To read query parameters (",[295,493,494],{},"?filter[...]",", ",[295,497,498],{},"?sort=...",[295,500,501],{},"?include=...","), the query builder needs access to the current AdonisJS ",[295,504,505],{},"HttpRequest",". There are two ways to provide it:",[508,509,511,512,515,516],"h3",{"id":510},"_1-explicitly-via-withrequestrequest-or-filterrequest","1. Explicitly via ",[295,513,514],{},".withRequest(request)"," or ",[295,517,518],{},"$filter(request)",[343,520,521,522,525,526,529],{},"Pass the ",[295,523,524],{},"request"," from your controller's ",[295,527,528],{},"HttpContext",":",[351,531,536],{"className":532,"code":533,"filename":534,"language":535,"meta":356,"style":356},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import type { HttpContext } from '@adonisjs\u002Fcore\u002Fhttp';\nimport User from '#models\u002Fuser';\n\nexport default class UsersController {\n  public async index({ request }: HttpContext) {\n    \u002F\u002F Using inline macros:\n    const users = await User.query()\n      .withRequest(request)\n      .allowedFilters('name')\n      .allowedSorts('createdAt');\n\n    \u002F\u002F Or using a Filterable class:\n    const filteredUsers = await User.$filter(request);\n\n    return users;\n  }\n}\n","app\u002Fcontrollers\u002Fusers_controller.ts","ts",[295,537,538,573,593,600,619,649,656,684,701,720,741,746,752,779,784,794,800],{"__ignoreMap":356},[360,539,540,544,547,551,555,558,561,564,567,570],{"class":362,"line":363},[360,541,543],{"class":542},"s7zQu","import",[360,545,546],{"class":542}," type",[360,548,550],{"class":549},"sMK4o"," {",[360,552,554],{"class":553},"sTEyZ"," HttpContext",[360,556,557],{"class":549}," }",[360,559,560],{"class":542}," from",[360,562,563],{"class":549}," '",[360,565,566],{"class":370},"@adonisjs\u002Fcore\u002Fhttp",[360,568,569],{"class":549},"'",[360,571,572],{"class":549},";\n",[360,574,576,578,581,584,586,589,591],{"class":362,"line":575},2,[360,577,543],{"class":542},[360,579,580],{"class":553}," User ",[360,582,583],{"class":542},"from",[360,585,563],{"class":549},[360,587,588],{"class":370},"#models\u002Fuser",[360,590,569],{"class":549},[360,592,572],{"class":549},[360,594,596],{"class":362,"line":595},3,[360,597,599],{"emptyLinePlaceholder":598},true,"\n",[360,601,603,606,609,613,616],{"class":362,"line":602},4,[360,604,605],{"class":542},"export",[360,607,608],{"class":542}," default",[360,610,612],{"class":611},"spNyl"," class",[360,614,615],{"class":366}," UsersController",[360,617,618],{"class":549}," {\n",[360,620,622,625,628,632,635,639,642,644,647],{"class":362,"line":621},5,[360,623,624],{"class":611},"  public",[360,626,627],{"class":611}," async",[360,629,631],{"class":630},"swJcz"," index",[360,633,634],{"class":549},"({",[360,636,638],{"class":637},"sHdIc"," request",[360,640,641],{"class":549}," }:",[360,643,554],{"class":366},[360,645,646],{"class":549},")",[360,648,618],{"class":549},[360,650,652],{"class":362,"line":651},6,[360,653,655],{"class":654},"sHwdD","    \u002F\u002F Using inline macros:\n",[360,657,659,662,665,668,671,674,677,681],{"class":362,"line":658},7,[360,660,661],{"class":611},"    const",[360,663,664],{"class":553}," users",[360,666,667],{"class":549}," =",[360,669,670],{"class":542}," await",[360,672,673],{"class":553}," User",[360,675,676],{"class":549},".",[360,678,680],{"class":679},"s2Zo4","query",[360,682,683],{"class":630},"()\n",[360,685,687,690,693,696,698],{"class":362,"line":686},8,[360,688,689],{"class":549},"      .",[360,691,692],{"class":679},"withRequest",[360,694,695],{"class":630},"(",[360,697,524],{"class":553},[360,699,700],{"class":630},")\n",[360,702,704,706,709,711,713,716,718],{"class":362,"line":703},9,[360,705,689],{"class":549},[360,707,708],{"class":679},"allowedFilters",[360,710,695],{"class":630},[360,712,569],{"class":549},[360,714,715],{"class":370},"name",[360,717,569],{"class":549},[360,719,700],{"class":630},[360,721,723,725,728,730,732,735,737,739],{"class":362,"line":722},10,[360,724,689],{"class":549},[360,726,727],{"class":679},"allowedSorts",[360,729,695],{"class":630},[360,731,569],{"class":549},[360,733,734],{"class":370},"createdAt",[360,736,569],{"class":549},[360,738,646],{"class":630},[360,740,572],{"class":549},[360,742,744],{"class":362,"line":743},11,[360,745,599],{"emptyLinePlaceholder":598},[360,747,749],{"class":362,"line":748},12,[360,750,751],{"class":654},"    \u002F\u002F Or using a Filterable class:\n",[360,753,755,757,760,762,764,766,768,771,773,775,777],{"class":362,"line":754},13,[360,756,661],{"class":611},[360,758,759],{"class":553}," filteredUsers",[360,761,667],{"class":549},[360,763,670],{"class":542},[360,765,673],{"class":553},[360,767,676],{"class":549},[360,769,770],{"class":679},"$filter",[360,772,695],{"class":630},[360,774,524],{"class":553},[360,776,646],{"class":630},[360,778,572],{"class":549},[360,780,782],{"class":362,"line":781},14,[360,783,599],{"emptyLinePlaceholder":598},[360,785,787,790,792],{"class":362,"line":786},15,[360,788,789],{"class":542},"    return",[360,791,664],{"class":553},[360,793,572],{"class":549},[360,795,797],{"class":362,"line":796},16,[360,798,799],{"class":549},"  }\n",[360,801,803],{"class":362,"line":802},17,[360,804,805],{"class":549},"}\n",[508,807,809],{"id":808},"_2-automatically-via-asynclocalstorage","2. Automatically via AsyncLocalStorage",[343,811,812,813,822,823,826,827,829,830,833,834,529],{},"If you enable ",[814,815,819],"a",{"href":816,"rel":817},"https:\u002F\u002Fdocs.adonisjs.com\u002Fguides\u002Fconcepts\u002Fasync-local-storage",[818],"nofollow",[295,820,821],{},"useAsyncLocalStorage"," in ",[295,824,825],{},"config\u002Fapp.ts",", the package automatically resolves the active ",[295,828,505],{}," via ",[295,831,832],{},"HttpContext.getOrFail().request"," when you omit ",[295,835,514],{},[417,837,838,911],{},[351,839,841],{"className":532,"code":840,"filename":825,"language":535,"meta":356,"style":356},"import { defineConfig } from '@adonisjs\u002Fcore\u002Fhttp';\n\nexport const http = defineConfig({\n  useAsyncLocalStorage: true,\n});\n",[295,842,843,864,868,888,902],{"__ignoreMap":356},[360,844,845,847,849,852,854,856,858,860,862],{"class":362,"line":363},[360,846,543],{"class":542},[360,848,550],{"class":549},[360,850,851],{"class":553}," defineConfig",[360,853,557],{"class":549},[360,855,560],{"class":542},[360,857,563],{"class":549},[360,859,566],{"class":370},[360,861,569],{"class":549},[360,863,572],{"class":549},[360,865,866],{"class":362,"line":575},[360,867,599],{"emptyLinePlaceholder":598},[360,869,870,872,875,878,881,883,885],{"class":362,"line":595},[360,871,605],{"class":542},[360,873,874],{"class":611}," const",[360,876,877],{"class":553}," http ",[360,879,880],{"class":549},"=",[360,882,851],{"class":679},[360,884,695],{"class":553},[360,886,887],{"class":549},"{\n",[360,889,890,893,895,899],{"class":362,"line":602},[360,891,892],{"class":630},"  useAsyncLocalStorage",[360,894,529],{"class":549},[360,896,898],{"class":897},"sfNiH"," true",[360,900,901],{"class":549},",\n",[360,903,904,907,909],{"class":362,"line":621},[360,905,906],{"class":549},"}",[360,908,646],{"class":553},[360,910,572],{"class":549},[351,912,914],{"className":532,"code":913,"filename":534,"language":535,"meta":356,"style":356},"import User from '#models\u002Fuser';\n\nexport default class UsersController {\n  public async index() {\n    \u002F\u002F No need to pass `request` when AsyncLocalStorage is enabled\n    return await User.query()\n      .allowedFilters('name')\n      .allowedSorts('createdAt');\n  }\n}\n",[295,915,916,932,936,948,961,966,980,996,1014,1018],{"__ignoreMap":356},[360,917,918,920,922,924,926,928,930],{"class":362,"line":363},[360,919,543],{"class":542},[360,921,580],{"class":553},[360,923,583],{"class":542},[360,925,563],{"class":549},[360,927,588],{"class":370},[360,929,569],{"class":549},[360,931,572],{"class":549},[360,933,934],{"class":362,"line":575},[360,935,599],{"emptyLinePlaceholder":598},[360,937,938,940,942,944,946],{"class":362,"line":595},[360,939,605],{"class":542},[360,941,608],{"class":542},[360,943,612],{"class":611},[360,945,615],{"class":366},[360,947,618],{"class":549},[360,949,950,952,954,956,959],{"class":362,"line":602},[360,951,624],{"class":611},[360,953,627],{"class":611},[360,955,631],{"class":630},[360,957,958],{"class":549},"()",[360,960,618],{"class":549},[360,962,963],{"class":362,"line":621},[360,964,965],{"class":654},"    \u002F\u002F No need to pass `request` when AsyncLocalStorage is enabled\n",[360,967,968,970,972,974,976,978],{"class":362,"line":651},[360,969,789],{"class":542},[360,971,670],{"class":542},[360,973,673],{"class":553},[360,975,676],{"class":549},[360,977,680],{"class":679},[360,979,683],{"class":630},[360,981,982,984,986,988,990,992,994],{"class":362,"line":658},[360,983,689],{"class":549},[360,985,708],{"class":679},[360,987,695],{"class":630},[360,989,569],{"class":549},[360,991,715],{"class":370},[360,993,569],{"class":549},[360,995,700],{"class":630},[360,997,998,1000,1002,1004,1006,1008,1010,1012],{"class":362,"line":686},[360,999,689],{"class":549},[360,1001,727],{"class":679},[360,1003,695],{"class":630},[360,1005,569],{"class":549},[360,1007,734],{"class":370},[360,1009,569],{"class":549},[360,1011,646],{"class":630},[360,1013,572],{"class":549},[360,1015,1016],{"class":362,"line":703},[360,1017,799],{"class":549},[360,1019,1020],{"class":362,"line":722},[360,1021,805],{"class":549},[1023,1024,1025],"tip",{},[343,1026,1027,1028,1030,1031,515,1033,1036,1037,1039],{},"Passing ",[295,1029,524],{}," explicitly via ",[295,1032,514],{},[295,1034,1035],{},"User.$filter(request)"," works regardless of whether ",[295,1038,821],{}," is enabled and is slightly more explicit in tests.",[1041,1042,1043],"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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}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 pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":356,"searchDepth":363,"depth":575,"links":1045},[1046,1047,1048,1049],{"id":281,"depth":575,"text":282},{"id":340,"depth":575,"text":341},{"id":411,"depth":575,"text":412},{"id":487,"depth":575,"text":488,"children":1050},[1051,1053],{"id":510,"depth":595,"text":1052},"1. Explicitly via .withRequest(request) or $filter(request)",{"id":808,"depth":595,"text":809},"Install and configure @eienjs\u002Fadonisjs-api-query in your AdonisJS application.","md",{},{"icon":50},{"title":47,"description":1054},"rM2b0JYsyA1lad3Cdq33apFTrnYUK_Zmiwja5p5-jMg",[1061,1063],{"title":10,"path":43,"stem":44,"description":1062,"icon":45,"children":-1},"Easily build Lucid queries from API requests in AdonisJS v7.",{"title":52,"path":53,"stem":54,"description":1064,"icon":55,"children":-1},"Customize query parameter names, suffixes, and exception behavior in config\u002Fapiquery.ts.",{"id":1066,"extension":1067,"meta":1068,"packages":1069,"stem":1112,"__hash__":1113},"packages\u002Fdata\u002Fpackages.json","json",{},[1070,1077,1083,1089,1094,1100,1106],{"name":1071,"title":1072,"description":1073,"icon":86,"category":1074,"repo":1075,"version":1076,"docs":598},"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":1078,"title":1079,"description":1080,"icon":33,"category":1074,"repo":1081,"version":1082,"docs":598},"adonisjs-api-query","API Query","Easily build Lucid queries from API requests","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-api-query","3.0.1",{"name":1084,"title":1085,"description":1086,"icon":249,"category":1074,"repo":1087,"version":1088,"docs":598},"adonisjs-soft-deletes","Soft Deletes","Provider-based Soft deletes for AdonisJS","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-soft-deletes","1.0.2",{"name":1090,"title":195,"description":1091,"icon":196,"category":1074,"repo":1092,"version":1093,"docs":598},"adonisjs-simple-auth","Single API key authentication for AdonisJS v7 applications","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-simple-auth","2.1.0",{"name":1095,"title":1096,"description":1097,"icon":1098,"category":1074,"repo":1099,"docs":22},"adonisjs-sentry","Sentry","Sentry service provider for AdonisJS v7.","i-tabler-bug","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-sentry",{"name":1101,"title":1102,"description":1103,"icon":141,"category":1104,"repo":1105,"docs":22},"eslint-config","ESLint Config","The EienJS ESLint config preset.","tooling","https:\u002F\u002Fgithub.com\u002Feienjs\u002Feslint-config",{"name":1107,"title":1108,"description":1109,"icon":1110,"category":1104,"repo":1111,"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","5fILU7Jigsw2ib-NQg4Fr4sWgIkg0kLgpVm371gTzVY",1793868428825]