[{"data":1,"prerenderedAt":3135},["ShallowReactive",2],{"navigation_docs_fr":3,"-fr-api-reference-persist-qora-client":342,"-fr-api-reference-persist-qora-client-surround":3130},[4,45,91,137,195,236,257,291,327],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":44},"Prise en main","i-lucide-rocket","/fr/getting-started","fr/01.getting-started",[10,15,20,24,29,34,39],{"title":11,"path":12,"stem":13,"icon":14},"Qu'est-ce que Qora ?","/fr/getting-started/what-is-qora","fr/01.getting-started/2.what-is-qora","i-lucide-info",{"title":16,"path":17,"stem":18,"icon":19},"Installation","/fr/getting-started/installation","fr/01.getting-started/3.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":6},"Démarrage rapide","/fr/getting-started/quick-start","fr/01.getting-started/4.quick-start",{"title":25,"path":26,"stem":27,"icon":28},"Comparaison","/fr/getting-started/comparison","fr/01.getting-started/5.comparison","i-lucide-scale",{"title":30,"path":31,"stem":32,"icon":33},"Venant de TanStack Query","/fr/getting-started/coming-from-tanstack-query","fr/01.getting-started/6.coming-from-tanstack-query","i-lucide-arrow-left-right",{"title":35,"path":36,"stem":37,"icon":38},"Migrer depuis d'Autres Librairies","/fr/getting-started/migrating-from-other-libraries","fr/01.getting-started/7.migrating-from-other-libraries","i-lucide-arrow-right-left",{"title":40,"path":41,"stem":42,"icon":43},"Assistants IA","/fr/getting-started/ai-assistants","fr/01.getting-started/8.ai-assistants","i-lucide-sparkles",false,{"title":46,"icon":47,"path":48,"stem":49,"children":50,"page":44},"Concepts clés","i-lucide-book-open","/fr/core-concepts","fr/02.core-concepts",[51,56,61,66,71,76,81,86],{"title":52,"path":53,"stem":54,"icon":55},"Requêtes","/fr/core-concepts/queries","fr/02.core-concepts/1.queries","i-lucide-database",{"title":57,"path":58,"stem":59,"icon":60},"Clés de requête","/fr/core-concepts/query-keys","fr/02.core-concepts/2.query-keys","i-lucide-key-round",{"title":62,"path":63,"stem":64,"icon":65},"États des requêtes","/fr/core-concepts/query-states","fr/02.core-concepts/3.query-states","i-lucide-activity",{"title":67,"path":68,"stem":69,"icon":70},"Cache","/fr/core-concepts/caching","fr/02.core-concepts/4.caching","i-lucide-layers-3",{"title":72,"path":73,"stem":74,"icon":75},"Stale-While-Revalidate","/fr/core-concepts/stale-while-revalidate","fr/02.core-concepts/5.stale-while-revalidate","i-lucide-timer-reset",{"title":77,"path":78,"stem":79,"icon":80},"Déduplication","/fr/core-concepts/deduplication","fr/02.core-concepts/6.deduplication","i-lucide-copy-minus",{"title":82,"path":83,"stem":84,"icon":85},"Mutations et invalidation","/fr/core-concepts/mutations","fr/02.core-concepts/7.mutations","i-lucide-pencil-line",{"title":87,"path":88,"stem":89,"icon":90},"Hors-ligne et réseau","/fr/core-concepts/offline","fr/02.core-concepts/8.offline","i-lucide-wifi-off",{"title":92,"icon":93,"path":94,"stem":95,"children":96,"page":44},"Usage avec Flutter","i-lucide-smartphone","/fr/flutter-integration","fr/03.flutter-integration",[97,102,107,112,117,122,127,132],{"title":98,"path":99,"stem":100,"icon":101},"Configuration","/fr/flutter-integration/setup","fr/03.flutter-integration/1.setup","i-lucide-wrench",{"title":103,"path":104,"stem":105,"icon":106},"QoraScope","/fr/flutter-integration/qora-scope","fr/03.flutter-integration/2.qora-scope","i-lucide-share-2",{"title":108,"path":109,"stem":110,"icon":111},"QoraBuilder","/fr/flutter-integration/qora-builder","fr/03.flutter-integration/3.qora-builder","i-lucide-blocks",{"title":113,"path":114,"stem":115,"icon":116},"QoraMutationBuilder","/fr/flutter-integration/qora-mutation-builder","fr/03.flutter-integration/4.qora-mutation-builder","i-lucide-pencil",{"title":118,"path":119,"stem":120,"icon":121},"InfiniteQueryBuilder","/fr/flutter-integration/infinite-query-builder","fr/03.flutter-integration/5.infinite-query-builder","i-lucide-infinity",{"title":123,"path":124,"stem":125,"icon":126},"Hooks (flutter_hooks)","/fr/flutter-integration/hooks","fr/03.flutter-integration/6.hooks","i-lucide-anchor",{"title":128,"path":129,"stem":130,"icon":131},"Widgets de statut réseau","/fr/flutter-integration/network-status","fr/03.flutter-integration/7.network-status","i-lucide-wifi",{"title":133,"path":134,"stem":135,"icon":136},"Bonnes pratiques","/fr/flutter-integration/best-practices","fr/03.flutter-integration/8.best-practices","i-lucide-badge-check",{"title":138,"icon":139,"path":140,"stem":141,"children":142,"page":44},"Guides Pratiques","i-lucide-chef-hat","/fr/recipes","fr/04.recipes",[143,147,152,157,162,166,171,176,181,186,191],{"title":144,"path":145,"stem":146,"icon":85},"Mutations","/fr/recipes/mutations","fr/04.recipes/02.mutations",{"title":148,"path":149,"stem":150,"icon":151},"Mises à jour optimistes","/fr/recipes/optimistic-updates","fr/04.recipes/03.optimistic-updates","i-lucide-zap",{"title":153,"path":154,"stem":155,"icon":156},"Persistance","/fr/recipes/persistence","fr/04.recipes/04.persistence","i-lucide-hard-drive",{"title":158,"path":159,"stem":160,"icon":161},"Réseau adaptatif","/fr/recipes/network-aware","fr/04.recipes/05.network-aware","i-lucide-signal",{"title":163,"path":164,"stem":165,"icon":121},"Requêtes infinies","/fr/recipes/infinite-queries","fr/04.recipes/06.infinite-queries",{"title":167,"path":168,"stem":169,"icon":170},"Requêtes dépendantes","/fr/recipes/dependent-queries","fr/04.recipes/07.dependent-queries","i-lucide-link-2",{"title":172,"path":173,"stem":174,"icon":175},"Annulation","/fr/recipes/cancel-token","fr/04.recipes/08.cancel-token","i-lucide-circle-slash",{"title":177,"path":178,"stem":179,"icon":180},"Hydratation SSR","/fr/recipes/ssr-hydration","fr/04.recipes/09.ssr-hydration","i-lucide-server",{"title":182,"path":183,"stem":184,"icon":185},"Gestion des erreurs","/fr/recipes/error-handling","fr/04.recipes/10.error-handling","i-lucide-shield-alert",{"title":187,"path":188,"stem":189,"icon":190},"Tests","/fr/recipes/testing","fr/04.recipes/11.testing","i-lucide-flask-conical",{"title":192,"path":193,"stem":194},"Prefetch au Niveau des Routes","/fr/recipes/prefetch","fr/04.recipes/12.prefetch",{"title":196,"icon":197,"path":198,"stem":199,"children":200,"page":44},"Référence de l'API","i-lucide-file-code","/fr/api-reference","fr/05.api-reference",[201,206,210,214,219,224,228,232],{"title":202,"path":203,"stem":204,"icon":205},"QoraClient","/fr/api-reference/qora-client","fr/05.api-reference/1.qora-client","i-lucide-cpu",{"title":207,"path":208,"stem":209,"icon":60},"QoraKey","/fr/api-reference/qora-key","fr/05.api-reference/2.qora-key",{"title":211,"path":212,"stem":213,"icon":65},"QoraState","/fr/api-reference/qora-state","fr/05.api-reference/3.qora-state",{"title":215,"path":216,"stem":217,"icon":218},"QoraOptions","/fr/api-reference/qora-options","fr/05.api-reference/4.qora-options","i-lucide-sliders-horizontal",{"title":220,"path":221,"stem":222,"icon":223},"QoraClientConfig","/fr/api-reference/qora-client-config","fr/05.api-reference/5.qora-client-config","i-lucide-settings-2",{"title":225,"path":226,"stem":227,"icon":85},"API Mutation","/fr/api-reference/qora-mutation","fr/05.api-reference/6.qora-mutation",{"title":229,"path":230,"stem":231,"icon":156},"PersistQoraClient","/fr/api-reference/persist-qora-client","fr/05.api-reference/7.persist-qora-client",{"title":233,"path":234,"stem":235,"icon":121},"Requête infinie","/fr/api-reference/infinite-query","fr/05.api-reference/8.infinite-query",{"title":237,"icon":238,"path":239,"stem":240,"children":241,"page":44},"Outils de debug","i-lucide-bug","/fr/devtools","fr/06.devtools",[242,247,252],{"title":243,"path":244,"stem":245,"icon":246},"Vue d'ensemble","/fr/devtools/overview","fr/06.devtools/1.overview","i-lucide-layout-dashboard",{"title":248,"path":249,"stem":250,"icon":251},"Overlay intégré","/fr/devtools/overlay","fr/06.devtools/2.overlay","i-lucide-layers",{"title":253,"path":254,"stem":255,"icon":256},"Sérialisation des données","/fr/devtools/data-display","fr/06.devtools/4.data-display","i-lucide-eye",{"title":258,"icon":259,"path":260,"stem":261,"children":262,"page":44},"Intégrations tierces","i-lucide-puzzle","/fr/third-party","fr/07.third-party",[263,268,272,277,282,286],{"title":264,"path":265,"stem":266,"icon":267},"Avec Provider","/fr/third-party/with-provider","fr/07.third-party/1.with-provider","i-lucide-plug",{"title":269,"path":270,"stem":271,"icon":111},"Avec BLoC","/fr/third-party/with-bloc","fr/07.third-party/2.with-bloc",{"title":273,"path":274,"stem":275,"icon":276},"Avec Riverpod","/fr/third-party/with-riverpod","fr/07.third-party/3.with-riverpod","i-lucide-droplets",{"title":278,"path":279,"stem":280,"icon":281},"Avec RxDart","/fr/third-party/with-rxdart","fr/07.third-party/4.with-rxdart","i-lucide-git-branch",{"title":283,"path":284,"stem":285},"Avec Dio","/fr/third-party/with-dio","fr/07.third-party/5.with-dio",{"title":287,"path":288,"stem":289,"icon":290},"Avec GraphQL","/fr/third-party/with-graphql","fr/07.third-party/6.with-graphql","i-lucide-binary",{"title":292,"icon":190,"path":293,"stem":294,"children":295,"page":44},"Exemples","/fr/examples","fr/08.examples",[296,301,305,310,314,318,322],{"title":297,"path":298,"stem":299,"icon":300},"Étude de cas : Liste et détail utilisateur","/fr/examples/basic-query","fr/08.examples/1.basic-query","i-lucide-play-circle",{"title":302,"path":303,"stem":304,"icon":151},"Étude de cas : Mutations optimistes et rollback","/fr/examples/mutations-optimistic","fr/08.examples/2.mutations-optimistic",{"title":306,"path":307,"stem":308,"icon":309},"Étude de cas : Feed à défilement infini","/fr/examples/infinite-scroll","fr/08.examples/3.infinite-scroll","i-lucide-scroll",{"title":311,"path":312,"stem":313,"icon":90},"Étude de cas : Application Todo offline-first","/fr/examples/offline-first","fr/08.examples/4.offline-first",{"title":315,"path":316,"stem":317,"icon":161},"Étude de cas : Conscience réseau","/fr/examples/network-awareness","fr/08.examples/5.network-awareness",{"title":319,"path":320,"stem":321,"icon":126},"Étude de cas : Intégration des hooks","/fr/examples/hooks-integration","fr/08.examples/6.hooks-integration",{"title":323,"path":324,"stem":325,"icon":326},"Étude de cas : Application Todo complète","/fr/examples/complete-todo-app","fr/08.examples/7.complete-todo-app","i-lucide-check-square",{"title":328,"icon":329,"path":330,"stem":331,"children":332,"page":44},"Aide","i-lucide-life-buoy","/fr/help","fr/09.help",[333,338],{"title":334,"path":335,"stem":336,"icon":337},"FAQ","/fr/help/faq","fr/09.help/1.faq","i-lucide-circle-help",{"title":339,"path":340,"stem":341,"icon":101},"Dépannage","/fr/help/troubleshooting","fr/09.help/2.troubleshooting",{"id":343,"title":229,"body":344,"description":3123,"extension":3124,"links":3125,"meta":3126,"navigation":3127,"path":230,"seo":3128,"stem":231,"__hash__":3129},"docs_fr/fr/05.api-reference/7.persist-qora-client.md",{"type":345,"value":346,"toc":3101},"minimark",[347,357,366,369,373,378,482,561,689,691,697,754,763,817,842,1077,1079,1084,1106,1113,1147,1152,1211,1218,1295,1297,1303,1345,1358,1367,1425,1427,1433,1457,1470,1477,1504,1506,1512,1531,1543,1548,1550,1556,1568,1613,1615,1621,1632,1654,1656,1665,1707,1724,1730,1815,1817,1823,1902,1907,1977,1987,2135,2137,2142,2311,2317,2412,2414,2420,2437,2449,2452,2618,2620,2624,2956,2958,2962,3064,3066,3070,3097],[348,349,350,353,354,356],"p",{},[351,352,229],"code",{}," étend ",[351,355,202],{},". Toutes les méthodes du client de base fonctionnent sans modification. Cette page documente l'API de persistance supplémentaire.",[348,358,359,360,365],{},"Voir le ",[361,362,364],"a",{"href":363},"../recipes/persistence","guide de persistance"," pour un walkthrough avec des exemples complets.",[367,368],"hr",{},[370,371,229],"h2",{"id":372},"persistqoraclient",[374,375,377],"h3",{"id":376},"constructeur","Constructeur",[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",{},"Paramètre",[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],{},"Le backend de stockage. Doit être initialisé via ",[351,513,514],{},"StorageAdapter.init()"," avant d'appeler ",[351,517,518],{},"hydrate()",".",[489,521,522,527],{},[504,523,524],{},[351,525,526],{},"persistDuration",[504,528,529,530,533,534,537],{},"TTL par défaut pour les entrées persistées. Si ",[351,531,532],{},"null",", les entrées sont persistées indéfiniment. Passer ",[351,535,536],{},"Duration.zero"," pour désactiver la persistance (expire immédiatement).",[489,539,540,545],{},[504,541,542],{},[351,543,544],{},"config",[504,546,547,548,519],{},"Transmis à ",[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],{},"Enregistre un ",[351,758,759],{},"QoraSerializer"," pour le 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],{},"Fournit les convertisseurs ",[351,786,787],{},"toJson","/",[351,790,791],{},"fromJson"," pour ",[351,794,716],{},[489,796,797,802],{},[504,798,799],{},[351,800,801],{},"name",[504,803,804,805,808,809],{},"L'identifiant chaîne stable stocké comme discriminant de type sur disque. Par défaut ",[351,806,807],{},"T.toString()",". ",[810,811,812,813,816],"strong",{},"Passer une valeur explicite sur Flutter Web ou quand ",[351,814,815],{},"--obfuscate"," est actif.",[818,819,820,833],"ul",{},[821,822,823,824,826,827,829,830,832],"li",{},"Appeler ",[351,825,696],{}," deux fois pour le même ",[351,828,716],{}," ou le même ",[351,831,801],{}," remplace l'entrée précédente.",[821,834,835,836,839,840,519],{},"Doit être appelé ",[810,837,838],{},"avant"," ",[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],{},"Charge toutes les entrées persistées valides depuis ",[351,1110,1111],{},"StorageAdapter"," dans une file d'hydratation en attente.",[348,1114,1115,1116,1119,1120,1123,1124,1123,1127,1130,1131,1134,1135,1138,1139,1142,1143,1146],{},"Les entrées sont injectées dans le cache typé ",[810,1117,1118],{},"paresseusement"," : au premier appel à ",[351,1121,1122],{},"fetchQuery\u003CT>",", ",[351,1125,1126],{},"watchQuery\u003CT>",[351,1128,1129],{},"getQueryData\u003CT>",", etc., pour cette clé. L'état ",[351,1132,1133],{},"Success"," restauré porte le ",[351,1136,1137],{},"persistedAt"," original comme ",[351,1140,1141],{},"updatedAt",", de sorte que ",[351,1144,1145],{},"staleTime"," évalue correctement la fraîcheur.",[348,1148,1149],{},[810,1150,1151],{},"Comportement par entrée :",[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],{},"Échec de décodage JSON",[504,1172,1173],{},"Supprimer du stockage, ignorer",[489,1175,1176,1179],{},[504,1177,1178],{},"TTL expiré",[504,1180,1173],{},[489,1182,1183,1186],{},[504,1184,1185],{},"Aucun sérialiseur enregistré pour le type",[504,1187,1188,1189,1192],{},"Journaliser (si ",[351,1190,1191],{},"debugMode","), ignorer",[489,1194,1195,1200],{},[504,1196,1197,1199],{},[351,1198,791],{}," lève",[504,1201,1202],{},"Supprimer du stockage, journaliser, ignorer",[489,1204,1205,1208],{},[504,1206,1207],{},"Valide",[504,1209,1210],{},"Mettre en file dans la map d'hydratation en attente",[348,1212,1213,1214,1217],{},"Appeler une seule fois au démarrage, après l'enregistrement de tous les sérialiseurs et avant ",[351,1215,1216],{},"runApp"," :",[379,1219,1221],{"className":381,"code":1220,"filename":564,"language":383,"meta":384,"style":384},"await storage.init();\nclient.registerSerializer\u003CUser>(...);\nawait client.hydrate(); // ← avant runApp\nrunApp(...);\n",[351,1222,1223,1240,1262,1282],{"__ignoreMap":384},[388,1224,1225,1229,1231,1233,1236,1238],{"class":390,"line":391},[388,1226,1228],{"class":1227},"s7zQu","await",[388,1230,411],{"class":397},[388,1232,519],{"class":414},[388,1234,1235],{"class":709},"init",[388,1237,595],{"class":397},[388,1239,688],{"class":414},[388,1241,1242,1244,1246,1248,1250,1252,1255,1258,1260],{"class":390,"line":401},[388,1243,851],{"class":397},[388,1245,519],{"class":414},[388,1247,696],{"class":709},[388,1249,713],{"class":397},[388,1251,860],{"class":394},[388,1253,1254],{"class":397},">(",[388,1256,1257],{"class":414},"...",[388,1259,446],{"class":397},[388,1261,688],{"class":414},[388,1263,1264,1266,1269,1271,1273,1275,1278],{"class":390,"line":418},[388,1265,1228],{"class":1227},[388,1267,1268],{"class":397}," client",[388,1270,519],{"class":414},[388,1272,1081],{"class":709},[388,1274,595],{"class":397},[388,1276,1277],{"class":414},";",[388,1279,1281],{"class":1280},"sHwdD"," // ← avant runApp\n",[388,1283,1284,1286,1289,1291,1293],{"class":390,"line":451},[388,1285,1216],{"class":709},[388,1287,1288],{"class":397},"(",[388,1290,1257],{"class":414},[388,1292,446],{"class":397},[388,1294,688],{"class":414},[367,1296],{},[374,1298,1300],{"id":1299},"persistquery",[351,1301,1302],{},"persistQuery",[379,1304,1306],{"className":381,"code":1305,"language":383,"meta":384,"style":384},"Future\u003Cvoid> persistQuery\u003CT>(Object key, {Duration? ttl})\n",[351,1307,1308],{"__ignoreMap":384},[388,1309,1310,1312,1314,1316,1318,1320,1322,1324,1326,1329,1332,1334,1337,1340,1342],{"class":390,"line":391},[388,1311,1093],{"class":394},[388,1313,713],{"class":397},[388,1315,706],{"class":404},[388,1317,1100],{"class":397},[388,1319,1302],{"class":709},[388,1321,713],{"class":397},[388,1323,716],{"class":394},[388,1325,1254],{"class":397},[388,1327,1328],{"class":394},"Object",[388,1330,1331],{"class":397}," key",[388,1333,734],{"class":414},[388,1335,1336],{"class":397}," {",[388,1338,1339],{"class":394},"Duration",[388,1341,457],{"class":414},[388,1343,1344],{"class":397}," ttl})\n",[348,1346,1347,1348,1351,1352,1354,1355,1357],{},"Force la persistance de la valeur actuellement en cache pour ",[351,1349,1350],{},"key",". Sans effet si la requête n'est pas à l'état ",[351,1353,1133],{}," ou si ",[351,1356,716],{}," n'a pas de sérialiseur enregistré.",[348,1359,1360,1363,1364,1366],{},[351,1361,1362],{},"ttl"," remplace ",[351,1365,526],{}," pour cette entrée spécifique.",[379,1368,1370],{"className":381,"code":1369,"filename":564,"language":383,"meta":384,"style":384},"// Persister avec un TTL court (ex. pour les données sensibles)\nawait client.persistQuery\u003CUser>(['users', userId], ttl: const Duration(hours: 1));\n",[351,1371,1372,1377],{"__ignoreMap":384},[388,1373,1374],{"class":390,"line":391},[388,1375,1376],{"class":1280},"// Persister avec un TTL court (ex. pour les données sensibles)\n",[388,1378,1379,1381,1383,1385,1387,1389,1391,1394,1397,1399,1402,1404,1407,1409,1411,1413,1416,1418,1421,1423],{"class":390,"line":401},[388,1380,1228],{"class":1227},[388,1382,1268],{"class":397},[388,1384,519],{"class":414},[388,1386,1302],{"class":709},[388,1388,713],{"class":397},[388,1390,860],{"class":394},[388,1392,1393],{"class":397},">([",[388,1395,1396],{"class":913},"'users'",[388,1398,734],{"class":414},[388,1400,1401],{"class":397}," userId]",[388,1403,734],{"class":414},[388,1405,1406],{"class":397}," ttl",[388,1408,439],{"class":414},[388,1410,430],{"class":404},[388,1412,433],{"class":394},[388,1414,1415],{"class":397},"(hours",[388,1417,439],{"class":414},[388,1419,1420],{"class":442}," 1",[388,1422,660],{"class":397},[388,1424,688],{"class":414},[367,1426],{},[374,1428,1430],{"id":1429},"evictfromstorage",[351,1431,1432],{},"evictFromStorage",[379,1434,1436],{"className":381,"code":1435,"language":383,"meta":384,"style":384},"Future\u003Cvoid> evictFromStorage(Object key)\n",[351,1437,1438],{"__ignoreMap":384},[388,1439,1440,1442,1444,1446,1448,1450,1452,1454],{"class":390,"line":391},[388,1441,1093],{"class":394},[388,1443,713],{"class":397},[388,1445,706],{"class":404},[388,1447,1100],{"class":397},[388,1449,1432],{"class":709},[388,1451,1288],{"class":397},[388,1453,1328],{"class":394},[388,1455,1456],{"class":397}," key)\n",[348,1458,1459,1460,1462,1463,1465,1466,1469],{},"Supprime l'entrée persistée pour ",[351,1461,1350],{}," du ",[351,1464,1111],{},". Le cache en mémoire ",[810,1467,1468],{},"n'est pas"," affecté.",[348,1471,1472,1473,1476],{},"Utiliser ",[351,1474,1475],{},"removeQuery"," pour supprimer à la fois du cache et du stockage simultanément.",[379,1478,1480],{"className":381,"code":1479,"filename":564,"language":383,"meta":384,"style":384},"await client.evictFromStorage(['users', userId]);\n",[351,1481,1482],{"__ignoreMap":384},[388,1483,1484,1486,1488,1490,1492,1495,1497,1499,1502],{"class":390,"line":391},[388,1485,1228],{"class":1227},[388,1487,1268],{"class":397},[388,1489,519],{"class":414},[388,1491,1432],{"class":709},[388,1493,1494],{"class":397},"([",[388,1496,1396],{"class":913},[388,1498,734],{"class":414},[388,1500,1501],{"class":397}," userId])",[388,1503,688],{"class":414},[367,1505],{},[374,1507,1509],{"id":1508},"clearstorage",[351,1510,1511],{},"clearStorage",[379,1513,1515],{"className":381,"code":1514,"language":383,"meta":384,"style":384},"Future\u003Cvoid> clearStorage()\n",[351,1516,1517],{"__ignoreMap":384},[388,1518,1519,1521,1523,1525,1527,1529],{"class":390,"line":391},[388,1520,1093],{"class":394},[388,1522,713],{"class":397},[388,1524,706],{"class":404},[388,1526,1100],{"class":397},[388,1528,1511],{"class":709},[388,1530,1105],{"class":397},[348,1532,1533,1534,1536,1537,1540,1541,1469],{},"Supprime toutes les entrées que Qora a écrites dans le ",[351,1535,1111],{},". Les clés que Qora n'a pas écrites (des réglages de l'app dans une box Hive partagée, par exemple) ne sont pas touchées ; appelez ",[351,1538,1539],{},"clear()"," sur l'adapter lui-même pour tout effacer. Le cache en mémoire ",[810,1542,1468],{},[348,1544,1472,1545,1547],{},[351,1546,1539],{}," pour vider à la fois le cache en mémoire et le stockage simultanément.",[367,1549],{},[374,1551,1553,1555],{"id":1552},"removequery-override",[351,1554,1475],{}," (override)",[348,1557,1558,1559,839,1562,1565,1566,519],{},"Appelle ",[351,1560,1561],{},"super.removeQuery(key)",[810,1563,1564],{},"et"," supprime l'entrée du ",[351,1567,1111],{},[379,1569,1571],{"className":381,"code":1570,"filename":564,"language":383,"meta":384,"style":384},"// À la suppression : retire du cache et du stockage\nawait api.deleteUser(userId);\nclient.removeQuery(['users', userId]);\n",[351,1572,1573,1578,1595],{"__ignoreMap":384},[388,1574,1575],{"class":390,"line":391},[388,1576,1577],{"class":1280},"// À la suppression : retire du cache et du stockage\n",[388,1579,1580,1582,1585,1587,1590,1593],{"class":390,"line":401},[388,1581,1228],{"class":1227},[388,1583,1584],{"class":397}," api",[388,1586,519],{"class":414},[388,1588,1589],{"class":709},"deleteUser",[388,1591,1592],{"class":397},"(userId)",[388,1594,688],{"class":414},[388,1596,1597,1599,1601,1603,1605,1607,1609,1611],{"class":390,"line":418},[388,1598,851],{"class":397},[388,1600,519],{"class":414},[388,1602,1475],{"class":709},[388,1604,1494],{"class":397},[388,1606,1396],{"class":913},[388,1608,734],{"class":414},[388,1610,1501],{"class":397},[388,1612,688],{"class":414},[367,1614],{},[374,1616,1618,1555],{"id":1617},"clear-override",[351,1619,1620],{},"clear",[348,1622,1558,1623,839,1626,1628,1629,519],{},[351,1624,1625],{},"super.clear()",[810,1627,1564],{}," appelle ",[351,1630,1631],{},"clearStorage()",[379,1633,1635],{"className":381,"code":1634,"filename":564,"language":383,"meta":384,"style":384},"// À la déconnexion : vide tout\nclient.clear();\n",[351,1636,1637,1642],{"__ignoreMap":384},[388,1638,1639],{"class":390,"line":391},[388,1640,1641],{"class":1280},"// À la déconnexion : vide tout\n",[388,1643,1644,1646,1648,1650,1652],{"class":390,"line":401},[388,1645,851],{"class":397},[388,1647,519],{"class":414},[388,1649,1620],{"class":709},[388,1651,595],{"class":397},[388,1653,688],{"class":414},[367,1655],{},[374,1657,1659,1662,1663,446],{"id":1658},"hydratequery-depuis-qoraclient",[351,1660,1661],{},"hydrateQuery"," (depuis ",[351,1664,202],{},[379,1666,1668],{"className":381,"code":1667,"language":383,"meta":384,"style":384},"void hydrateQuery\u003CT>(Object key, T data, {DateTime? updatedAt})\n",[351,1669,1670],{"__ignoreMap":384},[388,1671,1672,1674,1677,1679,1681,1683,1685,1687,1689,1692,1695,1697,1699,1702,1704],{"class":390,"line":391},[388,1673,706],{"class":404},[388,1675,1676],{"class":709}," hydrateQuery",[388,1678,713],{"class":397},[388,1680,716],{"class":394},[388,1682,1254],{"class":397},[388,1684,1328],{"class":394},[388,1686,1331],{"class":397},[388,1688,734],{"class":414},[388,1690,1691],{"class":394}," T",[388,1693,1694],{"class":397}," data",[388,1696,734],{"class":414},[388,1698,1336],{"class":397},[388,1700,1701],{"class":394},"DateTime",[388,1703,457],{"class":414},[388,1705,1706],{"class":397}," updatedAt})\n",[348,1708,1709,1710,1713,1714,1716,1717,1720,1721,519],{},"Pré-peuple le cache avec une valeur. Insère un état ",[351,1711,1712],{},"Success\u003CT>"," avec ",[351,1715,1141],{}," (par défaut ",[351,1718,1719],{},"DateTime.now()","). Sans effet si l'entrée est déjà dans un état non-",[351,1722,1723],{},"Initial",[348,1725,1726,1727,1729],{},"Utilisé en interne par ",[351,1728,229],{}," mais disponible pour les cas d'utilisation avancés (ex. pré-chargement depuis une source personnalisée).",[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,1661],{"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,1396],{"class":913},[388,1757,734],{"class":414},[388,1759,1401],{"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,1288],{"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",[351,1821,1822],{},"QoraSerializer\u003CT>",[379,1824,1826],{"className":381,"code":1825,"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,1827,1828,1843,1852,1872,1890,1897],{"__ignoreMap":384},[388,1829,1830,1833,1836,1838,1840],{"class":390,"line":391},[388,1831,1832],{"class":414},"class",[388,1834,1835],{"class":394}," QoraSerializer",[388,1837,713],{"class":397},[388,1839,716],{"class":394},[388,1841,1842],{"class":397},"> {\n",[388,1844,1845,1848,1850],{"class":390,"line":401},[388,1846,1847],{"class":404},"  const",[388,1849,1835],{"class":394},[388,1851,398],{"class":397},[388,1853,1854,1857,1860,1863,1865,1867,1870],{"class":390,"line":418},[388,1855,1856],{"class":404},"    required",[388,1858,1859],{"class":394}," dynamic",[388,1861,1862],{"class":394}," Function",[388,1864,1288],{"class":397},[388,1866,716],{"class":394},[388,1868,1869],{"class":397}," value) toJson",[388,1871,415],{"class":414},[388,1873,1874,1876,1878,1880,1882,1885,1888],{"class":390,"line":451},[388,1875,1856],{"class":404},[388,1877,1691],{"class":394},[388,1879,1862],{"class":394},[388,1881,1288],{"class":397},[388,1883,1884],{"class":394},"dynamic",[388,1886,1887],{"class":397}," json) fromJson",[388,1889,415],{"class":414},[388,1891,1892,1895],{"class":390,"line":465},[388,1893,1894],{"class":397},"  })",[388,1896,688],{"class":414},[388,1898,1899],{"class":390,"line":478},[388,1900,1901],{"class":397},"}\n",[348,1903,1904,1905,519],{},"Une paire de fonctions de conversion pour le type ",[351,1906,716],{},[483,1908,1909,1921],{},[486,1910,1911],{},[489,1912,1913,1916,1919],{},[492,1914,1915],{},"Propriété",[492,1917,1918],{},"Type",[492,1920,497],{},[499,1922,1923,1958],{},[489,1924,1925,1929,1934],{},[504,1926,1927],{},[351,1928,787],{},[504,1930,1931],{},[351,1932,1933],{},"dynamic Function(T)",[504,1935,1936,1937,1939,1940,1123,1943,1123,1945,1123,1948,1123,1951,1954,1955,1957],{},"Convertit ",[351,1938,716],{}," en une valeur encodable en JSON (",[351,1941,1942],{},"Map",[351,1944,941],{},[351,1946,1947],{},"String",[351,1949,1950],{},"num",[351,1952,1953],{},"bool"," ou ",[351,1956,532],{},").",[489,1959,1960,1964,1969],{},[504,1961,1962],{},[351,1963,791],{},[504,1965,1966],{},[351,1967,1968],{},"T Function(dynamic)",[504,1970,1971,1972,1974,1975,519],{},"Restaure ",[351,1973,716],{}," depuis la valeur précédemment produite par ",[351,1976,787],{},[348,1978,1979,1980,1982,1983,1986],{},"Les deux fonctions utilisent ",[351,1981,1884],{}," (pas ",[351,1984,1985],{},"Map\u003CString, dynamic>",") pour que les primitives, listes et maps soient toutes supportées.",[379,1988,1990],{"className":381,"code":1989,"filename":564,"language":383,"meta":384,"style":384},"// Objet\nfinal userSerializer = QoraSerializer\u003CUser>(\n  toJson: (u) => u.toJson(),       // retourne Map\u003CString, dynamic>\n  fromJson: User.fromJson,         // accepte Map\u003CString, dynamic>\n);\n\n// Primitive\nfinal intSerializer = QoraSerializer\u003Cint>(\n  toJson: (n) => n,                // retourne int directement\n  fromJson: (json) => json as int,\n);\n",[351,1991,1992,1997,2014,2038,2056,2062,2066,2071,2089,2108,2129],{"__ignoreMap":384},[388,1993,1994],{"class":390,"line":391},[388,1995,1996],{"class":1280},"// Objet\n",[388,1998,1999,2001,2004,2006,2008,2010,2012],{"class":390,"line":401},[388,2000,571],{"class":404},[388,2002,2003],{"class":397}," userSerializer ",[388,2005,427],{"class":414},[388,2007,1835],{"class":394},[388,2009,713],{"class":397},[388,2011,860],{"class":394},[388,2013,719],{"class":397},[388,2015,2016,2019,2021,2023,2025,2027,2029,2031,2033,2035],{"class":390,"line":418},[388,2017,2018],{"class":397},"  toJson",[388,2020,439],{"class":414},[388,2022,874],{"class":397},[388,2024,877],{"class":414},[388,2026,880],{"class":397},[388,2028,519],{"class":414},[388,2030,787],{"class":709},[388,2032,595],{"class":397},[388,2034,734],{"class":414},[388,2036,2037],{"class":1280},"       // retourne Map\u003CString, dynamic>\n",[388,2039,2040,2043,2045,2047,2049,2051,2053],{"class":390,"line":451},[388,2041,2042],{"class":397},"  fromJson",[388,2044,439],{"class":414},[388,2046,896],{"class":394},[388,2048,519],{"class":414},[388,2050,791],{"class":397},[388,2052,734],{"class":414},[388,2054,2055],{"class":1280},"         // accepte Map\u003CString, dynamic>\n",[388,2057,2058,2060],{"class":390,"line":465},[388,2059,446],{"class":397},[388,2061,688],{"class":414},[388,2063,2064],{"class":390,"line":478},[388,2065,928],{"emptyLinePlaceholder":927},[388,2067,2068],{"class":390,"line":675},[388,2069,2070],{"class":1280},"// Primitive\n",[388,2072,2073,2075,2078,2080,2082,2084,2087],{"class":390,"line":683},[388,2074,571],{"class":404},[388,2076,2077],{"class":397}," intSerializer ",[388,2079,427],{"class":414},[388,2081,1835],{"class":394},[388,2083,713],{"class":397},[388,2085,2086],{"class":394},"int",[388,2088,719],{"class":397},[388,2090,2091,2093,2095,2098,2100,2103,2105],{"class":390,"line":1002},[388,2092,2018],{"class":397},[388,2094,439],{"class":414},[388,2096,2097],{"class":397}," (n) ",[388,2099,877],{"class":414},[388,2101,2102],{"class":397}," n",[388,2104,734],{"class":414},[388,2106,2107],{"class":1280},"                // retourne int directement\n",[388,2109,2110,2112,2114,2117,2119,2122,2124,2127],{"class":390,"line":1053},[388,2111,2042],{"class":397},[388,2113,439],{"class":414},[388,2115,2116],{"class":397}," (json) ",[388,2118,877],{"class":414},[388,2120,2121],{"class":397}," json ",[388,2123,1018],{"class":414},[388,2125,2126],{"class":394}," int",[388,2128,415],{"class":414},[388,2130,2131,2133],{"class":390,"line":1060},[388,2132,446],{"class":397},[388,2134,688],{"class":414},[367,2136],{},[370,2138,2140],{"id":2139},"storageadapter",[351,2141,1111],{},[379,2143,2145],{"className":381,"code":2144,"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,2146,2147,2162,2179,2202,2231,2252,2274,2290,2307],{"__ignoreMap":384},[388,2148,2149,2152,2155,2158,2160],{"class":390,"line":391},[388,2150,2151],{"class":414},"abstract",[388,2153,2154],{"class":414}," interface",[388,2156,2157],{"class":414}," class",[388,2159,408],{"class":394},[388,2161,737],{"class":397},[388,2163,2164,2167,2169,2171,2173,2175,2177],{"class":390,"line":401},[388,2165,2166],{"class":394},"  Future",[388,2168,713],{"class":397},[388,2170,706],{"class":404},[388,2172,1100],{"class":397},[388,2174,1235],{"class":709},[388,2176,595],{"class":397},[388,2178,688],{"class":414},[388,2180,2181,2183,2185,2187,2190,2193,2195,2197,2200],{"class":390,"line":418},[388,2182,2166],{"class":394},[388,2184,713],{"class":397},[388,2186,1947],{"class":394},[388,2188,2189],{"class":397},"?> ",[388,2191,2192],{"class":709},"read",[388,2194,1288],{"class":397},[388,2196,1947],{"class":394},[388,2198,2199],{"class":397}," key)",[388,2201,688],{"class":414},[388,2203,2204,2206,2208,2210,2212,2215,2217,2219,2221,2223,2226,2229],{"class":390,"line":451},[388,2205,2166],{"class":394},[388,2207,713],{"class":397},[388,2209,706],{"class":404},[388,2211,1100],{"class":397},[388,2213,2214],{"class":709},"write",[388,2216,1288],{"class":397},[388,2218,1947],{"class":394},[388,2220,1331],{"class":397},[388,2222,734],{"class":414},[388,2224,2225],{"class":394}," String",[388,2227,2228],{"class":397}," value)",[388,2230,688],{"class":414},[388,2232,2233,2235,2237,2239,2241,2244,2246,2248,2250],{"class":390,"line":465},[388,2234,2166],{"class":394},[388,2236,713],{"class":397},[388,2238,706],{"class":404},[388,2240,1100],{"class":397},[388,2242,2243],{"class":709},"delete",[388,2245,1288],{"class":397},[388,2247,1947],{"class":394},[388,2249,2199],{"class":397},[388,2251,688],{"class":414},[388,2253,2254,2256,2258,2260,2262,2264,2267,2270,2272],{"class":390,"line":478},[388,2255,2166],{"class":394},[388,2257,713],{"class":397},[388,2259,941],{"class":394},[388,2261,713],{"class":397},[388,2263,1947],{"class":394},[388,2265,2266],{"class":397},">> ",[388,2268,2269],{"class":709},"keys",[388,2271,595],{"class":397},[388,2273,688],{"class":414},[388,2275,2276,2278,2280,2282,2284,2286,2288],{"class":390,"line":675},[388,2277,2166],{"class":394},[388,2279,713],{"class":397},[388,2281,706],{"class":404},[388,2283,1100],{"class":397},[388,2285,1620],{"class":709},[388,2287,595],{"class":397},[388,2289,688],{"class":414},[388,2291,2292,2294,2296,2298,2300,2303,2305],{"class":390,"line":683},[388,2293,2166],{"class":394},[388,2295,713],{"class":397},[388,2297,706],{"class":404},[388,2299,1100],{"class":397},[388,2301,2302],{"class":709},"dispose",[388,2304,595],{"class":397},[388,2306,688],{"class":414},[388,2308,2309],{"class":390,"line":1002},[388,2310,1901],{"class":397},[348,2312,2313,2314,2316],{},"Un contrat clé/valeur minimal. ",[351,2315,229],{}," gère toute la sérialisation ; les adaptateurs ne manipulent que des chaînes JSON opaques.",[483,2318,2319,2328],{},[486,2320,2321],{},[489,2322,2323,2326],{},[492,2324,2325],{},"Méthode",[492,2327,497],{},[499,2329,2330,2340,2356,2373,2383,2393,2402],{},[489,2331,2332,2337],{},[504,2333,2334],{},[351,2335,2336],{},"init()",[504,2338,2339],{},"Ouvre le backend. Doit être appelé et attendu avant toute autre méthode.",[489,2341,2342,2347],{},[504,2343,2344],{},[351,2345,2346],{},"read(key)",[504,2348,2349,2350,2352,2353,2355],{},"Retourne la valeur pour ",[351,2351,1350],{},", ou ",[351,2354,532],{}," si absente.",[489,2357,2358,2363],{},[504,2359,2360],{},[351,2361,2362],{},"write(key, value)",[504,2364,2365,2366,2369,2370,2372],{},"Persiste ",[351,2367,2368],{},"value"," sous ",[351,2371,1350],{},", écrasant toute valeur existante.",[489,2374,2375,2380],{},[504,2376,2377],{},[351,2378,2379],{},"delete(key)",[504,2381,2382],{},"Supprime l'entrée. Sans effet si absente.",[489,2384,2385,2390],{},[504,2386,2387],{},[351,2388,2389],{},"keys()",[504,2391,2392],{},"Retourne toutes les clés stockées. L'ordre n'est pas spécifié.",[489,2394,2395,2399],{},[504,2396,2397],{},[351,2398,1539],{},[504,2400,2401],{},"Supprime toutes les entrées.",[489,2403,2404,2409],{},[504,2405,2406],{},[351,2407,2408],{},"dispose()",[504,2410,2411],{},"Libère les ressources (handles de fichiers, connexions BD, etc.).",[367,2413],{},[370,2415,2417],{"id":2416},"inmemorystorageadapter",[351,2418,2419],{},"InMemoryStorageAdapter",[379,2421,2423],{"className":381,"code":2422,"language":383,"meta":384,"style":384},"class InMemoryStorageAdapter implements StorageAdapter\n",[351,2424,2425],{"__ignoreMap":384},[388,2426,2427,2429,2431,2434],{"class":390,"line":391},[388,2428,1832],{"class":414},[388,2430,592],{"class":394},[388,2432,2433],{"class":414}," implements",[388,2435,2436],{"class":394}," StorageAdapter\n",[348,2438,2439,2440,2442,2443,2445,2446],{},"Un adaptateur soutenu par une ",[351,2441,1942],{},". Toutes les opérations se complètent de façon synchrone (enveloppées dans des ",[351,2444,1093],{}," résolus). ",[810,2447,2448],{},"Les données sont perdues quand le processus se termine.",[348,2450,2451],{},"Utiliser pour les tests unitaires, les tests d'intégration et les environnements CI où aucun stockage réel n'est nécessaire.",[379,2453,2456],{"className":381,"code":2454,"filename":2455,"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(); // sans effet au premier lancement\n\n// ... exécuter des requêtes ...\n\n// Vérifier la persistance\nfinal keys = await adapter.keys();\nexpect(keys, contains('[\"users\",1]'));\n","test/persistence_test.dart",[351,2457,2458,2473,2488,2492,2512,2539,2556,2560,2565,2569,2574,2596],{"__ignoreMap":384},[388,2459,2460,2462,2465,2467,2469,2471],{"class":390,"line":391},[388,2461,571],{"class":404},[388,2463,2464],{"class":397}," adapter ",[388,2466,427],{"class":414},[388,2468,592],{"class":394},[388,2470,595],{"class":397},[388,2472,688],{"class":414},[388,2474,2475,2477,2480,2482,2484,2486],{"class":390,"line":401},[388,2476,1228],{"class":1227},[388,2478,2479],{"class":397}," adapter",[388,2481,519],{"class":414},[388,2483,1235],{"class":709},[388,2485,595],{"class":397},[388,2487,688],{"class":414},[388,2489,2490],{"class":390,"line":418},[388,2491,928],{"emptyLinePlaceholder":927},[388,2493,2494,2496,2498,2500,2502,2505,2507,2510],{"class":390,"line":451},[388,2495,571],{"class":404},[388,2497,574],{"class":397},[388,2499,427],{"class":414},[388,2501,579],{"class":394},[388,2503,2504],{"class":397},"(storage",[388,2506,439],{"class":414},[388,2508,2509],{"class":397}," adapter)",[388,2511,688],{"class":414},[388,2513,2514,2516,2518,2520,2522,2524,2527,2529,2531,2533,2535,2537],{"class":390,"line":465},[388,2515,851],{"class":397},[388,2517,519],{"class":414},[388,2519,696],{"class":709},[388,2521,713],{"class":397},[388,2523,860],{"class":394},[388,2525,2526],{"class":397},">(userSerializer",[388,2528,734],{"class":414},[388,2530,747],{"class":397},[388,2532,439],{"class":414},[388,2534,914],{"class":913},[388,2536,446],{"class":397},[388,2538,688],{"class":414},[388,2540,2541,2543,2545,2547,2549,2551,2553],{"class":390,"line":478},[388,2542,1228],{"class":1227},[388,2544,1268],{"class":397},[388,2546,519],{"class":414},[388,2548,1081],{"class":709},[388,2550,595],{"class":397},[388,2552,1277],{"class":414},[388,2554,2555],{"class":1280}," // sans effet au premier lancement\n",[388,2557,2558],{"class":390,"line":675},[388,2559,928],{"emptyLinePlaceholder":927},[388,2561,2562],{"class":390,"line":683},[388,2563,2564],{"class":1280},"// ... exécuter des requêtes ...\n",[388,2566,2567],{"class":390,"line":1002},[388,2568,928],{"emptyLinePlaceholder":927},[388,2570,2571],{"class":390,"line":1053},[388,2572,2573],{"class":1280},"// Vérifier la persistance\n",[388,2575,2576,2578,2581,2583,2586,2588,2590,2592,2594],{"class":390,"line":1060},[388,2577,571],{"class":404},[388,2579,2580],{"class":397}," keys ",[388,2582,427],{"class":414},[388,2584,2585],{"class":1227}," await",[388,2587,2479],{"class":397},[388,2589,519],{"class":414},[388,2591,2269],{"class":709},[388,2593,595],{"class":397},[388,2595,688],{"class":414},[388,2597,2598,2601,2604,2606,2609,2611,2614,2616],{"class":390,"line":1072},[388,2599,2600],{"class":709},"expect",[388,2602,2603],{"class":397},"(keys",[388,2605,734],{"class":414},[388,2607,2608],{"class":709}," contains",[388,2610,1288],{"class":397},[388,2612,2613],{"class":913},"'[\"users\",1]'",[388,2615,660],{"class":397},[388,2617,688],{"class":414},[367,2619],{},[370,2621,2623],{"id":2622},"implémenter-un-adaptateur-personnalisé","Implémenter un adaptateur personnalisé",[379,2625,2628],{"className":381,"code":2626,"filename":2627,"language":383,"meta":384,"style":384},"import 'package:qora/qora.dart';\n\nclass MyAdapter implements StorageAdapter {\n  @override\n  Future\u003Cvoid> init() async {\n    // Ouvrir la base de données / le fichier\n  }\n\n  @override\n  Future\u003CString?> read(String key) async {\n    // Retourner la valeur stockée ou null\n  }\n\n  @override\n  Future\u003Cvoid> write(String key, String value) async {\n    // Persister la valeur sous la clé\n  }\n\n  @override\n  Future\u003Cvoid> delete(String key) async {\n    // Supprimer l'entrée, sans effet si absente\n  }\n\n  @override\n  Future\u003CList\u003CString>> keys() async {\n    // Retourner toutes les clés stockées\n  }\n\n  @override\n  Future\u003Cvoid> clear() async {\n    // Supprimer toutes les entrées\n  }\n\n  @override\n  Future\u003Cvoid> dispose() async {\n    // Libérer les ressources\n  }\n}\n","my_adapter.dart",[351,2629,2630,2640,2644,2657,2662,2682,2687,2692,2696,2700,2723,2728,2732,2737,2742,2772,2778,2783,2788,2793,2816,2822,2827,2832,2837,2860,2866,2871,2876,2881,2900,2906,2911,2916,2921,2940,2946,2951],{"__ignoreMap":384},[388,2631,2632,2635,2638],{"class":390,"line":391},[388,2633,2634],{"class":442},"import",[388,2636,2637],{"class":913}," 'package:qora/qora.dart'",[388,2639,688],{"class":414},[388,2641,2642],{"class":390,"line":401},[388,2643,928],{"emptyLinePlaceholder":927},[388,2645,2646,2648,2651,2653,2655],{"class":390,"line":418},[388,2647,1832],{"class":414},[388,2649,2650],{"class":394}," MyAdapter",[388,2652,2433],{"class":414},[388,2654,408],{"class":394},[388,2656,737],{"class":397},[388,2658,2659],{"class":390,"line":451},[388,2660,2661],{"class":404},"  @override\n",[388,2663,2664,2666,2668,2670,2672,2674,2677,2680],{"class":390,"line":465},[388,2665,2166],{"class":394},[388,2667,713],{"class":397},[388,2669,706],{"class":404},[388,2671,1100],{"class":397},[388,2673,1235],{"class":709},[388,2675,2676],{"class":397},"() ",[388,2678,2679],{"class":1227},"async",[388,2681,737],{"class":397},[388,2683,2684],{"class":390,"line":478},[388,2685,2686],{"class":1280},"    // Ouvrir la base de données / le fichier\n",[388,2688,2689],{"class":390,"line":675},[388,2690,2691],{"class":397},"  }\n",[388,2693,2694],{"class":390,"line":683},[388,2695,928],{"emptyLinePlaceholder":927},[388,2697,2698],{"class":390,"line":1002},[388,2699,2661],{"class":404},[388,2701,2702,2704,2706,2708,2710,2712,2714,2716,2719,2721],{"class":390,"line":1053},[388,2703,2166],{"class":394},[388,2705,713],{"class":397},[388,2707,1947],{"class":394},[388,2709,2189],{"class":397},[388,2711,2192],{"class":709},[388,2713,1288],{"class":397},[388,2715,1947],{"class":394},[388,2717,2718],{"class":397}," key) ",[388,2720,2679],{"class":1227},[388,2722,737],{"class":397},[388,2724,2725],{"class":390,"line":1060},[388,2726,2727],{"class":1280},"    // Retourner la valeur stockée ou null\n",[388,2729,2730],{"class":390,"line":1072},[388,2731,2691],{"class":397},[388,2733,2735],{"class":390,"line":2734},13,[388,2736,928],{"emptyLinePlaceholder":927},[388,2738,2740],{"class":390,"line":2739},14,[388,2741,2661],{"class":404},[388,2743,2745,2747,2749,2751,2753,2755,2757,2759,2761,2763,2765,2768,2770],{"class":390,"line":2744},15,[388,2746,2166],{"class":394},[388,2748,713],{"class":397},[388,2750,706],{"class":404},[388,2752,1100],{"class":397},[388,2754,2214],{"class":709},[388,2756,1288],{"class":397},[388,2758,1947],{"class":394},[388,2760,1331],{"class":397},[388,2762,734],{"class":414},[388,2764,2225],{"class":394},[388,2766,2767],{"class":397}," value) ",[388,2769,2679],{"class":1227},[388,2771,737],{"class":397},[388,2773,2775],{"class":390,"line":2774},16,[388,2776,2777],{"class":1280},"    // Persister la valeur sous la clé\n",[388,2779,2781],{"class":390,"line":2780},17,[388,2782,2691],{"class":397},[388,2784,2786],{"class":390,"line":2785},18,[388,2787,928],{"emptyLinePlaceholder":927},[388,2789,2791],{"class":390,"line":2790},19,[388,2792,2661],{"class":404},[388,2794,2796,2798,2800,2802,2804,2806,2808,2810,2812,2814],{"class":390,"line":2795},20,[388,2797,2166],{"class":394},[388,2799,713],{"class":397},[388,2801,706],{"class":404},[388,2803,1100],{"class":397},[388,2805,2243],{"class":709},[388,2807,1288],{"class":397},[388,2809,1947],{"class":394},[388,2811,2718],{"class":397},[388,2813,2679],{"class":1227},[388,2815,737],{"class":397},[388,2817,2819],{"class":390,"line":2818},21,[388,2820,2821],{"class":1280},"    // Supprimer l'entrée, sans effet si absente\n",[388,2823,2825],{"class":390,"line":2824},22,[388,2826,2691],{"class":397},[388,2828,2830],{"class":390,"line":2829},23,[388,2831,928],{"emptyLinePlaceholder":927},[388,2833,2835],{"class":390,"line":2834},24,[388,2836,2661],{"class":404},[388,2838,2840,2842,2844,2846,2848,2850,2852,2854,2856,2858],{"class":390,"line":2839},25,[388,2841,2166],{"class":394},[388,2843,713],{"class":397},[388,2845,941],{"class":394},[388,2847,713],{"class":397},[388,2849,1947],{"class":394},[388,2851,2266],{"class":397},[388,2853,2269],{"class":709},[388,2855,2676],{"class":397},[388,2857,2679],{"class":1227},[388,2859,737],{"class":397},[388,2861,2863],{"class":390,"line":2862},26,[388,2864,2865],{"class":1280},"    // Retourner toutes les clés stockées\n",[388,2867,2869],{"class":390,"line":2868},27,[388,2870,2691],{"class":397},[388,2872,2874],{"class":390,"line":2873},28,[388,2875,928],{"emptyLinePlaceholder":927},[388,2877,2879],{"class":390,"line":2878},29,[388,2880,2661],{"class":404},[388,2882,2884,2886,2888,2890,2892,2894,2896,2898],{"class":390,"line":2883},30,[388,2885,2166],{"class":394},[388,2887,713],{"class":397},[388,2889,706],{"class":404},[388,2891,1100],{"class":397},[388,2893,1620],{"class":709},[388,2895,2676],{"class":397},[388,2897,2679],{"class":1227},[388,2899,737],{"class":397},[388,2901,2903],{"class":390,"line":2902},31,[388,2904,2905],{"class":1280},"    // Supprimer toutes les entrées\n",[388,2907,2909],{"class":390,"line":2908},32,[388,2910,2691],{"class":397},[388,2912,2914],{"class":390,"line":2913},33,[388,2915,928],{"emptyLinePlaceholder":927},[388,2917,2919],{"class":390,"line":2918},34,[388,2920,2661],{"class":404},[388,2922,2924,2926,2928,2930,2932,2934,2936,2938],{"class":390,"line":2923},35,[388,2925,2166],{"class":394},[388,2927,713],{"class":397},[388,2929,706],{"class":404},[388,2931,1100],{"class":397},[388,2933,2302],{"class":709},[388,2935,2676],{"class":397},[388,2937,2679],{"class":1227},[388,2939,737],{"class":397},[388,2941,2943],{"class":390,"line":2942},36,[388,2944,2945],{"class":1280},"    // Libérer les ressources\n",[388,2947,2949],{"class":390,"line":2948},37,[388,2950,2691],{"class":397},[388,2952,2954],{"class":390,"line":2953},38,[388,2955,1901],{"class":397},[367,2957],{},[370,2959,2961],{"id":2960},"référence-déviction-du-stockage","Référence d'éviction du stockage",[483,2963,2964,2978],{},[486,2965,2966],{},[489,2967,2968,2971,2974],{},[492,2969,2970],{},"Opération",[492,2972,2973],{},"Cache en mémoire",[492,2975,2976],{},[351,2977,1111],{},[499,2979,2980,2995,3007,3021,3031,3042,3052],{},[489,2981,2982,2987,2990],{},[504,2983,2984],{},[351,2985,2986],{},"invalidate(key)",[504,2988,2989],{},"Marque périmé",[504,2991,2992],{},[810,2993,2994],{},"Non affecté",[489,2996,2997,3002,3005],{},[504,2998,2999],{},[351,3000,3001],{},"removeQuery(key)",[504,3003,3004],{},"Supprimé",[504,3006,3004],{},[489,3008,3009,3014,3017],{},[504,3010,3011],{},[351,3012,3013],{},"clearCache()",[504,3015,3016],{},"Vidé",[504,3018,3019],{},[810,3020,2994],{},[489,3022,3023,3027,3029],{},[504,3024,3025],{},[351,3026,1539],{},[504,3028,3016],{},[504,3030,3016],{},[489,3032,3033,3038,3040],{},[504,3034,3035],{},[351,3036,3037],{},"evictFromStorage(key)",[504,3039,2994],{},[504,3041,3004],{},[489,3043,3044,3048,3050],{},[504,3045,3046],{},[351,3047,1631],{},[504,3049,2994],{},[504,3051,3016],{},[489,3053,3054,3059,3061],{},[504,3055,3056],{},[351,3057,3058],{},"persistQuery(key)",[504,3060,2994],{},[504,3062,3063],{},"Écrit",[367,3065],{},[370,3067,3069],{"id":3068},"voir-aussi","Voir aussi",[818,3071,3072,3078,3085],{},[821,3073,3074,3077],{},[361,3075,3076],{"href":363},"Guide de persistance"," : walkthrough étape par étape",[821,3079,3080,3084],{},[361,3081,3083],{"href":3082},"./qora-client","API QoraClient"," : référence du client de base",[821,3086,3087,3090,3091,1123,3093,3096],{},[361,3088,215],{"href":3089},"./qora-options"," : ",[351,3092,1145],{},[351,3094,3095],{},"gcTime"," et autres paramètres par requête",[3098,3099,3100],"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":3102},[3103,3117,3118,3119,3120,3121,3122],{"id":372,"depth":401,"text":229,"children":3104},[3105,3106,3107,3108,3109,3110,3111,3113,3115],{"id":376,"depth":418,"text":377},{"id":693,"depth":418,"text":696},{"id":1081,"depth":418,"text":1081},{"id":1299,"depth":418,"text":1302},{"id":1429,"depth":418,"text":1432},{"id":1508,"depth":418,"text":1511},{"id":1552,"depth":418,"text":3112},"removeQuery (override)",{"id":1617,"depth":418,"text":3114},"clear (override)",{"id":1658,"depth":418,"text":3116},"hydrateQuery (depuis QoraClient)",{"id":1819,"depth":401,"text":1822},{"id":2139,"depth":401,"text":1111},{"id":2416,"depth":401,"text":2419},{"id":2622,"depth":401,"text":2623},{"id":2960,"depth":401,"text":2961},{"id":3068,"depth":401,"text":3069},"Sous-classe de QoraClient qui persiste les résultats des requêtes dans un StorageAdapter et les restaure au démarrage via hydrate().","md",null,{},{"icon":156},{"title":229,"description":3123},"Xm6kMM5Nj21l3z6p71LfBBrkwKLHKAhSj6nvX6YwikI",[3131,3133],{"title":225,"path":226,"stem":227,"description":3132,"icon":85,"children":-1},"Référence complète de MutationController, MutationState, MutationOptions, MutationUpdate et l'observabilité des mutations sur QoraClient.",{"title":233,"path":234,"stem":235,"description":3134,"icon":121,"children":-1},"Référence complète de InfiniteData, InfiniteQueryState, InfiniteQueryOptions, InfiniteQueryObserver, InfiniteQueryBuilder, InfiniteQueryController et les méthodes de requête infinie de QoraClient.",1794040404298]