[{"data":1,"prerenderedAt":1236},["ShallowReactive",2],{"navigation":3,"\u002Fgetting-started\u002Fquick-start":116,"\u002Fgetting-started\u002Fquick-start-surround":1231},[4,27,61,82,112],{"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},"Development","\u002Fgetting-started\u002Fdevelopment","1.getting-started\u002F4.development",false,{"title":28,"icon":29,"path":30,"stem":31,"children":32,"page":26},"Guides","i-lucide-book-open","\u002Fguides","2.guides",[33,37,41,45,49,53,57],{"title":34,"path":35,"stem":36},"Sessions and store","\u002Fguides\u002Fsessions","2.guides\u002F1.sessions",{"title":38,"path":39,"stem":40},"Vault and procedures","\u002Fguides\u002Fvault","2.guides\u002F2.vault",{"title":42,"path":43,"stem":44},"Password accounts","\u002Fguides\u002Fpasswords","2.guides\u002F3.passwords",{"title":46,"path":47,"stem":48},"Rust backend","\u002Fguides\u002Frust","2.guides\u002F4.rust",{"title":50,"path":51,"stem":52},"Security notes","\u002Fguides\u002Fsecurity","2.guides\u002F5.security",{"title":54,"path":55,"stem":56},"Permissions","\u002Fguides\u002Fpermissions","2.guides\u002F6.permissions",{"title":58,"path":59,"stem":60},"Coming from Stronghold","\u002Fguides\u002Fstronghold","2.guides\u002F7.stronghold",{"title":62,"icon":63,"path":64,"stem":65,"children":66,"page":26},"API reference","i-lucide-file-code","\u002Freference","3.reference",[67,71,75,79],{"title":68,"path":69,"stem":70},"JavaScript API","\u002Freference\u002Fjavascript-api","3.reference\u002F1.javascript-api",{"title":72,"path":73,"stem":74},"Types","\u002Freference\u002Ftypes","3.reference\u002F2.types",{"title":76,"path":77,"stem":78},"Tauri commands","\u002Freference\u002Fcommands","3.reference\u002F3.commands",{"title":54,"path":80,"stem":81},"\u002Freference\u002Fpermissions","3.reference\u002F4.permissions",{"title":83,"icon":84,"path":85,"stem":86,"children":87,"page":26},"Platforms","i-lucide-monitor-smartphone","\u002Fplatforms","4.platforms",[88,92,96,100,104,108],{"title":89,"path":90,"stem":91},"Overview","\u002Fplatforms\u002Foverview","4.platforms\u002F1.overview",{"title":93,"path":94,"stem":95},"macOS","\u002Fplatforms\u002Fmacos","4.platforms\u002F2.macos",{"title":97,"path":98,"stem":99},"Windows","\u002Fplatforms\u002Fwindows","4.platforms\u002F3.windows",{"title":101,"path":102,"stem":103},"Linux","\u002Fplatforms\u002Flinux","4.platforms\u002F4.linux",{"title":105,"path":106,"stem":107},"Android","\u002Fplatforms\u002Fandroid","4.platforms\u002F5.android",{"title":109,"path":110,"stem":111},"iOS","\u002Fplatforms\u002Fios","4.platforms\u002F6.ios",{"title":113,"path":114,"stem":115},"Changelog","\u002Fchangelog","9.changelog",{"id":117,"title":19,"body":118,"description":1225,"extension":1226,"generated":26,"links":1227,"meta":1228,"navigation":209,"path":20,"seo":1229,"stem":21,"__hash__":1230},"docs\u002F1.getting-started\u002F3.quick-start.md",{"type":119,"value":120,"toc":1218},"minimark",[121,135,140,143,363,368,372,379,631,635,639,646,925,929,933,936,1163,1167,1171,1182,1214],[122,123,124,125,129,130,134],"p",{},"After ",[126,127,128],"a",{"href":16},"installation"," the plugin is registered and your window has\n",[131,132,133],"code",{},"keyring-store:default",".",[136,137,139],"h2",{"id":138},"store-a-token","Store a token",[122,141,142],{},"The simplest use: one secret under one account name.",[144,145,150],"pre",{"className":146,"code":147,"language":148,"meta":149,"style":149},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { setPasswords, getPasswords, passwordExists, deletePasswords } from \"tauri-plugin-keyring-store-api\";\n\nawait setPasswords([{ account: \"app.api_token\", secret: \"s3cr3t\" }]);\n\nconst [token] = await getPasswords([\"app.api_token\"]); \u002F\u002F \"s3cr3t\", or null if missing\nconst exists = await passwordExists(\"app.api_token\"); \u002F\u002F true\n\nawait deletePasswords([\"app.api_token\"]);\n","ts","",[131,151,152,204,211,261,266,307,339,344],{"__ignoreMap":149},[153,154,157,161,165,169,172,175,177,180,182,185,188,191,194,198,201],"span",{"class":155,"line":156},"line",1,[153,158,160],{"class":159},"s7zQu","import",[153,162,164],{"class":163},"sMK4o"," {",[153,166,168],{"class":167},"sTEyZ"," setPasswords",[153,170,171],{"class":163},",",[153,173,174],{"class":167}," getPasswords",[153,176,171],{"class":163},[153,178,179],{"class":167}," passwordExists",[153,181,171],{"class":163},[153,183,184],{"class":167}," deletePasswords",[153,186,187],{"class":163}," }",[153,189,190],{"class":159}," from",[153,192,193],{"class":163}," \"",[153,195,197],{"class":196},"sfazB","tauri-plugin-keyring-store-api",[153,199,200],{"class":163},"\"",[153,202,203],{"class":163},";\n",[153,205,207],{"class":155,"line":206},2,[153,208,210],{"emptyLinePlaceholder":209},true,"\n",[153,212,214,217,220,223,226,230,233,235,238,240,242,245,247,249,252,254,256,259],{"class":155,"line":213},3,[153,215,216],{"class":159},"await",[153,218,168],{"class":219},"s2Zo4",[153,221,222],{"class":167},"([",[153,224,225],{"class":163},"{",[153,227,229],{"class":228},"swJcz"," account",[153,231,232],{"class":163},":",[153,234,193],{"class":163},[153,236,237],{"class":196},"app.api_token",[153,239,200],{"class":163},[153,241,171],{"class":163},[153,243,244],{"class":228}," secret",[153,246,232],{"class":163},[153,248,193],{"class":163},[153,250,251],{"class":196},"s3cr3t",[153,253,200],{"class":163},[153,255,187],{"class":163},[153,257,258],{"class":167},"])",[153,260,203],{"class":163},[153,262,264],{"class":155,"line":263},4,[153,265,210],{"emptyLinePlaceholder":209},[153,267,269,273,276,279,282,285,288,290,292,294,296,298,300,303],{"class":155,"line":268},5,[153,270,272],{"class":271},"spNyl","const",[153,274,275],{"class":163}," [",[153,277,278],{"class":167},"token",[153,280,281],{"class":163},"]",[153,283,284],{"class":163}," =",[153,286,287],{"class":159}," await",[153,289,174],{"class":219},[153,291,222],{"class":167},[153,293,200],{"class":163},[153,295,237],{"class":196},[153,297,200],{"class":163},[153,299,258],{"class":167},[153,301,302],{"class":163},";",[153,304,306],{"class":305},"sHwdD"," \u002F\u002F \"s3cr3t\", or null if missing\n",[153,308,310,312,315,318,320,322,325,327,329,331,334,336],{"class":155,"line":309},6,[153,311,272],{"class":271},[153,313,314],{"class":167}," exists ",[153,316,317],{"class":163},"=",[153,319,287],{"class":159},[153,321,179],{"class":219},[153,323,324],{"class":167},"(",[153,326,200],{"class":163},[153,328,237],{"class":196},[153,330,200],{"class":163},[153,332,333],{"class":167},")",[153,335,302],{"class":163},[153,337,338],{"class":305}," \u002F\u002F true\n",[153,340,342],{"class":155,"line":341},7,[153,343,210],{"emptyLinePlaceholder":209},[153,345,347,349,351,353,355,357,359,361],{"class":155,"line":346},8,[153,348,216],{"class":159},[153,350,184],{"class":219},[153,352,222],{"class":167},[153,354,200],{"class":163},[153,356,237],{"class":196},[153,358,200],{"class":163},[153,360,258],{"class":167},[153,362,203],{"class":163},[122,364,365,366,134],{},"More in ",[126,367,42],{"href":43},[136,369,371],{"id":370},"session-and-store","Session and store",[122,373,374,375,378],{},"The Stronghold-shaped API. The first argument of ",[131,376,377],{},"load"," is a logical id, not a file path.",[144,380,382],{"className":146,"code":381,"language":148,"meta":149,"style":149},"import { KeyringSession } from \"tauri-plugin-keyring-store-api\";\n\nconst session = await KeyringSession.load(\"\u002Fapp\u002Fsecrets\", \"\");\nconst client = await session.createClient(\"desktop\");\nconst store = client.getStore();\n\nawait store.insert(\"prefs\", new TextEncoder().encode('{\"theme\":\"dark\"}'));\nconst raw = await store.get(\"prefs\"); \u002F\u002F Uint8Array | null\nawait store.remove(\"prefs\");\n\nawait session.unload();\n",[131,383,384,405,409,444,476,498,502,553,586,610,615],{"__ignoreMap":149},[153,385,386,388,390,393,395,397,399,401,403],{"class":155,"line":156},[153,387,160],{"class":159},[153,389,164],{"class":163},[153,391,392],{"class":167}," KeyringSession",[153,394,187],{"class":163},[153,396,190],{"class":159},[153,398,193],{"class":163},[153,400,197],{"class":196},[153,402,200],{"class":163},[153,404,203],{"class":163},[153,406,407],{"class":155,"line":206},[153,408,210],{"emptyLinePlaceholder":209},[153,410,411,413,416,418,420,422,424,426,428,430,433,435,437,440,442],{"class":155,"line":213},[153,412,272],{"class":271},[153,414,415],{"class":167}," session ",[153,417,317],{"class":163},[153,419,287],{"class":159},[153,421,392],{"class":167},[153,423,134],{"class":163},[153,425,377],{"class":219},[153,427,324],{"class":167},[153,429,200],{"class":163},[153,431,432],{"class":196},"\u002Fapp\u002Fsecrets",[153,434,200],{"class":163},[153,436,171],{"class":163},[153,438,439],{"class":163}," \"\"",[153,441,333],{"class":167},[153,443,203],{"class":163},[153,445,446,448,451,453,455,458,460,463,465,467,470,472,474],{"class":155,"line":263},[153,447,272],{"class":271},[153,449,450],{"class":167}," client ",[153,452,317],{"class":163},[153,454,287],{"class":159},[153,456,457],{"class":167}," session",[153,459,134],{"class":163},[153,461,462],{"class":219},"createClient",[153,464,324],{"class":167},[153,466,200],{"class":163},[153,468,469],{"class":196},"desktop",[153,471,200],{"class":163},[153,473,333],{"class":167},[153,475,203],{"class":163},[153,477,478,480,483,485,488,490,493,496],{"class":155,"line":268},[153,479,272],{"class":271},[153,481,482],{"class":167}," store ",[153,484,317],{"class":163},[153,486,487],{"class":167}," client",[153,489,134],{"class":163},[153,491,492],{"class":219},"getStore",[153,494,495],{"class":167},"()",[153,497,203],{"class":163},[153,499,500],{"class":155,"line":309},[153,501,210],{"emptyLinePlaceholder":209},[153,503,504,506,509,511,514,516,518,521,523,525,528,531,533,535,538,540,543,546,548,551],{"class":155,"line":341},[153,505,216],{"class":159},[153,507,508],{"class":167}," store",[153,510,134],{"class":163},[153,512,513],{"class":219},"insert",[153,515,324],{"class":167},[153,517,200],{"class":163},[153,519,520],{"class":196},"prefs",[153,522,200],{"class":163},[153,524,171],{"class":163},[153,526,527],{"class":163}," new",[153,529,530],{"class":219}," TextEncoder",[153,532,495],{"class":167},[153,534,134],{"class":163},[153,536,537],{"class":219},"encode",[153,539,324],{"class":167},[153,541,542],{"class":163},"'",[153,544,545],{"class":196},"{\"theme\":\"dark\"}",[153,547,542],{"class":163},[153,549,550],{"class":167},"))",[153,552,203],{"class":163},[153,554,555,557,560,562,564,566,568,571,573,575,577,579,581,583],{"class":155,"line":346},[153,556,272],{"class":271},[153,558,559],{"class":167}," raw ",[153,561,317],{"class":163},[153,563,287],{"class":159},[153,565,508],{"class":167},[153,567,134],{"class":163},[153,569,570],{"class":219},"get",[153,572,324],{"class":167},[153,574,200],{"class":163},[153,576,520],{"class":196},[153,578,200],{"class":163},[153,580,333],{"class":167},[153,582,302],{"class":163},[153,584,585],{"class":305}," \u002F\u002F Uint8Array | null\n",[153,587,589,591,593,595,598,600,602,604,606,608],{"class":155,"line":588},9,[153,590,216],{"class":159},[153,592,508],{"class":167},[153,594,134],{"class":163},[153,596,597],{"class":219},"remove",[153,599,324],{"class":167},[153,601,200],{"class":163},[153,603,520],{"class":196},[153,605,200],{"class":163},[153,607,333],{"class":167},[153,609,203],{"class":163},[153,611,613],{"class":155,"line":612},10,[153,614,210],{"emptyLinePlaceholder":209},[153,616,618,620,622,624,627,629],{"class":155,"line":617},11,[153,619,216],{"class":159},[153,621,457],{"class":167},[153,623,134],{"class":163},[153,625,626],{"class":219},"unload",[153,628,495],{"class":167},[153,630,203],{"class":163},[122,632,365,633,134],{},[126,634,34],{"href":35},[136,636,638],{"id":637},"wallet-key-in-the-vault","Wallet key in the vault",[122,640,641,642,645],{},"Needs the ",[131,643,644],{},"crypto"," feature (on by default). The private key is generated in Rust and stays in the\nOS store; JavaScript gets the mnemonic once, the public key and signatures.",[144,647,649],{"className":146,"code":648,"language":148,"meta":149,"style":149},"import { KeyringSession, Location } from \"tauri-plugin-keyring-store-api\";\n\nconst session = await KeyringSession.load(\"\u002Fwallet\u002Fmain\", \"\");\nconst vault = (await session.createClient(\"main\")).getVault(\"PRIMARY\");\nconst master = Location.generic(\"PRIMARY\", \"master\");\n\nconst words = new TextDecoder().decode(await vault.generateBIP39(master)); \u002F\u002F 24 words: show once\nconst publicKey = await vault.getEd25519PublicKey(master); \u002F\u002F 32 bytes\nconst signature = await vault.signEd25519(master, \"hello\"); \u002F\u002F 64 bytes\n\nawait session.unload();\n",[131,650,651,676,680,713,762,799,803,844,870,907,911],{"__ignoreMap":149},[153,652,653,655,657,659,661,664,666,668,670,672,674],{"class":155,"line":156},[153,654,160],{"class":159},[153,656,164],{"class":163},[153,658,392],{"class":167},[153,660,171],{"class":163},[153,662,663],{"class":167}," Location",[153,665,187],{"class":163},[153,667,190],{"class":159},[153,669,193],{"class":163},[153,671,197],{"class":196},[153,673,200],{"class":163},[153,675,203],{"class":163},[153,677,678],{"class":155,"line":206},[153,679,210],{"emptyLinePlaceholder":209},[153,681,682,684,686,688,690,692,694,696,698,700,703,705,707,709,711],{"class":155,"line":213},[153,683,272],{"class":271},[153,685,415],{"class":167},[153,687,317],{"class":163},[153,689,287],{"class":159},[153,691,392],{"class":167},[153,693,134],{"class":163},[153,695,377],{"class":219},[153,697,324],{"class":167},[153,699,200],{"class":163},[153,701,702],{"class":196},"\u002Fwallet\u002Fmain",[153,704,200],{"class":163},[153,706,171],{"class":163},[153,708,439],{"class":163},[153,710,333],{"class":167},[153,712,203],{"class":163},[153,714,715,717,720,722,725,727,729,731,733,735,737,740,742,744,746,749,751,753,756,758,760],{"class":155,"line":263},[153,716,272],{"class":271},[153,718,719],{"class":167}," vault ",[153,721,317],{"class":163},[153,723,724],{"class":167}," (",[153,726,216],{"class":159},[153,728,457],{"class":167},[153,730,134],{"class":163},[153,732,462],{"class":219},[153,734,324],{"class":167},[153,736,200],{"class":163},[153,738,739],{"class":196},"main",[153,741,200],{"class":163},[153,743,550],{"class":167},[153,745,134],{"class":163},[153,747,748],{"class":219},"getVault",[153,750,324],{"class":167},[153,752,200],{"class":163},[153,754,755],{"class":196},"PRIMARY",[153,757,200],{"class":163},[153,759,333],{"class":167},[153,761,203],{"class":163},[153,763,764,766,769,771,773,775,778,780,782,784,786,788,790,793,795,797],{"class":155,"line":268},[153,765,272],{"class":271},[153,767,768],{"class":167}," master ",[153,770,317],{"class":163},[153,772,663],{"class":167},[153,774,134],{"class":163},[153,776,777],{"class":219},"generic",[153,779,324],{"class":167},[153,781,200],{"class":163},[153,783,755],{"class":196},[153,785,200],{"class":163},[153,787,171],{"class":163},[153,789,193],{"class":163},[153,791,792],{"class":196},"master",[153,794,200],{"class":163},[153,796,333],{"class":167},[153,798,203],{"class":163},[153,800,801],{"class":155,"line":309},[153,802,210],{"emptyLinePlaceholder":209},[153,804,805,807,810,812,814,817,819,821,824,826,828,831,833,836,839,841],{"class":155,"line":341},[153,806,272],{"class":271},[153,808,809],{"class":167}," words ",[153,811,317],{"class":163},[153,813,527],{"class":163},[153,815,816],{"class":219}," TextDecoder",[153,818,495],{"class":167},[153,820,134],{"class":163},[153,822,823],{"class":219},"decode",[153,825,324],{"class":167},[153,827,216],{"class":159},[153,829,830],{"class":167}," vault",[153,832,134],{"class":163},[153,834,835],{"class":219},"generateBIP39",[153,837,838],{"class":167},"(master))",[153,840,302],{"class":163},[153,842,843],{"class":305}," \u002F\u002F 24 words: show once\n",[153,845,846,848,851,853,855,857,859,862,865,867],{"class":155,"line":346},[153,847,272],{"class":271},[153,849,850],{"class":167}," publicKey ",[153,852,317],{"class":163},[153,854,287],{"class":159},[153,856,830],{"class":167},[153,858,134],{"class":163},[153,860,861],{"class":219},"getEd25519PublicKey",[153,863,864],{"class":167},"(master)",[153,866,302],{"class":163},[153,868,869],{"class":305}," \u002F\u002F 32 bytes\n",[153,871,872,874,877,879,881,883,885,888,891,893,895,898,900,902,904],{"class":155,"line":588},[153,873,272],{"class":271},[153,875,876],{"class":167}," signature ",[153,878,317],{"class":163},[153,880,287],{"class":159},[153,882,830],{"class":167},[153,884,134],{"class":163},[153,886,887],{"class":219},"signEd25519",[153,889,890],{"class":167},"(master",[153,892,171],{"class":163},[153,894,193],{"class":163},[153,896,897],{"class":196},"hello",[153,899,200],{"class":163},[153,901,333],{"class":167},[153,903,302],{"class":163},[153,905,906],{"class":305}," \u002F\u002F 64 bytes\n",[153,908,909],{"class":155,"line":612},[153,910,210],{"emptyLinePlaceholder":209},[153,912,913,915,917,919,921,923],{"class":155,"line":617},[153,914,216],{"class":159},[153,916,457],{"class":167},[153,918,134],{"class":163},[153,920,626],{"class":219},[153,922,495],{"class":167},[153,924,203],{"class":163},[122,926,365,927,134],{},[126,928,38],{"href":39},[136,930,932],{"id":931},"from-rust","From Rust",[122,934,935],{},"The same store is available to your own commands:",[144,937,942],{"className":938,"code":939,"filename":940,"language":941,"meta":149,"style":149},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use tauri_plugin_keyring_store::KeyringExt;\n\n#[tauri::command]\nasync fn save_api_token(app: tauri::AppHandle, token: String) -> Result\u003C(), String> {\n    \u002F\u002F KeyringStore calls block (OS prompts, D-Bus): keep them off the async runtime.\n    tauri::async_runtime::spawn_blocking(move || app.keyring().store.set_password(\"app.api_token\", &token))\n        .await\n        .map_err(|e| e.to_string())?\n        .map_err(|e| e.to_string())\n}\n","src-tauri\u002Fsrc\u002Flib.rs","rust",[131,943,944,962,966,982,1037,1042,1102,1110,1137,1158],{"__ignoreMap":149},[153,945,946,950,954,957,960],{"class":155,"line":156},[153,947,949],{"class":948},"sbssI","use",[153,951,953],{"class":952},"sBMFI"," tauri_plugin_keyring_store",[153,955,956],{"class":163},"::",[153,958,959],{"class":952},"KeyringExt",[153,961,203],{"class":163},[153,963,964],{"class":155,"line":206},[153,965,210],{"emptyLinePlaceholder":209},[153,967,968,971,974,976,979],{"class":155,"line":213},[153,969,970],{"class":163},"#[",[153,972,973],{"class":167},"tauri",[153,975,956],{"class":163},[153,977,978],{"class":167},"command",[153,980,981],{"class":163},"]\n",[153,983,984,987,990,993,995,998,1000,1003,1005,1008,1010,1013,1015,1018,1020,1023,1026,1029,1031,1034],{"class":155,"line":263},[153,985,986],{"class":948},"async",[153,988,989],{"class":948}," fn",[153,991,992],{"class":219}," save_api_token",[153,994,324],{"class":163},[153,996,997],{"class":167},"app",[153,999,232],{"class":163},[153,1001,1002],{"class":952}," tauri",[153,1004,956],{"class":163},[153,1006,1007],{"class":952},"AppHandle",[153,1009,171],{"class":163},[153,1011,1012],{"class":167}," token",[153,1014,232],{"class":163},[153,1016,1017],{"class":952}," String",[153,1019,333],{"class":163},[153,1021,1022],{"class":163}," ->",[153,1024,1025],{"class":952}," Result",[153,1027,1028],{"class":163},"\u003C(),",[153,1030,1017],{"class":952},[153,1032,1033],{"class":163},">",[153,1035,1036],{"class":163}," {\n",[153,1038,1039],{"class":155,"line":268},[153,1040,1041],{"class":305},"    \u002F\u002F KeyringStore calls block (OS prompts, D-Bus): keep them off the async runtime.\n",[153,1043,1044,1047,1049,1052,1054,1057,1059,1062,1065,1068,1070,1073,1076,1079,1081,1084,1086,1088,1090,1092,1094,1097,1099],{"class":155,"line":309},[153,1045,1046],{"class":952},"    tauri",[153,1048,956],{"class":163},[153,1050,1051],{"class":952},"async_runtime",[153,1053,956],{"class":163},[153,1055,1056],{"class":219},"spawn_blocking",[153,1058,324],{"class":163},[153,1060,1061],{"class":948},"move",[153,1063,1064],{"class":163}," ||",[153,1066,1067],{"class":167}," app",[153,1069,134],{"class":163},[153,1071,1072],{"class":219},"keyring",[153,1074,1075],{"class":163},"().",[153,1077,1078],{"class":167},"store",[153,1080,134],{"class":163},[153,1082,1083],{"class":219},"set_password",[153,1085,324],{"class":163},[153,1087,200],{"class":163},[153,1089,237],{"class":196},[153,1091,200],{"class":163},[153,1093,171],{"class":163},[153,1095,1096],{"class":163}," &",[153,1098,278],{"class":167},[153,1100,1101],{"class":163},"))\n",[153,1103,1104,1107],{"class":155,"line":341},[153,1105,1106],{"class":163},"        .",[153,1108,1109],{"class":159},"await\n",[153,1111,1112,1114,1117,1120,1123,1126,1129,1131,1134],{"class":155,"line":346},[153,1113,1106],{"class":163},[153,1115,1116],{"class":219},"map_err",[153,1118,1119],{"class":163},"(|",[153,1121,1122],{"class":167},"e",[153,1124,1125],{"class":163},"|",[153,1127,1128],{"class":167}," e",[153,1130,134],{"class":163},[153,1132,1133],{"class":219},"to_string",[153,1135,1136],{"class":163},"())?\n",[153,1138,1139,1141,1143,1145,1147,1149,1151,1153,1155],{"class":155,"line":588},[153,1140,1106],{"class":163},[153,1142,1116],{"class":219},[153,1144,1119],{"class":163},[153,1146,1122],{"class":167},[153,1148,1125],{"class":163},[153,1150,1128],{"class":167},[153,1152,134],{"class":163},[153,1154,1133],{"class":219},[153,1156,1157],{"class":163},"())\n",[153,1159,1160],{"class":155,"line":612},[153,1161,1162],{"class":163},"}\n",[122,1164,365,1165,134],{},[126,1166,46],{"href":47},[136,1168,1170],{"id":1169},"example-app","Example app",[122,1172,1173,1181],{},[126,1174,1178],{"href":1175,"rel":1176},"https:\u002F\u002Fgithub.com\u002Fs00d\u002Ftauri-plugin-keyring-store\u002Ftree\u002Fmain\u002Fexamples\u002Ftauri-app",[1177],"nofollow",[131,1179,1180],{},"examples\u002Ftauri-app","\nruns on desktop, Android and iOS and shows the password API, sessions, the vault and Rust-side access.",[144,1183,1187],{"className":1184,"code":1185,"language":1186,"meta":149,"style":149},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","cd examples\u002Ftauri-app\npnpm install\npnpm tauri dev\n","bash",[131,1188,1189,1197,1205],{"__ignoreMap":149},[153,1190,1191,1194],{"class":155,"line":156},[153,1192,1193],{"class":219},"cd",[153,1195,1196],{"class":196}," examples\u002Ftauri-app\n",[153,1198,1199,1202],{"class":155,"line":206},[153,1200,1201],{"class":952},"pnpm",[153,1203,1204],{"class":196}," install\n",[153,1206,1207,1209,1211],{"class":155,"line":213},[153,1208,1201],{"class":952},[153,1210,1002],{"class":196},[153,1212,1213],{"class":196}," dev\n",[1215,1216,1217],"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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":149,"searchDepth":206,"depth":213,"links":1219},[1220,1221,1222,1223,1224],{"id":138,"depth":206,"text":139},{"id":370,"depth":206,"text":371},{"id":637,"depth":206,"text":638},{"id":931,"depth":206,"text":932},{"id":1169,"depth":206,"text":1170},"Store a token, use a session store and keep a wallet key in the vault, from JavaScript and from Rust.","md",null,{},{"title":19,"description":1225},"Uu9J72Cpw6kjWTs1jctU2EBxdn0uBsmbxOGmNCCJcrI",[1232,1234],{"title":15,"path":16,"stem":17,"description":1233,"children":-1},"Add the Rust crate and the npm package, register the plugin and allow its commands.",{"title":23,"path":24,"stem":25,"description":1235,"children":-1},"Build, lint and test the plugin, the JavaScript package, the example app and this site.",1794215488499]