[{"data":1,"prerenderedAt":1305},["ShallowReactive",2],{"navigation_docs":3,"-deployment-cloudflare-sandbox":87,"-deployment-cloudflare-sandbox-surround":1300},[4,35,51,80],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"\u002Fgetting-started","1.getting-started",[10,15,20,25,30],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F2.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F3.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Configuration","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F4.configuration","i-lucide-settings",{"title":26,"path":27,"stem":28,"icon":29},"Server Requirements","\u002Fgetting-started\u002Fserver-requirements","1.getting-started\u002F5.server-requirements","i-lucide-server",{"title":31,"path":32,"stem":33,"icon":34},"Troubleshooting","\u002Fgetting-started\u002Ftroubleshooting","1.getting-started\u002F6.troubleshooting","i-lucide-wrench",{"title":36,"icon":37,"path":38,"stem":39,"children":40,"page":6},"Guide","i-lucide-book-open","\u002Fguide","2.guide",[41,46],{"title":42,"path":43,"stem":44,"icon":45},"URL Pattern","\u002Fguide\u002Furl-pattern","2.guide\u002F1.url-pattern","i-lucide-link",{"title":47,"path":48,"stem":49,"icon":50},"Transformation Parameters","\u002Fguide\u002Ftransformation-parameters","2.guide\u002F2.transformation-parameters","i-lucide-sliders",{"title":52,"icon":53,"path":54,"stem":55,"children":56},"Deployment","i-lucide-rocket","\u002Fdeployment","3.deployment",[57,60,65,70,75],{"title":58,"path":54,"stem":59,"icon":53},"Overview","3.deployment\u002Findex",{"title":61,"path":62,"stem":63,"icon":64},"Render","\u002Fdeployment\u002Frender","3.deployment\u002F1.render","i-simple-icons-render",{"title":66,"path":67,"stem":68,"icon":69},"Railway","\u002Fdeployment\u002Frailway","3.deployment\u002F2.railway","i-simple-icons-railway",{"title":71,"path":72,"stem":73,"icon":74},"Fly.io","\u002Fdeployment\u002Ffly-io","3.deployment\u002F3.fly-io","i-simple-icons-flydotio",{"title":76,"path":77,"stem":78,"icon":79},"Cloudflare Sandbox","\u002Fdeployment\u002Fcloudflare-sandbox","3.deployment\u002F4.cloudflare-sandbox","i-simple-icons-cloudflare",{"title":81,"path":82,"stem":83,"children":84,"icon":86},"Roadmap","\u002Froadmap","5.roadmap\u002Findex",[85],{"title":81,"path":82,"stem":83,"icon":86},"i-lucide-map",{"id":88,"title":89,"body":90,"description":1291,"extension":1292,"links":1293,"meta":1294,"navigation":1295,"path":77,"seo":1296,"stem":78,"__hash__":1299},"docs\u002F3.deployment\u002F4.cloudflare-sandbox.md","Cloudflare Workers with Sandbox",{"type":91,"value":92,"toc":1275},"minimark",[93,104,117,122,138,142,147,175,179,182,299,303,307,318,410,414,1177,1181,1205,1209,1213,1216,1220,1223,1238,1242,1245,1249,1271],[94,95,96,103],"p",{},[97,98,102],"a",{"href":99,"rel":100},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fsandbox\u002F",[101],"nofollow","Cloudflare Sandbox SDK"," lets you run containers from Workers. Since Repix uses Sharp (native Node.js + libvips), it requires a container environment. The Sandbox SDK provides this.",[105,106,107,111,112,116],"warning",{},[108,109,110],"strong",{},"Workers Paid plan required."," The Sandbox SDK is available on Cloudflare's Workers Paid plan. A custom domain with wildcard DNS is required for preview URLs in production (e.g., ",[113,114,115],"code",{},"*.images.yourdomain.com",").",[118,119,121],"h2",{"id":120},"architecture","Architecture",[123,124,125,129,132,135],"ol",{},[126,127,128],"li",{},"A Worker receives image transformation requests",[126,130,131],{},"The Worker gets a Sandbox container running Repix",[126,133,134],{},"Repix runs inside the Sandbox with full Sharp\u002Flibvips support",[126,136,137],{},"The Worker proxies requests to the Sandbox and returns the response",[118,139,141],{"id":140},"setup","Setup",[143,144,146],"h3",{"id":145},"_1-install-dependencies","1. Install Dependencies",[148,149,154],"pre",{"className":150,"code":151,"language":152,"meta":153,"style":153},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npm install @cloudflare\u002Fsandbox wrangler\n","bash","",[113,155,156],{"__ignoreMap":153},[157,158,161,165,169,172],"span",{"class":159,"line":160},"line",1,[157,162,164],{"class":163},"sBMFI","npm",[157,166,168],{"class":167},"sfazB"," install",[157,170,171],{"class":167}," @cloudflare\u002Fsandbox",[157,173,174],{"class":167}," wrangler\n",[143,176,178],{"id":177},"_2-sandbox-dockerfile-for-repix","2. Sandbox Dockerfile for Repix",[94,180,181],{},"Create a Dockerfile that packages Repix for the Sandbox. The Sandbox base includes Node.js; we add Sharp dependencies:",[148,183,187],{"className":184,"code":185,"language":186,"meta":153,"style":153},"language-dockerfile shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Dockerfile.sandbox\nFROM node:22-alpine\n\n# Sharp dependencies\nRUN apk add --no-cache vips-dev build-base python3 make g++ pkgconfig\n\nWORKDIR \u002Fapp\n\n# Copy repix\nCOPY package*.json .\u002F\nCOPY tsconfig.json .\u002F\nCOPY vite.config.ts .\u002F\n\nRUN npm ci --include=dev\nCOPY src\u002F .\u002Fsrc\u002F\nRUN npm run build && npm ci --only=production --omit=dev\n\nEXPOSE 3210\nCMD [\"node\", \"dist\u002Findex.js\"]\n","dockerfile",[113,188,189,194,200,207,213,219,224,230,235,241,247,253,259,264,270,276,282,287,293],{"__ignoreMap":153},[157,190,191],{"class":159,"line":160},[157,192,193],{},"# Dockerfile.sandbox\n",[157,195,197],{"class":159,"line":196},2,[157,198,199],{},"FROM node:22-alpine\n",[157,201,203],{"class":159,"line":202},3,[157,204,206],{"emptyLinePlaceholder":205},true,"\n",[157,208,210],{"class":159,"line":209},4,[157,211,212],{},"# Sharp dependencies\n",[157,214,216],{"class":159,"line":215},5,[157,217,218],{},"RUN apk add --no-cache vips-dev build-base python3 make g++ pkgconfig\n",[157,220,222],{"class":159,"line":221},6,[157,223,206],{"emptyLinePlaceholder":205},[157,225,227],{"class":159,"line":226},7,[157,228,229],{},"WORKDIR \u002Fapp\n",[157,231,233],{"class":159,"line":232},8,[157,234,206],{"emptyLinePlaceholder":205},[157,236,238],{"class":159,"line":237},9,[157,239,240],{},"# Copy repix\n",[157,242,244],{"class":159,"line":243},10,[157,245,246],{},"COPY package*.json .\u002F\n",[157,248,250],{"class":159,"line":249},11,[157,251,252],{},"COPY tsconfig.json .\u002F\n",[157,254,256],{"class":159,"line":255},12,[157,257,258],{},"COPY vite.config.ts .\u002F\n",[157,260,262],{"class":159,"line":261},13,[157,263,206],{"emptyLinePlaceholder":205},[157,265,267],{"class":159,"line":266},14,[157,268,269],{},"RUN npm ci --include=dev\n",[157,271,273],{"class":159,"line":272},15,[157,274,275],{},"COPY src\u002F .\u002Fsrc\u002F\n",[157,277,279],{"class":159,"line":278},16,[157,280,281],{},"RUN npm run build && npm ci --only=production --omit=dev\n",[157,283,285],{"class":159,"line":284},17,[157,286,206],{"emptyLinePlaceholder":205},[157,288,290],{"class":159,"line":289},18,[157,291,292],{},"EXPOSE 3210\n",[157,294,296],{"class":159,"line":295},19,[157,297,298],{},"CMD [\"node\", \"dist\u002Findex.js\"]\n",[300,301,302],"tip",{},"Alternatively, use the existing Repix Dockerfile if it's compatible with Sandbox. The key is that the image must run Repix on port 3210 and expose it.",[143,304,306],{"id":305},"_3-wrangler-configuration","3. Wrangler Configuration",[94,308,309,310,313,314,317],{},"Create ",[113,311,312],{},"wrangler.jsonc"," in a new ",[113,315,316],{},"worker"," directory (or at repo root if this is a Worker-only project):",[148,319,323],{"className":320,"code":321,"language":322,"meta":153,"style":153},"language-jsonc shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"name\": \"repix-worker\",\n  \"main\": \"src\u002Findex.ts\",\n  \"compatibility_date\": \"2024-01-01\",\n  \"containers\": [\n    {\n      \"class_name\": \"Sandbox\",\n      \"image\": \"..\u002FDockerfile.sandbox\",\n      \"instance_type\": \"lite\",\n      \"max_instances\": 5,\n    },\n  ],\n  \"durable_objects\": {\n    \"bindings\": [{ \"class_name\": \"Sandbox\", \"name\": \"Sandbox\" }],\n  },\n  \"migrations\": [{ \"new_sqlite_classes\": [\"Sandbox\"], \"tag\": \"v1\" }],\n}\n","jsonc",[113,324,325,330,335,340,345,350,355,360,365,370,375,380,385,390,395,400,405],{"__ignoreMap":153},[157,326,327],{"class":159,"line":160},[157,328,329],{},"{\n",[157,331,332],{"class":159,"line":196},[157,333,334],{},"  \"name\": \"repix-worker\",\n",[157,336,337],{"class":159,"line":202},[157,338,339],{},"  \"main\": \"src\u002Findex.ts\",\n",[157,341,342],{"class":159,"line":209},[157,343,344],{},"  \"compatibility_date\": \"2024-01-01\",\n",[157,346,347],{"class":159,"line":215},[157,348,349],{},"  \"containers\": [\n",[157,351,352],{"class":159,"line":221},[157,353,354],{},"    {\n",[157,356,357],{"class":159,"line":226},[157,358,359],{},"      \"class_name\": \"Sandbox\",\n",[157,361,362],{"class":159,"line":232},[157,363,364],{},"      \"image\": \"..\u002FDockerfile.sandbox\",\n",[157,366,367],{"class":159,"line":237},[157,368,369],{},"      \"instance_type\": \"lite\",\n",[157,371,372],{"class":159,"line":243},[157,373,374],{},"      \"max_instances\": 5,\n",[157,376,377],{"class":159,"line":249},[157,378,379],{},"    },\n",[157,381,382],{"class":159,"line":255},[157,383,384],{},"  ],\n",[157,386,387],{"class":159,"line":261},[157,388,389],{},"  \"durable_objects\": {\n",[157,391,392],{"class":159,"line":266},[157,393,394],{},"    \"bindings\": [{ \"class_name\": \"Sandbox\", \"name\": \"Sandbox\" }],\n",[157,396,397],{"class":159,"line":272},[157,398,399],{},"  },\n",[157,401,402],{"class":159,"line":278},[157,403,404],{},"  \"migrations\": [{ \"new_sqlite_classes\": [\"Sandbox\"], \"tag\": \"v1\" }],\n",[157,406,407],{"class":159,"line":284},[157,408,409],{},"}\n",[143,411,413],{"id":412},"_4-worker-code","4. Worker Code",[148,415,419],{"className":416,"code":417,"language":418,"meta":153,"style":153},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F src\u002Findex.ts\nimport { getSandbox } from \"@cloudflare\u002Fsandbox\";\n\nexport { Sandbox } from \"@cloudflare\u002Fsandbox\";\n\nexport default {\n  async fetch(request: Request, env: { Sandbox: DurableObjectNamespace }) {\n    const url = new URL(request.url);\n\n    \u002F\u002F Forward API routes (\u002F, \u002Fhealth, \u002Fpresets) and image requests (\u002F:transform\u002F*)\n    const pathSegments = url.pathname.split(\"\u002F\").filter(Boolean);\n    const isApiRoute =\n      url.pathname === \"\u002F\" ||\n      url.pathname === \"\u002Fhealth\" ||\n      url.pathname === \"\u002Fpresets\";\n    const isImageRequest = pathSegments.length >= 2;\n    if (!isApiRoute && !isImageRequest) {\n      return new Response(\n        JSON.stringify({\n          service: \"Repix\",\n          endpoint: \"\u002F{preset|params}\u002F{source-url}\",\n        }),\n        { headers: { \"Content-Type\": \"application\u002Fjson\" } },\n      );\n    }\n\n    const sandbox = getSandbox(env.Sandbox, \"repix\");\n\n    \u002F\u002F Expose Repix's port - returns URL to the running service\n    const { url: sandboxUrl } = await sandbox.exposePort(3210);\n\n    \u002F\u002F Forward request to Repix running in the Sandbox\n    const repixUrl = `${sandboxUrl}${url.pathname}${url.search}`;\n    const response = await fetch(repixUrl, {\n      method: request.method,\n      headers: request.headers,\n      body: request.body,\n    });\n\n    return new Response(response.body, {\n      status: response.status,\n      headers: response.headers,\n    });\n  },\n};\n","typescript",[113,420,421,427,459,463,485,489,499,544,577,581,586,632,642,663,682,701,726,754,767,781,799,816,826,860,868,874,879,914,919,925,962,967,973,1012,1035,1053,1070,1087,1097,1102,1125,1142,1157,1166,1171],{"__ignoreMap":153},[157,422,423],{"class":159,"line":160},[157,424,426],{"class":425},"sHwdD","\u002F\u002F src\u002Findex.ts\n",[157,428,429,433,437,441,444,447,450,453,456],{"class":159,"line":196},[157,430,432],{"class":431},"s7zQu","import",[157,434,436],{"class":435},"sMK4o"," {",[157,438,440],{"class":439},"sTEyZ"," getSandbox",[157,442,443],{"class":435}," }",[157,445,446],{"class":431}," from",[157,448,449],{"class":435}," \"",[157,451,452],{"class":167},"@cloudflare\u002Fsandbox",[157,454,455],{"class":435},"\"",[157,457,458],{"class":435},";\n",[157,460,461],{"class":159,"line":202},[157,462,206],{"emptyLinePlaceholder":205},[157,464,465,468,470,473,475,477,479,481,483],{"class":159,"line":209},[157,466,467],{"class":431},"export",[157,469,436],{"class":435},[157,471,472],{"class":439}," Sandbox",[157,474,443],{"class":435},[157,476,446],{"class":431},[157,478,449],{"class":435},[157,480,452],{"class":167},[157,482,455],{"class":435},[157,484,458],{"class":435},[157,486,487],{"class":159,"line":215},[157,488,206],{"emptyLinePlaceholder":205},[157,490,491,493,496],{"class":159,"line":221},[157,492,467],{"class":431},[157,494,495],{"class":431}," default",[157,497,498],{"class":435}," {\n",[157,500,501,505,509,512,516,519,522,525,528,530,532,534,536,539,542],{"class":159,"line":226},[157,502,504],{"class":503},"spNyl","  async",[157,506,508],{"class":507},"swJcz"," fetch",[157,510,511],{"class":435},"(",[157,513,515],{"class":514},"sHdIc","request",[157,517,518],{"class":435},":",[157,520,521],{"class":163}," Request",[157,523,524],{"class":435},",",[157,526,527],{"class":514}," env",[157,529,518],{"class":435},[157,531,436],{"class":435},[157,533,472],{"class":507},[157,535,518],{"class":435},[157,537,538],{"class":163}," DurableObjectNamespace",[157,540,541],{"class":435}," })",[157,543,498],{"class":435},[157,545,546,549,552,555,558,562,564,566,569,572,575],{"class":159,"line":232},[157,547,548],{"class":503},"    const",[157,550,551],{"class":439}," url",[157,553,554],{"class":435}," =",[157,556,557],{"class":435}," new",[157,559,561],{"class":560},"s2Zo4"," URL",[157,563,511],{"class":507},[157,565,515],{"class":439},[157,567,568],{"class":435},".",[157,570,571],{"class":439},"url",[157,573,574],{"class":507},")",[157,576,458],{"class":435},[157,578,579],{"class":159,"line":237},[157,580,206],{"emptyLinePlaceholder":205},[157,582,583],{"class":159,"line":243},[157,584,585],{"class":425},"    \u002F\u002F Forward API routes (\u002F, \u002Fhealth, \u002Fpresets) and image requests (\u002F:transform\u002F*)\n",[157,587,588,590,593,595,597,599,602,604,607,609,611,614,616,618,620,623,625,628,630],{"class":159,"line":249},[157,589,548],{"class":503},[157,591,592],{"class":439}," pathSegments",[157,594,554],{"class":435},[157,596,551],{"class":439},[157,598,568],{"class":435},[157,600,601],{"class":439},"pathname",[157,603,568],{"class":435},[157,605,606],{"class":560},"split",[157,608,511],{"class":507},[157,610,455],{"class":435},[157,612,613],{"class":167},"\u002F",[157,615,455],{"class":435},[157,617,574],{"class":507},[157,619,568],{"class":435},[157,621,622],{"class":560},"filter",[157,624,511],{"class":507},[157,626,627],{"class":439},"Boolean",[157,629,574],{"class":507},[157,631,458],{"class":435},[157,633,634,636,639],{"class":159,"line":255},[157,635,548],{"class":503},[157,637,638],{"class":439}," isApiRoute",[157,640,641],{"class":435}," =\n",[157,643,644,647,649,651,654,656,658,660],{"class":159,"line":261},[157,645,646],{"class":439},"      url",[157,648,568],{"class":435},[157,650,601],{"class":439},[157,652,653],{"class":435}," ===",[157,655,449],{"class":435},[157,657,613],{"class":167},[157,659,455],{"class":435},[157,661,662],{"class":435}," ||\n",[157,664,665,667,669,671,673,675,678,680],{"class":159,"line":266},[157,666,646],{"class":439},[157,668,568],{"class":435},[157,670,601],{"class":439},[157,672,653],{"class":435},[157,674,449],{"class":435},[157,676,677],{"class":167},"\u002Fhealth",[157,679,455],{"class":435},[157,681,662],{"class":435},[157,683,684,686,688,690,692,694,697,699],{"class":159,"line":272},[157,685,646],{"class":439},[157,687,568],{"class":435},[157,689,601],{"class":439},[157,691,653],{"class":435},[157,693,449],{"class":435},[157,695,696],{"class":167},"\u002Fpresets",[157,698,455],{"class":435},[157,700,458],{"class":435},[157,702,703,705,708,710,712,714,717,720,724],{"class":159,"line":278},[157,704,548],{"class":503},[157,706,707],{"class":439}," isImageRequest",[157,709,554],{"class":435},[157,711,592],{"class":439},[157,713,568],{"class":435},[157,715,716],{"class":439},"length",[157,718,719],{"class":435}," >=",[157,721,723],{"class":722},"sbssI"," 2",[157,725,458],{"class":435},[157,727,728,731,734,737,740,743,746,749,752],{"class":159,"line":284},[157,729,730],{"class":431},"    if",[157,732,733],{"class":507}," (",[157,735,736],{"class":435},"!",[157,738,739],{"class":439},"isApiRoute",[157,741,742],{"class":435}," &&",[157,744,745],{"class":435}," !",[157,747,748],{"class":439},"isImageRequest",[157,750,751],{"class":507},") ",[157,753,329],{"class":435},[157,755,756,759,761,764],{"class":159,"line":289},[157,757,758],{"class":431},"      return",[157,760,557],{"class":435},[157,762,763],{"class":560}," Response",[157,765,766],{"class":507},"(\n",[157,768,769,772,774,777,779],{"class":159,"line":295},[157,770,771],{"class":439},"        JSON",[157,773,568],{"class":435},[157,775,776],{"class":560},"stringify",[157,778,511],{"class":507},[157,780,329],{"class":435},[157,782,784,787,789,791,794,796],{"class":159,"line":783},20,[157,785,786],{"class":507},"          service",[157,788,518],{"class":435},[157,790,449],{"class":435},[157,792,793],{"class":167},"Repix",[157,795,455],{"class":435},[157,797,798],{"class":435},",\n",[157,800,802,805,807,809,812,814],{"class":159,"line":801},21,[157,803,804],{"class":507},"          endpoint",[157,806,518],{"class":435},[157,808,449],{"class":435},[157,810,811],{"class":167},"\u002F{preset|params}\u002F{source-url}",[157,813,455],{"class":435},[157,815,798],{"class":435},[157,817,819,822,824],{"class":159,"line":818},22,[157,820,821],{"class":435},"        }",[157,823,574],{"class":507},[157,825,798],{"class":435},[157,827,829,832,835,837,839,841,844,846,848,850,853,855,857],{"class":159,"line":828},23,[157,830,831],{"class":435},"        {",[157,833,834],{"class":507}," headers",[157,836,518],{"class":435},[157,838,436],{"class":435},[157,840,449],{"class":435},[157,842,843],{"class":507},"Content-Type",[157,845,455],{"class":435},[157,847,518],{"class":435},[157,849,449],{"class":435},[157,851,852],{"class":167},"application\u002Fjson",[157,854,455],{"class":435},[157,856,443],{"class":435},[157,858,859],{"class":435}," },\n",[157,861,863,866],{"class":159,"line":862},24,[157,864,865],{"class":507},"      )",[157,867,458],{"class":435},[157,869,871],{"class":159,"line":870},25,[157,872,873],{"class":435},"    }\n",[157,875,877],{"class":159,"line":876},26,[157,878,206],{"emptyLinePlaceholder":205},[157,880,882,884,887,889,891,893,896,898,901,903,905,908,910,912],{"class":159,"line":881},27,[157,883,548],{"class":503},[157,885,886],{"class":439}," sandbox",[157,888,554],{"class":435},[157,890,440],{"class":560},[157,892,511],{"class":507},[157,894,895],{"class":439},"env",[157,897,568],{"class":435},[157,899,900],{"class":439},"Sandbox",[157,902,524],{"class":435},[157,904,449],{"class":435},[157,906,907],{"class":167},"repix",[157,909,455],{"class":435},[157,911,574],{"class":507},[157,913,458],{"class":435},[157,915,917],{"class":159,"line":916},28,[157,918,206],{"emptyLinePlaceholder":205},[157,920,922],{"class":159,"line":921},29,[157,923,924],{"class":425},"    \u002F\u002F Expose Repix's port - returns URL to the running service\n",[157,926,928,930,932,934,936,939,941,943,946,948,950,953,955,958,960],{"class":159,"line":927},30,[157,929,548],{"class":503},[157,931,436],{"class":435},[157,933,551],{"class":507},[157,935,518],{"class":435},[157,937,938],{"class":439}," sandboxUrl",[157,940,443],{"class":435},[157,942,554],{"class":435},[157,944,945],{"class":431}," await",[157,947,886],{"class":439},[157,949,568],{"class":435},[157,951,952],{"class":560},"exposePort",[157,954,511],{"class":507},[157,956,957],{"class":722},"3210",[157,959,574],{"class":507},[157,961,458],{"class":435},[157,963,965],{"class":159,"line":964},31,[157,966,206],{"emptyLinePlaceholder":205},[157,968,970],{"class":159,"line":969},32,[157,971,972],{"class":425},"    \u002F\u002F Forward request to Repix running in the Sandbox\n",[157,974,976,978,981,983,986,989,992,994,996,998,1000,1002,1004,1007,1010],{"class":159,"line":975},33,[157,977,548],{"class":503},[157,979,980],{"class":439}," repixUrl",[157,982,554],{"class":435},[157,984,985],{"class":435}," `${",[157,987,988],{"class":439},"sandboxUrl",[157,990,991],{"class":435},"}${",[157,993,571],{"class":439},[157,995,568],{"class":435},[157,997,601],{"class":439},[157,999,991],{"class":435},[157,1001,571],{"class":439},[157,1003,568],{"class":435},[157,1005,1006],{"class":439},"search",[157,1008,1009],{"class":435},"}`",[157,1011,458],{"class":435},[157,1013,1015,1017,1020,1022,1024,1026,1028,1031,1033],{"class":159,"line":1014},34,[157,1016,548],{"class":503},[157,1018,1019],{"class":439}," response",[157,1021,554],{"class":435},[157,1023,945],{"class":431},[157,1025,508],{"class":560},[157,1027,511],{"class":507},[157,1029,1030],{"class":439},"repixUrl",[157,1032,524],{"class":435},[157,1034,498],{"class":435},[157,1036,1038,1041,1043,1046,1048,1051],{"class":159,"line":1037},35,[157,1039,1040],{"class":507},"      method",[157,1042,518],{"class":435},[157,1044,1045],{"class":439}," request",[157,1047,568],{"class":435},[157,1049,1050],{"class":439},"method",[157,1052,798],{"class":435},[157,1054,1056,1059,1061,1063,1065,1068],{"class":159,"line":1055},36,[157,1057,1058],{"class":507},"      headers",[157,1060,518],{"class":435},[157,1062,1045],{"class":439},[157,1064,568],{"class":435},[157,1066,1067],{"class":439},"headers",[157,1069,798],{"class":435},[157,1071,1073,1076,1078,1080,1082,1085],{"class":159,"line":1072},37,[157,1074,1075],{"class":507},"      body",[157,1077,518],{"class":435},[157,1079,1045],{"class":439},[157,1081,568],{"class":435},[157,1083,1084],{"class":439},"body",[157,1086,798],{"class":435},[157,1088,1090,1093,1095],{"class":159,"line":1089},38,[157,1091,1092],{"class":435},"    }",[157,1094,574],{"class":507},[157,1096,458],{"class":435},[157,1098,1100],{"class":159,"line":1099},39,[157,1101,206],{"emptyLinePlaceholder":205},[157,1103,1105,1108,1110,1112,1114,1117,1119,1121,1123],{"class":159,"line":1104},40,[157,1106,1107],{"class":431},"    return",[157,1109,557],{"class":435},[157,1111,763],{"class":560},[157,1113,511],{"class":507},[157,1115,1116],{"class":439},"response",[157,1118,568],{"class":435},[157,1120,1084],{"class":439},[157,1122,524],{"class":435},[157,1124,498],{"class":435},[157,1126,1128,1131,1133,1135,1137,1140],{"class":159,"line":1127},41,[157,1129,1130],{"class":507},"      status",[157,1132,518],{"class":435},[157,1134,1019],{"class":439},[157,1136,568],{"class":435},[157,1138,1139],{"class":439},"status",[157,1141,798],{"class":435},[157,1143,1145,1147,1149,1151,1153,1155],{"class":159,"line":1144},42,[157,1146,1058],{"class":507},[157,1148,518],{"class":435},[157,1150,1019],{"class":439},[157,1152,568],{"class":435},[157,1154,1067],{"class":439},[157,1156,798],{"class":435},[157,1158,1160,1162,1164],{"class":159,"line":1159},43,[157,1161,1092],{"class":435},[157,1163,574],{"class":507},[157,1165,458],{"class":435},[157,1167,1169],{"class":159,"line":1168},44,[157,1170,399],{"class":435},[157,1172,1174],{"class":159,"line":1173},45,[157,1175,1176],{"class":435},"};\n",[143,1178,1180],{"id":1179},"_5-deploy","5. Deploy",[148,1182,1184],{"className":150,"code":1183,"language":152,"meta":153,"style":153},"cd worker\nnpx wrangler deploy\n",[113,1185,1186,1194],{"__ignoreMap":153},[157,1187,1188,1191],{"class":159,"line":160},[157,1189,1190],{"class":560},"cd",[157,1192,1193],{"class":167}," worker\n",[157,1195,1196,1199,1202],{"class":159,"line":196},[157,1197,1198],{"class":163},"npx",[157,1200,1201],{"class":167}," wrangler",[157,1203,1204],{"class":167}," deploy\n",[118,1206,1208],{"id":1207},"important-notes","Important Notes",[143,1210,1212],{"id":1211},"cold-starts","Cold Starts",[94,1214,1215],{},"Sandbox containers start on first use. The container sleeps after ~10 minutes of inactivity. Expect 5–15 second cold starts for the first request after sleep.",[143,1217,1219],{"id":1218},"preview-urls","Preview URLs",[94,1221,1222],{},"Production preview URLs require a custom domain with wildcard DNS:",[1224,1225,1226,1235],"ul",{},[126,1227,1228,1229,1232,1233],{},"Add domain: ",[113,1230,1231],{},"images.yourdomain.com"," with ",[113,1234,115],{},[126,1236,1237],{},"The Sandbox preview URL will use this for serving",[143,1239,1241],{"id":1240},"cost","Cost",[94,1243,1244],{},"Sandbox usage is billed separately. Monitor usage in the Cloudflare dashboard.",[118,1246,1248],{"id":1247},"references","References",[1224,1250,1251,1257,1264],{},[126,1252,1253],{},[97,1254,1256],{"href":99,"rel":1255},[101],"Sandbox SDK Docs",[126,1258,1259],{},[97,1260,1263],{"href":1261,"rel":1262},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fsandbox\u002Fguides\u002Fexpose-services\u002F",[101],"Expose Services Guide",[126,1265,1266],{},[97,1267,1270],{"href":1268,"rel":1269},"https:\u002F\u002Fgithub.com\u002Fbansal\u002Frepix",[101],"Repix GitHub",[1272,1273,1274],"style",{},"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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":153,"searchDepth":196,"depth":196,"links":1276},[1277,1278,1285,1290],{"id":120,"depth":196,"text":121},{"id":140,"depth":196,"text":141,"children":1279},[1280,1281,1282,1283,1284],{"id":145,"depth":202,"text":146},{"id":177,"depth":202,"text":178},{"id":305,"depth":202,"text":306},{"id":412,"depth":202,"text":413},{"id":1179,"depth":202,"text":1180},{"id":1207,"depth":196,"text":1208,"children":1286},[1287,1288,1289],{"id":1211,"depth":202,"text":1212},{"id":1218,"depth":202,"text":1219},{"id":1240,"depth":202,"text":1241},{"id":1247,"depth":196,"text":1248},"Run Repix on Cloudflare Workers using the Sandbox SDK for isolated container execution.","md",null,{},{"icon":79,"title":76},{"title":1297,"description":1298},"Deploy to Cloudflare Sandbox - Repix","Run Repix on Cloudflare Workers using the Sandbox SDK.","XkDKYOvRXL5IC6LPmPqpAonBIDRsRiXGY2lP9iYYF4M",[1301,1303],{"title":71,"path":72,"stem":73,"description":1302,"icon":74,"children":-1},"Deploy Repix to Fly.io for global edge deployment.",{"title":81,"path":82,"stem":83,"description":1304,"icon":86,"children":-1},"Planned features and future direction for Repix.",1781442145913]