[{"data":1,"prerenderedAt":537},["ShallowReactive",2],{"navigation":3,"-api":61,"-api-surround":534},[4,19,37,55],{"title":5,"path":6,"stem":7,"children":8,"icon":10},"Compdi","\u002Fguide","1.guide\u002F1.index",[9,11,15],{"title":5,"path":6,"stem":7,"icon":10},"i-lucide-book-open",{"title":12,"path":13,"stem":14,"icon":10},"Quick start","\u002Fguide\u002Fquick-start","1.guide\u002F2.quick-start",{"title":16,"path":17,"stem":18,"icon":10},"Imports and packages","\u002Fguide\u002Fimports","1.guide\u002F3.imports",{"title":20,"path":21,"stem":22,"children":23},"Lifecycles","\u002Fconcepts","2.concepts\u002F1.index",[24,25,29,33],{"title":20,"path":21,"stem":22},{"title":26,"path":27,"stem":28},"Targets, factories, and inference","\u002Fconcepts\u002Ffactories-and-inference","2.concepts\u002F2.factories-and-inference",{"title":30,"path":31,"stem":32},"Scoped dependencies","\u002Fconcepts\u002Fscopes","2.concepts\u002F3.scopes",{"title":34,"path":35,"stem":36},"Application teardown","\u002Fconcepts\u002Fteardown","2.concepts\u002F4.teardown",{"title":38,"path":39,"stem":40,"children":41},"Build-tool integrations","\u002Fintegrations","3.integrations\u002F1.index",[42,43,47,51],{"title":38,"path":39,"stem":40},{"title":44,"path":45,"stem":46},"Vite","\u002Fintegrations\u002Fvite","3.integrations\u002F2.vite",{"title":48,"path":49,"stem":50},"Rollup and Rolldown","\u002Fintegrations\u002Frollup-and-rolldown","3.integrations\u002F3.rollup-and-rolldown",{"title":52,"path":53,"stem":54},"Rspack and esbuild","\u002Fintegrations\u002Frspack-and-esbuild","3.integrations\u002F4.rspack-and-esbuild",{"title":56,"path":57,"stem":58,"children":59},"API","\u002Fapi","4.api\u002F1.index",[60],{"title":56,"path":57,"stem":58},{"id":62,"title":56,"body":63,"description":110,"extension":528,"meta":529,"navigation":531,"path":57,"seo":532,"stem":58,"__hash__":533},"content\u002F4.api\u002F1.index.md",{"type":64,"value":65,"toc":511},"minimark",[66,80,85,92,95,98,104,148,152,158,161,165,243,249,262,266,324,328,334,337,341,361,367,374,378,416,420,426,429,433,465,471,473,477,507],[67,68,69,70,74,75,79],"p",{},"Import public macros from ",[71,72,73],"code",{},"compdi\u002Fmacros",". For usage guidance, start with the ",[76,77,78],"a",{"href":21},"lifecycle comparison","; use this page when you already know which macro you need.",[81,82,84],"h2",{"id":83},"lifecycle","Lifecycle",[86,87,89],"h3",{"id":88},"defineappteardownresources",[71,90,91],{},"defineAppTeardown(resources)",[67,93,94],{},"Defines an async teardown function that disposes the supplied resources in reverse order. Supported disposal protocols are resolved at build time.",[67,96,97],{},"This macro is experimental and may be removed in a future release.",[67,99,100],{},[101,102,103],"strong",{},"Example:",[105,106,111],"pre",{"className":107,"code":108,"language":109,"meta":110,"style":110},"language-ts shiki shiki-themes github-light github-dark github-dark","const teardown = defineAppTeardown([server, database]);\nawait teardown();\n","ts","",[71,112,113,137],{"__ignoreMap":110},[114,115,118,122,126,129,133],"span",{"class":116,"line":117},"line",1,[114,119,121],{"class":120},"so5gQ","const",[114,123,125],{"class":124},"suiK_"," teardown",[114,127,128],{"class":120}," =",[114,130,132],{"class":131},"shcOC"," defineAppTeardown",[114,134,136],{"class":135},"slsVL","([server, database]);\n",[114,138,140,143,145],{"class":116,"line":139},2,[114,141,142],{"class":120},"await",[114,144,125],{"class":131},[114,146,147],{"class":135},"();\n",[81,149,151],{"id":150},"scoped","Scoped",[86,153,155],{"id":154},"createscopedoptions",[71,156,157],{},"createScoped(options)",[67,159,160],{},"Creates a stable object proxy that resolves one value per active context and returns it with a non-creating lifecycle controller.",[67,162,163],{},[101,164,103],{},[105,166,168],{"className":107,"code":167,"language":109,"meta":110,"style":110},"const [database, scope] = createScoped({\n  factory: request => createDatabase(request),\n  context: useRequest,\n});\nscope.release(request);\n",[71,169,170,198,219,225,231],{"__ignoreMap":110},[114,171,172,174,177,180,183,186,189,192,195],{"class":116,"line":117},[114,173,121],{"class":120},[114,175,176],{"class":135}," [",[114,178,179],{"class":124},"database",[114,181,182],{"class":135},", ",[114,184,185],{"class":124},"scope",[114,187,188],{"class":135},"] ",[114,190,191],{"class":120},"=",[114,193,194],{"class":131}," createScoped",[114,196,197],{"class":135},"({\n",[114,199,200,203,206,210,213,216],{"class":116,"line":139},[114,201,202],{"class":131},"  factory",[114,204,205],{"class":135},": ",[114,207,209],{"class":208},"sQHwn","request",[114,211,212],{"class":120}," =>",[114,214,215],{"class":131}," createDatabase",[114,217,218],{"class":135},"(request),\n",[114,220,222],{"class":116,"line":221},3,[114,223,224],{"class":135},"  context: useRequest,\n",[114,226,228],{"class":116,"line":227},4,[114,229,230],{"class":135},"});\n",[114,232,234,237,240],{"class":116,"line":233},5,[114,235,236],{"class":135},"scope.",[114,238,239],{"class":131},"release",[114,241,242],{"class":135},"(request);\n",[86,244,246],{"id":245},"definescopedoptions",[71,247,248],{},"defineScoped(options)",[67,250,251,252,182,255,258,259,261],{},"Defines a keyed per-context accessor with ",[71,253,254],{},"has",[71,256,257],{},"peek",", and ",[71,260,239],{}," lifecycle methods.",[67,263,264],{},[101,265,103],{},[105,267,269],{"className":107,"code":268,"language":109,"meta":110,"style":110},"const useService = defineScoped\u003CService, Request>({\n  target: Service,\n  deps: [database],\n});\nconst service = useService(request);\n",[71,270,271,297,302,307,311],{"__ignoreMap":110},[114,272,273,275,278,280,283,286,289,291,294],{"class":116,"line":117},[114,274,121],{"class":120},[114,276,277],{"class":124}," useService",[114,279,128],{"class":120},[114,281,282],{"class":131}," defineScoped",[114,284,285],{"class":135},"\u003C",[114,287,288],{"class":131},"Service",[114,290,182],{"class":135},[114,292,293],{"class":131},"Request",[114,295,296],{"class":135},">({\n",[114,298,299],{"class":116,"line":139},[114,300,301],{"class":135},"  target: Service,\n",[114,303,304],{"class":116,"line":221},[114,305,306],{"class":135},"  deps: [database],\n",[114,308,309],{"class":116,"line":227},[114,310,230],{"class":135},[114,312,313,315,318,320,322],{"class":116,"line":233},[114,314,121],{"class":120},[114,316,317],{"class":124}," service",[114,319,128],{"class":120},[114,321,277],{"class":131},[114,323,242],{"class":135},[81,325,327],{"id":326},"singleton","Singleton",[86,329,331],{"id":330},"createsingletonoptions",[71,332,333],{},"createSingleton(options)",[67,335,336],{},"Creates one eagerly initialized application-wide value from a class target or factory. Async factories return a promise.",[67,338,339],{},[101,340,103],{},[105,342,344],{"className":107,"code":343,"language":109,"meta":110,"style":110},"const database = createSingleton({ target: Database, deps: [config] });\n",[71,345,346],{"__ignoreMap":110},[114,347,348,350,353,355,358],{"class":116,"line":117},[114,349,121],{"class":120},[114,351,352],{"class":124}," database",[114,354,128],{"class":120},[114,356,357],{"class":131}," createSingleton",[114,359,360],{"class":135},"({ target: Database, deps: [config] });\n",[86,362,364],{"id":363},"definesingletonoptions",[71,365,366],{},"defineSingleton(options)",[67,368,369,370,373],{},"Defines an accessor for one application-wide value. Pass ",[71,371,372],{},"lazy: true"," to defer construction until the first accessor call.",[67,375,376],{},[101,377,103],{},[105,379,381],{"className":107,"code":380,"language":109,"meta":110,"style":110},"const useDatabase = defineSingleton({ target: Database, lazy: true });\nconst database = useDatabase();\n",[71,382,383,404],{"__ignoreMap":110},[114,384,385,387,390,392,395,398,401],{"class":116,"line":117},[114,386,121],{"class":120},[114,388,389],{"class":124}," useDatabase",[114,391,128],{"class":120},[114,393,394],{"class":131}," defineSingleton",[114,396,397],{"class":135},"({ target: Database, lazy: ",[114,399,400],{"class":124},"true",[114,402,403],{"class":135}," });\n",[114,405,406,408,410,412,414],{"class":116,"line":139},[114,407,121],{"class":120},[114,409,352],{"class":124},[114,411,128],{"class":120},[114,413,389],{"class":131},[114,415,147],{"class":135},[81,417,419],{"id":418},"transient","Transient",[86,421,423],{"id":422},"createtransientoptions",[71,424,425],{},"createTransient(options)",[67,427,428],{},"Defines a factory that constructs a fresh value on every call.",[67,430,431],{},[101,432,103],{},[105,434,436],{"className":107,"code":435,"language":109,"meta":110,"style":110},"const createService = createTransient({ target: Service, deps: [database] });\nconst service = createService();\n",[71,437,438,453],{"__ignoreMap":110},[114,439,440,442,445,447,450],{"class":116,"line":117},[114,441,121],{"class":120},[114,443,444],{"class":124}," createService",[114,446,128],{"class":120},[114,448,449],{"class":131}," createTransient",[114,451,452],{"class":135},"({ target: Service, deps: [database] });\n",[114,454,455,457,459,461,463],{"class":116,"line":139},[114,456,121],{"class":120},[114,458,317],{"class":124},[114,460,128],{"class":120},[114,462,444],{"class":131},[114,464,147],{"class":135},[86,466,468],{"id":467},"definetransientoptions",[71,469,470],{},"defineTransient(options)",[67,472,428],{},[67,474,475],{},[101,476,103],{},[105,478,480],{"className":107,"code":479,"language":109,"meta":110,"style":110},"const createService = defineTransient({ target: Service, deps: [database] });\nconst service = createService();\n",[71,481,482,495],{"__ignoreMap":110},[114,483,484,486,488,490,493],{"class":116,"line":117},[114,485,121],{"class":120},[114,487,444],{"class":124},[114,489,128],{"class":120},[114,491,492],{"class":131}," defineTransient",[114,494,452],{"class":135},[114,496,497,499,501,503,505],{"class":116,"line":139},[114,498,121],{"class":120},[114,500,317],{"class":124},[114,502,128],{"class":120},[114,504,444],{"class":131},[114,506,147],{"class":135},[508,509,510],"style",{},"html pre.shiki code .so5gQ, html code.shiki .so5gQ{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F97583}html pre.shiki code .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}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 .sQHwn, html code.shiki .sQHwn{--shiki-light:#E36209;--shiki-default:#FFAB70;--shiki-dark:#FFAB70}",{"title":110,"searchDepth":139,"depth":139,"links":512},[513,516,520,524],{"id":83,"depth":139,"text":84,"children":514},[515],{"id":88,"depth":221,"text":91},{"id":150,"depth":139,"text":151,"children":517},[518,519],{"id":154,"depth":221,"text":157},{"id":245,"depth":221,"text":248},{"id":326,"depth":139,"text":327,"children":521},[522,523],{"id":330,"depth":221,"text":333},{"id":363,"depth":221,"text":366},{"id":418,"depth":139,"text":419,"children":525},[526,527],{"id":422,"depth":221,"text":425},{"id":467,"depth":221,"text":470},"md",{"automd":530},true,{},{"title":56,"description":110},"R0z8M59Fcf6aXyc-LKFZylunUNMajO4ePCiSDQXjZko",[535,536],{"title":52,"path":53,"stem":54,"description":110,"children":-1},null,1785705020732]