[{"data":1,"prerenderedAt":1829},["ShallowReactive",2],{"navigation_docs_fr":3,"-fr-api-reference-qora-key":342,"-fr-api-reference-qora-key-surround":1824},[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":207,"body":344,"description":1817,"extension":1818,"links":1819,"meta":1820,"navigation":1821,"path":208,"seo":1822,"stem":209,"__hash__":1823},"docs_fr/fr/05.api-reference/2.qora-key.md",{"type":345,"value":346,"toc":1797},"minimark",[347,351,355,459,467,470,474,481,484,537,539,545,548,572,574,580,583,628,630,636,639,681,683,689,694,730,732,736,741,762,765,817,819,823,831,943,946,1037,1050,1052,1058,1084,1091,1109,1115,1182,1197,1199,1203,1206,1558,1560,1563,1567,1680,1684,1793],[348,349,243],"h2",{"id":350},"vue-densemble",[352,353,354],"p",{},"Chaque requête Qora est identifiée par une clé. Qora accepte deux formats équivalents :",[356,357,363],"pre",{"className":358,"code":359,"filename":360,"language":361,"meta":362,"style":362},"language-dart shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","// Liste brute : sans friction, pas d'import nécessaire\nkey: ['users', userId]\n\n// Wrapper QoraKey : explicite, typé\nkey: QoraKey(['users', userId])\nkey: QoraKey.withId('users', userId)\n","main.dart","dart","",[364,365,366,375,399,406,412,433],"code",{"__ignoreMap":362},[367,368,371],"span",{"class":369,"line":370},"line",1,[367,372,374],{"class":373},"sHwdD","// Liste brute : sans friction, pas d'import nécessaire\n",[367,376,378,382,386,389,393,396],{"class":369,"line":377},2,[367,379,381],{"class":380},"sTEyZ","key",[367,383,385],{"class":384},"sMK4o",":",[367,387,388],{"class":380}," [",[367,390,392],{"class":391},"sfazB","'users'",[367,394,395],{"class":384},",",[367,397,398],{"class":380}," userId]\n",[367,400,402],{"class":369,"line":401},3,[367,403,405],{"emptyLinePlaceholder":404},true,"\n",[367,407,409],{"class":369,"line":408},4,[367,410,411],{"class":373},"// Wrapper QoraKey : explicite, typé\n",[367,413,415,417,419,423,426,428,430],{"class":369,"line":414},5,[367,416,381],{"class":380},[367,418,385],{"class":384},[367,420,422],{"class":421},"sBMFI"," QoraKey",[367,424,425],{"class":380},"([",[367,427,392],{"class":391},[367,429,395],{"class":384},[367,431,432],{"class":380}," userId])\n",[367,434,436,438,440,442,445,449,452,454,456],{"class":369,"line":435},6,[367,437,381],{"class":380},[367,439,385],{"class":384},[367,441,422],{"class":421},[367,443,444],{"class":384},".",[367,446,448],{"class":447},"s2Zo4","withId",[367,450,451],{"class":380},"(",[367,453,392],{"class":391},[367,455,395],{"class":384},[367,457,458],{"class":380}," userId)\n",[352,460,461,462,466],{},"Les deux sont normalisés vers la même représentation interne et comparés avec une ",[463,464,465],"strong",{},"égalité structurelle profonde",". Ils sont entièrement interchangeables : on peut les mélanger entre appels vers la même requête logique.",[468,469],"hr",{},[348,471,473],{"id":472},"constructeurs","Constructeurs",[475,476,478],"h3",{"id":477},"qorakeylistdynamic-parts",[364,479,480],{},"QoraKey(List\u003Cdynamic> parts)",[352,482,483],{},"Constructeur direct depuis une liste de parties.",[356,485,487],{"className":358,"code":486,"filename":360,"language":361,"meta":362,"style":362},"QoraKey(['users', userId])\nQoraKey(['posts', {'status': 'published', 'page': 1}])\n",[364,488,489,501],{"__ignoreMap":362},[367,490,491,493,495,497,499],{"class":369,"line":370},[367,492,207],{"class":421},[367,494,425],{"class":380},[367,496,392],{"class":391},[367,498,395],{"class":384},[367,500,432],{"class":380},[367,502,503,505,507,510,512,515,518,520,523,525,528,530,534],{"class":369,"line":377},[367,504,207],{"class":421},[367,506,425],{"class":380},[367,508,509],{"class":391},"'posts'",[367,511,395],{"class":384},[367,513,514],{"class":380}," {",[367,516,517],{"class":391},"'status'",[367,519,385],{"class":384},[367,521,522],{"class":391}," 'published'",[367,524,395],{"class":384},[367,526,527],{"class":391}," 'page'",[367,529,385],{"class":384},[367,531,533],{"class":532},"sbssI"," 1",[367,535,536],{"class":380},"}])\n",[468,538],{},[475,540,542],{"id":541},"qorakeysinglestring-key",[364,543,544],{},"QoraKey.single(String key)",[352,546,547],{},"Raccourci pour une clé à segment unique.",[356,549,551],{"className":358,"code":550,"filename":360,"language":361,"meta":362,"style":362},"QoraKey.single('users')  // équivalent à QoraKey(['users'])\n",[364,552,553],{"__ignoreMap":362},[367,554,555,557,559,562,564,566,569],{"class":369,"line":370},[367,556,207],{"class":421},[367,558,444],{"class":384},[367,560,561],{"class":447},"single",[367,563,451],{"class":380},[367,565,392],{"class":391},[367,567,568],{"class":380},")  ",[367,570,571],{"class":373},"// équivalent à QoraKey(['users'])\n",[468,573],{},[475,575,577],{"id":576},"qorakeywithidstring-entity-dynamic-id",[364,578,579],{},"QoraKey.withId(String entity, dynamic id)",[352,581,582],{},"Raccourci pour une clé entité + ID.",[356,584,586],{"className":358,"code":585,"filename":360,"language":361,"meta":362,"style":362},"QoraKey.withId('users', userId)     // ['users', userId]\nQoraKey.withId('posts', postId)     // ['posts', postId]\n",[364,587,588,608],{"__ignoreMap":362},[367,589,590,592,594,596,598,600,602,605],{"class":369,"line":370},[367,591,207],{"class":421},[367,593,444],{"class":384},[367,595,448],{"class":447},[367,597,451],{"class":380},[367,599,392],{"class":391},[367,601,395],{"class":384},[367,603,604],{"class":380}," userId)     ",[367,606,607],{"class":373},"// ['users', userId]\n",[367,609,610,612,614,616,618,620,622,625],{"class":369,"line":377},[367,611,207],{"class":421},[367,613,444],{"class":384},[367,615,448],{"class":447},[367,617,451],{"class":380},[367,619,509],{"class":391},[367,621,395],{"class":384},[367,623,624],{"class":380}," postId)     ",[367,626,627],{"class":373},"// ['posts', postId]\n",[468,629],{},[475,631,633],{"id":632},"qorakeywithfilterstring-entity-mapstring-dynamic-filter",[364,634,635],{},"QoraKey.withFilter(String entity, Map\u003CString, dynamic> filter)",[352,637,638],{},"Raccourci pour une clé entité + map de filtres.",[356,640,642],{"className":358,"code":641,"filename":360,"language":361,"meta":362,"style":362},"QoraKey.withFilter('posts', {'status': 'published', 'page': page})\n// ['posts', {'status': 'published', 'page': page}]\n",[364,643,644,676],{"__ignoreMap":362},[367,645,646,648,650,653,655,657,659,661,663,665,667,669,671,673],{"class":369,"line":370},[367,647,207],{"class":421},[367,649,444],{"class":384},[367,651,652],{"class":447},"withFilter",[367,654,451],{"class":380},[367,656,509],{"class":391},[367,658,395],{"class":384},[367,660,514],{"class":380},[367,662,517],{"class":391},[367,664,385],{"class":384},[367,666,522],{"class":391},[367,668,395],{"class":384},[367,670,527],{"class":391},[367,672,385],{"class":384},[367,674,675],{"class":380}," page})\n",[367,677,678],{"class":369,"line":377},[367,679,680],{"class":373},"// ['posts', {'status': 'published', 'page': page}]\n",[468,682],{},[475,684,686],{"id":685},"qorakeyfromlistdynamic-parts",[364,687,688],{},"QoraKey.from(List\u003Cdynamic> parts)",[352,690,691,692,444],{},"Constructeur factory qui convertit une liste brute en ",[364,693,207],{},[356,695,697],{"className":358,"code":696,"filename":360,"language":361,"meta":362,"style":362},"final key = QoraKey.from(['users', userId]);\n",[364,698,699],{"__ignoreMap":362},[367,700,701,705,708,711,713,715,718,720,722,724,727],{"class":369,"line":370},[367,702,704],{"class":703},"spNyl","final",[367,706,707],{"class":380}," key ",[367,709,710],{"class":384},"=",[367,712,422],{"class":421},[367,714,444],{"class":384},[367,716,717],{"class":447},"from",[367,719,425],{"class":380},[367,721,392],{"class":391},[367,723,395],{"class":384},[367,725,726],{"class":380}," userId])",[367,728,729],{"class":384},";\n",[468,731],{},[348,733,735],{"id":734},"propriétés","Propriétés",[475,737,739],{"id":738},"parts",[364,740,738],{},[356,742,744],{"className":358,"code":743,"language":361,"meta":362,"style":362},"final List\u003Cdynamic> parts\n",[364,745,746],{"__ignoreMap":362},[367,747,748,750,753,756,759],{"class":369,"line":370},[367,749,704],{"class":703},[367,751,752],{"class":421}," List",[367,754,755],{"class":380},"\u003C",[367,757,758],{"class":421},"dynamic",[367,760,761],{"class":380},"> parts\n",[352,763,764],{},"Les segments bruts de la clé sous forme de liste non modifiable.",[356,766,768],{"className":358,"code":767,"filename":360,"language":361,"meta":362,"style":362},"final key = QoraKey.withId('users', 42);\nprint(key.parts); // [users, 42]\n",[364,769,770,798],{"__ignoreMap":362},[367,771,772,774,776,778,780,782,784,786,788,790,793,796],{"class":369,"line":370},[367,773,704],{"class":703},[367,775,707],{"class":380},[367,777,710],{"class":384},[367,779,422],{"class":421},[367,781,444],{"class":384},[367,783,448],{"class":447},[367,785,451],{"class":380},[367,787,392],{"class":391},[367,789,395],{"class":384},[367,791,792],{"class":532}," 42",[367,794,795],{"class":380},")",[367,797,729],{"class":384},[367,799,800,803,806,808,811,814],{"class":369,"line":377},[367,801,802],{"class":447},"print",[367,804,805],{"class":380},"(key",[367,807,444],{"class":384},[367,809,810],{"class":380},"parts)",[367,812,813],{"class":384},";",[367,815,816],{"class":373}," // [users, 42]\n",[468,818],{},[348,820,822],{"id":821},"égalité","Égalité",[352,824,825,827,828,830],{},[364,826,207],{}," utilise une ",[463,829,465],{}," : deux clés sont égales si leurs parties sont récursivement égales :",[356,832,834],{"className":358,"code":833,"filename":360,"language":361,"meta":362,"style":362},"QoraKey(['users', 1]) == QoraKey(['users', 1])  // true\nQoraKey(['users', 1]) == QoraKey(['users', 2])  // false\n\n// Liste brute et QoraKey sont normalisés identiquement\n['users', 1] == QoraKey(['users', 1])           // normalisé vers la même entrée de cache\n",[364,835,836,870,902,906,911],{"__ignoreMap":362},[367,837,838,840,842,844,846,848,851,854,856,858,860,862,864,867],{"class":369,"line":370},[367,839,207],{"class":421},[367,841,425],{"class":380},[367,843,392],{"class":391},[367,845,395],{"class":384},[367,847,533],{"class":532},[367,849,850],{"class":380},"]) ",[367,852,853],{"class":384},"==",[367,855,422],{"class":421},[367,857,425],{"class":380},[367,859,392],{"class":391},[367,861,395],{"class":384},[367,863,533],{"class":532},[367,865,866],{"class":380},"])  ",[367,868,869],{"class":373},"// true\n",[367,871,872,874,876,878,880,882,884,886,888,890,892,894,897,899],{"class":369,"line":377},[367,873,207],{"class":421},[367,875,425],{"class":380},[367,877,392],{"class":391},[367,879,395],{"class":384},[367,881,533],{"class":532},[367,883,850],{"class":380},[367,885,853],{"class":384},[367,887,422],{"class":421},[367,889,425],{"class":380},[367,891,392],{"class":391},[367,893,395],{"class":384},[367,895,896],{"class":532}," 2",[367,898,866],{"class":380},[367,900,901],{"class":373},"// false\n",[367,903,904],{"class":369,"line":401},[367,905,405],{"emptyLinePlaceholder":404},[367,907,908],{"class":369,"line":408},[367,909,910],{"class":373},"// Liste brute et QoraKey sont normalisés identiquement\n",[367,912,913,916,918,920,922,925,927,929,931,933,935,937,940],{"class":369,"line":414},[367,914,915],{"class":380},"[",[367,917,392],{"class":391},[367,919,395],{"class":384},[367,921,533],{"class":532},[367,923,924],{"class":380},"] ",[367,926,853],{"class":384},[367,928,422],{"class":421},[367,930,425],{"class":380},[367,932,392],{"class":391},[367,934,395],{"class":384},[367,936,533],{"class":532},[367,938,939],{"class":380},"])           ",[367,941,942],{"class":373},"// normalisé vers la même entrée de cache\n",[352,944,945],{},"Types supportés dans les parties de clé :",[947,948,949,962],"table",{},[950,951,952],"thead",{},[953,954,955,959],"tr",{},[956,957,958],"th",{},"Type",[956,960,961],{},"Support",[963,964,965,983,992,1002,1012,1022],"tbody",{},[953,966,967,980],{},[968,969,970,973,974,973,977],"td",{},[364,971,972],{},"int",", ",[364,975,976],{},"double",[364,978,979],{},"bool",[968,981,982],{},"Égalité structurelle complète",[953,984,985,990],{},[968,986,987],{},[364,988,989],{},"String",[968,991,982],{},[953,993,994,999],{},[968,995,996],{},[364,997,998],{},"null",[968,1000,1001],{},"Supporté comme partie de clé",[953,1003,1004,1009],{},[968,1005,1006],{},[364,1007,1008],{},"List",[968,1010,1011],{},"Comparaison récursive",[953,1013,1014,1019],{},[968,1015,1016],{},[364,1017,1018],{},"Map",[968,1020,1021],{},"Comparaison récursive indépendante de l'ordre",[953,1023,1024,1027],{},[968,1025,1026],{},"Objets personnalisés",[968,1028,1029,1030,1033,1034],{},"Doivent surcharger ",[364,1031,1032],{},"operator =="," et ",[364,1035,1036],{},"hashCode",[1038,1039,1040,1041,1044,1045,1033,1047,1049],"warning",{},"Utiliser des objets personnalisés (ex. ",[364,1042,1043],{},"UserFilter",") dans les parties de clé sans surcharger ",[364,1046,1032],{},[364,1048,1036],{}," crée une nouvelle entrée de cache à chaque appel. Utiliser des valeurs sérialisables en primitives ou implémenter l'égalité explicitement.",[468,1051],{},[348,1053,1055],{"id":1054},"normalizekey",[364,1056,1057],{},"normalizeKey",[356,1059,1061],{"className":358,"code":1060,"language":361,"meta":362,"style":362},"List\u003Cdynamic> normalizeKey(Object key)\n",[364,1062,1063],{"__ignoreMap":362},[367,1064,1065,1067,1069,1071,1074,1076,1078,1081],{"class":369,"line":370},[367,1066,1008],{"class":421},[367,1068,755],{"class":380},[367,1070,758],{"class":421},[367,1072,1073],{"class":380},"> ",[367,1075,1057],{"class":447},[367,1077,451],{"class":380},[367,1079,1080],{"class":421},"Object",[367,1082,1083],{"class":380}," key)\n",[352,1085,1086,1087,1090],{},"Fonction de niveau supérieur qui normalise toute entrée de clé valide en une ",[364,1088,1089],{},"List\u003Cdynamic>"," non modifiable :",[1092,1093,1094,1103,1106],"ul",{},[1095,1096,1097,1098,1100,1101],"li",{},"Accepte ",[364,1099,207],{}," ou ",[364,1102,1089],{},[1095,1104,1105],{},"Valide que les parties sont sérialisables",[1095,1107,1108],{},"Retourne une liste copiée en profondeur et non modifiable",[352,1110,1111,1112,1114],{},"Cela est appelé en interne par chaque méthode de ",[364,1113,202],{},". L'appel direct est rarement nécessaire.",[356,1116,1118],{"className":358,"code":1117,"filename":360,"language":361,"meta":362,"style":362},"final parts = normalizeKey(['users', 1]);   // [users, 1] (non modifiable)\nfinal parts = normalizeKey(QoraKey.withId('users', 1));  // même résultat\n",[364,1119,1120,1148],{"__ignoreMap":362},[367,1121,1122,1124,1127,1129,1132,1134,1136,1138,1140,1143,1145],{"class":369,"line":370},[367,1123,704],{"class":703},[367,1125,1126],{"class":380}," parts ",[367,1128,710],{"class":384},[367,1130,1131],{"class":447}," normalizeKey",[367,1133,425],{"class":380},[367,1135,392],{"class":391},[367,1137,395],{"class":384},[367,1139,533],{"class":532},[367,1141,1142],{"class":380},"])",[367,1144,813],{"class":384},[367,1146,1147],{"class":373},"   // [users, 1] (non modifiable)\n",[367,1149,1150,1152,1154,1156,1158,1160,1162,1164,1166,1168,1170,1172,1174,1177,1179],{"class":369,"line":377},[367,1151,704],{"class":703},[367,1153,1126],{"class":380},[367,1155,710],{"class":384},[367,1157,1131],{"class":447},[367,1159,451],{"class":380},[367,1161,207],{"class":421},[367,1163,444],{"class":384},[367,1165,448],{"class":447},[367,1167,451],{"class":380},[367,1169,392],{"class":391},[367,1171,395],{"class":384},[367,1173,533],{"class":532},[367,1175,1176],{"class":380},"))",[367,1178,813],{"class":384},[367,1180,1181],{"class":373},"  // même résultat\n",[352,1183,1184,1187,1188,1191,1192,1194,1195,444],{},[463,1185,1186],{},"Lève"," ",[364,1189,1190],{},"ArgumentError"," si la clé n'est pas une ",[364,1193,1008],{}," ou un ",[364,1196,207],{},[468,1198],{},[348,1200,1202],{"id":1201},"pattern-key-factories","Pattern Key Factories",[352,1204,1205],{},"Centraliser les définitions de clés pour éviter les fautes de frappe et simplifier l'invalidation :",[356,1207,1210],{"className":358,"code":1208,"filename":1209,"language":361,"meta":362,"style":362},"abstract class Keys {\n  // Utilisateurs\n  static List\u003Cdynamic> users() => ['users'];\n  static List\u003Cdynamic> user(int id) => ['users', id];\n  static List\u003Cdynamic> userPosts(int userId) => ['users', userId, 'posts'];\n\n  // Posts\n  static List\u003Cdynamic> posts(Map\u003CString, dynamic> filters) => ['posts', filters];\n  static List\u003Cdynamic> post(int id) => ['posts', id];\n}\n\n// Utilisation\nawait client.fetchQuery\u003CUser>(\n  key: Keys.user(userId),\n  fetcher: () => api.getUser(userId),\n);\n\nclient.invalidateWhere((key) => equalsKey(key, Keys.users()));\n","lib/query_keys.dart",[364,1211,1212,1226,1231,1262,1297,1339,1343,1349,1393,1427,1433,1438,1444,1467,1487,1512,1519,1524],{"__ignoreMap":362},[367,1213,1214,1217,1220,1223],{"class":369,"line":370},[367,1215,1216],{"class":384},"abstract",[367,1218,1219],{"class":384}," class",[367,1221,1222],{"class":421}," Keys",[367,1224,1225],{"class":380}," {\n",[367,1227,1228],{"class":369,"line":377},[367,1229,1230],{"class":373},"  // Utilisateurs\n",[367,1232,1233,1236,1238,1240,1242,1244,1247,1250,1253,1255,1257,1260],{"class":369,"line":401},[367,1234,1235],{"class":703},"  static",[367,1237,752],{"class":421},[367,1239,755],{"class":380},[367,1241,758],{"class":421},[367,1243,1073],{"class":380},[367,1245,1246],{"class":447},"users",[367,1248,1249],{"class":380},"() ",[367,1251,1252],{"class":384},"=>",[367,1254,388],{"class":380},[367,1256,392],{"class":391},[367,1258,1259],{"class":380},"]",[367,1261,729],{"class":384},[367,1263,1264,1266,1268,1270,1272,1274,1277,1279,1281,1284,1286,1288,1290,1292,1295],{"class":369,"line":408},[367,1265,1235],{"class":703},[367,1267,752],{"class":421},[367,1269,755],{"class":380},[367,1271,758],{"class":421},[367,1273,1073],{"class":380},[367,1275,1276],{"class":447},"user",[367,1278,451],{"class":380},[367,1280,972],{"class":421},[367,1282,1283],{"class":380}," id) ",[367,1285,1252],{"class":384},[367,1287,388],{"class":380},[367,1289,392],{"class":391},[367,1291,395],{"class":384},[367,1293,1294],{"class":380}," id]",[367,1296,729],{"class":384},[367,1298,1299,1301,1303,1305,1307,1309,1312,1314,1316,1319,1321,1323,1325,1327,1330,1332,1335,1337],{"class":369,"line":414},[367,1300,1235],{"class":703},[367,1302,752],{"class":421},[367,1304,755],{"class":380},[367,1306,758],{"class":421},[367,1308,1073],{"class":380},[367,1310,1311],{"class":447},"userPosts",[367,1313,451],{"class":380},[367,1315,972],{"class":421},[367,1317,1318],{"class":380}," userId) ",[367,1320,1252],{"class":384},[367,1322,388],{"class":380},[367,1324,392],{"class":391},[367,1326,395],{"class":384},[367,1328,1329],{"class":380}," userId",[367,1331,395],{"class":384},[367,1333,1334],{"class":391}," 'posts'",[367,1336,1259],{"class":380},[367,1338,729],{"class":384},[367,1340,1341],{"class":369,"line":435},[367,1342,405],{"emptyLinePlaceholder":404},[367,1344,1346],{"class":369,"line":1345},7,[367,1347,1348],{"class":373},"  // Posts\n",[367,1350,1352,1354,1356,1358,1360,1362,1365,1367,1369,1371,1373,1375,1377,1380,1382,1384,1386,1388,1391],{"class":369,"line":1351},8,[367,1353,1235],{"class":703},[367,1355,752],{"class":421},[367,1357,755],{"class":380},[367,1359,758],{"class":421},[367,1361,1073],{"class":380},[367,1363,1364],{"class":447},"posts",[367,1366,451],{"class":380},[367,1368,1018],{"class":421},[367,1370,755],{"class":380},[367,1372,989],{"class":421},[367,1374,973],{"class":380},[367,1376,758],{"class":421},[367,1378,1379],{"class":380},"> filters) ",[367,1381,1252],{"class":384},[367,1383,388],{"class":380},[367,1385,509],{"class":391},[367,1387,395],{"class":384},[367,1389,1390],{"class":380}," filters]",[367,1392,729],{"class":384},[367,1394,1396,1398,1400,1402,1404,1406,1409,1411,1413,1415,1417,1419,1421,1423,1425],{"class":369,"line":1395},9,[367,1397,1235],{"class":703},[367,1399,752],{"class":421},[367,1401,755],{"class":380},[367,1403,758],{"class":421},[367,1405,1073],{"class":380},[367,1407,1408],{"class":447},"post",[367,1410,451],{"class":380},[367,1412,972],{"class":421},[367,1414,1283],{"class":380},[367,1416,1252],{"class":384},[367,1418,388],{"class":380},[367,1420,509],{"class":391},[367,1422,395],{"class":384},[367,1424,1294],{"class":380},[367,1426,729],{"class":384},[367,1428,1430],{"class":369,"line":1429},10,[367,1431,1432],{"class":380},"}\n",[367,1434,1436],{"class":369,"line":1435},11,[367,1437,405],{"emptyLinePlaceholder":404},[367,1439,1441],{"class":369,"line":1440},12,[367,1442,1443],{"class":373},"// Utilisation\n",[367,1445,1447,1451,1454,1456,1459,1461,1464],{"class":369,"line":1446},13,[367,1448,1450],{"class":1449},"s7zQu","await",[367,1452,1453],{"class":380}," client",[367,1455,444],{"class":384},[367,1457,1458],{"class":447},"fetchQuery",[367,1460,755],{"class":380},[367,1462,1463],{"class":421},"User",[367,1465,1466],{"class":380},">(\n",[367,1468,1470,1473,1475,1477,1479,1481,1484],{"class":369,"line":1469},14,[367,1471,1472],{"class":380},"  key",[367,1474,385],{"class":384},[367,1476,1222],{"class":421},[367,1478,444],{"class":384},[367,1480,1276],{"class":447},[367,1482,1483],{"class":380},"(userId)",[367,1485,1486],{"class":384},",\n",[367,1488,1490,1493,1495,1498,1500,1503,1505,1508,1510],{"class":369,"line":1489},15,[367,1491,1492],{"class":380},"  fetcher",[367,1494,385],{"class":384},[367,1496,1497],{"class":380}," () ",[367,1499,1252],{"class":384},[367,1501,1502],{"class":380}," api",[367,1504,444],{"class":384},[367,1506,1507],{"class":447},"getUser",[367,1509,1483],{"class":380},[367,1511,1486],{"class":384},[367,1513,1515,1517],{"class":369,"line":1514},16,[367,1516,795],{"class":380},[367,1518,729],{"class":384},[367,1520,1522],{"class":369,"line":1521},17,[367,1523,405],{"emptyLinePlaceholder":404},[367,1525,1527,1530,1532,1535,1538,1540,1543,1545,1547,1549,1551,1553,1556],{"class":369,"line":1526},18,[367,1528,1529],{"class":380},"client",[367,1531,444],{"class":384},[367,1533,1534],{"class":447},"invalidateWhere",[367,1536,1537],{"class":380},"((key) ",[367,1539,1252],{"class":384},[367,1541,1542],{"class":447}," equalsKey",[367,1544,805],{"class":380},[367,1546,395],{"class":384},[367,1548,1222],{"class":421},[367,1550,444],{"class":384},[367,1552,1246],{"class":447},[367,1554,1555],{"class":380},"()))",[367,1557,729],{"class":384},[468,1559],{},[348,1561,133],{"id":1562},"bonnes-pratiques",[475,1564,1566],{"id":1565},"a-faire","A faire",[356,1568,1570],{"className":358,"code":1569,"filename":360,"language":361,"meta":362,"style":362},"// Structure cohérente : entité en premier, puis ID/filtres\n['users', userId]\n['users', userId, 'posts']\n['posts', {'status': 'published'}]\n\n// Utiliser des primitives : toujours comparables\n['users', userId.toString()]\n['posts', {'page': page, 'limit': 20}]\n",[364,1571,1572,1577,1587,1604,1623,1627,1632,1650],{"__ignoreMap":362},[367,1573,1574],{"class":369,"line":370},[367,1575,1576],{"class":373},"// Structure cohérente : entité en premier, puis ID/filtres\n",[367,1578,1579,1581,1583,1585],{"class":369,"line":377},[367,1580,915],{"class":380},[367,1582,392],{"class":391},[367,1584,395],{"class":384},[367,1586,398],{"class":380},[367,1588,1589,1591,1593,1595,1597,1599,1601],{"class":369,"line":401},[367,1590,915],{"class":380},[367,1592,392],{"class":391},[367,1594,395],{"class":384},[367,1596,1329],{"class":380},[367,1598,395],{"class":384},[367,1600,1334],{"class":391},[367,1602,1603],{"class":380},"]\n",[367,1605,1606,1608,1610,1612,1614,1616,1618,1620],{"class":369,"line":408},[367,1607,915],{"class":380},[367,1609,509],{"class":391},[367,1611,395],{"class":384},[367,1613,514],{"class":380},[367,1615,517],{"class":391},[367,1617,385],{"class":384},[367,1619,522],{"class":391},[367,1621,1622],{"class":380},"}]\n",[367,1624,1625],{"class":369,"line":414},[367,1626,405],{"emptyLinePlaceholder":404},[367,1628,1629],{"class":369,"line":435},[367,1630,1631],{"class":373},"// Utiliser des primitives : toujours comparables\n",[367,1633,1634,1636,1638,1640,1642,1644,1647],{"class":369,"line":1345},[367,1635,915],{"class":380},[367,1637,392],{"class":391},[367,1639,395],{"class":384},[367,1641,1329],{"class":380},[367,1643,444],{"class":384},[367,1645,1646],{"class":447},"toString",[367,1648,1649],{"class":380},"()]\n",[367,1651,1652,1654,1656,1658,1660,1663,1665,1668,1670,1673,1675,1678],{"class":369,"line":1351},[367,1653,915],{"class":380},[367,1655,509],{"class":391},[367,1657,395],{"class":384},[367,1659,514],{"class":380},[367,1661,1662],{"class":391},"'page'",[367,1664,385],{"class":384},[367,1666,1667],{"class":380}," page",[367,1669,395],{"class":384},[367,1671,1672],{"class":391}," 'limit'",[367,1674,385],{"class":384},[367,1676,1677],{"class":532}," 20",[367,1679,1622],{"class":380},[475,1681,1683],{"id":1682},"a-eviter","A eviter",[356,1685,1687],{"className":358,"code":1686,"filename":360,"language":361,"meta":362,"style":362},"// Ordre incohérent\n['users', userId]\n[userId, 'users']  // Entrée de cache différente\n\n// Objets personnalisés sans égalité\n['users', UserFilter(status: 'active')]  // Égalité d'identité : toujours un miss\n\n// Valeurs calculées variant à chaque appel\n['posts', DateTime.now().toIso8601String()]  // N'atteint jamais le cache\n",[364,1688,1689,1694,1704,1720,1724,1729,1754,1758,1763],{"__ignoreMap":362},[367,1690,1691],{"class":369,"line":370},[367,1692,1693],{"class":373},"// Ordre incohérent\n",[367,1695,1696,1698,1700,1702],{"class":369,"line":377},[367,1697,915],{"class":380},[367,1699,392],{"class":391},[367,1701,395],{"class":384},[367,1703,398],{"class":380},[367,1705,1706,1709,1711,1714,1717],{"class":369,"line":401},[367,1707,1708],{"class":380},"[userId",[367,1710,395],{"class":384},[367,1712,1713],{"class":391}," 'users'",[367,1715,1716],{"class":380},"]  ",[367,1718,1719],{"class":373},"// Entrée de cache différente\n",[367,1721,1722],{"class":369,"line":408},[367,1723,405],{"emptyLinePlaceholder":404},[367,1725,1726],{"class":369,"line":414},[367,1727,1728],{"class":373},"// Objets personnalisés sans égalité\n",[367,1730,1731,1733,1735,1737,1740,1743,1745,1748,1751],{"class":369,"line":435},[367,1732,915],{"class":380},[367,1734,392],{"class":391},[367,1736,395],{"class":384},[367,1738,1739],{"class":421}," UserFilter",[367,1741,1742],{"class":380},"(status",[367,1744,385],{"class":384},[367,1746,1747],{"class":391}," 'active'",[367,1749,1750],{"class":380},")]  ",[367,1752,1753],{"class":373},"// Égalité d'identité : toujours un miss\n",[367,1755,1756],{"class":369,"line":1345},[367,1757,405],{"emptyLinePlaceholder":404},[367,1759,1760],{"class":369,"line":1351},[367,1761,1762],{"class":373},"// Valeurs calculées variant à chaque appel\n",[367,1764,1765,1767,1769,1771,1774,1776,1779,1782,1784,1787,1790],{"class":369,"line":1395},[367,1766,915],{"class":380},[367,1768,509],{"class":391},[367,1770,395],{"class":384},[367,1772,1773],{"class":421}," DateTime",[367,1775,444],{"class":384},[367,1777,1778],{"class":447},"now",[367,1780,1781],{"class":380},"()",[367,1783,444],{"class":384},[367,1785,1786],{"class":447},"toIso8601String",[367,1788,1789],{"class":380},"()]  ",[367,1791,1792],{"class":373},"// N'atteint jamais le cache\n",[1794,1795,1796],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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}",{"title":362,"searchDepth":377,"depth":377,"links":1798},[1799,1800,1807,1810,1811,1812,1813],{"id":350,"depth":377,"text":243},{"id":472,"depth":377,"text":473,"children":1801},[1802,1803,1804,1805,1806],{"id":477,"depth":401,"text":480},{"id":541,"depth":401,"text":544},{"id":576,"depth":401,"text":579},{"id":632,"depth":401,"text":635},{"id":685,"depth":401,"text":688},{"id":734,"depth":377,"text":735,"children":1808},[1809],{"id":738,"depth":401,"text":738},{"id":821,"depth":377,"text":822},{"id":1054,"depth":377,"text":1057},{"id":1201,"depth":377,"text":1202},{"id":1562,"depth":377,"text":133,"children":1814},[1815,1816],{"id":1565,"depth":401,"text":1566},{"id":1682,"depth":401,"text":1683},"Clé de requête typée et immuable avec égalité structurelle. Supporte à la fois la syntaxe List brute et QoraKey.","md",null,{},{"icon":60},{"title":207,"description":1817},"qL07_du-7wi4WynfU57PilcW-VWyUw9UIzgsrjMDDGs",[1825,1827],{"title":202,"path":203,"stem":204,"description":1826,"icon":205,"children":-1},"Le moteur central de Qora : gère les requêtes, le cache, la déduplication, les retries et l'état réactif.",{"title":211,"path":212,"stem":213,"description":1828,"icon":65,"children":-1},"Hiérarchie de classes sealed représentant les quatre états possibles d'une requête. Le pattern matching exhaustif est imposé à la compilation.",1794040409099]