[{"data":1,"prerenderedAt":2010},["ShallowReactive",2],{"docs-\u002Fcli":3},{"id":4,"title":5,"body":6,"description":2003,"extension":2004,"meta":2005,"navigation":474,"path":2006,"seo":2007,"stem":2008,"__hash__":2009},"docs\u002Fdocs\u002Fcli.md","SDK CLI",{"type":7,"value":8,"toc":1986},"minimark",[9,13,25,28,33,43,61,63,67,70,93,96,136,141,200,204,357,360,445,449,664,666,670,673,677,680,730,735,1172,1176,1247,1253,1257,1415,1443,1447,1470,1473,1475,1479,1482,1590,1603,1606,1633,1636,1642,1652,1656,1798,1800,1804,1853,1879,1883,1922,1932,1934,1938,1941,1971,1982],[10,11,5],"h1",{"id":12},"sdk-cli",[14,15,16,20,21,24],"p",{},[17,18,19],"code",{},"@cachely-io\u002Fsdk"," ships a deterministic CLI for bootstrapping Cachely in your project. It detects your framework and CMS provider, generates a typed helper file, and updates ",[17,22,23],{},".env.example"," — without touching any existing source files.",[26,27],"hr",{},[29,30,32],"h2",{"id":31},"commands","Commands",[34,35,40],"pre",{"className":36,"code":38,"language":39},[37],"language-text","npx @cachely-io\u002Fsdk \u003Ccommand>\n\nCommands:\n  setup                          Generic helper-file generation for any framework + CMS.\n  setup --provider prismic       Provider-specific onboarding (Nuxt + Prismic) — same as below.\n  setup prismic                  Provider-specific onboarding (Nuxt + Prismic).\n  init prismic                   Alias for `setup prismic`.\n  setup --provider contentful    Provider-specific onboarding (Contentful).\n  setup contentful               Same as above.\n  init                           Print available providers for provider-specific onboarding.\n","text",[17,41,38],{"__ignoreMap":42},"",[44,45,46],"blockquote",{},[14,47,48,52,53,56,57,60],{},[49,50,51],"strong",{},"Since 0.12.0:"," ",[17,54,55],{},"setup --provider prismic"," and ",[17,58,59],{},"setup prismic"," are equivalent. Earlier versions dropped the flag form to the generic helper-only flow — that bug is fixed.",[26,62],{},[29,64,66],{"id":65},"generic-setup","Generic setup",[14,68,69],{},"Use this path for any framework and CMS combination:",[34,71,75],{"className":72,"code":73,"language":74,"meta":42,"style":42},"language-bash shiki shiki-themes github-dark","npx @cachely-io\u002Fsdk setup\n","bash",[17,76,77],{"__ignoreMap":42},[78,79,82,86,90],"span",{"class":80,"line":81},"line",1,[78,83,85],{"class":84},"svObZ","npx",[78,87,89],{"class":88},"sU2Wk"," @cachely-io\u002Fsdk",[78,91,92],{"class":88}," setup\n",[14,94,95],{},"The CLI:",[97,98,99,107,113,119,122,131],"ol",{},[100,101,102,103,106],"li",{},"Detects your ",[49,104,105],{},"framework"," — Next.js, Nuxt, Vite, or generic",[100,108,102,109,112],{},[49,110,111],{},"CMS provider"," — Prismic, Contentful, Sanity, Storyblok, Shopify, or generic",[100,114,102,115,118],{},[49,116,117],{},"package manager"," — pnpm, npm, yarn, or bun",[100,120,121],{},"Generates a typed helper file",[100,123,124,125,128,129],{},"Adds ",[17,126,127],{},"CACHELY_PROXY_URL"," to ",[17,130,23],{},[100,132,133,134],{},"Installs ",[17,135,19],{},[137,138,140],"h3",{"id":139},"generated-helper-locations","Generated helper locations",[142,143,144,157],"table",{},[145,146,147],"thead",{},[148,149,150,154],"tr",{},[151,152,153],"th",{},"Framework",[151,155,156],{},"File",[158,159,160,171,190],"tbody",{},[148,161,162,166],{},[163,164,165],"td",{},"Next.js",[163,167,168],{},[17,169,170],{},"lib\u002Fcachely.ts",[148,172,173,176],{},[163,174,175],{},"Nuxt",[163,177,178,181,182,185,186,189],{},[17,179,180],{},"composables\u002FuseCachely.ts"," (or ",[17,183,184],{},"utils\u002Fcachely.ts"," if your project uses ",[17,187,188],{},"utils\u002F",")",[148,191,192,195],{},[163,193,194],{},"Vite \u002F generic",[163,196,197],{},[17,198,199],{},"cachely.ts",[137,201,203],{"id":202},"flags","Flags",[142,205,206,216],{},[145,207,208],{},[148,209,210,213],{},[151,211,212],{},"Flag",[151,214,215],{},"Description",[158,217,218,228,238,248,269,317,337,347],{},[148,219,220,225],{},[163,221,222],{},[17,223,224],{},"--yes",[163,226,227],{},"Non-interactive. Accept all detected defaults.",[148,229,230,235],{},[163,231,232],{},[17,233,234],{},"--dry-run",[163,236,237],{},"Print every planned action; write nothing; skip install.",[148,239,240,245],{},[163,241,242],{},[17,243,244],{},"--tenant \u003Cslug>",[163,246,247],{},"Hard-code your Cachely tenant slug into the generated helper.",[148,249,250,255],{},[163,251,252],{},[17,253,254],{},"--proxy-url \u003Curl>",[163,256,257,258,261,262,265,266,268],{},"Full proxy URL (e.g. ",[17,259,260],{},"https:\u002F\u002Fmy-project.cachely.io","). Derives ",[17,263,264],{},"--tenant"," if not given; seeds ",[17,267,23],{},".",[148,270,271,276],{},[163,272,273],{},[17,274,275],{},"--provider \u003Cid>",[163,277,278,281,282,281,285,281,288,281,291,281,294,297,298,300,301,300,303,300,305,307,308,311,312,300,314,316],{},[17,279,280],{},"prismic"," · ",[17,283,284],{},"contentful",[17,286,287],{},"sanity",[17,289,290],{},"storyblok",[17,292,293],{},"shopify",[17,295,296],{},"generic",". Since 0.12.0, ",[17,299,280],{}," \u002F ",[17,302,284],{},[17,304,287],{},[17,306,290],{}," route to that provider's onboarder (equivalent to ",[17,309,310],{},"setup \u003Cprovider>","); ",[17,313,293],{},[17,315,296],{}," use the generic helper flow.",[148,318,319,324],{},[163,320,321],{},[17,322,323],{},"--framework \u003Cid>",[163,325,326,281,329,281,332,281,335],{},[17,327,328],{},"next",[17,330,331],{},"nuxt",[17,333,334],{},"vite",[17,336,296],{},[148,338,339,344],{},[163,340,341],{},[17,342,343],{},"--dir \u003Cpath>",[163,345,346],{},"Project root (default: cwd).",[148,348,349,354],{},[163,350,351],{},[17,352,353],{},"-h, --help",[163,355,356],{},"Show help.",[14,358,359],{},"Provider-specific flags (Prismic onboarder):",[142,361,362,370],{},[145,363,364],{},[148,365,366,368],{},[151,367,212],{},[151,369,215],{},[158,371,372,391,411,428],{},[148,373,374,385],{},[163,375,376,300,379,300,382],{},[17,377,378],{},"--composables",[17,380,381],{},"--patch-client",[17,383,384],{},"--no-patch-client",[163,386,387,388,268],{},"Integration mode. Combine the first two for ",[17,389,390],{},"'both'",[148,392,393,401],{},[163,394,395,300,398],{},[17,396,397],{},"--transforms",[17,399,400],{},"--no-transforms",[163,402,403,404,407,408,268],{},"Write ",[17,405,406],{},"docs\u002Fcachely\u002Ftransforms.md"," documenting ",[17,409,410],{},"cachely: { transform }",[148,412,413,421],{},[163,414,415,300,418],{},[17,416,417],{},"--experiments",[17,419,420],{},"--no-experiments",[163,422,423,424,427],{},"Wire ",[17,425,426],{},"useCachelyExperiments()"," into the generated composable.",[148,429,430,438],{},[163,431,432,300,435],{},[17,433,434],{},"--custom-domain",[17,436,437],{},"--no-custom-domain",[163,439,440,441,444],{},"Generate ",[17,442,443],{},"customDomain: true"," in the client.",[137,446,448],{"id":447},"examples","Examples",[34,450,452],{"className":72,"code":451,"language":74,"meta":42,"style":42},"# Auto-detect everything (interactive)\nnpx @cachely-io\u002Fsdk setup\n\n# Prismic + Nuxt (rich onboarder, both forms equivalent since 0.12.0)\nnpx @cachely-io\u002Fsdk setup --provider prismic --tenant my-project --yes\nnpx @cachely-io\u002Fsdk setup prismic --tenant my-project --yes\n\n# Preview without writing\nnpx @cachely-io\u002Fsdk setup --dry-run --provider prismic --tenant my-project\n\n# Prismic with AI Transforms doc + experiments wiring\nnpx @cachely-io\u002Fsdk setup --provider prismic --tenant my-project --transforms --experiments --yes\n\n# Force composables-only (do not touch existing Prismic client)\nnpx @cachely-io\u002Fsdk setup --provider prismic --tenant my-project --composables --yes\n\n# Non-interactive CI mode (Next + Contentful — routes to the Contentful onboarder since 0.12.0)\nnpx @cachely-io\u002Fsdk setup --yes --tenant my-project --provider contentful --framework next\n",[17,453,454,460,469,476,482,508,525,530,536,557,562,568,593,598,604,626,631,637],{"__ignoreMap":42},[78,455,456],{"class":80,"line":81},[78,457,459],{"class":458},"sAwPA","# Auto-detect everything (interactive)\n",[78,461,463,465,467],{"class":80,"line":462},2,[78,464,85],{"class":84},[78,466,89],{"class":88},[78,468,92],{"class":88},[78,470,472],{"class":80,"line":471},3,[78,473,475],{"emptyLinePlaceholder":474},true,"\n",[78,477,479],{"class":80,"line":478},4,[78,480,481],{"class":458},"# Prismic + Nuxt (rich onboarder, both forms equivalent since 0.12.0)\n",[78,483,485,487,489,492,496,499,502,505],{"class":80,"line":484},5,[78,486,85],{"class":84},[78,488,89],{"class":88},[78,490,491],{"class":88}," setup",[78,493,495],{"class":494},"sDLfK"," --provider",[78,497,498],{"class":88}," prismic",[78,500,501],{"class":494}," --tenant",[78,503,504],{"class":88}," my-project",[78,506,507],{"class":494}," --yes\n",[78,509,511,513,515,517,519,521,523],{"class":80,"line":510},6,[78,512,85],{"class":84},[78,514,89],{"class":88},[78,516,491],{"class":88},[78,518,498],{"class":88},[78,520,501],{"class":494},[78,522,504],{"class":88},[78,524,507],{"class":494},[78,526,528],{"class":80,"line":527},7,[78,529,475],{"emptyLinePlaceholder":474},[78,531,533],{"class":80,"line":532},8,[78,534,535],{"class":458},"# Preview without writing\n",[78,537,539,541,543,545,548,550,552,554],{"class":80,"line":538},9,[78,540,85],{"class":84},[78,542,89],{"class":88},[78,544,491],{"class":88},[78,546,547],{"class":494}," --dry-run",[78,549,495],{"class":494},[78,551,498],{"class":88},[78,553,501],{"class":494},[78,555,556],{"class":88}," my-project\n",[78,558,560],{"class":80,"line":559},10,[78,561,475],{"emptyLinePlaceholder":474},[78,563,565],{"class":80,"line":564},11,[78,566,567],{"class":458},"# Prismic with AI Transforms doc + experiments wiring\n",[78,569,571,573,575,577,579,581,583,585,588,591],{"class":80,"line":570},12,[78,572,85],{"class":84},[78,574,89],{"class":88},[78,576,491],{"class":88},[78,578,495],{"class":494},[78,580,498],{"class":88},[78,582,501],{"class":494},[78,584,504],{"class":88},[78,586,587],{"class":494}," --transforms",[78,589,590],{"class":494}," --experiments",[78,592,507],{"class":494},[78,594,596],{"class":80,"line":595},13,[78,597,475],{"emptyLinePlaceholder":474},[78,599,601],{"class":80,"line":600},14,[78,602,603],{"class":458},"# Force composables-only (do not touch existing Prismic client)\n",[78,605,607,609,611,613,615,617,619,621,624],{"class":80,"line":606},15,[78,608,85],{"class":84},[78,610,89],{"class":88},[78,612,491],{"class":88},[78,614,495],{"class":494},[78,616,498],{"class":88},[78,618,501],{"class":494},[78,620,504],{"class":88},[78,622,623],{"class":494}," --composables",[78,625,507],{"class":494},[78,627,629],{"class":80,"line":628},16,[78,630,475],{"emptyLinePlaceholder":474},[78,632,634],{"class":80,"line":633},17,[78,635,636],{"class":458},"# Non-interactive CI mode (Next + Contentful — routes to the Contentful onboarder since 0.12.0)\n",[78,638,640,642,644,646,649,651,653,655,658,661],{"class":80,"line":639},18,[78,641,85],{"class":84},[78,643,89],{"class":88},[78,645,491],{"class":88},[78,647,648],{"class":494}," --yes",[78,650,501],{"class":494},[78,652,504],{"class":88},[78,654,495],{"class":494},[78,656,657],{"class":88}," contentful",[78,659,660],{"class":494}," --framework",[78,662,663],{"class":88}," next\n",[26,665],{},[29,667,669],{"id":668},"provider-specific-onboarding","Provider-specific onboarding",[14,671,672],{},"For a more guided, CMS-specific setup, use the provider commands.",[137,674,676],{"id":675},"prismic-onboarding","Prismic onboarding",[14,678,679],{},"All three of these commands are equivalent — they reach the same rich onboarder (since 0.12.0):",[34,681,683],{"className":72,"code":682,"language":74,"meta":42,"style":42},"npx @cachely-io\u002Fsdk setup --provider prismic --tenant my-project\nnpx @cachely-io\u002Fsdk setup prismic --tenant my-project\nnpx @cachely-io\u002Fsdk init prismic --tenant my-project\n",[17,684,685,701,715],{"__ignoreMap":42},[78,686,687,689,691,693,695,697,699],{"class":80,"line":81},[78,688,85],{"class":84},[78,690,89],{"class":88},[78,692,491],{"class":88},[78,694,495],{"class":494},[78,696,498],{"class":88},[78,698,501],{"class":494},[78,700,556],{"class":88},[78,702,703,705,707,709,711,713],{"class":80,"line":462},[78,704,85],{"class":84},[78,706,89],{"class":88},[78,708,491],{"class":88},[78,710,498],{"class":88},[78,712,501],{"class":494},[78,714,556],{"class":88},[78,716,717,719,721,724,726,728],{"class":80,"line":471},[78,718,85],{"class":84},[78,720,89],{"class":88},[78,722,723],{"class":88}," init",[78,725,498],{"class":88},[78,727,501],{"class":494},[78,729,556],{"class":88},[731,732,734],"h4",{"id":733},"what-prismic-onboarding-does","What Prismic onboarding does",[97,736,737,754,768,780,895,984,997,1130,1140,1160],{},[100,738,739,742,743,746,747,750,751,268],{},[49,740,741],{},"Detects a Nuxt project"," — looks for ",[17,744,745],{},"nuxt.config.ts",", ",[17,748,749],{},"nuxt.config.js",", or ",[17,752,753],{},"nuxt.config.mjs",[100,755,756,759,760,763,764,767],{},[49,757,758],{},"Detects Prismic"," — checks for ",[17,761,762],{},"@prismicio\u002Fclient"," or ",[17,765,766],{},"@prismicio\u002Fnuxt"," in dependencies.",[100,769,770,776,777,268],{},[49,771,772,773],{},"Reads ",[17,774,775],{},"repositoryName"," from ",[17,778,779],{},"slicemachine.config.json",[100,781,782,788,789,879,880,883,884,887,888,763,891,894],{},[49,783,784,785],{},"Generates ",[17,786,787],{},"composables\u002FuseCachelyPrismicClient.ts"," — the primary integration surface:\n",[34,790,794],{"className":791,"code":792,"language":793,"meta":42,"style":42},"language-ts shiki shiki-themes github-dark","import { createCachelyPrismicClient } from \"@cachely-io\u002Fsdk\u002Fprismic\"\nimport { repositoryName } from \"~\u002Fslicemachine.config.json\"\n\nexport function useCachelyPrismicClient() {\n  return createCachelyPrismicClient({\n    repositoryName,\n    tenant: \"my-project\",\n  })\n}\n","ts",[17,795,796,812,824,828,842,853,858,869,874],{"__ignoreMap":42},[78,797,798,802,806,809],{"class":80,"line":81},[78,799,801],{"class":800},"snl16","import",[78,803,805],{"class":804},"s95oV"," { createCachelyPrismicClient } ",[78,807,808],{"class":800},"from",[78,810,811],{"class":88}," \"@cachely-io\u002Fsdk\u002Fprismic\"\n",[78,813,814,816,819,821],{"class":80,"line":462},[78,815,801],{"class":800},[78,817,818],{"class":804}," { repositoryName } ",[78,820,808],{"class":800},[78,822,823],{"class":88}," \"~\u002Fslicemachine.config.json\"\n",[78,825,826],{"class":80,"line":471},[78,827,475],{"emptyLinePlaceholder":474},[78,829,830,833,836,839],{"class":80,"line":478},[78,831,832],{"class":800},"export",[78,834,835],{"class":800}," function",[78,837,838],{"class":84}," useCachelyPrismicClient",[78,840,841],{"class":804},"() {\n",[78,843,844,847,850],{"class":80,"line":484},[78,845,846],{"class":800},"  return",[78,848,849],{"class":84}," createCachelyPrismicClient",[78,851,852],{"class":804},"({\n",[78,854,855],{"class":80,"line":510},[78,856,857],{"class":804},"    repositoryName,\n",[78,859,860,863,866],{"class":80,"line":527},[78,861,862],{"class":804},"    tenant: ",[78,864,865],{"class":88},"\"my-project\"",[78,867,868],{"class":804},",\n",[78,870,871],{"class":80,"line":532},[78,872,873],{"class":804},"  })\n",[78,875,876],{"class":80,"line":538},[78,877,878],{"class":804},"}\n","\nUse it in pages: ",[17,881,882],{},"const client = useCachelyPrismicClient()",". On Nuxt 4 layouts, writes to ",[17,885,886],{},"app\u002Fcomposables\u002F"," instead. Picks ",[17,889,890],{},".ts",[17,892,893],{},".js"," based on existing folder contents.",[100,896,897,900,901,904,905,908,909,950,979,980,983],{},[49,898,899],{},"On greenfield or trivially-patchable projects",", also writes ",[17,902,903],{},"app\u002Fprismic\u002Fclient.js"," (the canonical user-defined client) and patches ",[17,906,907],{},"config\u002Fnuxt\u002Fprismic.{js,ts}",":\n",[34,910,914],{"className":911,"code":912,"language":913,"meta":42,"style":42},"language-js shiki shiki-themes github-dark","\u002F\u002F app\u002Fprismic\u002Fclient.js\nimport { createClient } from \"@prismicio\u002Fclient\"\nimport { createCachelyFetch } from \"@cachely-io\u002Fsdk\"\nimport { repositoryName } from \"~\u002Fslicemachine.config.json\"\n\nconst cachelyFetch = createCachelyFetch({ tenant: \"my-project\", provider: \"prismic\" })\nexport default createClient(repositoryName, { fetch: cachelyFetch })\n","js",[17,915,916,921,926,931,936,940,945],{"__ignoreMap":42},[78,917,918],{"class":80,"line":81},[78,919,920],{},"\u002F\u002F app\u002Fprismic\u002Fclient.js\n",[78,922,923],{"class":80,"line":462},[78,924,925],{},"import { createClient } from \"@prismicio\u002Fclient\"\n",[78,927,928],{"class":80,"line":471},[78,929,930],{},"import { createCachelyFetch } from \"@cachely-io\u002Fsdk\"\n",[78,932,933],{"class":80,"line":478},[78,934,935],{},"import { repositoryName } from \"~\u002Fslicemachine.config.json\"\n",[78,937,938],{"class":80,"line":484},[78,939,475],{"emptyLinePlaceholder":474},[78,941,942],{"class":80,"line":510},[78,943,944],{},"const cachelyFetch = createCachelyFetch({ tenant: \"my-project\", provider: \"prismic\" })\n",[78,946,947],{"class":80,"line":527},[78,948,949],{},"export default createClient(repositoryName, { fetch: cachelyFetch })\n",[34,951,953],{"className":911,"code":952,"language":913,"meta":42,"style":42},"\u002F\u002F config\u002Fnuxt\u002Fprismic.js\nexport default {\n  endpoint: config.repositoryName,\n  client: \"~\u002Fapp\u002Fprismic\u002Fclient\"\n}\n",[17,954,955,960,965,970,975],{"__ignoreMap":42},[78,956,957],{"class":80,"line":81},[78,958,959],{},"\u002F\u002F config\u002Fnuxt\u002Fprismic.js\n",[78,961,962],{"class":80,"line":462},[78,963,964],{},"export default {\n",[78,966,967],{"class":80,"line":471},[78,968,969],{},"  endpoint: config.repositoryName,\n",[78,971,972],{"class":80,"line":478},[78,973,974],{},"  client: \"~\u002Fapp\u002Fprismic\u002Fclient\"\n",[78,976,977],{"class":80,"line":484},[78,978,878],{},"\nWith both in place, ",[17,981,982],{},"usePrismic().client"," is also routed through Cachely.",[100,985,986,989,990,993,994,996],{},[49,987,988],{},"On complex existing clients"," (token, routes, custom fetch, etc.), the file is ",[49,991,992],{},"not modified",". The CLI prints a loud warning + manual patch instructions instead. Re-run with ",[17,995,381],{}," to force-attempt the canonical write.",[100,998,999,1005,1006,1129],{},[49,1000,1001,1002],{},"Writes\u002Fmerges ",[17,1003,1004],{},"cachely.config.json"," in the project root:\n",[34,1007,1011],{"className":1008,"code":1009,"language":1010,"meta":42,"style":42},"language-json shiki shiki-themes github-dark","{\n  \"provider\": \"prismic\",\n  \"framework\": \"nuxt\",\n  \"repositoryName\": \"your-repo\",\n  \"apiOrigin\": \"https:\u002F\u002Fyour-repo.cdn.prismic.io\",\n  \"cachelyEndpoint\": \"https:\u002F\u002Fmy-project.cachely.io\u002F~api\u002Fapi\u002Fv2\",\n  \"recommendedClient\": \"~\u002Fapp\u002Fprismic\u002Fclient\",\n  \"integration\": \"both\",\n  \"transforms\": false,\n  \"experiments\": false\n}\n","json",[17,1012,1013,1018,1031,1043,1055,1067,1079,1091,1103,1115,1125],{"__ignoreMap":42},[78,1014,1015],{"class":80,"line":81},[78,1016,1017],{"class":804},"{\n",[78,1019,1020,1023,1026,1029],{"class":80,"line":462},[78,1021,1022],{"class":494},"  \"provider\"",[78,1024,1025],{"class":804},": ",[78,1027,1028],{"class":88},"\"prismic\"",[78,1030,868],{"class":804},[78,1032,1033,1036,1038,1041],{"class":80,"line":471},[78,1034,1035],{"class":494},"  \"framework\"",[78,1037,1025],{"class":804},[78,1039,1040],{"class":88},"\"nuxt\"",[78,1042,868],{"class":804},[78,1044,1045,1048,1050,1053],{"class":80,"line":478},[78,1046,1047],{"class":494},"  \"repositoryName\"",[78,1049,1025],{"class":804},[78,1051,1052],{"class":88},"\"your-repo\"",[78,1054,868],{"class":804},[78,1056,1057,1060,1062,1065],{"class":80,"line":484},[78,1058,1059],{"class":494},"  \"apiOrigin\"",[78,1061,1025],{"class":804},[78,1063,1064],{"class":88},"\"https:\u002F\u002Fyour-repo.cdn.prismic.io\"",[78,1066,868],{"class":804},[78,1068,1069,1072,1074,1077],{"class":80,"line":510},[78,1070,1071],{"class":494},"  \"cachelyEndpoint\"",[78,1073,1025],{"class":804},[78,1075,1076],{"class":88},"\"https:\u002F\u002Fmy-project.cachely.io\u002F~api\u002Fapi\u002Fv2\"",[78,1078,868],{"class":804},[78,1080,1081,1084,1086,1089],{"class":80,"line":527},[78,1082,1083],{"class":494},"  \"recommendedClient\"",[78,1085,1025],{"class":804},[78,1087,1088],{"class":88},"\"~\u002Fapp\u002Fprismic\u002Fclient\"",[78,1090,868],{"class":804},[78,1092,1093,1096,1098,1101],{"class":80,"line":532},[78,1094,1095],{"class":494},"  \"integration\"",[78,1097,1025],{"class":804},[78,1099,1100],{"class":88},"\"both\"",[78,1102,868],{"class":804},[78,1104,1105,1108,1110,1113],{"class":80,"line":538},[78,1106,1107],{"class":494},"  \"transforms\"",[78,1109,1025],{"class":804},[78,1111,1112],{"class":494},"false",[78,1114,868],{"class":804},[78,1116,1117,1120,1122],{"class":80,"line":559},[78,1118,1119],{"class":494},"  \"experiments\"",[78,1121,1025],{"class":804},[78,1123,1124],{"class":494},"false\n",[78,1126,1127],{"class":80,"line":564},[78,1128,878],{"class":804},"\nTooling manifest only — not a runtime import.",[100,1131,1132,1136,1137,268],{},[49,1133,133,1134],{},[17,1135,19],{}," if it is not already in ",[17,1138,1139],{},"package.json",[100,1141,1142,1148,1149,1152,1153,1156,1157,1159],{},[49,1143,1144,1145],{},"Does not modify ",[17,1146,1147],{},"nuxt.config.{ts,js}"," — prints the snippet to add ",[17,1150,1151],{},"runtimeConfig.public.cachelyProxyUrl"," instead. Same policy applies to the ",[17,1154,1155],{},"cachely: { tenant }"," block when ",[17,1158,417],{}," is enabled.",[100,1161,1162,1167,1168,1171],{},[49,1163,1164,1165],{},"Does not generate ",[17,1166,180],{}," — that generic helper caused confusion (generated, never called) and is no longer emitted by the Prismic onboarder. Run plain ",[17,1169,1170],{},"npx @cachely-io\u002Fsdk setup"," (no provider) if you specifically want the lower-level fetch helper.",[731,1173,1175],{"id":1174},"integration-mode-behaviour-matrix","Integration-mode behaviour matrix",[142,1177,1178,1196],{},[145,1179,1180],{},[148,1181,1182,1185,1190,1193],{},[151,1183,1184],{},"Project state",[151,1186,1187,1189],{},[17,1188,224],{}," integration",[151,1191,1192],{},"Files created",[151,1194,1195],{},"Files patched",[158,1197,1198,1215,1232],{},[148,1199,1200,1203,1207,1210],{},[163,1201,1202],{},"Greenfield (no canonical client)",[163,1204,1205],{},[17,1206,390],{},[163,1208,1209],{},"composable + canonical client + cachely.config.json",[163,1211,1212,1214],{},[17,1213,907],{}," (if present)",[148,1216,1217,1220,1224,1227],{},[163,1218,1219],{},"Existing client, trivially patchable",[163,1221,1222],{},[17,1223,390],{},[163,1225,1226],{},"composable + cachely.config.json",[163,1228,1229,1231],{},[17,1230,903],{}," (safe-patched) + config",[148,1233,1234,1237,1242,1244],{},[163,1235,1236],{},"Existing client, complex \u002F custom",[163,1238,1239],{},[17,1240,1241],{},"'composables'",[163,1243,1226],{},[163,1245,1246],{},"none — loud warning + manual instructions printed",[14,1248,1249,1250,1252],{},"In interactive mode (no ",[17,1251,224],{},"), you are prompted for: integration mode, transforms, experiments.",[731,1254,1256],{"id":1255},"supported-flags","Supported flags",[142,1258,1259,1271],{},[145,1260,1261],{},[148,1262,1263,1265,1268],{},[151,1264,212],{},[151,1266,1267],{},"Default",[151,1269,1270],{},"What it does",[158,1272,1273,1288,1306,1318,1333,1352,1378,1394],{},[148,1274,1275,1279,1285],{},[163,1276,1277],{},[17,1278,378],{},[163,1280,1281,1282,1284],{},"(inferred — see ",[17,1283,224],{}," rules)",[163,1286,1287],{},"Generate the composable only.",[148,1289,1290,1294,1297],{},[163,1291,1292],{},[17,1293,381],{},[163,1295,1296],{},"(inferred)",[163,1298,1299,1300,1302,1303,268],{},"Write\u002Fpatch the canonical ",[17,1301,903],{}," + ",[17,1304,1305],{},"config\u002Fnuxt\u002Fprismic",[148,1307,1308,1313,1315],{},[163,1309,1310],{},[17,1311,1312],{},"--composables --patch-client",[163,1314,1296],{},[163,1316,1317],{},"Both.",[148,1319,1320,1324,1327],{},[163,1321,1322],{},[17,1323,384],{},[163,1325,1326],{},"—",[163,1328,1329,1330,1332],{},"Equivalent to ",[17,1331,378],{}," alone.",[148,1334,1335,1341,1344],{},[163,1336,1337,300,1339],{},[17,1338,397],{},[17,1340,400],{},[163,1342,1343],{},"off",[163,1345,403,1346,1348,1349,1351],{},[17,1347,406],{}," documenting the per-call ",[17,1350,410],{}," API.",[148,1353,1354,1360,1362],{},[163,1355,1356,300,1358],{},[17,1357,417],{},[17,1359,420],{},[163,1361,1343],{},[163,1363,423,1364,1366,1367,746,1370,1372,1373,268],{},[17,1365,426],{}," into the composable body. Print the Nuxt-module registration snippet (",[17,1368,1369],{},"modules: ['@cachely-io\u002Fsdk\u002Fnuxt']",[17,1371,1155],{},"). See ",[1374,1375,1377],"a",{"href":1376},"\u002Fapi\u002Fai-experiments","Experiments",[148,1379,1380,1386,1388],{},[163,1381,1382,300,1384],{},[17,1383,434],{},[17,1385,437],{},[163,1387,1343],{},[163,1389,1390,1391,1393],{},"Emit ",[17,1392,443],{}," in the client (use when the Cachely project has a custom domain with website-proxy enabled).",[148,1395,1396,1410,1412],{},[163,1397,1398,746,1400,746,1402,746,1404,746,1407],{},[17,1399,224],{},[17,1401,234],{},[17,1403,264],{},[17,1405,1406],{},"--proxy-url",[17,1408,1409],{},"--dir",[163,1411,1326],{},[163,1413,1414],{},"Same as generic setup.",[44,1416,1417],{},[14,1418,1419,1427,1428,1430,1431,1434,1435,1438,1439,1442],{},[49,1420,1421,1424,1425],{},[17,1422,1423],{},"--patch-client --experiments"," without ",[17,1426,378],{}," is not recommended. The canonical ",[17,1429,903],{}," template uses ",[17,1432,1433],{},"createCachelyFetch"," which does not accept an ",[17,1436,1437],{},"experiments"," tracker, so only the Nuxt module's ",[17,1440,1441],{},"autoTrack()"," will work; per-response assignment-header capture requires the composable surface. The CLI prints a loud warning when this combination is requested.",[731,1444,1446],{"id":1445},"dry-run","Dry-run",[34,1448,1450],{"className":72,"code":1449,"language":74,"meta":42,"style":42},"npx @cachely-io\u002Fsdk setup --provider prismic --dry-run --tenant my-project\n",[17,1451,1452],{"__ignoreMap":42},[78,1453,1454,1456,1458,1460,1462,1464,1466,1468],{"class":80,"line":81},[78,1455,85],{"class":84},[78,1457,89],{"class":88},[78,1459,491],{"class":88},[78,1461,495],{"class":494},[78,1463,498],{"class":88},[78,1465,547],{"class":494},[78,1467,501],{"class":494},[78,1469,556],{"class":88},[14,1471,1472],{},"Prints all planned file changes without writing anything.",[26,1474],{},[29,1476,1478],{"id":1477},"after-prismic-onboarding","After Prismic onboarding",[14,1480,1481],{},"Use the generated composable in pages:",[34,1483,1487],{"className":1484,"code":1485,"language":1486,"meta":42,"style":42},"language-vue shiki shiki-themes github-dark","\u003Cscript setup lang=\"ts\">\nconst client = useCachelyPrismicClient()\nconst { data: page } = await useAsyncData('home', () => client.getSingle('page_home'))\n\u003C\u002Fscript>\n","vue",[17,1488,1489,1512,1528,1581],{"__ignoreMap":42},[78,1490,1491,1494,1498,1500,1503,1506,1509],{"class":80,"line":81},[78,1492,1493],{"class":804},"\u003C",[78,1495,1497],{"class":1496},"s4JwU","script",[78,1499,491],{"class":84},[78,1501,1502],{"class":84}," lang",[78,1504,1505],{"class":804},"=",[78,1507,1508],{"class":88},"\"ts\"",[78,1510,1511],{"class":804},">\n",[78,1513,1514,1517,1520,1523,1525],{"class":80,"line":462},[78,1515,1516],{"class":800},"const",[78,1518,1519],{"class":494}," client",[78,1521,1522],{"class":800}," =",[78,1524,838],{"class":84},[78,1526,1527],{"class":804},"()\n",[78,1529,1530,1532,1535,1539,1541,1544,1547,1549,1552,1555,1558,1561,1564,1567,1570,1573,1575,1578],{"class":80,"line":471},[78,1531,1516],{"class":800},[78,1533,1534],{"class":804}," { ",[78,1536,1538],{"class":1537},"s9osk","data",[78,1540,1025],{"class":804},[78,1542,1543],{"class":494},"page",[78,1545,1546],{"class":804}," } ",[78,1548,1505],{"class":800},[78,1550,1551],{"class":800}," await",[78,1553,1554],{"class":84}," useAsyncData",[78,1556,1557],{"class":804},"(",[78,1559,1560],{"class":88},"'home'",[78,1562,1563],{"class":804},", () ",[78,1565,1566],{"class":800},"=>",[78,1568,1569],{"class":804}," client.",[78,1571,1572],{"class":84},"getSingle",[78,1574,1557],{"class":804},[78,1576,1577],{"class":88},"'page_home'",[78,1579,1580],{"class":804},"))\n",[78,1582,1583,1586,1588],{"class":80,"line":478},[78,1584,1585],{"class":804},"\u003C\u002F",[78,1587,1497],{"class":1496},[78,1589,1511],{"class":804},[14,1591,1592,1593,1596,1597,1599,1600,268],{},"If the canonical client was also written (greenfield \u002F trivially-patchable case), ",[17,1594,1595],{},"const { client } = usePrismic()"," is routed through Cachely too. If you opted into composables-only, swap any remaining ",[17,1598,982],{}," callers to ",[17,1601,1602],{},"useCachelyPrismicClient()",[14,1604,1605],{},"Clear Nuxt's generated cache and restart:",[34,1607,1609],{"className":72,"code":1608,"language":74,"meta":42,"style":42},"rm -rf .nuxt\nnpm run dev\n",[17,1610,1611,1622],{"__ignoreMap":42},[78,1612,1613,1616,1619],{"class":80,"line":81},[78,1614,1615],{"class":84},"rm",[78,1617,1618],{"class":494}," -rf",[78,1620,1621],{"class":88}," .nuxt\n",[78,1623,1624,1627,1630],{"class":80,"line":462},[78,1625,1626],{"class":84},"npm",[78,1628,1629],{"class":88}," run",[78,1631,1632],{"class":88}," dev\n",[14,1634,1635],{},"If the canonical client was patched, the startup log includes:",[34,1637,1640],{"className":1638,"code":1639,"language":39},[37],"Using user-defined `client` at `~\u002Fapp\u002Fprismic\u002Fclient.js`\n",[17,1641,1639],{"__ignoreMap":42},[14,1643,1644,1645,1648,1649,268],{},"In DevTools, Prismic API requests should go to ",[17,1646,1647],{},"https:\u002F\u002F\u003Ctenant>.cachely.io\u002F~api\u002Fapi\u002Fv2\u002F..."," and asset URLs in API JSON should be rewritten to ",[17,1650,1651],{},"https:\u002F\u002F\u003Ctenant>.cachely.io\u002F\u003CrepositoryName>\u002F...",[137,1653,1655],{"id":1654},"prismic-troubleshooting","Prismic troubleshooting",[1657,1658,1659,1682,1699,1705,1723,1735,1744],"ul",{},[100,1660,1661,1664,1665,1667,1668,1671,1672,1674,1675,1678,1679,268],{},[49,1662,1663],{},"I ran setup but requests still hit Prismic."," Pages still call ",[17,1666,982],{}," or custom ",[17,1669,1670],{},"\u002Fapi\u002Fcms\u002F..."," endpoints. Switch them to ",[17,1673,882],{},". If you opted into the canonical client path, verify ",[17,1676,1677],{},"config\u002Fnuxt\u002Fprismic.js"," contains ",[17,1680,1681],{},"client: \"~\u002Fapp\u002Fprismic\u002Fclient\"",[100,1683,1684,1690,1691,56,1693,128,1696,268],{},[49,1685,1686,1689],{},[17,1687,1688],{},"useCachelyExperiments"," is not defined."," The Cachely Nuxt module isn't registered. Add ",[17,1692,1369],{},[17,1694,1695],{},"cachely: { tenant: '\u003Cslug>' }",[17,1697,1698],{},"nuxt.config",[100,1700,1701,1704],{},[49,1702,1703],{},"Setup did not modify my existing client."," By design — your existing client has custom options. Use the generated composable from your pages, or manually apply the printed patch instructions.",[100,1706,1707,1713,1714,1717,1718,1720,1721,268],{},[49,1708,1709,1710,268],{},"Still seeing ",[17,1711,1712],{},"cdn.prismic.io"," Delete ",[17,1715,1716],{},".nuxt",", restart dev, and confirm ",[17,1719,1677],{}," includes ",[17,1722,1681],{},[100,1724,1725,1728,1729,1732,1733,268],{},[49,1726,1727],{},"\"A repository name is required...\""," Endpoint replacement was used in a hand-written setup. Restore ",[17,1730,1731],{},"endpoint: config.repositoryName"," and use the client file with ",[17,1734,1433],{},[100,1736,1737,1743],{},[49,1738,1739,1740,268],{},"Asset URLs still point at ",[17,1741,1742],{},"images.prismic.io"," First confirm API requests go through Cachely, then check that API response rewriting is enabled.",[100,1745,1746,1749,1750,1775,1776,1779,1780,1783,1784,1787,1788,1791,1792,1795,1796,268],{},[49,1747,1748],{},"AI Transforms are not applying."," Requests reach Cachely but come back untransformed because no transform profile was passed for that Prismic call. Pass it per-call:\n",[34,1751,1753],{"className":791,"code":1752,"language":793,"meta":42,"style":42},"client.getSingle('page_home', { cachely: { transform: 'serbian' } })\n",[17,1754,1755],{"__ignoreMap":42},[78,1756,1757,1760,1762,1764,1766,1769,1772],{"class":80,"line":81},[78,1758,1759],{"class":804},"client.",[78,1761,1572],{"class":84},[78,1763,1557],{"class":804},[78,1765,1577],{"class":88},[78,1767,1768],{"class":804},", { cachely: { transform: ",[78,1770,1771],{"class":88},"'serbian'",[78,1773,1774],{"class":804}," } })\n","\nThe profile must be ",[49,1777,1778],{},"active"," in the dashboard (drafts only run in preview). Set ",[17,1781,1782],{},"transform"," on ",[17,1785,1786],{},"createCachelyPrismicClient({ ... })"," to apply it to every call from that client; per-call ",[17,1789,1790],{},"cachely: { transform: null }"," disables the default for one request. The ",[17,1793,1794],{},"cachely"," namespace is stripped before params reach ",[17,1797,762],{},[26,1799],{},[29,1801,1803],{"id":1802},"contentful-onboarding","Contentful onboarding",[34,1805,1807],{"className":72,"code":1806,"language":74,"meta":42,"style":42},"npx @cachely-io\u002Fsdk setup --provider contentful --tenant my-project\nnpx @cachely-io\u002Fsdk setup contentful --tenant my-project\nnpx @cachely-io\u002Fsdk init contentful --tenant my-project\n",[17,1808,1809,1825,1839],{"__ignoreMap":42},[78,1810,1811,1813,1815,1817,1819,1821,1823],{"class":80,"line":81},[78,1812,85],{"class":84},[78,1814,89],{"class":88},[78,1816,491],{"class":88},[78,1818,495],{"class":494},[78,1820,657],{"class":88},[78,1822,501],{"class":494},[78,1824,556],{"class":88},[78,1826,1827,1829,1831,1833,1835,1837],{"class":80,"line":462},[78,1828,85],{"class":84},[78,1830,89],{"class":88},[78,1832,491],{"class":88},[78,1834,657],{"class":88},[78,1836,501],{"class":494},[78,1838,556],{"class":88},[78,1840,1841,1843,1845,1847,1849,1851],{"class":80,"line":471},[78,1842,85],{"class":84},[78,1844,89],{"class":88},[78,1846,723],{"class":88},[78,1848,657],{"class":88},[78,1850,501],{"class":494},[78,1852,556],{"class":88},[14,1854,1855,1856,746,1859,746,1862,746,1865,750,1867,1870,1871,1874,1875,1878],{},"Detects a Contentful client file under ",[17,1857,1858],{},"plugins\u002F",[17,1860,1861],{},"services\u002F",[17,1863,1864],{},"lib\u002F",[17,1866,188],{},[17,1868,1869],{},"src\u002F{lib,services}\u002F"," and safely patches the single safe shape (one ",[17,1872,1873],{},"createClient(\u003Cbare-identifier>)"," call referencing a top-level config object with no existing ",[17,1876,1877],{},"adapter:"," key). More complex files are left untouched with manual instructions printed.",[29,1880,1882],{"id":1881},"sanity-storyblok-detect-status-only","Sanity & Storyblok — detect + status-only",[34,1884,1886],{"className":72,"code":1885,"language":74,"meta":42,"style":42},"npx @cachely-io\u002Fsdk setup --provider sanity --tenant my-project\nnpx @cachely-io\u002Fsdk setup --provider storyblok --tenant my-project\n",[17,1887,1888,1905],{"__ignoreMap":42},[78,1889,1890,1892,1894,1896,1898,1901,1903],{"class":80,"line":81},[78,1891,85],{"class":84},[78,1893,89],{"class":88},[78,1895,491],{"class":88},[78,1897,495],{"class":494},[78,1899,1900],{"class":88}," sanity",[78,1902,501],{"class":494},[78,1904,556],{"class":88},[78,1906,1907,1909,1911,1913,1915,1918,1920],{"class":80,"line":462},[78,1908,85],{"class":84},[78,1910,89],{"class":88},[78,1912,491],{"class":88},[78,1914,495],{"class":494},[78,1916,1917],{"class":88}," storyblok",[78,1919,501],{"class":494},[78,1921,556],{"class":88},[14,1923,1924,1925,1927,1928,1931],{},"These detect dependencies and metadata into ",[17,1926,1004],{}," but ",[49,1929,1930],{},"do not"," modify any client file or install the SDK. Runtime SDK routing for these providers ships in a future release.",[26,1933],{},[29,1935,1937],{"id":1936},"manual-install","Manual install",[14,1939,1940],{},"If you prefer not to run the CLI:",[34,1942,1944],{"className":72,"code":1943,"language":74,"meta":42,"style":42},"npm install @cachely-io\u002Fsdk\n# or: pnpm add @cachely-io\u002Fsdk\n# or: yarn add @cachely-io\u002Fsdk\n# or: bun add @cachely-io\u002Fsdk\n",[17,1945,1946,1956,1961,1966],{"__ignoreMap":42},[78,1947,1948,1950,1953],{"class":80,"line":81},[78,1949,1626],{"class":84},[78,1951,1952],{"class":88}," install",[78,1954,1955],{"class":88}," @cachely-io\u002Fsdk\n",[78,1957,1958],{"class":80,"line":462},[78,1959,1960],{"class":458},"# or: pnpm add @cachely-io\u002Fsdk\n",[78,1962,1963],{"class":80,"line":471},[78,1964,1965],{"class":458},"# or: yarn add @cachely-io\u002Fsdk\n",[78,1967,1968],{"class":80,"line":478},[78,1969,1970],{"class":458},"# or: bun add @cachely-io\u002Fsdk\n",[14,1972,1973,1974,1976,1977,1981],{},"Then write your own helper using ",[17,1975,1433],{},". See the ",[1374,1978,1980],{"href":1979},"\u002Fcore","SDK reference"," for the full API.",[1983,1984,1985],"style",{},"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 pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .s4JwU, html code.shiki .s4JwU{--shiki-default:#85E89D}html pre.shiki code .s9osk, html code.shiki .s9osk{--shiki-default:#FFAB70}",{"title":42,"searchDepth":462,"depth":462,"links":1987},[1988,1989,1994,1997,2000,2001,2002],{"id":31,"depth":462,"text":32},{"id":65,"depth":462,"text":66,"children":1990},[1991,1992,1993],{"id":139,"depth":471,"text":140},{"id":202,"depth":471,"text":203},{"id":447,"depth":471,"text":448},{"id":668,"depth":462,"text":669,"children":1995},[1996],{"id":675,"depth":471,"text":676},{"id":1477,"depth":462,"text":1478,"children":1998},[1999],{"id":1654,"depth":471,"text":1655},{"id":1802,"depth":462,"text":1803},{"id":1881,"depth":462,"text":1882},{"id":1936,"depth":462,"text":1937},"The @cachely-io\u002Fsdk CLI generates framework-aware helper files, seeds .env.example, and guides provider-specific onboarding. Zero LLM, zero codemods.","md",{},"\u002Fdocs\u002Fcli",{"title":5,"description":2003},"docs\u002Fcli","C9t7JHHxZpfL7FSnJ1DhBuXCoj2UPWcG8yis6fhOrdU",1781192375335]