Skip to content

Commit 9a2f5b9

Browse files
authored
Fix host used for image resizing in v2 (#2923)
1 parent 58cd70b commit 9a2f5b9

File tree

11 files changed

+54
-30
lines changed

11 files changed

+54
-30
lines changed

.github/workflows/ci.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ jobs:
169169
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
170170
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
171171
workingDirectory: ./
172-
wranglerVersion: '3.82.0'
172+
wranglerVersion: '3.112.0'
173173
command: versions upload --config ./packages/gitbook-v2/wrangler.toml
174174
- name: Outputs
175175
run: |

bun.lock

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@
1919
},
2020
"devDependencies": {
2121
"typescript": "^5.5.3",
22-
"wrangler": "^3.109.2",
22+
"wrangler": "^3.112.0",
2323
},
2424
},
2525
"packages/cache-tags": {
2626
"name": "@gitbook/cache-tags",
27-
"version": "0.0.0",
27+
"version": "0.1.0",
2828
"dependencies": {
2929
"@gitbook/api": "0.96.1",
3030
"assert-never": "^1.2.1",
@@ -49,7 +49,7 @@
4949
},
5050
"packages/gitbook": {
5151
"name": "gitbook",
52-
"version": "0.6.4",
52+
"version": "0.6.5",
5353
"dependencies": {
5454
"@gitbook/api": "0.96.1",
5555
"@gitbook/cache-do": "workspace:*",
@@ -131,7 +131,7 @@
131131
},
132132
"packages/gitbook-v2": {
133133
"name": "gitbook-v2",
134-
"version": "0.1.1",
134+
"version": "0.1.2",
135135
"dependencies": {
136136
"@gitbook/api": "0.96.1",
137137
"@gitbook/cache-tags": "workspace:*",
@@ -142,7 +142,7 @@
142142
"server-only": "^0.0.1",
143143
},
144144
"devDependencies": {
145-
"@opennextjs/cloudflare": "^0.5.3",
145+
"@opennextjs/cloudflare": "^0.5.8",
146146
"gitbook": "*",
147147
"postcss": "^8",
148148
"tailwindcss": "^3.4.0",
@@ -170,7 +170,7 @@
170170
},
171171
"packages/openapi-parser": {
172172
"name": "@gitbook/openapi-parser",
173-
"version": "2.0.1",
173+
"version": "2.0.2",
174174
"dependencies": {
175175
"@scalar/openapi-parser": "^0.10.4",
176176
"@scalar/openapi-types": "^0.1.6",
@@ -192,7 +192,7 @@
192192
},
193193
"packages/react-contentkit": {
194194
"name": "@gitbook/react-contentkit",
195-
"version": "0.6.0",
195+
"version": "0.6.1",
196196
"dependencies": {
197197
"@gitbook/api": "0.96.1",
198198
"@gitbook/icons": "workspace:*",
@@ -225,7 +225,7 @@
225225
},
226226
"packages/react-openapi": {
227227
"name": "@gitbook/react-openapi",
228-
"version": "1.0.4",
228+
"version": "1.0.5",
229229
"dependencies": {
230230
"@gitbook/openapi-parser": "workspace:*",
231231
"@scalar/api-client-react": "1.0.87",
@@ -553,8 +553,6 @@
553553

554554
"@esbuild-plugins/node-modules-polyfill": ["@esbuild-plugins/[email protected]", "", { "dependencies": { "escape-string-regexp": "^4.0.0", "rollup-plugin-node-polyfills": "^0.2.1" }, "peerDependencies": { "esbuild": "*" } }, "sha512-LXV7QsWJxRuMYvKbiznh+U1ilIop3g2TeKRzUxOG5X3YITc8JyyTa90BmLwqqv0YnX4v32CSlG+vsziZp9dMvA=="],
555555

556-
"@esbuild-plugins/node-resolve": ["@esbuild-plugins/[email protected]", "", { "dependencies": { "@types/resolve": "^1.17.1", "debug": "^4.3.1", "escape-string-regexp": "^4.0.0", "resolve": "^1.19.0" }, "peerDependencies": { "esbuild": "*" } }, "sha512-+t5FdX3ATQlb53UFDBRb4nqjYBz492bIrnVWvpQHpzZlu9BQL5HasMZhqc409ygUwOWCXZhrWr6NyZ6T6Y+cxw=="],
557-
558556
"@esbuild/android-arm": ["@esbuild/[email protected]", "", { "os": "android", "cpu": "arm" }, "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A=="],
559557

560558
"@esbuild/android-arm64": ["@esbuild/[email protected]", "", { "os": "android", "cpu": "arm64" }, "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA=="],
@@ -791,9 +789,9 @@
791789

792790
"@nodelib/fs.walk": ["@nodelib/[email protected]", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="],
793791

794-
"@opennextjs/aws": ["@opennextjs/aws@https://pkg.pr.new/@opennextjs/aws@733", { "dependencies": { "@aws-sdk/client-cloudfront": "3.398.0", "@aws-sdk/client-dynamodb": "^3.398.0", "@aws-sdk/client-lambda": "^3.398.0", "@aws-sdk/client-s3": "^3.398.0", "@aws-sdk/client-sqs": "^3.398.0", "@esbuild-plugins/node-resolve": "0.2.2", "@node-minify/core": "^8.0.6", "@node-minify/terser": "^8.0.6", "@tsconfig/node18": "^1.0.1", "aws4fetch": "^1.0.18", "chalk": "^5.3.0", "esbuild": "0.19.2", "express": "5.0.1", "path-to-regexp": "^6.3.0", "promise.series": "^0.2.0", "urlpattern-polyfill": "^10.0.0" }, "bin": { "open-next": "./dist/index.js" } }],
792+
"@opennextjs/aws": ["@opennextjs/aws@https://pkg.pr.new/@opennextjs/aws@756", { "dependencies": { "@aws-sdk/client-cloudfront": "3.398.0", "@aws-sdk/client-dynamodb": "^3.398.0", "@aws-sdk/client-lambda": "^3.398.0", "@aws-sdk/client-s3": "^3.398.0", "@aws-sdk/client-sqs": "^3.398.0", "@node-minify/core": "^8.0.6", "@node-minify/terser": "^8.0.6", "@tsconfig/node18": "^1.0.1", "aws4fetch": "^1.0.18", "chalk": "^5.3.0", "esbuild": "0.19.2", "express": "5.0.1", "path-to-regexp": "^6.3.0", "urlpattern-polyfill": "^10.0.0" }, "bin": { "open-next": "./dist/index.js" } }],
795793

796-
"@opennextjs/cloudflare": ["@opennextjs/[email protected].3", "", { "dependencies": { "@ast-grep/napi": "^0.34.1", "@dotenvx/dotenvx": "1.31.0", "@opennextjs/aws": "https://pkg.pr.new/@opennextjs/aws@733", "enquirer": "^2.4.1", "glob": "^11.0.0", "yaml": "^2.7.0" }, "peerDependencies": { "wrangler": "^3.107.3" }, "bin": { "opennextjs-cloudflare": "dist/cli/index.js" } }, "sha512-0A8oXlRBnPHc0fhAfoFSOq2ZAuPC/n/Vj87lytcU4Cese2VsRqf89CxBMCSqAH9g+OB+kUZ2jOGGntGpVOvM0g=="],
794+
"@opennextjs/cloudflare": ["@opennextjs/[email protected].8", "", { "dependencies": { "@ast-grep/napi": "^0.34.1", "@dotenvx/dotenvx": "1.31.0", "@opennextjs/aws": "https://pkg.pr.new/@opennextjs/aws@756", "enquirer": "^2.4.1", "glob": "^11.0.0", "yaml": "^2.7.0" }, "peerDependencies": { "wrangler": "^3.111.0" }, "bin": { "opennextjs-cloudflare": "dist/cli/index.js" } }, "sha512-lRp8Xz3i77Ec32SZ1kaOQ1JplZHCTfMNlCo/aWrC+TbdmaPSjo01oWI+fzphFgrg84bQ4A7LcrcxOEgyQMU8wg=="],
797795

798796
"@opentelemetry/api": ["@opentelemetry/[email protected]", "", {}, "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="],
799797

@@ -1423,8 +1421,6 @@
14231421

14241422
"@types/react-dom": ["@types/[email protected]", "", { "dependencies": { "@types/react": "*" } }, "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ=="],
14251423

1426-
"@types/resolve": ["@types/[email protected]", "", {}, "sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ=="],
1427-
14281424
"@types/rison": ["@types/[email protected]", "", {}, "sha512-R7cgrWQCEK6pmLsERE1UyXqckSNhZMHOWek4cyoqyMUZtI5FjX4zdiaDrsv7Z93OyN9531+H2NpSLR6YZZ29LA=="],
14291425

14301426
"@types/shimmer": ["@types/[email protected]", "", {}, "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg=="],
@@ -2437,7 +2433,7 @@
24372433

24382434
"min-indent": ["[email protected]", "", {}, "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg=="],
24392435

2440-
"miniflare": ["[email protected].0", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "acorn": "8.14.0", "acorn-walk": "8.3.2", "exit-hook": "2.2.1", "glob-to-regexp": "0.4.1", "stoppable": "1.1.0", "undici": "^5.28.5", "workerd": "1.20250214.0", "ws": "8.18.0", "youch": "3.2.3", "zod": "3.22.3" }, "bin": { "miniflare": "bootstrap.js" } }, "sha512-XKwn+X/V2CEpbRhoeaIcJHpV/Duz5Md5rxVT8I6S1oqd3aLZkn8cUX1tuxHpUvfQSPuXwWH+2ESLNnTf9PKEWg=="],
2436+
"miniflare": ["[email protected].2", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "acorn": "8.14.0", "acorn-walk": "8.3.2", "exit-hook": "2.2.1", "glob-to-regexp": "0.4.1", "stoppable": "1.1.0", "undici": "^5.28.5", "workerd": "1.20250214.0", "ws": "8.18.0", "youch": "3.2.3", "zod": "3.22.3" }, "bin": { "miniflare": "bootstrap.js" } }, "sha512-t+lT4p2lbOcKv4PS3sx1F/wcDAlbEYZCO2VooLp4H7JErWWYIi9yjD3UillC3CGOpiBahVg5nrPCoFltZf6UlA=="],
24412437

24422438
"minimatch": ["[email protected]", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ=="],
24432439

@@ -2643,8 +2639,6 @@
26432639

26442640
"progress": ["[email protected]", "", {}, "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="],
26452641

2646-
"promise.series": ["[email protected]", "", {}, "sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ=="],
2647-
26482642
"promisepipe": ["[email protected]", "", {}, "sha512-V6TbZDJ/ZswevgkDNpGt/YqNCiZP9ASfgU+p83uJE6NrGtvSGoOcHLiDCqkMs2+yg7F5qHdLV8d0aS8O26G/KA=="],
26492643

26502644
"property-information": ["[email protected]", "", {}, "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig=="],
@@ -3093,7 +3087,7 @@
30933087

30943088
"workerd": ["[email protected]", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20250214.0", "@cloudflare/workerd-darwin-arm64": "1.20250214.0", "@cloudflare/workerd-linux-64": "1.20250214.0", "@cloudflare/workerd-linux-arm64": "1.20250214.0", "@cloudflare/workerd-windows-64": "1.20250214.0" }, "bin": { "workerd": "bin/workerd" } }, "sha512-QWcqXZLiMpV12wiaVnb3nLmfs/g4ZsFQq2mX85z546r3AX4CTIkXl0VP50W3CwqLADej3PGYiRDOTelDOwVG1g=="],
30953089

3096-
"wrangler": ["wrangler@3.109.3", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.3.4", "@esbuild-plugins/node-globals-polyfill": "0.2.3", "@esbuild-plugins/node-modules-polyfill": "0.2.2", "blake3-wasm": "2.1.5", "esbuild": "0.17.19", "miniflare": "3.20250214.0", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.1", "workerd": "1.20250214.0" }, "optionalDependencies": { "fsevents": "~2.3.2", "sharp": "^0.33.5" }, "peerDependencies": { "@cloudflare/workers-types": "^4.20250214.0" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js" } }, "sha512-T+SfFYEbkWDzf8WRR1JzaVKPH7wAzyciRIua8qszT+UqPqFNb6M5beCHHK/de7Zk5z6W5lvLly9SHToC11maDQ=="],
3090+
"wrangler": ["wrangler@3.112.0", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.3.4", "@esbuild-plugins/node-globals-polyfill": "0.2.3", "@esbuild-plugins/node-modules-polyfill": "0.2.2", "blake3-wasm": "2.1.5", "esbuild": "0.17.19", "miniflare": "3.20250214.2", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.1", "workerd": "1.20250214.0" }, "optionalDependencies": { "fsevents": "~2.3.2", "sharp": "^0.33.5" }, "peerDependencies": { "@cloudflare/workers-types": "^4.20250214.0" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js" } }, "sha512-PNQWGze3ODlWwG33LPr8kNhbht3eB3L9fogv+fapk2fjaqj0kNweRapkwmvtz46ojcqWzsxmTe4nOC0hIVUfPA=="],
30973091

30983092
"wrap-ansi": ["[email protected]", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="],
30993093

packages/cache-do/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
},
2222
"devDependencies": {
2323
"typescript": "^5.5.3",
24-
"wrangler": "^3.109.2"
24+
"wrangler": "^3.112.0"
2525
},
2626
"scripts": {
2727
"generate": "wrangler types --experimental-include-runtime",

packages/gitbook-v2/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
},
1414
"devDependencies": {
1515
"gitbook": "*",
16-
"@opennextjs/cloudflare": "^0.5.3",
16+
"@opennextjs/cloudflare": "^0.5.8",
1717
"tailwindcss": "^3.4.0",
1818
"postcss": "^8"
1919
},

packages/gitbook-v2/src/lib/context.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,7 @@ export function getBaseContext(input: {
139139
}
140140

141141
const imageResizer = createImageResizer({
142-
host: urlMode === 'url-host' ? url.host : gitbookURL.host,
143-
142+
host: url.host,
144143
// To ensure image resizing work for proxied sites,
145144
// we serve images from the root of the site.
146145
linker: linker,

packages/gitbook-v2/src/middleware.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@ export async function middleware(request: NextRequest) {
2828
* In GitBook v2: image resizing is done at the content level (docs.company.com/section/variant/~gitbook/image)
2929
*/
3030
if (extracted.url.pathname.endsWith('/~gitbook/image')) {
31-
return serveResizedImage(request);
31+
return serveResizedImage(request, {
32+
host: extracted.url.host,
33+
});
3234
}
3335

3436
return serveSiteByURL(request, extracted);

packages/gitbook-v2/turbo.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"extends": ["//"],
3+
"tasks": {
4+
"generate": {
5+
"outputs": ["public"]
6+
}
7+
}
8+
}

packages/gitbook/src/routes/image.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,15 @@ import { NextResponse } from 'next/server';
1313
/**
1414
* Resize an image using the Cloudflare Image API.
1515
*/
16-
export async function serveResizedImage(request: Request) {
16+
export async function serveResizedImage(
17+
request: Request,
18+
requestOptions: {
19+
/**
20+
* The host to use for the image.
21+
*/
22+
host?: string;
23+
} = {}
24+
) {
1725
const requestURL = new URL(request.url);
1826
const urlParam = requestURL.searchParams.get('url');
1927
const signature = requestURL.searchParams.get('sign');
@@ -38,7 +46,8 @@ export async function serveResizedImage(request: Request) {
3846

3947
// Verify the signature
4048
const host =
41-
request.headers.get('x-gitbook-host') ??
49+
requestOptions.host ??
50+
request.headers.get('x-gitbook-host') ?? // Only for v1, to be removed
4251
request.headers.get('x-forwarded-host') ??
4352
request.headers.get('host') ??
4453
requestURL.host;

packages/gitbook/turbo.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"extends": ["//"],
3+
"tasks": {
4+
"generate": {
5+
"outputs": ["public/~gitbook/static/icons/**/*", "public/~gitbook/static/math/**/*"]
6+
}
7+
}
8+
}

packages/icons/turbo.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"extends": ["//"],
3+
"tasks": {
4+
"generate": {
5+
"outputs": ["data/*.json"]
6+
}
7+
}
8+
}

0 commit comments

Comments
 (0)