[{"data":1,"prerenderedAt":1333},["ShallowReactive",2],{"navigation":3,"\u002Fintegrations\u002Fui\u002Ftauri":335,"\u002Fintegrations\u002Fui\u002Ftauri-surround":1328},[4,27,73,95,121,135,305,331],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":26},"Getting started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,14,18,22],{"title":11,"path":12,"stem":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":15,"path":16,"stem":17},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":19,"path":20,"stem":21},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start",{"title":23,"path":24,"stem":25},"MSRV","\u002Fgetting-started\u002Fmsrv","1.getting-started\u002F9.msrv",false,{"title":28,"icon":29,"path":30,"stem":31,"children":32,"page":26},"Schemas","i-lucide-shapes","\u002Fschemas","2.schemas",[33,37,41,45,49,53,57,61,65,69],{"title":34,"path":35,"stem":36},"Strings","\u002Fschemas\u002Fstrings","2.schemas\u002F1.strings",{"title":38,"path":39,"stem":40},"Custom rules","\u002Fschemas\u002Frules","2.schemas\u002F10.rules",{"title":42,"path":43,"stem":44},"Numbers","\u002Fschemas\u002Fnumbers","2.schemas\u002F2.numbers",{"title":46,"path":47,"stem":48},"Booleans, literals and enums","\u002Fschemas\u002Fprimitives","2.schemas\u002F3.primitives",{"title":50,"path":51,"stem":52},"Dates and times","\u002Fschemas\u002Fdates","2.schemas\u002F4.dates",{"title":54,"path":55,"stem":56},"Collections","\u002Fschemas\u002Fcollections","2.schemas\u002F5.collections",{"title":58,"path":59,"stem":60},"Dynamic objects","\u002Fschemas\u002Fobjects","2.schemas\u002F6.objects",{"title":62,"path":63,"stem":64},"Modifiers","\u002Fschemas\u002Fmodifiers","2.schemas\u002F7.modifiers",{"title":66,"path":67,"stem":68},"Combinators","\u002Fschemas\u002Fcombinators","2.schemas\u002F8.combinators",{"title":70,"path":71,"stem":72},"Other types","\u002Fschemas\u002Fspecial-types","2.schemas\u002F9.special-types",{"title":74,"icon":75,"path":76,"stem":77,"children":78,"page":26},"Structs","i-lucide-braces","\u002Fstructs","3.structs",[79,83,87,91],{"title":80,"path":81,"stem":82},"schema! macro","\u002Fstructs\u002Fschema-macro","3.structs\u002F1.schema-macro",{"title":84,"path":85,"stem":86},"#[derive(Validate)]","\u002Fstructs\u002Fderive","3.structs\u002F2.derive",{"title":88,"path":89,"stem":90},"Parse vs validate","\u002Fstructs\u002Fparse-vs-validate","3.structs\u002F3.parse-vs-validate",{"title":92,"path":93,"stem":94},"Lenient parsing","\u002Fstructs\u002Flenient","3.structs\u002F4.lenient",{"title":96,"icon":97,"path":98,"stem":99,"children":100,"page":26},"Errors","i-lucide-triangle-alert","\u002Ferrors","4.errors",[101,105,109,113,117],{"title":102,"path":103,"stem":104},"Error model","\u002Ferrors\u002Foverview","4.errors\u002F1.overview",{"title":106,"path":107,"stem":108},"Issue codes","\u002Ferrors\u002Fissue-codes","4.errors\u002F2.issue-codes",{"title":110,"path":111,"stem":112},"Formatting","\u002Ferrors\u002Fformatting","4.errors\u002F3.formatting",{"title":114,"path":115,"stem":116},"Custom messages","\u002Ferrors\u002Fcustom-messages","4.errors\u002F4.custom-messages",{"title":118,"path":119,"stem":120},"Translations","\u002Ferrors\u002Fi18n","4.errors\u002F5.i18n",{"title":122,"icon":123,"path":124,"stem":125,"children":126,"page":26},"OpenAPI","i-lucide-file-json","\u002Fopenapi","5.openapi",[127,131],{"title":128,"path":129,"stem":130},"JSON Schema and OpenAPI","\u002Fopenapi\u002Fjson-schema","5.openapi\u002F1.json-schema",{"title":132,"path":133,"stem":134},"Schema diff","\u002Fopenapi\u002Fdiff","5.openapi\u002F2.diff",{"title":136,"icon":137,"path":138,"stem":139,"children":140,"page":26},"Integrations","i-lucide-plug","\u002Fintegrations","6.integrations",[141,191,209,223,245,259,273,291],{"title":142,"icon":143,"path":144,"stem":145,"children":146,"page":26},"Web frameworks","i-lucide-globe","\u002Fintegrations\u002Fweb","6.integrations\u002F1.web",[147,151,155,159,163,167,171,175,179,183,187],{"title":148,"path":149,"stem":150},"Web adapters overview","\u002Fintegrations\u002Fweb\u002Foverview","6.integrations\u002F1.web\u002F01.overview",{"title":152,"path":153,"stem":154},"vld-axum","\u002Fintegrations\u002Fweb\u002Faxum","6.integrations\u002F1.web\u002F02.axum",{"title":156,"path":157,"stem":158},"vld-actix","\u002Fintegrations\u002Fweb\u002Factix","6.integrations\u002F1.web\u002F03.actix",{"title":160,"path":161,"stem":162},"vld-ntex","\u002Fintegrations\u002Fweb\u002Fntex","6.integrations\u002F1.web\u002F04.ntex",{"title":164,"path":165,"stem":166},"vld-poem","\u002Fintegrations\u002Fweb\u002Fpoem","6.integrations\u002F1.web\u002F05.poem",{"title":168,"path":169,"stem":170},"vld-rama","\u002Fintegrations\u002Fweb\u002Frama","6.integrations\u002F1.web\u002F06.rama",{"title":172,"path":173,"stem":174},"vld-rocket","\u002Fintegrations\u002Fweb\u002Frocket","6.integrations\u002F1.web\u002F07.rocket",{"title":176,"path":177,"stem":178},"vld-salvo","\u002Fintegrations\u002Fweb\u002Fsalvo","6.integrations\u002F1.web\u002F08.salvo",{"title":180,"path":181,"stem":182},"vld-tower","\u002Fintegrations\u002Fweb\u002Ftower","6.integrations\u002F1.web\u002F09.tower",{"title":184,"path":185,"stem":186},"vld-warp","\u002Fintegrations\u002Fweb\u002Fwarp","6.integrations\u002F1.web\u002F10.warp",{"title":188,"path":189,"stem":190},"vld-tonic","\u002Fintegrations\u002Fweb\u002Ftonic","6.integrations\u002F1.web\u002F11.tonic",{"title":192,"icon":193,"path":194,"stem":195,"children":196,"page":26},"OpenAPI and JSON Schema","i-lucide-file-code","\u002Fintegrations\u002Fopenapi","6.integrations\u002F2.openapi",[197,201,205],{"title":198,"path":199,"stem":200},"vld-utoipa","\u002Fintegrations\u002Fopenapi\u002Futoipa","6.integrations\u002F2.openapi\u002F1.utoipa",{"title":202,"path":203,"stem":204},"vld-schemars","\u002Fintegrations\u002Fopenapi\u002Fschemars","6.integrations\u002F2.openapi\u002F2.schemars",{"title":206,"path":207,"stem":208},"vld-aide","\u002Fintegrations\u002Fopenapi\u002Faide","6.integrations\u002F2.openapi\u002F3.aide",{"title":210,"icon":211,"path":212,"stem":213,"children":214,"page":26},"Codegen and test data","i-lucide-wand","\u002Fintegrations\u002Fcodegen","6.integrations\u002F3.codegen",[215,219],{"title":216,"path":217,"stem":218},"vld-ts","\u002Fintegrations\u002Fcodegen\u002Fts","6.integrations\u002F3.codegen\u002F1.ts",{"title":220,"path":221,"stem":222},"vld-fake","\u002Fintegrations\u002Fcodegen\u002Ffake","6.integrations\u002F3.codegen\u002F2.fake",{"title":224,"icon":225,"path":226,"stem":227,"children":228,"page":26},"Databases","i-lucide-database","\u002Fintegrations\u002Fdatabase","6.integrations\u002F4.database",[229,233,237,241],{"title":230,"path":231,"stem":232},"vld-sqlx","\u002Fintegrations\u002Fdatabase\u002Fsqlx","6.integrations\u002F4.database\u002F1.sqlx",{"title":234,"path":235,"stem":236},"vld-diesel","\u002Fintegrations\u002Fdatabase\u002Fdiesel","6.integrations\u002F4.database\u002F2.diesel",{"title":238,"path":239,"stem":240},"vld-sea","\u002Fintegrations\u002Fdatabase\u002Fsea-orm","6.integrations\u002F4.database\u002F3.sea-orm",{"title":242,"path":243,"stem":244},"vld-surrealdb","\u002Fintegrations\u002Fdatabase\u002Fsurrealdb","6.integrations\u002F4.database\u002F4.surrealdb",{"title":246,"icon":247,"path":248,"stem":249,"children":250,"page":26},"Messaging","i-lucide-mail","\u002Fintegrations\u002Fmessaging","6.integrations\u002F5.messaging",[251,255],{"title":252,"path":253,"stem":254},"vld-redis","\u002Fintegrations\u002Fmessaging\u002Fredis","6.integrations\u002F5.messaging\u002F1.redis",{"title":256,"path":257,"stem":258},"vld-lapin","\u002Fintegrations\u002Fmessaging\u002Flapin","6.integrations\u002F5.messaging\u002F2.lapin",{"title":260,"icon":261,"path":262,"stem":263,"children":264,"page":26},"Config and CLI","i-lucide-terminal","\u002Fintegrations\u002Fconfig-cli","6.integrations\u002F6.config-cli",[265,269],{"title":266,"path":267,"stem":268},"vld-config","\u002Fintegrations\u002Fconfig-cli\u002Fconfig","6.integrations\u002F6.config-cli\u002F1.config",{"title":270,"path":271,"stem":272},"vld-clap","\u002Fintegrations\u002Fconfig-cli\u002Fclap","6.integrations\u002F6.config-cli\u002F2.clap",{"title":274,"icon":275,"path":276,"stem":277,"children":278,"page":26},"UI frameworks","i-lucide-monitor","\u002Fintegrations\u002Fui","6.integrations\u002F7.ui",[279,283,287],{"title":280,"path":281,"stem":282},"vld-dioxus","\u002Fintegrations\u002Fui\u002Fdioxus","6.integrations\u002F7.ui\u002F1.dioxus",{"title":284,"path":285,"stem":286},"vld-leptos","\u002Fintegrations\u002Fui\u002Fleptos","6.integrations\u002F7.ui\u002F2.leptos",{"title":288,"path":289,"stem":290},"vld-tauri","\u002Fintegrations\u002Fui\u002Ftauri","6.integrations\u002F7.ui\u002F3.tauri",{"title":292,"icon":293,"path":294,"stem":295,"children":296,"page":26},"Shared crates","i-lucide-package","\u002Fintegrations\u002Fshared","6.integrations\u002F8.shared",[297,301],{"title":298,"path":299,"stem":300},"vld-http-common","\u002Fintegrations\u002Fshared\u002Fhttp-common","6.integrations\u002F8.shared\u002F1.http-common",{"title":302,"path":303,"stem":304},"vld-integration-common","\u002Fintegrations\u002Fshared\u002Fintegration-common","6.integrations\u002F8.shared\u002F2.integration-common",{"title":306,"icon":307,"path":308,"stem":309,"children":310,"page":26},"Guides","i-lucide-book-open","\u002Fguides","7.guides",[311,315,319,323,327],{"title":312,"path":313,"stem":314},"Migration","\u002Fguides\u002Fmigration","7.guides\u002F1.migration",{"title":316,"path":317,"stem":318},"Security notes","\u002Fguides\u002Fsecurity","7.guides\u002F2.security",{"title":320,"path":321,"stem":322},"Performance","\u002Fguides\u002Fperformance","7.guides\u002F3.performance",{"title":324,"path":325,"stem":326},"Contributing","\u002Fguides\u002Fcontributing","7.guides\u002F4.contributing",{"title":328,"path":329,"stem":330},"FAQ","\u002Fguides\u002Ffaq","7.guides\u002F5.faq",{"title":332,"path":333,"stem":334},"Changelog","\u002Fchangelog","9.changelog",{"id":336,"title":288,"body":337,"description":1314,"extension":1315,"links":1316,"meta":1325,"navigation":464,"path":289,"seo":1326,"stem":290,"__hash__":1327},"docs\u002F6.integrations\u002F7.ui\u002F3.tauri.md",{"type":338,"value":339,"toc":1308},"minimark",[340,359,364,424,431,435,852,855,943,1179,1183,1255,1259,1304],[341,342,343,346,347,355,356,358],"p",{},[344,345,288],"code",{}," validates JSON crossing the Tauri IPC boundary and returns a serializable error the frontend can read. It has ",[348,349,350,351,354],"strong",{},"no ",[344,352,353],{},"tauri"," dependency",": add ",[344,357,353],{}," to your app separately.",[360,361,363],"h2",{"id":362},"install","Install",[365,366,372],"pre",{"className":367,"code":368,"filename":369,"language":370,"meta":371,"style":371},"language-toml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[dependencies]\nvld = \"0.5\"\nvld-tauri = \"0.5\"\n","Cargo.toml","toml","",[344,373,374,390,410],{"__ignoreMap":371},[375,376,379,383,387],"span",{"class":377,"line":378},"line",1,[375,380,382],{"class":381},"sMK4o","[",[375,384,386],{"class":385},"sBMFI","dependencies",[375,388,389],{"class":381},"]\n",[375,391,393,397,400,403,407],{"class":377,"line":392},2,[375,394,396],{"class":395},"sTEyZ","vld ",[375,398,399],{"class":381},"=",[375,401,402],{"class":381}," \"",[375,404,406],{"class":405},"sfazB","0.5",[375,408,409],{"class":381},"\"\n",[375,411,413,416,418,420,422],{"class":377,"line":412},3,[375,414,415],{"class":395},"vld-tauri ",[375,417,399],{"class":381},[375,419,402],{"class":381},[375,421,406],{"class":405},[375,423,409],{"class":381},[341,425,426,427,430],{},"No features. MSRV: 1.85 (see ",[428,429,23],"a",{"href":24},").",[360,432,434],{"id":433},"example","Example",[365,436,440],{"className":437,"code":438,"language":439,"meta":371,"style":371},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use vld_tauri::prelude::*;\n\nvld::schema! {\n    #[derive(Debug, Clone)]\n    pub struct CreateUser {\n        pub name: String  => vld::string().min(2).max(50),\n        pub email: String => vld::string().email(),\n    }\n}\n\n\u002F\u002F Explicit validation: the frontend receives `VldTauriError` as JSON.\n#[tauri::command]\nfn create_user(payload: serde_json::Value) -> Result\u003CString, VldTauriError> {\n    let user = validate::\u003CCreateUser>(payload)?;\n    Ok(format!(\"Created {}\", user.name))\n}\n\n\u002F\u002F Validation during deserialization of the argument.\n#[tauri::command]\nfn create_user_auto(payload: VldPayload\u003CCreateUser>) -> Result\u003CString, VldTauriError> {\n    Ok(format!(\"Created {}\", payload.name))\n}\n","rust",[344,441,442,460,466,480,504,519,569,598,604,610,615,622,637,686,714,750,755,760,766,779,819,847],{"__ignoreMap":371},[375,443,444,448,451,454,457],{"class":377,"line":378},[375,445,447],{"class":446},"sbssI","use",[375,449,450],{"class":385}," vld_tauri",[375,452,453],{"class":381},"::",[375,455,456],{"class":385},"prelude",[375,458,459],{"class":381},"::*;\n",[375,461,462],{"class":377,"line":392},[375,463,465],{"emptyLinePlaceholder":464},true,"\n",[375,467,468,471,473,477],{"class":377,"line":412},[375,469,470],{"class":385},"vld",[375,472,453],{"class":381},[375,474,476],{"class":475},"s2Zo4","schema!",[375,478,479],{"class":381}," {\n",[375,481,483,486,489,492,495,498,501],{"class":377,"line":482},4,[375,484,485],{"class":381},"    #[",[375,487,488],{"class":395},"derive",[375,490,491],{"class":381},"(",[375,493,494],{"class":385},"Debug",[375,496,497],{"class":381},",",[375,499,500],{"class":385}," Clone",[375,502,503],{"class":381},")]\n",[375,505,507,511,514,517],{"class":377,"line":506},5,[375,508,510],{"class":509},"spNyl","    pub",[375,512,513],{"class":509}," struct",[375,515,516],{"class":385}," CreateUser",[375,518,479],{"class":381},[375,520,522,525,528,531,534,537,540,542,545,548,551,553,556,558,561,563,566],{"class":377,"line":521},6,[375,523,524],{"class":509},"        pub",[375,526,527],{"class":395}," name",[375,529,530],{"class":381},":",[375,532,533],{"class":385}," String",[375,535,536],{"class":381},"  =>",[375,538,539],{"class":385}," vld",[375,541,453],{"class":381},[375,543,544],{"class":475},"string",[375,546,547],{"class":381},"().",[375,549,550],{"class":475},"min",[375,552,491],{"class":381},[375,554,555],{"class":446},"2",[375,557,430],{"class":381},[375,559,560],{"class":475},"max",[375,562,491],{"class":381},[375,564,565],{"class":446},"50",[375,567,568],{"class":381},"),\n",[375,570,572,574,577,579,581,584,586,588,590,592,595],{"class":377,"line":571},7,[375,573,524],{"class":509},[375,575,576],{"class":395}," email",[375,578,530],{"class":381},[375,580,533],{"class":385},[375,582,583],{"class":381}," =>",[375,585,539],{"class":385},[375,587,453],{"class":381},[375,589,544],{"class":475},[375,591,547],{"class":381},[375,593,594],{"class":475},"email",[375,596,597],{"class":381},"(),\n",[375,599,601],{"class":377,"line":600},8,[375,602,603],{"class":381},"    }\n",[375,605,607],{"class":377,"line":606},9,[375,608,609],{"class":381},"}\n",[375,611,613],{"class":377,"line":612},10,[375,614,465],{"emptyLinePlaceholder":464},[375,616,618],{"class":377,"line":617},11,[375,619,621],{"class":620},"sHwdD","\u002F\u002F Explicit validation: the frontend receives `VldTauriError` as JSON.\n",[375,623,625,628,630,632,635],{"class":377,"line":624},12,[375,626,627],{"class":381},"#[",[375,629,353],{"class":395},[375,631,453],{"class":381},[375,633,634],{"class":395},"command",[375,636,389],{"class":381},[375,638,640,643,646,648,651,653,656,658,661,664,667,670,673,676,678,681,684],{"class":377,"line":639},13,[375,641,642],{"class":446},"fn",[375,644,645],{"class":475}," create_user",[375,647,491],{"class":381},[375,649,650],{"class":395},"payload",[375,652,530],{"class":381},[375,654,655],{"class":385}," serde_json",[375,657,453],{"class":381},[375,659,660],{"class":385},"Value",[375,662,663],{"class":381},")",[375,665,666],{"class":381}," ->",[375,668,669],{"class":385}," Result",[375,671,672],{"class":381},"\u003C",[375,674,675],{"class":385},"String",[375,677,497],{"class":381},[375,679,680],{"class":385}," VldTauriError",[375,682,683],{"class":381},">",[375,685,479],{"class":381},[375,687,689,692,695,697,700,703,706,709,711],{"class":377,"line":688},14,[375,690,691],{"class":509},"    let",[375,693,694],{"class":395}," user ",[375,696,399],{"class":381},[375,698,699],{"class":475}," validate",[375,701,702],{"class":381},"::\u003C",[375,704,705],{"class":385},"CreateUser",[375,707,708],{"class":381},">(",[375,710,650],{"class":395},[375,712,713],{"class":381},")?;\n",[375,715,717,720,722,725,727,730,733,736,738,741,744,747],{"class":377,"line":716},15,[375,718,719],{"class":385},"    Ok",[375,721,491],{"class":381},[375,723,724],{"class":475},"format!",[375,726,491],{"class":381},[375,728,729],{"class":381},"\"",[375,731,732],{"class":405},"Created ",[375,734,735],{"class":381},"{}\"",[375,737,497],{"class":381},[375,739,740],{"class":395}," user",[375,742,743],{"class":381},".",[375,745,746],{"class":395},"name",[375,748,749],{"class":381},"))\n",[375,751,753],{"class":377,"line":752},16,[375,754,609],{"class":381},[375,756,758],{"class":377,"line":757},17,[375,759,465],{"emptyLinePlaceholder":464},[375,761,763],{"class":377,"line":762},18,[375,764,765],{"class":620},"\u002F\u002F Validation during deserialization of the argument.\n",[375,767,769,771,773,775,777],{"class":377,"line":768},19,[375,770,627],{"class":381},[375,772,353],{"class":395},[375,774,453],{"class":381},[375,776,634],{"class":395},[375,778,389],{"class":381},[375,780,782,784,787,789,791,793,796,798,800,803,805,807,809,811,813,815,817],{"class":377,"line":781},20,[375,783,642],{"class":446},[375,785,786],{"class":475}," create_user_auto",[375,788,491],{"class":381},[375,790,650],{"class":395},[375,792,530],{"class":381},[375,794,795],{"class":385}," VldPayload",[375,797,672],{"class":381},[375,799,705],{"class":385},[375,801,802],{"class":381},">)",[375,804,666],{"class":381},[375,806,669],{"class":385},[375,808,672],{"class":381},[375,810,675],{"class":385},[375,812,497],{"class":381},[375,814,680],{"class":385},[375,816,683],{"class":381},[375,818,479],{"class":381},[375,820,822,824,826,828,830,832,834,836,838,841,843,845],{"class":377,"line":821},21,[375,823,719],{"class":385},[375,825,491],{"class":381},[375,827,724],{"class":475},[375,829,491],{"class":381},[375,831,729],{"class":381},[375,833,732],{"class":405},[375,835,735],{"class":381},[375,837,497],{"class":381},[375,839,840],{"class":395}," payload",[375,842,743],{"class":381},[375,844,746],{"class":395},[375,846,749],{"class":381},[375,848,850],{"class":377,"line":849},22,[375,851,609],{"class":381},[341,853,854],{},"The error serializes as:",[365,856,860],{"className":857,"code":858,"language":859,"meta":371,"style":371},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"error\": \"Validation failed\",\n  \"issues\": [{ \"path\": \"name\", \"message\": \"String must be at least 2 characters\" }]\n}\n","json",[344,861,862,867,889,939],{"__ignoreMap":371},[375,863,864],{"class":377,"line":378},[375,865,866],{"class":381},"{\n",[375,868,869,872,875,877,879,881,884,886],{"class":377,"line":392},[375,870,871],{"class":381},"  \"",[375,873,874],{"class":509},"error",[375,876,729],{"class":381},[375,878,530],{"class":381},[375,880,402],{"class":381},[375,882,883],{"class":405},"Validation failed",[375,885,729],{"class":381},[375,887,888],{"class":381},",\n",[375,890,891,893,896,898,900,903,905,908,910,912,914,916,918,920,922,925,927,929,931,934,936],{"class":377,"line":412},[375,892,871],{"class":381},[375,894,895],{"class":509},"issues",[375,897,729],{"class":381},[375,899,530],{"class":381},[375,901,902],{"class":381}," [{",[375,904,402],{"class":381},[375,906,907],{"class":385},"path",[375,909,729],{"class":381},[375,911,530],{"class":381},[375,913,402],{"class":381},[375,915,746],{"class":405},[375,917,729],{"class":381},[375,919,497],{"class":381},[375,921,402],{"class":381},[375,923,924],{"class":385},"message",[375,926,729],{"class":381},[375,928,530],{"class":381},[375,930,402],{"class":381},[375,932,933],{"class":405},"String must be at least 2 characters",[375,935,729],{"class":381},[375,937,938],{"class":381}," }]\n",[375,940,941],{"class":377,"line":482},[375,942,609],{"class":381},[365,944,948],{"className":945,"code":946,"language":947,"meta":371,"style":371},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { invoke } from '@tauri-apps\u002Fapi\u002Fcore'\n\ntry {\n  await invoke('create_user', { payload: { name: 'A', email: 'x' } })\n} catch (err) {\n  for (const issue of (err as { issues: { path: string; message: string }[] }).issues) {\n    console.error(`${issue.path}: ${issue.message}`)\n  }\n}\n","ts",[344,949,950,977,981,988,1047,1060,1130,1170,1175],{"__ignoreMap":371},[375,951,952,956,959,962,965,968,971,974],{"class":377,"line":378},[375,953,955],{"class":954},"s7zQu","import",[375,957,958],{"class":381}," {",[375,960,961],{"class":395}," invoke",[375,963,964],{"class":381}," }",[375,966,967],{"class":954}," from",[375,969,970],{"class":381}," '",[375,972,973],{"class":405},"@tauri-apps\u002Fapi\u002Fcore",[375,975,976],{"class":381},"'\n",[375,978,979],{"class":377,"line":392},[375,980,465],{"emptyLinePlaceholder":464},[375,982,983,986],{"class":377,"line":412},[375,984,985],{"class":954},"try",[375,987,479],{"class":381},[375,989,990,993,995,998,1001,1004,1006,1008,1010,1012,1014,1016,1018,1020,1022,1025,1027,1029,1031,1033,1035,1038,1040,1042,1044],{"class":377,"line":482},[375,991,992],{"class":954},"  await",[375,994,961],{"class":475},[375,996,491],{"class":997},"swJcz",[375,999,1000],{"class":381},"'",[375,1002,1003],{"class":405},"create_user",[375,1005,1000],{"class":381},[375,1007,497],{"class":381},[375,1009,958],{"class":381},[375,1011,840],{"class":997},[375,1013,530],{"class":381},[375,1015,958],{"class":381},[375,1017,527],{"class":997},[375,1019,530],{"class":381},[375,1021,970],{"class":381},[375,1023,1024],{"class":405},"A",[375,1026,1000],{"class":381},[375,1028,497],{"class":381},[375,1030,576],{"class":997},[375,1032,530],{"class":381},[375,1034,970],{"class":381},[375,1036,1037],{"class":405},"x",[375,1039,1000],{"class":381},[375,1041,964],{"class":381},[375,1043,964],{"class":381},[375,1045,1046],{"class":997},")\n",[375,1048,1049,1052,1055,1058],{"class":377,"line":506},[375,1050,1051],{"class":381},"}",[375,1053,1054],{"class":954}," catch",[375,1056,1057],{"class":395}," (err) ",[375,1059,866],{"class":381},[375,1061,1062,1065,1068,1071,1074,1077,1079,1082,1085,1087,1090,1092,1094,1097,1099,1102,1105,1108,1110,1112,1114,1117,1119,1121,1123,1125,1128],{"class":377,"line":521},[375,1063,1064],{"class":954},"  for",[375,1066,1067],{"class":997}," (",[375,1069,1070],{"class":509},"const",[375,1072,1073],{"class":395}," issue",[375,1075,1076],{"class":381}," of",[375,1078,1067],{"class":997},[375,1080,1081],{"class":395},"err",[375,1083,1084],{"class":954}," as",[375,1086,958],{"class":381},[375,1088,1089],{"class":997}," issues",[375,1091,530],{"class":381},[375,1093,958],{"class":381},[375,1095,1096],{"class":997}," path",[375,1098,530],{"class":381},[375,1100,1101],{"class":385}," string",[375,1103,1104],{"class":381},";",[375,1106,1107],{"class":997}," message",[375,1109,530],{"class":381},[375,1111,1101],{"class":385},[375,1113,964],{"class":381},[375,1115,1116],{"class":997},"[] ",[375,1118,1051],{"class":381},[375,1120,663],{"class":997},[375,1122,743],{"class":381},[375,1124,895],{"class":395},[375,1126,1127],{"class":997},") ",[375,1129,866],{"class":381},[375,1131,1132,1135,1137,1139,1141,1144,1147,1149,1151,1153,1156,1159,1161,1163,1165,1168],{"class":377,"line":571},[375,1133,1134],{"class":395},"    console",[375,1136,743],{"class":381},[375,1138,874],{"class":475},[375,1140,491],{"class":997},[375,1142,1143],{"class":381},"`${",[375,1145,1146],{"class":395},"issue",[375,1148,743],{"class":381},[375,1150,907],{"class":395},[375,1152,1051],{"class":381},[375,1154,1155],{"class":405},": ",[375,1157,1158],{"class":381},"${",[375,1160,1146],{"class":395},[375,1162,743],{"class":381},[375,1164,924],{"class":395},[375,1166,1167],{"class":381},"}`",[375,1169,1046],{"class":997},[375,1171,1172],{"class":377,"line":600},[375,1173,1174],{"class":381},"  }\n",[375,1176,1177],{"class":377,"line":606},[375,1178,609],{"class":381},[360,1180,1182],{"id":1181},"api","API",[1184,1185,1186,1197,1207,1229,1250],"ul",{},[1187,1188,1189,1192,1193,1196],"li",{},[344,1190,1191],{},"validate::\u003CT>(value)"," — validate a ",[344,1194,1195],{},"serde_json::Value","; use it for commands, events, state, plugin config and channel messages.",[1187,1198,1199,1202,1203,1206],{},[344,1200,1201],{},"validate_args::\u003CT>(json_str)"," — parse a JSON string, then validate (",[344,1204,1205],{},"\"Invalid JSON\""," error on a parse failure).",[1187,1208,1209,1212,1213,1216,1217,1220,1221,1224,1225,1228],{},[344,1210,1211],{},"VldPayload\u003CT>"," — ",[344,1214,1215],{},"Deserialize"," wrapper that validates; ",[344,1218,1219],{},"Deref"," to ",[344,1222,1223],{},"T",". ",[344,1226,1227],{},"VldEvent\u003CT>"," is a type alias of it.",[1187,1230,1231,1212,1234,1237,1238,1237,1241,1237,1244,1237,1247,743],{},[344,1232,1233],{},"VldTauriError { error, issues: Vec\u003CTauriIssue> }",[344,1235,1236],{},"from_vld",", ",[344,1239,1240],{},"json_parse_error",[344,1242,1243],{},"custom",[344,1245,1246],{},"has_issues",[344,1248,1249],{},"issue_count",[1187,1251,1252,743],{},[344,1253,1254],{},"TauriIssue { path, message }",[360,1256,1258],{"id":1257},"gotchas","Gotchas",[1184,1260,1261,1272,1293],{},[1187,1262,1263,1264,1237,1266,1237,1269,743],{},"Issue paths have no leading dot: ",[344,1265,746],{},[344,1267,1268],{},"user.email",[344,1270,1271],{},"items[0]",[1187,1273,1274,1275,1277,1278,1281,1282,1285,1286,1288,1289,1292],{},"With ",[344,1276,1211],{}," a validation failure surfaces as Tauri's argument deserialization error (a string ",[344,1279,1280],{},"\"Validation failed: name: ...; email: ...\"","), not as ",[344,1283,1284],{},"VldTauriError",". Take ",[344,1287,1195],{}," and call ",[344,1290,1291],{},"validate"," when the frontend needs structured issues.",[1187,1294,1295,1297,1298,1300,1301,743],{},[344,1296,1227],{}," is ",[344,1299,1211],{},": construct and match it as ",[344,1302,1303],{},"VldPayload(x)",[1305,1306,1307],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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 .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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .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 .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}",{"title":371,"searchDepth":392,"depth":412,"links":1309},[1310,1311,1312,1313],{"id":362,"depth":392,"text":363},{"id":433,"depth":392,"text":434},{"id":1181,"depth":392,"text":1182},{"id":1257,"depth":392,"text":1258},"Validate Tauri command arguments, events, state and channel messages, without a tauri dependency.","md",[1317,1322],{"label":1318,"icon":1319,"to":1320,"target":1321},"crates.io","i-simple-icons-rust","https:\u002F\u002Fcrates.io\u002Fcrates\u002Fvld-tauri","_blank",{"label":1323,"icon":307,"to":1324,"target":1321},"docs.rs","https:\u002F\u002Fdocs.rs\u002Fvld-tauri",{},{"title":288,"description":1314},"g0ry5y0ksd4cbB6H9uh0NkEphK2u6f-1Q8wYWsr7FXQ",[1329,1331],{"title":284,"path":285,"stem":286,"description":1330,"children":-1},"Shared validation for Leptos server functions and WASM clients, without a leptos dependency.",{"title":298,"path":299,"stem":300,"description":1332,"children":-1},"Framework-independent HTTP helpers shared by all vld web adapters — value coercion, query\u002Fform\u002Fheader\u002Fcookie parsing, content-type checks and the error body.",1794036363232]