[{"data":1,"prerenderedAt":556},["ShallowReactive",2],{"navigation_docs":3,"-docs-server-server-utils":77,"-docs-server-server-utils-surround":553},[4,19,41,63],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":18},"Getting Started","i-ph-rocket-launch-duotone","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started",[10,14],{"title":11,"path":12,"stem":13},"Installation","\u002Fdocs\u002Fgetting-started\u002Finstallation","docs\u002F1.getting-started\u002F1.installation",{"title":15,"path":16,"stem":17},"Configuration","\u002Fdocs\u002Fgetting-started\u002Fconfiguration","docs\u002F1.getting-started\u002F2.configuration",false,{"title":20,"icon":21,"path":22,"stem":23,"children":24,"page":18},"Storage","i-ph-database-duotone","\u002Fdocs\u002Fstorage","docs\u002F2.storage",[25,29,33,37],{"title":26,"path":27,"stem":28},"Overview","\u002Fdocs\u002Fstorage\u002Foverview","docs\u002F2.storage\u002F1.overview",{"title":30,"path":31,"stem":32},"NuxtHub","\u002Fdocs\u002Fstorage\u002Fnuxthub","docs\u002F2.storage\u002F2.nuxthub",{"title":34,"path":35,"stem":36},"Nitro Storage","\u002Fdocs\u002Fstorage\u002Fnitro","docs\u002F2.storage\u002F3.nitro",{"title":38,"path":39,"stem":40},"Memory","\u002Fdocs\u002Fstorage\u002Fmemory","docs\u002F2.storage\u002F4.memory",{"title":42,"icon":43,"path":44,"stem":45,"children":46,"page":18},"Composables","i-ph-puzzle-piece-duotone","\u002Fdocs\u002Fcomposables","docs\u002F3.composables",[47,51,55,59],{"title":48,"path":49,"stem":50},"useFlag()","\u002Fdocs\u002Fcomposables\u002Fuse-flag","docs\u002F3.composables\u002F1.use-flag",{"title":52,"path":53,"stem":54},"useVariant()","\u002Fdocs\u002Fcomposables\u002Fuse-variant","docs\u002F3.composables\u002F2.use-variant",{"title":56,"path":57,"stem":58},"useAllFlags()","\u002Fdocs\u002Fcomposables\u002Fuse-all-flags","docs\u002F3.composables\u002F3.use-all-flags",{"title":60,"path":61,"stem":62},"useFlagsStatus()","\u002Fdocs\u002Fcomposables\u002Fuse-flags-status","docs\u002F3.composables\u002F4.use-flags-status",{"title":64,"icon":65,"path":66,"stem":67,"children":68,"page":18},"Server","i-ph-cloud-duotone","\u002Fdocs\u002Fserver","docs\u002F4.server",[69,73],{"title":70,"path":71,"stem":72},"API Route","\u002Fdocs\u002Fserver\u002Fapi-route","docs\u002F4.server\u002F1.api-route",{"title":74,"path":75,"stem":76},"Server Utils","\u002Fdocs\u002Fserver\u002Fserver-utils","docs\u002F4.server\u002F2.server-utils",{"id":78,"title":74,"body":79,"description":546,"extension":547,"links":548,"meta":549,"navigation":176,"path":75,"seo":551,"stem":76,"__hash__":552},"docs\u002Fdocs\u002F4.server\u002F2.server-utils.md",{"type":80,"value":81,"toc":538},"minimark",[82,91,96,99,308,313,391,395,398,470,473,524,534],[83,84,85,86,90],"p",{},"Two server utilities are auto-imported in the ",[87,88,89],"code",{},"server\u002F"," directory.",[92,93,95],"h2",{"id":94},"useunleashflags","useUnleashFlags",[83,97,98],{},"Reads flags from storage with stale-while-revalidate. Use this in server routes, middleware, or API handlers.",[100,101,107],"pre",{"className":102,"code":103,"filename":104,"language":105,"meta":106,"style":106},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineEventHandler(async () => {\n  const { toggles } = await useUnleashFlags()\n\n  if (toggles['premium-api']?.enabled) {\n    return { tier: 'premium', data: getPremiumData() }\n  }\n\n  return { tier: 'free', data: getFreeData() }\n})\n","server\u002Fapi\u002Fmy-route.ts","ts","",[87,108,109,143,171,178,217,256,262,267,299],{"__ignoreMap":106},[110,111,114,118,121,125,129,133,137,140],"span",{"class":112,"line":113},"line",1,[110,115,117],{"class":116},"s7zQu","export",[110,119,120],{"class":116}," default",[110,122,124],{"class":123},"s2Zo4"," defineEventHandler",[110,126,128],{"class":127},"sTEyZ","(",[110,130,132],{"class":131},"spNyl","async",[110,134,136],{"class":135},"sMK4o"," ()",[110,138,139],{"class":131}," =>",[110,141,142],{"class":135}," {\n",[110,144,146,149,152,155,158,161,164,167],{"class":112,"line":145},2,[110,147,148],{"class":131},"  const",[110,150,151],{"class":135}," {",[110,153,154],{"class":127}," toggles",[110,156,157],{"class":135}," }",[110,159,160],{"class":135}," =",[110,162,163],{"class":116}," await",[110,165,166],{"class":123}," useUnleashFlags",[110,168,170],{"class":169},"swJcz","()\n",[110,172,174],{"class":112,"line":173},3,[110,175,177],{"emptyLinePlaceholder":176},true,"\n",[110,179,181,184,187,190,193,196,200,202,205,208,211,214],{"class":112,"line":180},4,[110,182,183],{"class":116},"  if",[110,185,186],{"class":169}," (",[110,188,189],{"class":127},"toggles",[110,191,192],{"class":169},"[",[110,194,195],{"class":135},"'",[110,197,199],{"class":198},"sfazB","premium-api",[110,201,195],{"class":135},[110,203,204],{"class":169},"]",[110,206,207],{"class":135},"?.",[110,209,210],{"class":127},"enabled",[110,212,213],{"class":169},") ",[110,215,216],{"class":135},"{\n",[110,218,220,223,225,228,231,234,237,239,242,245,247,250,253],{"class":112,"line":219},5,[110,221,222],{"class":116},"    return",[110,224,151],{"class":135},[110,226,227],{"class":169}," tier",[110,229,230],{"class":135},":",[110,232,233],{"class":135}," '",[110,235,236],{"class":198},"premium",[110,238,195],{"class":135},[110,240,241],{"class":135},",",[110,243,244],{"class":169}," data",[110,246,230],{"class":135},[110,248,249],{"class":123}," getPremiumData",[110,251,252],{"class":169},"() ",[110,254,255],{"class":135},"}\n",[110,257,259],{"class":112,"line":258},6,[110,260,261],{"class":135},"  }\n",[110,263,265],{"class":112,"line":264},7,[110,266,177],{"emptyLinePlaceholder":176},[110,268,270,273,275,277,279,281,284,286,288,290,292,295,297],{"class":112,"line":269},8,[110,271,272],{"class":116},"  return",[110,274,151],{"class":135},[110,276,227],{"class":169},[110,278,230],{"class":135},[110,280,233],{"class":135},[110,282,283],{"class":198},"free",[110,285,195],{"class":135},[110,287,241],{"class":135},[110,289,244],{"class":169},[110,291,230],{"class":135},[110,293,294],{"class":123}," getFreeData",[110,296,252],{"class":169},[110,298,255],{"class":135},[110,300,302,305],{"class":112,"line":301},9,[110,303,304],{"class":135},"}",[110,306,307],{"class":127},")\n",[309,310,312],"h3",{"id":311},"type","Type",[100,314,316],{"className":102,"code":315,"language":105,"meta":106,"style":106},"function useUnleashFlags(): Promise\u003CCachedFlags>\n\ninterface CachedFlags {\n  toggles: Record\u003Cstring, EvaluatedFlag>\n  lastUpdated: number\n}\n",[87,317,318,341,345,355,377,387],{"__ignoreMap":106},[110,319,320,323,325,328,332,335,338],{"class":112,"line":113},[110,321,322],{"class":131},"function",[110,324,166],{"class":123},[110,326,327],{"class":135},"():",[110,329,331],{"class":330},"sBMFI"," Promise",[110,333,334],{"class":135},"\u003C",[110,336,337],{"class":330},"CachedFlags",[110,339,340],{"class":135},">\n",[110,342,343],{"class":112,"line":145},[110,344,177],{"emptyLinePlaceholder":176},[110,346,347,350,353],{"class":112,"line":173},[110,348,349],{"class":131},"interface",[110,351,352],{"class":330}," CachedFlags",[110,354,142],{"class":135},[110,356,357,360,362,365,367,370,372,375],{"class":112,"line":180},[110,358,359],{"class":169},"  toggles",[110,361,230],{"class":135},[110,363,364],{"class":330}," Record",[110,366,334],{"class":135},[110,368,369],{"class":330},"string",[110,371,241],{"class":135},[110,373,374],{"class":330}," EvaluatedFlag",[110,376,340],{"class":135},[110,378,379,382,384],{"class":112,"line":219},[110,380,381],{"class":169},"  lastUpdated",[110,383,230],{"class":135},[110,385,386],{"class":330}," number\n",[110,388,389],{"class":112,"line":258},[110,390,255],{"class":135},[92,392,394],{"id":393},"refreshunleashflags","refreshUnleashFlags",[83,396,397],{},"Force a refresh of flags from the Unleash Proxy. Useful for webhooks or admin endpoints.",[100,399,402],{"className":102,"code":400,"filename":401,"language":105,"meta":106,"style":106},"export default defineEventHandler(async () => {\n  await refreshUnleashFlags({ force: true })\n  return { ok: true }\n})\n","server\u002Fapi\u002Frefresh-flags.ts",[87,403,404,422,448,464],{"__ignoreMap":106},[110,405,406,408,410,412,414,416,418,420],{"class":112,"line":113},[110,407,117],{"class":116},[110,409,120],{"class":116},[110,411,124],{"class":123},[110,413,128],{"class":127},[110,415,132],{"class":131},[110,417,136],{"class":135},[110,419,139],{"class":131},[110,421,142],{"class":135},[110,423,424,427,430,432,435,438,440,444,446],{"class":112,"line":145},[110,425,426],{"class":116},"  await",[110,428,429],{"class":123}," refreshUnleashFlags",[110,431,128],{"class":169},[110,433,434],{"class":135},"{",[110,436,437],{"class":169}," force",[110,439,230],{"class":135},[110,441,443],{"class":442},"sfNiH"," true",[110,445,157],{"class":135},[110,447,307],{"class":169},[110,449,450,452,454,457,459,461],{"class":112,"line":173},[110,451,272],{"class":116},[110,453,151],{"class":135},[110,455,456],{"class":169}," ok",[110,458,230],{"class":135},[110,460,443],{"class":442},[110,462,463],{"class":135}," }\n",[110,465,466,468],{"class":112,"line":180},[110,467,304],{"class":135},[110,469,307],{"class":127},[309,471,312],{"id":472},"type-1",[100,474,476],{"className":102,"code":475,"language":105,"meta":106,"style":106},"function refreshUnleashFlags(options?: {\n  force?: boolean\n}): Promise\u003CCachedFlags | null>\n",[87,477,478,495,505],{"__ignoreMap":106},[110,479,480,482,484,486,490,493],{"class":112,"line":113},[110,481,322],{"class":131},[110,483,429],{"class":123},[110,485,128],{"class":135},[110,487,489],{"class":488},"sHdIc","options",[110,491,492],{"class":135},"?:",[110,494,142],{"class":135},[110,496,497,500,502],{"class":112,"line":145},[110,498,499],{"class":169},"  force",[110,501,492],{"class":135},[110,503,504],{"class":330}," boolean\n",[110,506,507,510,512,514,516,519,522],{"class":112,"line":173},[110,508,509],{"class":135},"}):",[110,511,331],{"class":330},[110,513,334],{"class":135},[110,515,337],{"class":330},[110,517,518],{"class":135}," |",[110,520,521],{"class":330}," null",[110,523,340],{"class":135},[525,526,527],"field-group",{},[528,529,533],"field",{"default":530,"name":531,"type":532},"false","force","boolean","Skip the deduplication lock and force a fresh fetch.",[535,536,537],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":106,"searchDepth":145,"depth":145,"links":539},[540,543],{"id":94,"depth":145,"text":95,"children":541},[542],{"id":311,"depth":173,"text":312},{"id":393,"depth":145,"text":394,"children":544},[545],{"id":472,"depth":173,"text":312},"Server-side composables for accessing feature flags.","md",null,{"icon":550},"i-ph-wrench-duotone",{"title":74,"description":546},"pOTyU8RI4yE8I1mBPPvcqdofaxreX3jXRmthr3tv4wQ",[554,548],{"title":70,"path":71,"stem":72,"description":555,"children":-1},"Internal API endpoint for client-side flag updates.",1775559946514]