[{"data":1,"prerenderedAt":1244},["ShallowReactive",2],{"navigation_docs":3,"landing":106},[4,23,35,56,71,90],{"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-lucide-house",{"title":13,"path":14,"stem":15,"icon":16},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":18,"path":19,"stem":20,"icon":21},"Quick Start","\u002Fgetting-started\u002Fusage","1.getting-started\u002F3.usage","i-lucide-rocket","i-lucide-play",{"title":24,"icon":25,"path":26,"stem":27,"children":28,"page":34},"Essentials","i-lucide-scroll-text","\u002Fessentials","2.essentials",[29],{"title":30,"path":31,"stem":32,"icon":33},"Schemas","\u002Fessentials\u002Fschemas","2.essentials\u002F1.schemas","i-lucide-file-check",false,{"title":36,"icon":37,"path":38,"stem":39,"children":40,"page":34},"Access control","i-lucide-shield","\u002Faccess-control","3.access-control",[41,46,51],{"title":42,"path":43,"stem":44,"icon":45},"Basics","\u002Faccess-control\u002Fbasics","3.access-control\u002F1.basics","i-lucide-user-lock",{"title":47,"path":48,"stem":49,"icon":50},"Validators","\u002Faccess-control\u002Fvalidators","3.access-control\u002F2.validators","i-lucide-parentheses",{"title":52,"path":53,"stem":54,"icon":55},"Alternative collections","\u002Faccess-control\u002Falternative-collections","3.access-control\u002F3.alternative-collections","i-lucide-database-search",{"title":57,"path":58,"stem":59,"children":60,"page":34},"@mongalayer\u002Fserver","\u002Fserver","4.server",[61,66],{"title":62,"path":63,"stem":64,"icon":65},"Configuration","\u002Fserver\u002Fconfiguration","4.server\u002F1.configuration","i-lucide-server",{"title":67,"path":68,"stem":69,"icon":70},"Error Handling","\u002Fserver\u002Ferror-handling","4.server\u002F2.error-handling","i-lucide-alert-circle",{"title":72,"path":73,"stem":74,"children":75,"page":34},"@mongalayer\u002Fclient","\u002Fclient","5.client",[76,80,85],{"title":62,"path":77,"stem":78,"icon":79},"\u002Fclient\u002Fconfiguration","5.client\u002F1.configuration","i-lucide-monitor-smartphone",{"title":81,"path":82,"stem":83,"icon":84},"Operations","\u002Fclient\u002Fmethods","5.client\u002F2.methods","i-lucide-layers-2",{"title":86,"path":87,"stem":88,"icon":89},"Batch operations","\u002Fclient\u002Fbatch","5.client\u002F3.batch","i-lucide-layers-3",{"title":91,"icon":92,"path":93,"stem":94,"children":95,"page":34},"Advanced","i-lucide-brain-circuit","\u002Fadvanced","6.advanced",[96,101],{"title":97,"path":98,"stem":99,"icon":100},"Performance","\u002Fadvanced\u002Fperformance","6.advanced\u002F1.performance","i-lucide-gauge",{"title":102,"path":103,"stem":104,"icon":105},"Compatibility","\u002Fadvanced\u002Fcompatibility","6.advanced\u002F2.compatibility","i-lucide-puzzle",{"id":107,"title":108,"body":109,"description":108,"extension":1236,"meta":1237,"navigation":235,"path":1238,"seo":1239,"stem":1242,"__hash__":1243},"landing\u002Findex.md","",{"type":110,"value":111,"toc":1234},"minimark",[112,1166,1230],[113,114,120,131,144,152],"u-page-hero",{"className":115,"orientation":119},[116,117,118],"dark:bg-gradient-to-b","from-neutral-900","to-neutral-950","horizontal",[121,122,123,124,130],"template",{"v-slot:title":108},"MongoDB ",[125,126,129],"span",{"className":127},[128],"text-primary","Access"," Layer.",[121,132,133,134,138,139,143],{"v-slot:description":108},"Mongalayer is a type-safe abstraction layer between your MongoDB database and TypeScript clients, designed for basic ",[125,135,137],{"className":136},[128],"CRUD"," applications. Define schemas with ",[125,140,142],{"className":141},[128],"Zod",", control access through role-based definitions, and query your data with full type safety — from server to client.",[121,145,146],{"v-slot:links":108},[147,148,151],"u-button",{"size":149,"to":6,"trailing-icon":150},"xl","i-lucide-arrow-right","Get started",[153,154,155,401,642,896],"code-group",{},[156,157,162],"pre",{"className":158,"code":159,"filename":160,"language":161,"meta":108,"style":108},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nimport { Project } from \"model\u002Fproject\";\n\nconst { $database } = useNuxtApp();\n\nconst allProjects: Ref\u003CProject[]> = ref([]);\n\nonMounted(async () => {\n    allProjects.value = await $database.collection\u003CProject>(\"projects\").find();\n});\n\u003C\u002Fscript>\n","app.vue","vue",[163,164,165,199,230,237,263,268,304,309,330,382,391],"code",{"__ignoreMap":108},[125,166,169,173,177,181,184,187,190,194,196],{"class":167,"line":168},"line",1,[125,170,172],{"class":171},"sMK4o","\u003C",[125,174,176],{"class":175},"swJcz","script",[125,178,180],{"class":179},"spNyl"," setup",[125,182,183],{"class":179}," lang",[125,185,186],{"class":171},"=",[125,188,189],{"class":171},"\"",[125,191,193],{"class":192},"sfazB","ts",[125,195,189],{"class":171},[125,197,198],{"class":171},">\n",[125,200,202,206,209,213,216,219,222,225,227],{"class":167,"line":201},2,[125,203,205],{"class":204},"s7zQu","import",[125,207,208],{"class":171}," {",[125,210,212],{"class":211},"sTEyZ"," Project",[125,214,215],{"class":171}," }",[125,217,218],{"class":204}," from",[125,220,221],{"class":171}," \"",[125,223,224],{"class":192},"model\u002Fproject",[125,226,189],{"class":171},[125,228,229],{"class":171},";\n",[125,231,233],{"class":167,"line":232},3,[125,234,236],{"emptyLinePlaceholder":235},true,"\n",[125,238,240,243,245,248,251,254,258,261],{"class":167,"line":239},4,[125,241,242],{"class":179},"const",[125,244,208],{"class":171},[125,246,247],{"class":211}," $database ",[125,249,250],{"class":171},"}",[125,252,253],{"class":171}," =",[125,255,257],{"class":256},"s2Zo4"," useNuxtApp",[125,259,260],{"class":211},"()",[125,262,229],{"class":171},[125,264,266],{"class":167,"line":265},5,[125,267,236],{"emptyLinePlaceholder":235},[125,269,271,273,276,279,283,285,288,291,294,296,299,302],{"class":167,"line":270},6,[125,272,242],{"class":179},[125,274,275],{"class":211}," allProjects",[125,277,278],{"class":171},":",[125,280,282],{"class":281},"sBMFI"," Ref",[125,284,172],{"class":171},[125,286,287],{"class":281},"Project",[125,289,290],{"class":211},"[]",[125,292,293],{"class":171},">",[125,295,253],{"class":171},[125,297,298],{"class":256}," ref",[125,300,301],{"class":211},"([])",[125,303,229],{"class":171},[125,305,307],{"class":167,"line":306},7,[125,308,236],{"emptyLinePlaceholder":235},[125,310,312,315,318,321,324,327],{"class":167,"line":311},8,[125,313,314],{"class":256},"onMounted",[125,316,317],{"class":211},"(",[125,319,320],{"class":179},"async",[125,322,323],{"class":171}," ()",[125,325,326],{"class":179}," =>",[125,328,329],{"class":171}," {\n",[125,331,333,336,339,342,344,347,350,352,355,357,359,361,363,365,368,370,373,375,378,380],{"class":167,"line":332},9,[125,334,335],{"class":211},"    allProjects",[125,337,338],{"class":171},".",[125,340,341],{"class":211},"value",[125,343,253],{"class":171},[125,345,346],{"class":204}," await",[125,348,349],{"class":211}," $database",[125,351,338],{"class":171},[125,353,354],{"class":256},"collection",[125,356,172],{"class":171},[125,358,287],{"class":281},[125,360,293],{"class":171},[125,362,317],{"class":175},[125,364,189],{"class":171},[125,366,367],{"class":192},"projects",[125,369,189],{"class":171},[125,371,372],{"class":175},")",[125,374,338],{"class":171},[125,376,377],{"class":256},"find",[125,379,260],{"class":175},[125,381,229],{"class":171},[125,383,385,387,389],{"class":167,"line":384},10,[125,386,250],{"class":171},[125,388,372],{"class":211},[125,390,229],{"class":171},[125,392,394,397,399],{"class":167,"line":393},11,[125,395,396],{"class":171},"\u003C\u002F",[125,398,176],{"class":175},[125,400,198],{"class":171},[156,402,406],{"className":403,"code":404,"filename":405,"language":193,"meta":108,"style":108},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { MongalayerClient } from \"@mongalayer\u002Fclient\";\n\nexport default defineNuxtPlugin(async nuxtApp => {\n    const client = new MongalayerClient(\"https:\u002F\u002F...\", {\n        headers: async () => {\n            const session = await getSession(); \u002F\u002F Dummy function\n            return { Authorization: session.token };\n        }\n    });\n\n    const database = client.db(\"myDatabase\");\n\n    return {\n        provide: {\n            database\n        }\n    }\n})\n","plugins\u002Fdatabase.ts",[163,407,408,429,433,456,485,501,525,547,552,561,565,594,599,607,617,623,628,634],{"__ignoreMap":108},[125,409,410,412,414,417,419,421,423,425,427],{"class":167,"line":168},[125,411,205],{"class":204},[125,413,208],{"class":171},[125,415,416],{"class":211}," MongalayerClient",[125,418,215],{"class":171},[125,420,218],{"class":204},[125,422,221],{"class":171},[125,424,72],{"class":192},[125,426,189],{"class":171},[125,428,229],{"class":171},[125,430,431],{"class":167,"line":201},[125,432,236],{"emptyLinePlaceholder":235},[125,434,435,438,441,444,446,448,452,454],{"class":167,"line":232},[125,436,437],{"class":204},"export",[125,439,440],{"class":204}," default",[125,442,443],{"class":256}," defineNuxtPlugin",[125,445,317],{"class":211},[125,447,320],{"class":179},[125,449,451],{"class":450},"sHdIc"," nuxtApp",[125,453,326],{"class":179},[125,455,329],{"class":171},[125,457,458,461,464,466,469,471,473,475,478,480,483],{"class":167,"line":239},[125,459,460],{"class":179},"    const",[125,462,463],{"class":211}," client",[125,465,253],{"class":171},[125,467,468],{"class":171}," new",[125,470,416],{"class":256},[125,472,317],{"class":175},[125,474,189],{"class":171},[125,476,477],{"class":192},"https:\u002F\u002F...",[125,479,189],{"class":171},[125,481,482],{"class":171},",",[125,484,329],{"class":171},[125,486,487,490,492,495,497,499],{"class":167,"line":265},[125,488,489],{"class":256},"        headers",[125,491,278],{"class":171},[125,493,494],{"class":179}," async",[125,496,323],{"class":171},[125,498,326],{"class":179},[125,500,329],{"class":171},[125,502,503,506,509,511,513,516,518,521],{"class":167,"line":270},[125,504,505],{"class":179},"            const",[125,507,508],{"class":211}," session",[125,510,253],{"class":171},[125,512,346],{"class":204},[125,514,515],{"class":256}," getSession",[125,517,260],{"class":175},[125,519,520],{"class":171},";",[125,522,524],{"class":523},"sHwdD"," \u002F\u002F Dummy function\n",[125,526,527,530,532,535,537,539,541,544],{"class":167,"line":306},[125,528,529],{"class":204},"            return",[125,531,208],{"class":171},[125,533,534],{"class":175}," Authorization",[125,536,278],{"class":171},[125,538,508],{"class":211},[125,540,338],{"class":171},[125,542,543],{"class":211},"token",[125,545,546],{"class":171}," };\n",[125,548,549],{"class":167,"line":311},[125,550,551],{"class":171},"        }\n",[125,553,554,557,559],{"class":167,"line":332},[125,555,556],{"class":171},"    }",[125,558,372],{"class":175},[125,560,229],{"class":171},[125,562,563],{"class":167,"line":384},[125,564,236],{"emptyLinePlaceholder":235},[125,566,567,569,572,574,576,578,581,583,585,588,590,592],{"class":167,"line":393},[125,568,460],{"class":179},[125,570,571],{"class":211}," database",[125,573,253],{"class":171},[125,575,463],{"class":211},[125,577,338],{"class":171},[125,579,580],{"class":256},"db",[125,582,317],{"class":175},[125,584,189],{"class":171},[125,586,587],{"class":192},"myDatabase",[125,589,189],{"class":171},[125,591,372],{"class":175},[125,593,229],{"class":171},[125,595,597],{"class":167,"line":596},12,[125,598,236],{"emptyLinePlaceholder":235},[125,600,602,605],{"class":167,"line":601},13,[125,603,604],{"class":204},"    return",[125,606,329],{"class":171},[125,608,610,613,615],{"class":167,"line":609},14,[125,611,612],{"class":175},"        provide",[125,614,278],{"class":171},[125,616,329],{"class":171},[125,618,620],{"class":167,"line":619},15,[125,621,622],{"class":211},"            database\n",[125,624,626],{"class":167,"line":625},16,[125,627,551],{"class":171},[125,629,631],{"class":167,"line":630},17,[125,632,633],{"class":171},"    }\n",[125,635,637,639],{"class":167,"line":636},18,[125,638,250],{"class":171},[125,640,641],{"class":211},")\n",[156,643,646],{"className":403,"code":644,"filename":645,"language":193,"meta":108,"style":108},"import z from \"zod\";\n\nexport class Project {\n    constructor(\n        public _id: string,\n        public name: string,\n        public description: string,\n        public ownerId: string,\n        public createdAt: Date,\n    ) { }\n\n    static schema = z.strictObject({\n        _id: z.string(),\n        name: z.string(),\n        description: z.string(),\n        ownerId: z.string(),\n        createdAt: z.date()\n    });\n}\n","model\u002Fproject.ts",[163,647,648,667,671,682,690,706,719,732,745,759,769,773,796,814,831,848,865,882,890],{"__ignoreMap":108},[125,649,650,652,655,658,660,663,665],{"class":167,"line":168},[125,651,205],{"class":204},[125,653,654],{"class":211}," z ",[125,656,657],{"class":204},"from",[125,659,221],{"class":171},[125,661,662],{"class":192},"zod",[125,664,189],{"class":171},[125,666,229],{"class":171},[125,668,669],{"class":167,"line":201},[125,670,236],{"emptyLinePlaceholder":235},[125,672,673,675,678,680],{"class":167,"line":232},[125,674,437],{"class":204},[125,676,677],{"class":179}," class",[125,679,212],{"class":281},[125,681,329],{"class":171},[125,683,684,687],{"class":167,"line":239},[125,685,686],{"class":179},"    constructor",[125,688,689],{"class":171},"(\n",[125,691,692,695,698,700,703],{"class":167,"line":265},[125,693,694],{"class":179},"        public",[125,696,697],{"class":450}," _id",[125,699,278],{"class":171},[125,701,702],{"class":281}," string",[125,704,705],{"class":171},",\n",[125,707,708,710,713,715,717],{"class":167,"line":270},[125,709,694],{"class":179},[125,711,712],{"class":450}," name",[125,714,278],{"class":171},[125,716,702],{"class":281},[125,718,705],{"class":171},[125,720,721,723,726,728,730],{"class":167,"line":306},[125,722,694],{"class":179},[125,724,725],{"class":450}," description",[125,727,278],{"class":171},[125,729,702],{"class":281},[125,731,705],{"class":171},[125,733,734,736,739,741,743],{"class":167,"line":311},[125,735,694],{"class":179},[125,737,738],{"class":450}," ownerId",[125,740,278],{"class":171},[125,742,702],{"class":281},[125,744,705],{"class":171},[125,746,747,749,752,754,757],{"class":167,"line":332},[125,748,694],{"class":179},[125,750,751],{"class":450}," createdAt",[125,753,278],{"class":171},[125,755,756],{"class":281}," Date",[125,758,705],{"class":171},[125,760,761,764,766],{"class":167,"line":384},[125,762,763],{"class":171},"    )",[125,765,208],{"class":171},[125,767,768],{"class":171}," }\n",[125,770,771],{"class":167,"line":393},[125,772,236],{"emptyLinePlaceholder":235},[125,774,775,778,781,783,786,788,791,793],{"class":167,"line":596},[125,776,777],{"class":179},"    static",[125,779,780],{"class":175}," schema",[125,782,253],{"class":171},[125,784,785],{"class":211}," z",[125,787,338],{"class":171},[125,789,790],{"class":175},"strictObject",[125,792,317],{"class":211},[125,794,795],{"class":171},"{\n",[125,797,798,801,803,805,807,810,812],{"class":167,"line":601},[125,799,800],{"class":175},"        _id",[125,802,278],{"class":171},[125,804,785],{"class":211},[125,806,338],{"class":171},[125,808,809],{"class":175},"string",[125,811,260],{"class":211},[125,813,705],{"class":171},[125,815,816,819,821,823,825,827,829],{"class":167,"line":609},[125,817,818],{"class":175},"        name",[125,820,278],{"class":171},[125,822,785],{"class":211},[125,824,338],{"class":171},[125,826,809],{"class":175},[125,828,260],{"class":211},[125,830,705],{"class":171},[125,832,833,836,838,840,842,844,846],{"class":167,"line":619},[125,834,835],{"class":175},"        description",[125,837,278],{"class":171},[125,839,785],{"class":211},[125,841,338],{"class":171},[125,843,809],{"class":175},[125,845,260],{"class":211},[125,847,705],{"class":171},[125,849,850,853,855,857,859,861,863],{"class":167,"line":625},[125,851,852],{"class":175},"        ownerId",[125,854,278],{"class":171},[125,856,785],{"class":211},[125,858,338],{"class":171},[125,860,809],{"class":175},[125,862,260],{"class":211},[125,864,705],{"class":171},[125,866,867,870,872,874,876,879],{"class":167,"line":630},[125,868,869],{"class":175},"        createdAt",[125,871,278],{"class":171},[125,873,785],{"class":211},[125,875,338],{"class":171},[125,877,878],{"class":175},"date",[125,880,881],{"class":211},"()\n",[125,883,884,886,888],{"class":167,"line":636},[125,885,556],{"class":171},[125,887,372],{"class":211},[125,889,229],{"class":171},[125,891,893],{"class":167,"line":892},19,[125,894,895],{"class":171},"}\n",[156,897,900],{"className":403,"code":898,"filename":899,"language":193,"meta":108,"style":108},"import { AccessPermissions } from \"@mongalayer\u002Fserver\";\nimport type { AccessConfig } from \"@mongalayer\u002Fserver\";\nimport type { Project } from \"model\u002Fproject\";\n\nconst projectAccess: AccessConfig\u003CProject> = [{\n    role: \"owner\",\n    filter: {\n        ownerId: \"%%user.id\"\n    },\n    document: AccessPermissions.ReadWrite,\n    fields: {\n        \u002F\u002F CreatedAt is read-only after creation\n        createdAt: AccessPermissions.ReadWrite ^ AccessPermissions.Update \n    },\n    delete: true\n}, {\n    role: \"user\",\n    filter: {}, \u002F\u002F Public\n    document: AccessPermissions.Read\n}];\n\n","access\u002Fproject.ts",[163,901,902,923,947,969,973,997,1013,1022,1036,1041,1057,1066,1071,1094,1098,1109,1116,1131,1143,1156],{"__ignoreMap":108},[125,903,904,906,908,911,913,915,917,919,921],{"class":167,"line":168},[125,905,205],{"class":204},[125,907,208],{"class":171},[125,909,910],{"class":211}," AccessPermissions",[125,912,215],{"class":171},[125,914,218],{"class":204},[125,916,221],{"class":171},[125,918,57],{"class":192},[125,920,189],{"class":171},[125,922,229],{"class":171},[125,924,925,927,930,932,935,937,939,941,943,945],{"class":167,"line":201},[125,926,205],{"class":204},[125,928,929],{"class":204}," type",[125,931,208],{"class":171},[125,933,934],{"class":211}," AccessConfig",[125,936,215],{"class":171},[125,938,218],{"class":204},[125,940,221],{"class":171},[125,942,57],{"class":192},[125,944,189],{"class":171},[125,946,229],{"class":171},[125,948,949,951,953,955,957,959,961,963,965,967],{"class":167,"line":232},[125,950,205],{"class":204},[125,952,929],{"class":204},[125,954,208],{"class":171},[125,956,212],{"class":211},[125,958,215],{"class":171},[125,960,218],{"class":204},[125,962,221],{"class":171},[125,964,224],{"class":192},[125,966,189],{"class":171},[125,968,229],{"class":171},[125,970,971],{"class":167,"line":239},[125,972,236],{"emptyLinePlaceholder":235},[125,974,975,977,980,982,984,986,988,990,992,995],{"class":167,"line":265},[125,976,242],{"class":179},[125,978,979],{"class":211}," projectAccess",[125,981,278],{"class":171},[125,983,934],{"class":281},[125,985,172],{"class":171},[125,987,287],{"class":281},[125,989,293],{"class":171},[125,991,253],{"class":171},[125,993,994],{"class":211}," [",[125,996,795],{"class":171},[125,998,999,1002,1004,1006,1009,1011],{"class":167,"line":270},[125,1000,1001],{"class":175},"    role",[125,1003,278],{"class":171},[125,1005,221],{"class":171},[125,1007,1008],{"class":192},"owner",[125,1010,189],{"class":171},[125,1012,705],{"class":171},[125,1014,1015,1018,1020],{"class":167,"line":306},[125,1016,1017],{"class":175},"    filter",[125,1019,278],{"class":171},[125,1021,329],{"class":171},[125,1023,1024,1026,1028,1030,1033],{"class":167,"line":311},[125,1025,852],{"class":175},[125,1027,278],{"class":171},[125,1029,221],{"class":171},[125,1031,1032],{"class":192},"%%user.id",[125,1034,1035],{"class":171},"\"\n",[125,1037,1038],{"class":167,"line":332},[125,1039,1040],{"class":171},"    },\n",[125,1042,1043,1046,1048,1050,1052,1055],{"class":167,"line":384},[125,1044,1045],{"class":175},"    document",[125,1047,278],{"class":171},[125,1049,910],{"class":211},[125,1051,338],{"class":171},[125,1053,1054],{"class":211},"ReadWrite",[125,1056,705],{"class":171},[125,1058,1059,1062,1064],{"class":167,"line":393},[125,1060,1061],{"class":175},"    fields",[125,1063,278],{"class":171},[125,1065,329],{"class":171},[125,1067,1068],{"class":167,"line":596},[125,1069,1070],{"class":523},"        \u002F\u002F CreatedAt is read-only after creation\n",[125,1072,1073,1075,1077,1079,1081,1084,1087,1089,1091],{"class":167,"line":601},[125,1074,869],{"class":175},[125,1076,278],{"class":171},[125,1078,910],{"class":211},[125,1080,338],{"class":171},[125,1082,1083],{"class":211},"ReadWrite ",[125,1085,1086],{"class":171},"^",[125,1088,910],{"class":211},[125,1090,338],{"class":171},[125,1092,1093],{"class":211},"Update \n",[125,1095,1096],{"class":167,"line":609},[125,1097,1040],{"class":171},[125,1099,1100,1103,1105],{"class":167,"line":619},[125,1101,1102],{"class":175},"    delete",[125,1104,278],{"class":171},[125,1106,1108],{"class":1107},"sfNiH"," true\n",[125,1110,1111,1114],{"class":167,"line":625},[125,1112,1113],{"class":171},"},",[125,1115,329],{"class":171},[125,1117,1118,1120,1122,1124,1127,1129],{"class":167,"line":630},[125,1119,1001],{"class":175},[125,1121,278],{"class":171},[125,1123,221],{"class":171},[125,1125,1126],{"class":192},"user",[125,1128,189],{"class":171},[125,1130,705],{"class":171},[125,1132,1133,1135,1137,1140],{"class":167,"line":636},[125,1134,1017],{"class":175},[125,1136,278],{"class":171},[125,1138,1139],{"class":171}," {},",[125,1141,1142],{"class":523}," \u002F\u002F Public\n",[125,1144,1145,1147,1149,1151,1153],{"class":167,"line":892},[125,1146,1045],{"class":175},[125,1148,278],{"class":171},[125,1150,910],{"class":211},[125,1152,338],{"class":171},[125,1154,1155],{"class":211},"Read\n",[125,1157,1159,1161,1164],{"class":167,"line":1158},20,[125,1160,250],{"class":171},[125,1162,1163],{"class":211},"]",[125,1165,229],{"class":171},[1167,1168,1171,1174],"u-page-section",{"className":1169},[1170],"dark:bg-neutral-950",[121,1172,1173],{"v-slot:title":108},"Key Features",[121,1175,1176,1185,1194,1203,1212,1221],{"v-slot:features":108},[1177,1178,1179,1182],"u-page-feature",{"icon":37},[121,1180,1181],{"v-slot:title":108},"Role-Based Access Control",[121,1183,1184],{"v-slot:description":108},"Define granular access roles with document-level and field-level permissions. Control who can read, create, update, and delete data.",[1177,1186,1188,1191],{"icon":1187},"i-lucide-check-circle",[121,1189,1190],{"v-slot:title":108},"Schema Validation",[121,1192,1193],{"v-slot:description":108},"Define your document schemas with Zod. All payloads are validated automatically before reaching MongoDB.",[1177,1195,1197,1200],{"icon":1196},"i-lucide-code",[121,1198,1199],{"v-slot:title":108},"Full Type Safety",[121,1201,1202],{"v-slot:description":108},"End-to-end TypeScript types from server to client. Actions, payloads, and return types are all fully typed.",[1177,1204,1206,1209],{"icon":1205},"i-lucide-database",[121,1207,1208],{"v-slot:title":108},"MongoDB CRUD Operations",[121,1210,1211],{"v-slot:description":108},"Supports find, findOne, findOneAndUpdate, aggregate, insertOne, insertMany, updateOne, updateMany, deleteOne, and deleteMany from your client code.",[1177,1213,1215,1218],{"icon":1214},"i-lucide-globe",[121,1216,1217],{"v-slot:title":108},"Client SDK",[121,1219,1220],{"v-slot:description":108},"A lightweight client library that communicates with the Mongalayer server over HTTP. Works in any JavaScript environment with fetch.",[1177,1222,1224,1227],{"icon":1223},"i-lucide-lock",[121,1225,1226],{"v-slot:title":108},"Bring Your Own Auth",[121,1228,1229],{"v-slot:description":108},"Authentication and authorization of HTTP requests is handled by you. Mongalayer focuses on data access control, not transport security.",[1231,1232,1233],"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 .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 .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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":108,"searchDepth":201,"depth":201,"links":1235},[],"md",{},"\u002F",{"title":1240,"description":1241},"Mongalayer - MongoDB Access Layer for TypeScript","A type-safe abstraction layer between your MongoDB database and TypeScript clients, with role-based access control and schema validation.","index","Jjq3K85ZRQ9_SstxCaRMkqCy9Uppu4jiPsYx3WOCaEU",1780671693709]