[{"data":1,"prerenderedAt":3128},["ShallowReactive",2],{"navigation_docs_en":3,"-en-api-reference-persist-qora-client":342,"-en-api-reference-persist-qora-client-surround":3123},[4,45,91,137,195,236,257,291,327],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":44},"Getting Started","i-lucide-rocket","/en/getting-started","en/01.getting-started",[10,15,20,24,29,34,39],{"title":11,"path":12,"stem":13,"icon":14},"What is Qora?","/en/getting-started/what-is-qora","en/01.getting-started/2.what-is-qora","i-lucide-info",{"title":16,"path":17,"stem":18,"icon":19},"Installation","/en/getting-started/installation","en/01.getting-started/3.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":6},"Quick Start","/en/getting-started/quick-start","en/01.getting-started/4.quick-start",{"title":25,"path":26,"stem":27,"icon":28},"Comparison","/en/getting-started/comparison","en/01.getting-started/5.comparison","i-lucide-scale",{"title":30,"path":31,"stem":32,"icon":33},"Coming from TanStack Query","/en/getting-started/coming-from-tanstack-query","en/01.getting-started/6.coming-from-tanstack-query","i-lucide-arrow-left-right",{"title":35,"path":36,"stem":37,"icon":38},"Migrating from Other Libraries","/en/getting-started/migrating-from-other-libraries","en/01.getting-started/7.migrating-from-other-libraries","i-lucide-arrow-right-left",{"title":40,"path":41,"stem":42,"icon":43},"AI Assistants","/en/getting-started/ai-assistants","en/01.getting-started/8.ai-assistants","i-lucide-sparkles",false,{"title":46,"icon":47,"path":48,"stem":49,"children":50,"page":44},"Core Concepts","i-lucide-book-open","/en/core-concepts","en/02.core-concepts",[51,56,61,66,71,76,81,86],{"title":52,"path":53,"stem":54,"icon":55},"Queries","/en/core-concepts/queries","en/02.core-concepts/1.queries","i-lucide-database",{"title":57,"path":58,"stem":59,"icon":60},"Query Keys","/en/core-concepts/query-keys","en/02.core-concepts/2.query-keys","i-lucide-key-round",{"title":62,"path":63,"stem":64,"icon":65},"Query States","/en/core-concepts/query-states","en/02.core-concepts/3.query-states","i-lucide-activity",{"title":67,"path":68,"stem":69,"icon":70},"Caching","/en/core-concepts/caching","en/02.core-concepts/4.caching","i-lucide-layers-3",{"title":72,"path":73,"stem":74,"icon":75},"Stale-While-Revalidate","/en/core-concepts/stale-while-revalidate","en/02.core-concepts/5.stale-while-revalidate","i-lucide-timer-reset",{"title":77,"path":78,"stem":79,"icon":80},"Deduplication","/en/core-concepts/deduplication","en/02.core-concepts/6.deduplication","i-lucide-copy-minus",{"title":82,"path":83,"stem":84,"icon":85},"Mutations & Invalidation","/en/core-concepts/mutations","en/02.core-concepts/7.mutations","i-lucide-pencil-line",{"title":87,"path":88,"stem":89,"icon":90},"Offline & Network","/en/core-concepts/offline","en/02.core-concepts/8.offline","i-lucide-wifi-off",{"title":92,"icon":93,"path":94,"stem":95,"children":96,"page":44},"Flutter Integration","i-lucide-smartphone","/en/flutter-integration","en/03.flutter-integration",[97,102,107,112,117,122,127,132],{"title":98,"path":99,"stem":100,"icon":101},"Setup","/en/flutter-integration/setup","en/03.flutter-integration/1.setup","i-lucide-wrench",{"title":103,"path":104,"stem":105,"icon":106},"QoraScope","/en/flutter-integration/qora-scope","en/03.flutter-integration/2.qora-scope","i-lucide-share-2",{"title":108,"path":109,"stem":110,"icon":111},"QoraBuilder","/en/flutter-integration/qora-builder","en/03.flutter-integration/3.qora-builder","i-lucide-blocks",{"title":113,"path":114,"stem":115,"icon":116},"QoraMutationBuilder","/en/flutter-integration/qora-mutation-builder","en/03.flutter-integration/4.qora-mutation-builder","i-lucide-pencil",{"title":118,"path":119,"stem":120,"icon":121},"InfiniteQueryBuilder","/en/flutter-integration/infinite-query-builder","en/03.flutter-integration/5.infinite-query-builder","i-lucide-infinity",{"title":123,"path":124,"stem":125,"icon":126},"Hooks (flutter_hooks)","/en/flutter-integration/hooks","en/03.flutter-integration/6.hooks","i-lucide-anchor",{"title":128,"path":129,"stem":130,"icon":131},"Network Status Widgets","/en/flutter-integration/network-status","en/03.flutter-integration/7.network-status","i-lucide-wifi",{"title":133,"path":134,"stem":135,"icon":136},"Best Practices","/en/flutter-integration/best-practices","en/03.flutter-integration/8.best-practices","i-lucide-badge-check",{"title":138,"icon":139,"path":140,"stem":141,"children":142,"page":44},"Recipes","i-lucide-chef-hat","/en/recipes","en/04.recipes",[143,147,152,157,162,166,171,176,181,186,191],{"title":144,"path":145,"stem":146,"icon":85},"Mutations","/en/recipes/mutations","en/04.recipes/02.mutations",{"title":148,"path":149,"stem":150,"icon":151},"Optimistic Updates","/en/recipes/optimistic-updates","en/04.recipes/03.optimistic-updates","i-lucide-zap",{"title":153,"path":154,"stem":155,"icon":156},"Persistence","/en/recipes/persistence","en/04.recipes/04.persistence","i-lucide-hard-drive",{"title":158,"path":159,"stem":160,"icon":161},"Network Aware","/en/recipes/network-aware","en/04.recipes/05.network-aware","i-lucide-signal",{"title":163,"path":164,"stem":165,"icon":121},"Infinite Queries","/en/recipes/infinite-queries","en/04.recipes/06.infinite-queries",{"title":167,"path":168,"stem":169,"icon":170},"Dependent Queries","/en/recipes/dependent-queries","en/04.recipes/07.dependent-queries","i-lucide-link-2",{"title":172,"path":173,"stem":174,"icon":175},"Cancellation","/en/recipes/cancel-token","en/04.recipes/08.cancel-token","i-lucide-circle-slash",{"title":177,"path":178,"stem":179,"icon":180},"SSR Hydration","/en/recipes/ssr-hydration","en/04.recipes/09.ssr-hydration","i-lucide-server",{"title":182,"path":183,"stem":184,"icon":185},"Error Handling","/en/recipes/error-handling","en/04.recipes/10.error-handling","i-lucide-shield-alert",{"title":187,"path":188,"stem":189,"icon":190},"Testing","/en/recipes/testing","en/04.recipes/11.testing","i-lucide-flask-conical",{"title":192,"path":193,"stem":194},"Route-Level Prefetching","/en/recipes/prefetch","en/04.recipes/12.prefetch",{"title":196,"icon":197,"path":198,"stem":199,"children":200,"page":44},"API Reference","i-lucide-file-code","/en/api-reference","en/05.api-reference",[201,206,210,214,219,224,228,232],{"title":202,"path":203,"stem":204,"icon":205},"QoraClient","/en/api-reference/qora-client","en/05.api-reference/1.qora-client","i-lucide-cpu",{"title":207,"path":208,"stem":209,"icon":60},"QoraKey","/en/api-reference/qora-key","en/05.api-reference/2.qora-key",{"title":211,"path":212,"stem":213,"icon":65},"QoraState","/en/api-reference/qora-state","en/05.api-reference/3.qora-state",{"title":215,"path":216,"stem":217,"icon":218},"QoraOptions","/en/api-reference/qora-options","en/05.api-reference/4.qora-options","i-lucide-sliders-horizontal",{"title":220,"path":221,"stem":222,"icon":223},"QoraClientConfig","/en/api-reference/qora-client-config","en/05.api-reference/5.qora-client-config","i-lucide-settings-2",{"title":225,"path":226,"stem":227,"icon":85},"Mutation API","/en/api-reference/qora-mutation","en/05.api-reference/6.qora-mutation",{"title":229,"path":230,"stem":231,"icon":156},"PersistQoraClient","/en/api-reference/persist-qora-client","en/05.api-reference/7.persist-qora-client",{"title":233,"path":234,"stem":235,"icon":121},"Infinite Query","/en/api-reference/infinite-query","en/05.api-reference/8.infinite-query",{"title":237,"icon":238,"path":239,"stem":240,"children":241,"page":44},"DevTools","i-lucide-bug","/en/devtools","en/06.devtools",[242,247,252],{"title":243,"path":244,"stem":245,"icon":246},"Overview","/en/devtools/overview","en/06.devtools/1.overview","i-lucide-layout-dashboard",{"title":248,"path":249,"stem":250,"icon":251},"In-App Overlay","/en/devtools/overlay","en/06.devtools/2.overlay","i-lucide-layers",{"title":253,"path":254,"stem":255,"icon":256},"Data Serialization","/en/devtools/data-display","en/06.devtools/4.data-display","i-lucide-eye",{"title":258,"icon":259,"path":260,"stem":261,"children":262,"page":44},"Third Party","i-lucide-puzzle","/en/third-party","en/07.third-party",[263,268,272,277,282,286],{"title":264,"path":265,"stem":266,"icon":267},"With Provider","/en/third-party/with-provider","en/07.third-party/1.with-provider","i-lucide-plug",{"title":269,"path":270,"stem":271,"icon":111},"With BLoC","/en/third-party/with-bloc","en/07.third-party/2.with-bloc",{"title":273,"path":274,"stem":275,"icon":276},"With Riverpod","/en/third-party/with-riverpod","en/07.third-party/3.with-riverpod","i-lucide-droplets",{"title":278,"path":279,"stem":280,"icon":281},"With RxDart","/en/third-party/with-rxdart","en/07.third-party/4.with-rxdart","i-lucide-git-branch",{"title":283,"path":284,"stem":285},"With Dio","/en/third-party/with-dio","en/07.third-party/5.with-dio",{"title":287,"path":288,"stem":289,"icon":290},"With GraphQL","/en/third-party/with-graphql","en/07.third-party/6.with-graphql","i-lucide-binary",{"title":292,"icon":190,"path":293,"stem":294,"children":295,"page":44},"Examples","/en/examples","en/08.examples",[296,301,305,310,314,318,322],{"title":297,"path":298,"stem":299,"icon":300},"Case Study: User List & Detail","/en/examples/basic-query","en/08.examples/1.basic-query","i-lucide-play-circle",{"title":302,"path":303,"stem":304,"icon":151},"Case Study: Optimistic Mutations & Rollback","/en/examples/mutations-optimistic","en/08.examples/2.mutations-optimistic",{"title":306,"path":307,"stem":308,"icon":309},"Case Study: Infinite Scroll Feed","/en/examples/infinite-scroll","en/08.examples/3.infinite-scroll","i-lucide-scroll",{"title":311,"path":312,"stem":313,"icon":90},"Case Study: Offline-First Todo App","/en/examples/offline-first","en/08.examples/4.offline-first",{"title":315,"path":316,"stem":317,"icon":161},"Case Study: Network Awareness","/en/examples/network-awareness","en/08.examples/5.network-awareness",{"title":319,"path":320,"stem":321,"icon":126},"Case Study: Hooks Integration","/en/examples/hooks-integration","en/08.examples/6.hooks-integration",{"title":323,"path":324,"stem":325,"icon":326},"Case Study: Complete Todo App","/en/examples/complete-todo-app","en/08.examples/7.complete-todo-app","i-lucide-check-square",{"title":328,"icon":329,"path":330,"stem":331,"children":332,"page":44},"Help","i-lucide-life-buoy","/en/help","en/09.help",[333,338],{"title":334,"path":335,"stem":336,"icon":337},"FAQ","/en/help/faq","en/09.help/1.faq","i-lucide-circle-help",{"title":339,"path":340,"stem":341,"icon":101},"Troubleshooting","/en/help/troubleshooting","en/09.help/2.troubleshooting",{"id":343,"title":229,"body":344,"description":3116,"extension":3117,"links":3118,"meta":3119,"navigation":3120,"path":230,"seo":3121,"stem":231,"__hash__":3122},"docs_en/en/05.api-reference/7.persist-qora-client.md",{"type":345,"value":346,"toc":3094},"minimark",[347,357,366,369,373,378,482,561,689,691,697,754,763,817,842,1077,1079,1084,1106,1113,1147,1152,1211,1217,1294,1296,1302,1344,1357,1366,1424,1426,1432,1456,1469,1476,1503,1505,1511,1530,1542,1547,1549,1555,1567,1612,1614,1620,1631,1653,1655,1664,1706,1724,1730,1815,1817,1821,1900,1905,1975,1985,2133,2135,2138,2307,2313,2407,2409,2413,2430,2442,2445,2611,2613,2617,2949,2951,2955,3058,3060,3064,3090],[348,349,350,353,354,356],"p",{},[351,352,229],"code",{}," extends ",[351,355,202],{},". Every method from the base client works unchanged. This page documents the additional persistence API.",[348,358,359,360,365],{},"See the ",[361,362,364],"a",{"href":363},"../recipes/persistence","Persistence guide"," for a walkthrough with full examples.",[367,368],"hr",{},[370,371,229],"h2",{"id":372},"persistqoraclient",[374,375,377],"h3",{"id":376},"constructor","Constructor",[379,380,385],"pre",{"className":381,"code":382,"language":383,"meta":384,"style":384},"language-dart shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","PersistQoraClient({\n  required StorageAdapter storage,\n  Duration persistDuration = const Duration(days: 7),\n  QoraClientConfig? config,\n  QoraTracker? tracker,\n})\n","dart","",[351,386,387,399,416,449,463,476],{"__ignoreMap":384},[388,389,392,395],"span",{"class":390,"line":391},"line",1,[388,393,229],{"class":394},"sBMFI",[388,396,398],{"class":397},"sTEyZ","({\n",[388,400,402,406,409,412],{"class":390,"line":401},2,[388,403,405],{"class":404},"spNyl","  required",[388,407,408],{"class":394}," StorageAdapter",[388,410,411],{"class":397}," storage",[388,413,415],{"class":414},"sMK4o",",\n",[388,417,419,422,425,428,431,434,437,440,444,447],{"class":390,"line":418},3,[388,420,421],{"class":394},"  Duration",[388,423,424],{"class":397}," persistDuration ",[388,426,427],{"class":414},"=",[388,429,430],{"class":404}," const",[388,432,433],{"class":394}," Duration",[388,435,436],{"class":397},"(days",[388,438,439],{"class":414},":",[388,441,443],{"class":442},"sbssI"," 7",[388,445,446],{"class":397},")",[388,448,415],{"class":414},[388,450,452,455,458,461],{"class":390,"line":451},4,[388,453,454],{"class":394},"  QoraClientConfig",[388,456,457],{"class":414},"?",[388,459,460],{"class":397}," config",[388,462,415],{"class":414},[388,464,466,469,471,474],{"class":390,"line":465},5,[388,467,468],{"class":394},"  QoraTracker",[388,470,457],{"class":414},[388,472,473],{"class":397}," tracker",[388,475,415],{"class":414},[388,477,479],{"class":390,"line":478},6,[388,480,481],{"class":397},"})\n",[483,484,485,498],"table",{},[486,487,488],"thead",{},[489,490,491,495],"tr",{},[492,493,494],"th",{},"Parameter",[492,496,497],{},"Description",[499,500,501,520,538,550],"tbody",{},[489,502,503,509],{},[504,505,506],"td",{},[351,507,508],{},"storage",[504,510,511,512,515,516,519],{},"The storage backend. Must be initialised via ",[351,513,514],{},"StorageAdapter.init()"," before calling ",[351,517,518],{},"hydrate()",".",[489,521,522,527],{},[504,523,524],{},[351,525,526],{},"persistDuration",[504,528,529,530,533,534,537],{},"Default TTL for persisted entries. If ",[351,531,532],{},"null",", entries are persisted indefinitely. Pass ",[351,535,536],{},"Duration.zero"," to disable persistence (entries expire immediately).",[489,539,540,545],{},[504,541,542],{},[351,543,544],{},"config",[504,546,547,548,519],{},"Forwarded to ",[351,549,202],{},[489,551,552,557],{},[504,553,554],{},[351,555,556],{},"tracker",[504,558,547,559,519],{},[351,560,202],{},[379,562,565],{"className":381,"code":563,"filename":564,"language":383,"meta":384,"style":384},"final client = PersistQoraClient(\n  storage: InMemoryStorageAdapter(),\n  persistDuration: const Duration(days: 7),\n  config: const QoraClientConfig(\n    defaultOptions: QoraOptions(staleTime: Duration(minutes: 5)),\n    debugMode: true,\n  ),\n);\n","main.dart",[351,566,567,583,598,619,633,663,673,681],{"__ignoreMap":384},[388,568,569,572,575,577,580],{"class":390,"line":391},[388,570,571],{"class":404},"final",[388,573,574],{"class":397}," client ",[388,576,427],{"class":414},[388,578,579],{"class":394}," PersistQoraClient",[388,581,582],{"class":397},"(\n",[388,584,585,588,590,593,596],{"class":390,"line":401},[388,586,587],{"class":397},"  storage",[388,589,439],{"class":414},[388,591,592],{"class":394}," InMemoryStorageAdapter",[388,594,595],{"class":397},"()",[388,597,415],{"class":414},[388,599,600,603,605,607,609,611,613,615,617],{"class":390,"line":418},[388,601,602],{"class":397},"  persistDuration",[388,604,439],{"class":414},[388,606,430],{"class":404},[388,608,433],{"class":394},[388,610,436],{"class":397},[388,612,439],{"class":414},[388,614,443],{"class":442},[388,616,446],{"class":397},[388,618,415],{"class":414},[388,620,621,624,626,628,631],{"class":390,"line":451},[388,622,623],{"class":397},"  config",[388,625,439],{"class":414},[388,627,430],{"class":404},[388,629,630],{"class":394}," QoraClientConfig",[388,632,582],{"class":397},[388,634,635,638,640,643,646,648,650,653,655,658,661],{"class":390,"line":465},[388,636,637],{"class":397},"    defaultOptions",[388,639,439],{"class":414},[388,641,642],{"class":394}," QoraOptions",[388,644,645],{"class":397},"(staleTime",[388,647,439],{"class":414},[388,649,433],{"class":394},[388,651,652],{"class":397},"(minutes",[388,654,439],{"class":414},[388,656,657],{"class":442}," 5",[388,659,660],{"class":397},"))",[388,662,415],{"class":414},[388,664,665,668,670],{"class":390,"line":478},[388,666,667],{"class":397},"    debugMode",[388,669,439],{"class":414},[388,671,672],{"class":414}," true,\n",[388,674,676,679],{"class":390,"line":675},7,[388,677,678],{"class":397},"  )",[388,680,415],{"class":414},[388,682,684,686],{"class":390,"line":683},8,[388,685,446],{"class":397},[388,687,688],{"class":414},";\n",[367,690],{},[374,692,694],{"id":693},"registerserializer",[351,695,696],{},"registerSerializer",[379,698,700],{"className":381,"code":699,"language":383,"meta":384,"style":384},"void registerSerializer\u003CT>(\n  QoraSerializer\u003CT> serializer, {\n  String? name,\n})\n",[351,701,702,720,738,750],{"__ignoreMap":384},[388,703,704,707,711,714,717],{"class":390,"line":391},[388,705,706],{"class":404},"void",[388,708,710],{"class":709},"s2Zo4"," registerSerializer",[388,712,713],{"class":397},"\u003C",[388,715,716],{"class":394},"T",[388,718,719],{"class":397},">(\n",[388,721,722,725,727,729,732,735],{"class":390,"line":401},[388,723,724],{"class":394},"  QoraSerializer",[388,726,713],{"class":397},[388,728,716],{"class":394},[388,730,731],{"class":397},"> serializer",[388,733,734],{"class":414},",",[388,736,737],{"class":397}," {\n",[388,739,740,743,745,748],{"class":390,"line":418},[388,741,742],{"class":394},"  String",[388,744,457],{"class":414},[388,746,747],{"class":397}," name",[388,749,415],{"class":414},[388,751,752],{"class":390,"line":451},[388,753,481],{"class":397},[348,755,756,757,760,761,519],{},"Register a ",[351,758,759],{},"QoraSerializer"," for type ",[351,762,716],{},[483,764,765,773],{},[486,766,767],{},[489,768,769,771],{},[492,770,494],{},[492,772,497],{},[499,774,775,795],{},[489,776,777,782],{},[504,778,779],{},[351,780,781],{},"serializer",[504,783,784,785,788,789,792,793,519],{},"Provides ",[351,786,787],{},"toJson"," / ",[351,790,791],{},"fromJson"," converters for ",[351,794,716],{},[489,796,797,802],{},[504,798,799],{},[351,800,801],{},"name",[504,803,804,805,808,809],{},"The stable string identifier stored as a type discriminator on disk. Defaults to ",[351,806,807],{},"T.toString()",". ",[810,811,812,813,816],"strong",{},"Pass an explicit value on Flutter Web or when ",[351,814,815],{},"--obfuscate"," is active.",[818,819,820,833],"ul",{},[821,822,823,824,826,827,829,830,832],"li",{},"Calling ",[351,825,696],{}," twice for the same ",[351,828,716],{}," or the same ",[351,831,801],{}," replaces the previous entry.",[821,834,835,836,839,840,519],{},"Must be called ",[810,837,838],{},"before"," ",[351,841,518],{},[379,843,845],{"className":381,"code":844,"filename":564,"language":383,"meta":384,"style":384},"client.registerSerializer\u003CUser>(\n  QoraSerializer(toJson: (u) => u.toJson(), fromJson: User.fromJson),\n  name: 'User',\n);\n\nclient.registerSerializer\u003CList\u003CPost>>(\n  QoraSerializer(\n    toJson: (posts) => posts.map((p) => p.toJson()).toList(),\n    fromJson: (json)  => (json as List).map((e) => Post.fromJson(e)).toList(),\n  ),\n  name: 'List\u003CPost>',\n);\n",[351,846,847,863,904,917,923,929,950,956,1000,1051,1058,1070],{"__ignoreMap":384},[388,848,849,852,854,856,858,861],{"class":390,"line":391},[388,850,851],{"class":397},"client",[388,853,519],{"class":414},[388,855,696],{"class":709},[388,857,713],{"class":397},[388,859,860],{"class":394},"User",[388,862,719],{"class":397},[388,864,865,867,870,872,875,878,881,883,885,887,889,892,894,897,899,902],{"class":390,"line":401},[388,866,724],{"class":394},[388,868,869],{"class":397},"(toJson",[388,871,439],{"class":414},[388,873,874],{"class":397}," (u) ",[388,876,877],{"class":414},"=>",[388,879,880],{"class":397}," u",[388,882,519],{"class":414},[388,884,787],{"class":709},[388,886,595],{"class":397},[388,888,734],{"class":414},[388,890,891],{"class":397}," fromJson",[388,893,439],{"class":414},[388,895,896],{"class":394}," User",[388,898,519],{"class":414},[388,900,901],{"class":397},"fromJson)",[388,903,415],{"class":414},[388,905,906,909,911,915],{"class":390,"line":418},[388,907,908],{"class":397},"  name",[388,910,439],{"class":414},[388,912,914],{"class":913},"sfazB"," 'User'",[388,916,415],{"class":414},[388,918,919,921],{"class":390,"line":451},[388,920,446],{"class":397},[388,922,688],{"class":414},[388,924,925],{"class":390,"line":465},[388,926,928],{"emptyLinePlaceholder":927},true,"\n",[388,930,931,933,935,937,939,942,944,947],{"class":390,"line":478},[388,932,851],{"class":397},[388,934,519],{"class":414},[388,936,696],{"class":709},[388,938,713],{"class":397},[388,940,941],{"class":394},"List",[388,943,713],{"class":397},[388,945,946],{"class":394},"Post",[388,948,949],{"class":397},">>(\n",[388,951,952,954],{"class":390,"line":675},[388,953,724],{"class":394},[388,955,582],{"class":397},[388,957,958,961,963,966,968,971,973,976,979,981,984,986,988,991,993,996,998],{"class":390,"line":683},[388,959,960],{"class":397},"    toJson",[388,962,439],{"class":414},[388,964,965],{"class":397}," (posts) ",[388,967,877],{"class":414},[388,969,970],{"class":397}," posts",[388,972,519],{"class":414},[388,974,975],{"class":709},"map",[388,977,978],{"class":397},"((p) ",[388,980,877],{"class":414},[388,982,983],{"class":397}," p",[388,985,519],{"class":414},[388,987,787],{"class":709},[388,989,990],{"class":397},"())",[388,992,519],{"class":414},[388,994,995],{"class":709},"toList",[388,997,595],{"class":397},[388,999,415],{"class":414},[388,1001,1003,1006,1008,1011,1013,1016,1019,1022,1024,1026,1028,1031,1033,1036,1038,1040,1043,1045,1047,1049],{"class":390,"line":1002},9,[388,1004,1005],{"class":397},"    fromJson",[388,1007,439],{"class":414},[388,1009,1010],{"class":397}," (json)  ",[388,1012,877],{"class":414},[388,1014,1015],{"class":397}," (json ",[388,1017,1018],{"class":414},"as",[388,1020,1021],{"class":394}," List",[388,1023,446],{"class":397},[388,1025,519],{"class":414},[388,1027,975],{"class":709},[388,1029,1030],{"class":397},"((e) ",[388,1032,877],{"class":414},[388,1034,1035],{"class":394}," Post",[388,1037,519],{"class":414},[388,1039,791],{"class":709},[388,1041,1042],{"class":397},"(e))",[388,1044,519],{"class":414},[388,1046,995],{"class":709},[388,1048,595],{"class":397},[388,1050,415],{"class":414},[388,1052,1054,1056],{"class":390,"line":1053},10,[388,1055,678],{"class":397},[388,1057,415],{"class":414},[388,1059,1061,1063,1065,1068],{"class":390,"line":1060},11,[388,1062,908],{"class":397},[388,1064,439],{"class":414},[388,1066,1067],{"class":913}," 'List\u003CPost>'",[388,1069,415],{"class":414},[388,1071,1073,1075],{"class":390,"line":1072},12,[388,1074,446],{"class":397},[388,1076,688],{"class":414},[367,1078],{},[374,1080,1082],{"id":1081},"hydrate",[351,1083,1081],{},[379,1085,1087],{"className":381,"code":1086,"language":383,"meta":384,"style":384},"Future\u003Cvoid> hydrate()\n",[351,1088,1089],{"__ignoreMap":384},[388,1090,1091,1094,1096,1098,1101,1103],{"class":390,"line":391},[388,1092,1093],{"class":394},"Future",[388,1095,713],{"class":397},[388,1097,706],{"class":404},[388,1099,1100],{"class":397},"> ",[388,1102,1081],{"class":709},[388,1104,1105],{"class":397},"()\n",[348,1107,1108,1109,1112],{},"Load all valid persisted entries from ",[351,1110,1111],{},"StorageAdapter"," into a pending hydration queue.",[348,1114,1115,1116,1119,1120,1123,1124,1123,1127,1130,1131,1134,1135,1138,1139,1142,1143,1146],{},"Entries are injected into the typed cache ",[810,1117,1118],{},"lazily",": on the first call to ",[351,1121,1122],{},"fetchQuery\u003CT>",", ",[351,1125,1126],{},"watchQuery\u003CT>",[351,1128,1129],{},"getQueryData\u003CT>",", etc., for that key. The restored ",[351,1132,1133],{},"Success"," state carries the original ",[351,1136,1137],{},"persistedAt"," as ",[351,1140,1141],{},"updatedAt",", so ",[351,1144,1145],{},"staleTime"," evaluates freshness correctly.",[348,1148,1149],{},[810,1150,1151],{},"Per-entry behaviour:",[483,1153,1154,1164],{},[486,1155,1156],{},[489,1157,1158,1161],{},[492,1159,1160],{},"Condition",[492,1162,1163],{},"Action",[499,1165,1166,1174,1181,1193,1203],{},[489,1167,1168,1171],{},[504,1169,1170],{},"JSON decode failure",[504,1172,1173],{},"Delete from storage, skip",[489,1175,1176,1179],{},[504,1177,1178],{},"TTL expired",[504,1180,1173],{},[489,1182,1183,1186],{},[504,1184,1185],{},"No serializer registered for the type",[504,1187,1188,1189,1192],{},"Log (if ",[351,1190,1191],{},"debugMode","), skip",[489,1194,1195,1200],{},[504,1196,1197,1199],{},[351,1198,791],{}," throws",[504,1201,1202],{},"Delete from storage, log, skip",[489,1204,1205,1208],{},[504,1206,1207],{},"Valid",[504,1209,1210],{},"Queue in pending hydration map",[348,1212,1213,1214,439],{},"Call once at startup, after all serializers are registered and before ",[351,1215,1216],{},"runApp",[379,1218,1220],{"className":381,"code":1219,"filename":564,"language":383,"meta":384,"style":384},"await storage.init();\nclient.registerSerializer\u003CUser>(...);\nawait client.hydrate(); // ← before runApp\nrunApp(...);\n",[351,1221,1222,1239,1261,1281],{"__ignoreMap":384},[388,1223,1224,1228,1230,1232,1235,1237],{"class":390,"line":391},[388,1225,1227],{"class":1226},"s7zQu","await",[388,1229,411],{"class":397},[388,1231,519],{"class":414},[388,1233,1234],{"class":709},"init",[388,1236,595],{"class":397},[388,1238,688],{"class":414},[388,1240,1241,1243,1245,1247,1249,1251,1254,1257,1259],{"class":390,"line":401},[388,1242,851],{"class":397},[388,1244,519],{"class":414},[388,1246,696],{"class":709},[388,1248,713],{"class":397},[388,1250,860],{"class":394},[388,1252,1253],{"class":397},">(",[388,1255,1256],{"class":414},"...",[388,1258,446],{"class":397},[388,1260,688],{"class":414},[388,1262,1263,1265,1268,1270,1272,1274,1277],{"class":390,"line":418},[388,1264,1227],{"class":1226},[388,1266,1267],{"class":397}," client",[388,1269,519],{"class":414},[388,1271,1081],{"class":709},[388,1273,595],{"class":397},[388,1275,1276],{"class":414},";",[388,1278,1280],{"class":1279},"sHwdD"," // ← before runApp\n",[388,1282,1283,1285,1288,1290,1292],{"class":390,"line":451},[388,1284,1216],{"class":709},[388,1286,1287],{"class":397},"(",[388,1289,1256],{"class":414},[388,1291,446],{"class":397},[388,1293,688],{"class":414},[367,1295],{},[374,1297,1299],{"id":1298},"persistquery",[351,1300,1301],{},"persistQuery",[379,1303,1305],{"className":381,"code":1304,"language":383,"meta":384,"style":384},"Future\u003Cvoid> persistQuery\u003CT>(Object key, {Duration? ttl})\n",[351,1306,1307],{"__ignoreMap":384},[388,1308,1309,1311,1313,1315,1317,1319,1321,1323,1325,1328,1331,1333,1336,1339,1341],{"class":390,"line":391},[388,1310,1093],{"class":394},[388,1312,713],{"class":397},[388,1314,706],{"class":404},[388,1316,1100],{"class":397},[388,1318,1301],{"class":709},[388,1320,713],{"class":397},[388,1322,716],{"class":394},[388,1324,1253],{"class":397},[388,1326,1327],{"class":394},"Object",[388,1329,1330],{"class":397}," key",[388,1332,734],{"class":414},[388,1334,1335],{"class":397}," {",[388,1337,1338],{"class":394},"Duration",[388,1340,457],{"class":414},[388,1342,1343],{"class":397}," ttl})\n",[348,1345,1346,1347,1350,1351,1353,1354,1356],{},"Force-persist the current cached value for ",[351,1348,1349],{},"key",". No-op if the query is not in ",[351,1352,1133],{}," state or ",[351,1355,716],{}," has no registered serializer.",[348,1358,1359,1362,1363,1365],{},[351,1360,1361],{},"ttl"," overrides ",[351,1364,526],{}," for this specific entry.",[379,1367,1369],{"className":381,"code":1368,"filename":564,"language":383,"meta":384,"style":384},"// Persist with a short TTL (e.g. for sensitive data)\nawait client.persistQuery\u003CUser>(['users', userId], ttl: const Duration(hours: 1));\n",[351,1370,1371,1376],{"__ignoreMap":384},[388,1372,1373],{"class":390,"line":391},[388,1374,1375],{"class":1279},"// Persist with a short TTL (e.g. for sensitive data)\n",[388,1377,1378,1380,1382,1384,1386,1388,1390,1393,1396,1398,1401,1403,1406,1408,1410,1412,1415,1417,1420,1422],{"class":390,"line":401},[388,1379,1227],{"class":1226},[388,1381,1267],{"class":397},[388,1383,519],{"class":414},[388,1385,1301],{"class":709},[388,1387,713],{"class":397},[388,1389,860],{"class":394},[388,1391,1392],{"class":397},">([",[388,1394,1395],{"class":913},"'users'",[388,1397,734],{"class":414},[388,1399,1400],{"class":397}," userId]",[388,1402,734],{"class":414},[388,1404,1405],{"class":397}," ttl",[388,1407,439],{"class":414},[388,1409,430],{"class":404},[388,1411,433],{"class":394},[388,1413,1414],{"class":397},"(hours",[388,1416,439],{"class":414},[388,1418,1419],{"class":442}," 1",[388,1421,660],{"class":397},[388,1423,688],{"class":414},[367,1425],{},[374,1427,1429],{"id":1428},"evictfromstorage",[351,1430,1431],{},"evictFromStorage",[379,1433,1435],{"className":381,"code":1434,"language":383,"meta":384,"style":384},"Future\u003Cvoid> evictFromStorage(Object key)\n",[351,1436,1437],{"__ignoreMap":384},[388,1438,1439,1441,1443,1445,1447,1449,1451,1453],{"class":390,"line":391},[388,1440,1093],{"class":394},[388,1442,713],{"class":397},[388,1444,706],{"class":404},[388,1446,1100],{"class":397},[388,1448,1431],{"class":709},[388,1450,1287],{"class":397},[388,1452,1327],{"class":394},[388,1454,1455],{"class":397}," key)\n",[348,1457,1458,1459,1461,1462,1464,1465,1468],{},"Delete the persisted entry for ",[351,1460,1349],{}," from ",[351,1463,1111],{},". The in-memory cache is ",[810,1466,1467],{},"not"," affected.",[348,1470,1471,1472,1475],{},"Use ",[351,1473,1474],{},"removeQuery"," to remove from both cache and storage simultaneously.",[379,1477,1479],{"className":381,"code":1478,"filename":564,"language":383,"meta":384,"style":384},"await client.evictFromStorage(['users', userId]);\n",[351,1480,1481],{"__ignoreMap":384},[388,1482,1483,1485,1487,1489,1491,1494,1496,1498,1501],{"class":390,"line":391},[388,1484,1227],{"class":1226},[388,1486,1267],{"class":397},[388,1488,519],{"class":414},[388,1490,1431],{"class":709},[388,1492,1493],{"class":397},"([",[388,1495,1395],{"class":913},[388,1497,734],{"class":414},[388,1499,1500],{"class":397}," userId])",[388,1502,688],{"class":414},[367,1504],{},[374,1506,1508],{"id":1507},"clearstorage",[351,1509,1510],{},"clearStorage",[379,1512,1514],{"className":381,"code":1513,"language":383,"meta":384,"style":384},"Future\u003Cvoid> clearStorage()\n",[351,1515,1516],{"__ignoreMap":384},[388,1517,1518,1520,1522,1524,1526,1528],{"class":390,"line":391},[388,1519,1093],{"class":394},[388,1521,713],{"class":397},[388,1523,706],{"class":404},[388,1525,1100],{"class":397},[388,1527,1510],{"class":709},[388,1529,1105],{"class":397},[348,1531,1532,1533,1535,1536,1539,1540,1468],{},"Delete every entry Qora wrote to the ",[351,1534,1111],{},". Keys Qora did not write (app settings in a shared Hive box, for example) are left untouched; call ",[351,1537,1538],{},"clear()"," on the adapter itself to wipe everything. The in-memory cache is ",[810,1541,1467],{},[348,1543,1471,1544,1546],{},[351,1545,1538],{}," to wipe both in-memory cache and storage simultaneously.",[367,1548],{},[374,1550,1552,1554],{"id":1551},"removequery-override",[351,1553,1474],{}," (override)",[348,1556,1557,1558,839,1561,1564,1565,519],{},"Calls ",[351,1559,1560],{},"super.removeQuery(key)",[810,1562,1563],{},"and"," deletes the entry from ",[351,1566,1111],{},[379,1568,1570],{"className":381,"code":1569,"filename":564,"language":383,"meta":384,"style":384},"// On delete: removes from cache and storage\nawait api.deleteUser(userId);\nclient.removeQuery(['users', userId]);\n",[351,1571,1572,1577,1594],{"__ignoreMap":384},[388,1573,1574],{"class":390,"line":391},[388,1575,1576],{"class":1279},"// On delete: removes from cache and storage\n",[388,1578,1579,1581,1584,1586,1589,1592],{"class":390,"line":401},[388,1580,1227],{"class":1226},[388,1582,1583],{"class":397}," api",[388,1585,519],{"class":414},[388,1587,1588],{"class":709},"deleteUser",[388,1590,1591],{"class":397},"(userId)",[388,1593,688],{"class":414},[388,1595,1596,1598,1600,1602,1604,1606,1608,1610],{"class":390,"line":418},[388,1597,851],{"class":397},[388,1599,519],{"class":414},[388,1601,1474],{"class":709},[388,1603,1493],{"class":397},[388,1605,1395],{"class":913},[388,1607,734],{"class":414},[388,1609,1500],{"class":397},[388,1611,688],{"class":414},[367,1613],{},[374,1615,1617,1554],{"id":1616},"clear-override",[351,1618,1619],{},"clear",[348,1621,1557,1622,839,1625,1627,1628,519],{},[351,1623,1624],{},"super.clear()",[810,1626,1563],{}," calls ",[351,1629,1630],{},"clearStorage()",[379,1632,1634],{"className":381,"code":1633,"filename":564,"language":383,"meta":384,"style":384},"// On logout: wipes everything\nclient.clear();\n",[351,1635,1636,1641],{"__ignoreMap":384},[388,1637,1638],{"class":390,"line":391},[388,1639,1640],{"class":1279},"// On logout: wipes everything\n",[388,1642,1643,1645,1647,1649,1651],{"class":390,"line":401},[388,1644,851],{"class":397},[388,1646,519],{"class":414},[388,1648,1619],{"class":709},[388,1650,595],{"class":397},[388,1652,688],{"class":414},[367,1654],{},[374,1656,1658,1661,1662,446],{"id":1657},"hydratequery-from-qoraclient",[351,1659,1660],{},"hydrateQuery"," (from ",[351,1663,202],{},[379,1665,1667],{"className":381,"code":1666,"language":383,"meta":384,"style":384},"void hydrateQuery\u003CT>(Object key, T data, {DateTime? updatedAt})\n",[351,1668,1669],{"__ignoreMap":384},[388,1670,1671,1673,1676,1678,1680,1682,1684,1686,1688,1691,1694,1696,1698,1701,1703],{"class":390,"line":391},[388,1672,706],{"class":404},[388,1674,1675],{"class":709}," hydrateQuery",[388,1677,713],{"class":397},[388,1679,716],{"class":394},[388,1681,1253],{"class":397},[388,1683,1327],{"class":394},[388,1685,1330],{"class":397},[388,1687,734],{"class":414},[388,1689,1690],{"class":394}," T",[388,1692,1693],{"class":397}," data",[388,1695,734],{"class":414},[388,1697,1335],{"class":397},[388,1699,1700],{"class":394},"DateTime",[388,1702,457],{"class":414},[388,1704,1705],{"class":397}," updatedAt})\n",[348,1707,1708,1709,1712,1713,1715,1716,1719,1720,1723],{},"Pre-populate the cache with a value. Inserts a ",[351,1710,1711],{},"Success\u003CT>"," state with ",[351,1714,1141],{}," (defaults to ",[351,1717,1718],{},"DateTime.now()","). No-op if the entry is already in a non-",[351,1721,1722],{},"Initial"," state.",[348,1725,1726,1727,1729],{},"This is used internally by ",[351,1728,229],{}," but is also available for advanced use cases (e.g. pre-loading from a custom source).",[379,1731,1733],{"className":381,"code":1732,"filename":564,"language":383,"meta":384,"style":384},"client.hydrateQuery\u003CUser>(\n  ['users', userId],\n  cachedUser,\n  updatedAt: DateTime.now().subtract(const Duration(minutes: 3)),\n);\n",[351,1734,1735,1749,1762,1769,1809],{"__ignoreMap":384},[388,1736,1737,1739,1741,1743,1745,1747],{"class":390,"line":391},[388,1738,851],{"class":397},[388,1740,519],{"class":414},[388,1742,1660],{"class":709},[388,1744,713],{"class":397},[388,1746,860],{"class":394},[388,1748,719],{"class":397},[388,1750,1751,1754,1756,1758,1760],{"class":390,"line":401},[388,1752,1753],{"class":397},"  [",[388,1755,1395],{"class":913},[388,1757,734],{"class":414},[388,1759,1400],{"class":397},[388,1761,415],{"class":414},[388,1763,1764,1767],{"class":390,"line":418},[388,1765,1766],{"class":397},"  cachedUser",[388,1768,415],{"class":414},[388,1770,1771,1774,1776,1779,1781,1784,1786,1788,1791,1793,1796,1798,1800,1802,1805,1807],{"class":390,"line":451},[388,1772,1773],{"class":397},"  updatedAt",[388,1775,439],{"class":414},[388,1777,1778],{"class":394}," DateTime",[388,1780,519],{"class":414},[388,1782,1783],{"class":709},"now",[388,1785,595],{"class":397},[388,1787,519],{"class":414},[388,1789,1790],{"class":709},"subtract",[388,1792,1287],{"class":397},[388,1794,1795],{"class":404},"const",[388,1797,433],{"class":394},[388,1799,652],{"class":397},[388,1801,439],{"class":414},[388,1803,1804],{"class":442}," 3",[388,1806,660],{"class":397},[388,1808,415],{"class":414},[388,1810,1811,1813],{"class":390,"line":465},[388,1812,446],{"class":397},[388,1814,688],{"class":414},[367,1816],{},[370,1818,1820],{"id":1819},"qoraserializert","QoraSerializer\u003CT>",[379,1822,1824],{"className":381,"code":1823,"language":383,"meta":384,"style":384},"class QoraSerializer\u003CT> {\n  const QoraSerializer({\n    required dynamic Function(T value) toJson,\n    required T Function(dynamic json) fromJson,\n  });\n}\n",[351,1825,1826,1841,1850,1870,1888,1895],{"__ignoreMap":384},[388,1827,1828,1831,1834,1836,1838],{"class":390,"line":391},[388,1829,1830],{"class":414},"class",[388,1832,1833],{"class":394}," QoraSerializer",[388,1835,713],{"class":397},[388,1837,716],{"class":394},[388,1839,1840],{"class":397},"> {\n",[388,1842,1843,1846,1848],{"class":390,"line":401},[388,1844,1845],{"class":404},"  const",[388,1847,1833],{"class":394},[388,1849,398],{"class":397},[388,1851,1852,1855,1858,1861,1863,1865,1868],{"class":390,"line":418},[388,1853,1854],{"class":404},"    required",[388,1856,1857],{"class":394}," dynamic",[388,1859,1860],{"class":394}," Function",[388,1862,1287],{"class":397},[388,1864,716],{"class":394},[388,1866,1867],{"class":397}," value) toJson",[388,1869,415],{"class":414},[388,1871,1872,1874,1876,1878,1880,1883,1886],{"class":390,"line":451},[388,1873,1854],{"class":404},[388,1875,1690],{"class":394},[388,1877,1860],{"class":394},[388,1879,1287],{"class":397},[388,1881,1882],{"class":394},"dynamic",[388,1884,1885],{"class":397}," json) fromJson",[388,1887,415],{"class":414},[388,1889,1890,1893],{"class":390,"line":465},[388,1891,1892],{"class":397},"  })",[388,1894,688],{"class":414},[388,1896,1897],{"class":390,"line":478},[388,1898,1899],{"class":397},"}\n",[348,1901,1902,1903,519],{},"A pair of conversion functions for type ",[351,1904,716],{},[483,1906,1907,1919],{},[486,1908,1909],{},[489,1910,1911,1914,1917],{},[492,1912,1913],{},"Property",[492,1915,1916],{},"Type",[492,1918,497],{},[499,1920,1921,1956],{},[489,1922,1923,1927,1932],{},[504,1924,1925],{},[351,1926,787],{},[504,1928,1929],{},[351,1930,1931],{},"dynamic Function(T)",[504,1933,1934,1935,1937,1938,1123,1941,1123,1943,1123,1946,1123,1949,1952,1953,1955],{},"Converts ",[351,1936,716],{}," to a JSON-encodable value (",[351,1939,1940],{},"Map",[351,1942,941],{},[351,1944,1945],{},"String",[351,1947,1948],{},"num",[351,1950,1951],{},"bool",", or ",[351,1954,532],{},").",[489,1957,1958,1962,1967],{},[504,1959,1960],{},[351,1961,791],{},[504,1963,1964],{},[351,1965,1966],{},"T Function(dynamic)",[504,1968,1969,1970,1972,1973,519],{},"Restores ",[351,1971,716],{}," from the value previously produced by ",[351,1974,787],{},[348,1976,1977,1978,1980,1981,1984],{},"Both functions use ",[351,1979,1882],{}," (not ",[351,1982,1983],{},"Map\u003CString, dynamic>",") so that primitives, lists, and maps are all supported.",[379,1986,1988],{"className":381,"code":1987,"filename":564,"language":383,"meta":384,"style":384},"// Object\nfinal userSerializer = QoraSerializer\u003CUser>(\n  toJson: (u) => u.toJson(),       // returns Map\u003CString, dynamic>\n  fromJson: User.fromJson,         // accepts Map\u003CString, dynamic>\n);\n\n// Primitive\nfinal intSerializer = QoraSerializer\u003Cint>(\n  toJson: (n) => n,                // returns int directly\n  fromJson: (json) => json as int,\n);\n",[351,1989,1990,1995,2012,2036,2054,2060,2064,2069,2087,2106,2127],{"__ignoreMap":384},[388,1991,1992],{"class":390,"line":391},[388,1993,1994],{"class":1279},"// Object\n",[388,1996,1997,1999,2002,2004,2006,2008,2010],{"class":390,"line":401},[388,1998,571],{"class":404},[388,2000,2001],{"class":397}," userSerializer ",[388,2003,427],{"class":414},[388,2005,1833],{"class":394},[388,2007,713],{"class":397},[388,2009,860],{"class":394},[388,2011,719],{"class":397},[388,2013,2014,2017,2019,2021,2023,2025,2027,2029,2031,2033],{"class":390,"line":418},[388,2015,2016],{"class":397},"  toJson",[388,2018,439],{"class":414},[388,2020,874],{"class":397},[388,2022,877],{"class":414},[388,2024,880],{"class":397},[388,2026,519],{"class":414},[388,2028,787],{"class":709},[388,2030,595],{"class":397},[388,2032,734],{"class":414},[388,2034,2035],{"class":1279},"       // returns Map\u003CString, dynamic>\n",[388,2037,2038,2041,2043,2045,2047,2049,2051],{"class":390,"line":451},[388,2039,2040],{"class":397},"  fromJson",[388,2042,439],{"class":414},[388,2044,896],{"class":394},[388,2046,519],{"class":414},[388,2048,791],{"class":397},[388,2050,734],{"class":414},[388,2052,2053],{"class":1279},"         // accepts Map\u003CString, dynamic>\n",[388,2055,2056,2058],{"class":390,"line":465},[388,2057,446],{"class":397},[388,2059,688],{"class":414},[388,2061,2062],{"class":390,"line":478},[388,2063,928],{"emptyLinePlaceholder":927},[388,2065,2066],{"class":390,"line":675},[388,2067,2068],{"class":1279},"// Primitive\n",[388,2070,2071,2073,2076,2078,2080,2082,2085],{"class":390,"line":683},[388,2072,571],{"class":404},[388,2074,2075],{"class":397}," intSerializer ",[388,2077,427],{"class":414},[388,2079,1833],{"class":394},[388,2081,713],{"class":397},[388,2083,2084],{"class":394},"int",[388,2086,719],{"class":397},[388,2088,2089,2091,2093,2096,2098,2101,2103],{"class":390,"line":1002},[388,2090,2016],{"class":397},[388,2092,439],{"class":414},[388,2094,2095],{"class":397}," (n) ",[388,2097,877],{"class":414},[388,2099,2100],{"class":397}," n",[388,2102,734],{"class":414},[388,2104,2105],{"class":1279},"                // returns int directly\n",[388,2107,2108,2110,2112,2115,2117,2120,2122,2125],{"class":390,"line":1053},[388,2109,2040],{"class":397},[388,2111,439],{"class":414},[388,2113,2114],{"class":397}," (json) ",[388,2116,877],{"class":414},[388,2118,2119],{"class":397}," json ",[388,2121,1018],{"class":414},[388,2123,2124],{"class":394}," int",[388,2126,415],{"class":414},[388,2128,2129,2131],{"class":390,"line":1060},[388,2130,446],{"class":397},[388,2132,688],{"class":414},[367,2134],{},[370,2136,1111],{"id":2137},"storageadapter",[379,2139,2141],{"className":381,"code":2140,"language":383,"meta":384,"style":384},"abstract interface class StorageAdapter {\n  Future\u003Cvoid> init();\n  Future\u003CString?> read(String key);\n  Future\u003Cvoid> write(String key, String value);\n  Future\u003Cvoid> delete(String key);\n  Future\u003CList\u003CString>> keys();\n  Future\u003Cvoid> clear();\n  Future\u003Cvoid> dispose();\n}\n",[351,2142,2143,2158,2175,2198,2227,2248,2270,2286,2303],{"__ignoreMap":384},[388,2144,2145,2148,2151,2154,2156],{"class":390,"line":391},[388,2146,2147],{"class":414},"abstract",[388,2149,2150],{"class":414}," interface",[388,2152,2153],{"class":414}," class",[388,2155,408],{"class":394},[388,2157,737],{"class":397},[388,2159,2160,2163,2165,2167,2169,2171,2173],{"class":390,"line":401},[388,2161,2162],{"class":394},"  Future",[388,2164,713],{"class":397},[388,2166,706],{"class":404},[388,2168,1100],{"class":397},[388,2170,1234],{"class":709},[388,2172,595],{"class":397},[388,2174,688],{"class":414},[388,2176,2177,2179,2181,2183,2186,2189,2191,2193,2196],{"class":390,"line":418},[388,2178,2162],{"class":394},[388,2180,713],{"class":397},[388,2182,1945],{"class":394},[388,2184,2185],{"class":397},"?> ",[388,2187,2188],{"class":709},"read",[388,2190,1287],{"class":397},[388,2192,1945],{"class":394},[388,2194,2195],{"class":397}," key)",[388,2197,688],{"class":414},[388,2199,2200,2202,2204,2206,2208,2211,2213,2215,2217,2219,2222,2225],{"class":390,"line":451},[388,2201,2162],{"class":394},[388,2203,713],{"class":397},[388,2205,706],{"class":404},[388,2207,1100],{"class":397},[388,2209,2210],{"class":709},"write",[388,2212,1287],{"class":397},[388,2214,1945],{"class":394},[388,2216,1330],{"class":397},[388,2218,734],{"class":414},[388,2220,2221],{"class":394}," String",[388,2223,2224],{"class":397}," value)",[388,2226,688],{"class":414},[388,2228,2229,2231,2233,2235,2237,2240,2242,2244,2246],{"class":390,"line":465},[388,2230,2162],{"class":394},[388,2232,713],{"class":397},[388,2234,706],{"class":404},[388,2236,1100],{"class":397},[388,2238,2239],{"class":709},"delete",[388,2241,1287],{"class":397},[388,2243,1945],{"class":394},[388,2245,2195],{"class":397},[388,2247,688],{"class":414},[388,2249,2250,2252,2254,2256,2258,2260,2263,2266,2268],{"class":390,"line":478},[388,2251,2162],{"class":394},[388,2253,713],{"class":397},[388,2255,941],{"class":394},[388,2257,713],{"class":397},[388,2259,1945],{"class":394},[388,2261,2262],{"class":397},">> ",[388,2264,2265],{"class":709},"keys",[388,2267,595],{"class":397},[388,2269,688],{"class":414},[388,2271,2272,2274,2276,2278,2280,2282,2284],{"class":390,"line":675},[388,2273,2162],{"class":394},[388,2275,713],{"class":397},[388,2277,706],{"class":404},[388,2279,1100],{"class":397},[388,2281,1619],{"class":709},[388,2283,595],{"class":397},[388,2285,688],{"class":414},[388,2287,2288,2290,2292,2294,2296,2299,2301],{"class":390,"line":683},[388,2289,2162],{"class":394},[388,2291,713],{"class":397},[388,2293,706],{"class":404},[388,2295,1100],{"class":397},[388,2297,2298],{"class":709},"dispose",[388,2300,595],{"class":397},[388,2302,688],{"class":414},[388,2304,2305],{"class":390,"line":1002},[388,2306,1899],{"class":397},[348,2308,2309,2310,2312],{},"A minimal key/value contract. ",[351,2311,229],{}," manages all serialisation; adapters only handle opaque JSON strings.",[483,2314,2315,2324],{},[486,2316,2317],{},[489,2318,2319,2322],{},[492,2320,2321],{},"Method",[492,2323,497],{},[499,2325,2326,2336,2351,2368,2378,2388,2397],{},[489,2327,2328,2333],{},[504,2329,2330],{},[351,2331,2332],{},"init()",[504,2334,2335],{},"Open the backend. Must be called and awaited before any other method.",[489,2337,2338,2343],{},[504,2339,2340],{},[351,2341,2342],{},"read(key)",[504,2344,2345,2346,1952,2348,2350],{},"Return the value for ",[351,2347,1349],{},[351,2349,532],{}," if absent.",[489,2352,2353,2358],{},[504,2354,2355],{},[351,2356,2357],{},"write(key, value)",[504,2359,2360,2361,2364,2365,2367],{},"Persist ",[351,2362,2363],{},"value"," under ",[351,2366,1349],{},", overwriting any existing value.",[489,2369,2370,2375],{},[504,2371,2372],{},[351,2373,2374],{},"delete(key)",[504,2376,2377],{},"Remove the entry. No-op if absent.",[489,2379,2380,2385],{},[504,2381,2382],{},[351,2383,2384],{},"keys()",[504,2386,2387],{},"Return all stored keys. Order is unspecified.",[489,2389,2390,2394],{},[504,2391,2392],{},[351,2393,1538],{},[504,2395,2396],{},"Remove all entries.",[489,2398,2399,2404],{},[504,2400,2401],{},[351,2402,2403],{},"dispose()",[504,2405,2406],{},"Release resources (file handles, DB connections, etc.).",[367,2408],{},[370,2410,2412],{"id":2411},"inmemorystorageadapter","InMemoryStorageAdapter",[379,2414,2416],{"className":381,"code":2415,"language":383,"meta":384,"style":384},"class InMemoryStorageAdapter implements StorageAdapter\n",[351,2417,2418],{"__ignoreMap":384},[388,2419,2420,2422,2424,2427],{"class":390,"line":391},[388,2421,1830],{"class":414},[388,2423,592],{"class":394},[388,2425,2426],{"class":414}," implements",[388,2428,2429],{"class":394}," StorageAdapter\n",[348,2431,2432,2433,2435,2436,2438,2439],{},"A ",[351,2434,1940],{},"-backed adapter. All operations complete synchronously (wrapped in resolved ",[351,2437,1093],{},"s). ",[810,2440,2441],{},"Data is lost when the process terminates.",[348,2443,2444],{},"Use for unit tests, integration tests, and CI environments where no real storage is needed.",[379,2446,2449],{"className":381,"code":2447,"filename":2448,"language":383,"meta":384,"style":384},"final adapter = InMemoryStorageAdapter();\nawait adapter.init();\n\nfinal client = PersistQoraClient(storage: adapter);\nclient.registerSerializer\u003CUser>(userSerializer, name: 'User');\nawait client.hydrate(); // no-op on first run\n\n// ... run queries ...\n\n// Verify persistence\nfinal keys = await adapter.keys();\nexpect(keys, contains('[\"users\",1]'));\n","test/persistence_test.dart",[351,2450,2451,2466,2481,2485,2505,2532,2549,2553,2558,2562,2567,2589],{"__ignoreMap":384},[388,2452,2453,2455,2458,2460,2462,2464],{"class":390,"line":391},[388,2454,571],{"class":404},[388,2456,2457],{"class":397}," adapter ",[388,2459,427],{"class":414},[388,2461,592],{"class":394},[388,2463,595],{"class":397},[388,2465,688],{"class":414},[388,2467,2468,2470,2473,2475,2477,2479],{"class":390,"line":401},[388,2469,1227],{"class":1226},[388,2471,2472],{"class":397}," adapter",[388,2474,519],{"class":414},[388,2476,1234],{"class":709},[388,2478,595],{"class":397},[388,2480,688],{"class":414},[388,2482,2483],{"class":390,"line":418},[388,2484,928],{"emptyLinePlaceholder":927},[388,2486,2487,2489,2491,2493,2495,2498,2500,2503],{"class":390,"line":451},[388,2488,571],{"class":404},[388,2490,574],{"class":397},[388,2492,427],{"class":414},[388,2494,579],{"class":394},[388,2496,2497],{"class":397},"(storage",[388,2499,439],{"class":414},[388,2501,2502],{"class":397}," adapter)",[388,2504,688],{"class":414},[388,2506,2507,2509,2511,2513,2515,2517,2520,2522,2524,2526,2528,2530],{"class":390,"line":465},[388,2508,851],{"class":397},[388,2510,519],{"class":414},[388,2512,696],{"class":709},[388,2514,713],{"class":397},[388,2516,860],{"class":394},[388,2518,2519],{"class":397},">(userSerializer",[388,2521,734],{"class":414},[388,2523,747],{"class":397},[388,2525,439],{"class":414},[388,2527,914],{"class":913},[388,2529,446],{"class":397},[388,2531,688],{"class":414},[388,2533,2534,2536,2538,2540,2542,2544,2546],{"class":390,"line":478},[388,2535,1227],{"class":1226},[388,2537,1267],{"class":397},[388,2539,519],{"class":414},[388,2541,1081],{"class":709},[388,2543,595],{"class":397},[388,2545,1276],{"class":414},[388,2547,2548],{"class":1279}," // no-op on first run\n",[388,2550,2551],{"class":390,"line":675},[388,2552,928],{"emptyLinePlaceholder":927},[388,2554,2555],{"class":390,"line":683},[388,2556,2557],{"class":1279},"// ... run queries ...\n",[388,2559,2560],{"class":390,"line":1002},[388,2561,928],{"emptyLinePlaceholder":927},[388,2563,2564],{"class":390,"line":1053},[388,2565,2566],{"class":1279},"// Verify persistence\n",[388,2568,2569,2571,2574,2576,2579,2581,2583,2585,2587],{"class":390,"line":1060},[388,2570,571],{"class":404},[388,2572,2573],{"class":397}," keys ",[388,2575,427],{"class":414},[388,2577,2578],{"class":1226}," await",[388,2580,2472],{"class":397},[388,2582,519],{"class":414},[388,2584,2265],{"class":709},[388,2586,595],{"class":397},[388,2588,688],{"class":414},[388,2590,2591,2594,2597,2599,2602,2604,2607,2609],{"class":390,"line":1072},[388,2592,2593],{"class":709},"expect",[388,2595,2596],{"class":397},"(keys",[388,2598,734],{"class":414},[388,2600,2601],{"class":709}," contains",[388,2603,1287],{"class":397},[388,2605,2606],{"class":913},"'[\"users\",1]'",[388,2608,660],{"class":397},[388,2610,688],{"class":414},[367,2612],{},[370,2614,2616],{"id":2615},"implementing-a-custom-adapter","Implementing a Custom Adapter",[379,2618,2621],{"className":381,"code":2619,"filename":2620,"language":383,"meta":384,"style":384},"import 'package:qora/qora.dart';\n\nclass MyAdapter implements StorageAdapter {\n  @override\n  Future\u003Cvoid> init() async {\n    // Open database / file\n  }\n\n  @override\n  Future\u003CString?> read(String key) async {\n    // Return stored value or null\n  }\n\n  @override\n  Future\u003Cvoid> write(String key, String value) async {\n    // Persist value under key\n  }\n\n  @override\n  Future\u003Cvoid> delete(String key) async {\n    // Remove entry, no-op if absent\n  }\n\n  @override\n  Future\u003CList\u003CString>> keys() async {\n    // Return all stored keys\n  }\n\n  @override\n  Future\u003Cvoid> clear() async {\n    // Remove all entries\n  }\n\n  @override\n  Future\u003Cvoid> dispose() async {\n    // Release resources\n  }\n}\n","my_adapter.dart",[351,2622,2623,2633,2637,2650,2655,2675,2680,2685,2689,2693,2716,2721,2725,2730,2735,2765,2771,2776,2781,2786,2809,2815,2820,2825,2830,2853,2859,2864,2869,2874,2893,2899,2904,2909,2914,2933,2939,2944],{"__ignoreMap":384},[388,2624,2625,2628,2631],{"class":390,"line":391},[388,2626,2627],{"class":442},"import",[388,2629,2630],{"class":913}," 'package:qora/qora.dart'",[388,2632,688],{"class":414},[388,2634,2635],{"class":390,"line":401},[388,2636,928],{"emptyLinePlaceholder":927},[388,2638,2639,2641,2644,2646,2648],{"class":390,"line":418},[388,2640,1830],{"class":414},[388,2642,2643],{"class":394}," MyAdapter",[388,2645,2426],{"class":414},[388,2647,408],{"class":394},[388,2649,737],{"class":397},[388,2651,2652],{"class":390,"line":451},[388,2653,2654],{"class":404},"  @override\n",[388,2656,2657,2659,2661,2663,2665,2667,2670,2673],{"class":390,"line":465},[388,2658,2162],{"class":394},[388,2660,713],{"class":397},[388,2662,706],{"class":404},[388,2664,1100],{"class":397},[388,2666,1234],{"class":709},[388,2668,2669],{"class":397},"() ",[388,2671,2672],{"class":1226},"async",[388,2674,737],{"class":397},[388,2676,2677],{"class":390,"line":478},[388,2678,2679],{"class":1279},"    // Open database / file\n",[388,2681,2682],{"class":390,"line":675},[388,2683,2684],{"class":397},"  }\n",[388,2686,2687],{"class":390,"line":683},[388,2688,928],{"emptyLinePlaceholder":927},[388,2690,2691],{"class":390,"line":1002},[388,2692,2654],{"class":404},[388,2694,2695,2697,2699,2701,2703,2705,2707,2709,2712,2714],{"class":390,"line":1053},[388,2696,2162],{"class":394},[388,2698,713],{"class":397},[388,2700,1945],{"class":394},[388,2702,2185],{"class":397},[388,2704,2188],{"class":709},[388,2706,1287],{"class":397},[388,2708,1945],{"class":394},[388,2710,2711],{"class":397}," key) ",[388,2713,2672],{"class":1226},[388,2715,737],{"class":397},[388,2717,2718],{"class":390,"line":1060},[388,2719,2720],{"class":1279},"    // Return stored value or null\n",[388,2722,2723],{"class":390,"line":1072},[388,2724,2684],{"class":397},[388,2726,2728],{"class":390,"line":2727},13,[388,2729,928],{"emptyLinePlaceholder":927},[388,2731,2733],{"class":390,"line":2732},14,[388,2734,2654],{"class":404},[388,2736,2738,2740,2742,2744,2746,2748,2750,2752,2754,2756,2758,2761,2763],{"class":390,"line":2737},15,[388,2739,2162],{"class":394},[388,2741,713],{"class":397},[388,2743,706],{"class":404},[388,2745,1100],{"class":397},[388,2747,2210],{"class":709},[388,2749,1287],{"class":397},[388,2751,1945],{"class":394},[388,2753,1330],{"class":397},[388,2755,734],{"class":414},[388,2757,2221],{"class":394},[388,2759,2760],{"class":397}," value) ",[388,2762,2672],{"class":1226},[388,2764,737],{"class":397},[388,2766,2768],{"class":390,"line":2767},16,[388,2769,2770],{"class":1279},"    // Persist value under key\n",[388,2772,2774],{"class":390,"line":2773},17,[388,2775,2684],{"class":397},[388,2777,2779],{"class":390,"line":2778},18,[388,2780,928],{"emptyLinePlaceholder":927},[388,2782,2784],{"class":390,"line":2783},19,[388,2785,2654],{"class":404},[388,2787,2789,2791,2793,2795,2797,2799,2801,2803,2805,2807],{"class":390,"line":2788},20,[388,2790,2162],{"class":394},[388,2792,713],{"class":397},[388,2794,706],{"class":404},[388,2796,1100],{"class":397},[388,2798,2239],{"class":709},[388,2800,1287],{"class":397},[388,2802,1945],{"class":394},[388,2804,2711],{"class":397},[388,2806,2672],{"class":1226},[388,2808,737],{"class":397},[388,2810,2812],{"class":390,"line":2811},21,[388,2813,2814],{"class":1279},"    // Remove entry, no-op if absent\n",[388,2816,2818],{"class":390,"line":2817},22,[388,2819,2684],{"class":397},[388,2821,2823],{"class":390,"line":2822},23,[388,2824,928],{"emptyLinePlaceholder":927},[388,2826,2828],{"class":390,"line":2827},24,[388,2829,2654],{"class":404},[388,2831,2833,2835,2837,2839,2841,2843,2845,2847,2849,2851],{"class":390,"line":2832},25,[388,2834,2162],{"class":394},[388,2836,713],{"class":397},[388,2838,941],{"class":394},[388,2840,713],{"class":397},[388,2842,1945],{"class":394},[388,2844,2262],{"class":397},[388,2846,2265],{"class":709},[388,2848,2669],{"class":397},[388,2850,2672],{"class":1226},[388,2852,737],{"class":397},[388,2854,2856],{"class":390,"line":2855},26,[388,2857,2858],{"class":1279},"    // Return all stored keys\n",[388,2860,2862],{"class":390,"line":2861},27,[388,2863,2684],{"class":397},[388,2865,2867],{"class":390,"line":2866},28,[388,2868,928],{"emptyLinePlaceholder":927},[388,2870,2872],{"class":390,"line":2871},29,[388,2873,2654],{"class":404},[388,2875,2877,2879,2881,2883,2885,2887,2889,2891],{"class":390,"line":2876},30,[388,2878,2162],{"class":394},[388,2880,713],{"class":397},[388,2882,706],{"class":404},[388,2884,1100],{"class":397},[388,2886,1619],{"class":709},[388,2888,2669],{"class":397},[388,2890,2672],{"class":1226},[388,2892,737],{"class":397},[388,2894,2896],{"class":390,"line":2895},31,[388,2897,2898],{"class":1279},"    // Remove all entries\n",[388,2900,2902],{"class":390,"line":2901},32,[388,2903,2684],{"class":397},[388,2905,2907],{"class":390,"line":2906},33,[388,2908,928],{"emptyLinePlaceholder":927},[388,2910,2912],{"class":390,"line":2911},34,[388,2913,2654],{"class":404},[388,2915,2917,2919,2921,2923,2925,2927,2929,2931],{"class":390,"line":2916},35,[388,2918,2162],{"class":394},[388,2920,713],{"class":397},[388,2922,706],{"class":404},[388,2924,1100],{"class":397},[388,2926,2298],{"class":709},[388,2928,2669],{"class":397},[388,2930,2672],{"class":1226},[388,2932,737],{"class":397},[388,2934,2936],{"class":390,"line":2935},36,[388,2937,2938],{"class":1279},"    // Release resources\n",[388,2940,2942],{"class":390,"line":2941},37,[388,2943,2684],{"class":397},[388,2945,2947],{"class":390,"line":2946},38,[388,2948,1899],{"class":397},[367,2950],{},[370,2952,2954],{"id":2953},"storage-eviction-reference","Storage Eviction Reference",[483,2956,2957,2971],{},[486,2958,2959],{},[489,2960,2961,2964,2967],{},[492,2962,2963],{},"Operation",[492,2965,2966],{},"In-memory cache",[492,2968,2969],{},[351,2970,1111],{},[499,2972,2973,2988,3001,3015,3025,3036,3046],{},[489,2974,2975,2980,2983],{},[504,2976,2977],{},[351,2978,2979],{},"invalidate(key)",[504,2981,2982],{},"Marks stale",[504,2984,2985],{},[810,2986,2987],{},"Untouched",[489,2989,2990,2995,2998],{},[504,2991,2992],{},[351,2993,2994],{},"removeQuery(key)",[504,2996,2997],{},"Removed",[504,2999,3000],{},"Deleted",[489,3002,3003,3008,3011],{},[504,3004,3005],{},[351,3006,3007],{},"clearCache()",[504,3009,3010],{},"Cleared",[504,3012,3013],{},[810,3014,2987],{},[489,3016,3017,3021,3023],{},[504,3018,3019],{},[351,3020,1538],{},[504,3022,3010],{},[504,3024,3010],{},[489,3026,3027,3032,3034],{},[504,3028,3029],{},[351,3030,3031],{},"evictFromStorage(key)",[504,3033,2987],{},[504,3035,3000],{},[489,3037,3038,3042,3044],{},[504,3039,3040],{},[351,3041,1630],{},[504,3043,2987],{},[504,3045,3010],{},[489,3047,3048,3053,3055],{},[504,3049,3050],{},[351,3051,3052],{},"persistQuery(key)",[504,3054,2987],{},[504,3056,3057],{},"Written",[367,3059],{},[370,3061,3063],{"id":3062},"related","Related",[818,3065,3066,3071,3078],{},[821,3067,3068,3070],{},[361,3069,364],{"href":363},": step-by-step walkthrough",[821,3072,3073,3077],{},[361,3074,3076],{"href":3075},"./qora-client","QoraClient API",": base client reference",[821,3079,3080,3083,3084,1123,3086,3089],{},[361,3081,215],{"href":3082},"./qora-options",": ",[351,3085,1145],{},[351,3087,3088],{},"gcTime",", and other per-query settings",[3091,3092,3093],"style",{},"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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .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}",{"title":384,"searchDepth":401,"depth":401,"links":3095},[3096,3110,3111,3112,3113,3114,3115],{"id":372,"depth":401,"text":229,"children":3097},[3098,3099,3100,3101,3102,3103,3104,3106,3108],{"id":376,"depth":418,"text":377},{"id":693,"depth":418,"text":696},{"id":1081,"depth":418,"text":1081},{"id":1298,"depth":418,"text":1301},{"id":1428,"depth":418,"text":1431},{"id":1507,"depth":418,"text":1510},{"id":1551,"depth":418,"text":3105},"removeQuery (override)",{"id":1616,"depth":418,"text":3107},"clear (override)",{"id":1657,"depth":418,"text":3109},"hydrateQuery (from QoraClient)",{"id":1819,"depth":401,"text":1820},{"id":2137,"depth":401,"text":1111},{"id":2411,"depth":401,"text":2412},{"id":2615,"depth":401,"text":2616},{"id":2953,"depth":401,"text":2954},{"id":3062,"depth":401,"text":3063},"A QoraClient subclass that persists query results to a StorageAdapter and restores them on startup via hydrate().","md",null,{},{"icon":156},{"title":229,"description":3116},"SGqaiYe5pbWj9E39Mf9Zth3qQVfl6XISg-46RgIhKKs",[3124,3126],{"title":225,"path":226,"stem":227,"description":3125,"icon":85,"children":-1},"Complete API reference for MutationController, MutationState, MutationOptions, MutationUpdate, and mutation observability on QoraClient.",{"title":233,"path":234,"stem":235,"description":3127,"icon":121,"children":-1},"Full API reference for InfiniteData, InfiniteQueryState, InfiniteQueryOptions, InfiniteQueryObserver, InfiniteQueryBuilder, InfiniteQueryController, and the QoraClient infinite-query methods.",1794040401098]