Skip to content

Commit 7059c2b

Browse files
authored
Fetch computed document (#2823)
1 parent aaab157 commit 7059c2b

File tree

10 files changed

+92
-48
lines changed

10 files changed

+92
-48
lines changed

.changeset/long-peas-beg.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'gitbook': minor
3+
---
4+
5+
Add support for computed content by fetching computed documents for pages.

bun.lock

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"devDependencies": {
77
"@changesets/cli": "^2.27.12",
88
"prettier": "^3.0.3",
9-
"turbo": "^2.3.4",
9+
"turbo": "^2.4.1-canary.2",
1010
"vercel": "^39.3.0",
1111
},
1212
},
@@ -33,7 +33,7 @@
3333
"name": "gitbook",
3434
"version": "0.5.0",
3535
"dependencies": {
36-
"@gitbook/api": "^0.92.0",
36+
"@gitbook/api": "^0.93.0",
3737
"@gitbook/cache-do": "workspace:*",
3838
"@gitbook/emoji-codepoints": "workspace:*",
3939
"@gitbook/icons": "workspace:*",
@@ -119,7 +119,7 @@
119119
"name": "gitbook-v2",
120120
"version": "0.0.0",
121121
"dependencies": {
122-
"@gitbook/api": "^0.90.0",
122+
"@gitbook/api": "^0.93.0",
123123
"next": "canary",
124124
"react": "^19.0.0",
125125
"react-dom": "^19.0.0",
@@ -159,7 +159,7 @@
159159
"name": "@gitbook/react-contentkit",
160160
"version": "0.5.1",
161161
"dependencies": {
162-
"@gitbook/api": "^0.90.0",
162+
"@gitbook/api": "^0.93.0",
163163
"assert-never": "^1.2.1",
164164
"classnames": "^2.5.1",
165165
},
@@ -579,7 +579,7 @@
579579

580580
"@fortawesome/fontawesome-svg-core": ["@fortawesome/fontawesome-svg-core@6.6.0", "", { "dependencies": { "@fortawesome/fontawesome-common-types": "6.6.0" } }, "sha512-KHwPkCk6oRT4HADE7smhfsKudt9N/9lm6EJ5BVg0tD1yPA5hht837fB87F8pn15D8JfTqQOjhKTktwmLMiD7Kg=="],
581581

582-
"@gitbook/api": ["@gitbook/api@0.90.0", "", { "dependencies": { "event-iterator": "^2.0.0", "eventsource-parser": "^3.0.0" } }, "sha512-sLJj0JsC189a1PZ3a1LhtLDl0w7wkIBcWkhfoKNaz4gwoWg3cBBRt9wSqyK4nbshp0muRF1qFO3wA9vp+7LSdQ=="],
582+
"@gitbook/api": ["@gitbook/api@0.93.0", "", { "dependencies": { "event-iterator": "^2.0.0", "eventsource-parser": "^3.0.0" } }, "sha512-HOOEiKTtmkTpnaOj2OfV5dtvNN+R+z9kbAJSqh7LvaI86iMo/KvRHUa9vCq7gdrJhCLaeF0D5DAAYZZzK1Yz5Q=="],
583583

584584
"@gitbook/cache-do": ["@gitbook/cache-do@workspace:packages/cache-do"],
585585

@@ -3199,19 +3199,19 @@
31993199

32003200
"tslib": ["tslib@2.7.0", "", {}, "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA=="],
32013201

3202-
"turbo": ["turbo@2.3.4", "", { "optionalDependencies": { "turbo-darwin-64": "2.3.4", "turbo-darwin-arm64": "2.3.4", "turbo-linux-64": "2.3.4", "turbo-linux-arm64": "2.3.4", "turbo-windows-64": "2.3.4", "turbo-windows-arm64": "2.3.4" }, "bin": { "turbo": "bin/turbo" } }, "sha512-1kiLO5C0Okh5ay1DbHsxkPsw9Sjsbjzm6cF85CpWjR0BIyBFNDbKqtUyqGADRS1dbbZoQanJZVj4MS5kk8J42Q=="],
3202+
"turbo": ["turbo@2.4.1-canary.2", "", { "optionalDependencies": { "turbo-darwin-64": "2.4.1-canary.2", "turbo-darwin-arm64": "2.4.1-canary.2", "turbo-linux-64": "2.4.1-canary.2", "turbo-linux-arm64": "2.4.1-canary.2", "turbo-windows-64": "2.4.1-canary.2", "turbo-windows-arm64": "2.4.1-canary.2" }, "bin": { "turbo": "bin/turbo" } }, "sha512-Hgkr4mpvHWEe5Qp/AT2mjAQnOACwoWm5QwN3dcx4GYjJK2x/yf5VzOLIe986hvdMf472QhzSsQ4xetQC+cSWIQ=="],
32033203

3204-
"turbo-darwin-64": ["turbo-darwin-64@2.3.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-uOi/cUIGQI7uakZygH+cZQ5D4w+aMLlVCN2KTGot+cmefatps2ZmRRufuHrEM0Rl63opdKD8/JIu+54s25qkfg=="],
3204+
"turbo-darwin-64": ["turbo-darwin-64@2.4.1-canary.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-vlDfjO9R3jriYdGMIaKKKLyHPg7qGtiHM6aJsyWMA7D2nN2lw2eGemMl/+nRy0rgN9CWA3I167o2Zcs9yzvEoA=="],
32053205

3206-
"turbo-darwin-arm64": ["turbo-darwin-arm64@2.3.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-IIM1Lq5R+EGMtM1YFGl4x8Xkr0MWb4HvyU8N4LNoQ1Be5aycrOE+VVfH+cDg/Q4csn+8bxCOxhRp5KmUflrVTQ=="],
3206+
"turbo-darwin-arm64": ["turbo-darwin-arm64@2.4.1-canary.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-OZa9CB1bGruO/uIxyrsnb1wnKnYhREgRzSIURs9vyG1G9ErFfA35t/CVIzA2E8MDAoF6ce9u5ToiguSbIbFj4A=="],
32073207

3208-
"turbo-linux-64": ["turbo-linux-64@2.3.4", "", { "os": "linux", "cpu": "x64" }, "sha512-1aD2EfR7NfjFXNH3mYU5gybLJEFi2IGOoKwoPLchAFRQ6OEJQj201/oNo9CDL75IIrQo64/NpEgVyZtoPlfhfA=="],
3208+
"turbo-linux-64": ["turbo-linux-64@2.4.1-canary.2", "", { "os": "linux", "cpu": "x64" }, "sha512-hQa/JwIOePVSzh2cb1Y0xT97OrRpep1cBaGnA/5b+0pIBBcFt9JwnjEK17GhaQkAM9b1b+eKGe7NzhAG3U/dfA=="],
32093209

3210-
"turbo-linux-arm64": ["turbo-linux-arm64@2.3.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-MxTpdKwxCaA5IlybPxgGLu54fT2svdqTIxRd0TQmpRJIjM0s4kbM+7YiLk0mOh6dGqlWPUsxz/A0Mkn8Xr5o7Q=="],
3210+
"turbo-linux-arm64": ["turbo-linux-arm64@2.4.1-canary.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-k+E5vXiEW5sP3tztsXFULxLlWcO6r2jP0GB/Nfc1z0miIN3u/vykOlkUsPD/esjIGEJ4H9hEL+i7S+wnXvbGFg=="],
32113211

3212-
"turbo-windows-64": ["turbo-windows-64@2.3.4", "", { "os": "win32", "cpu": "x64" }, "sha512-yyCrWqcRGu1AOOlrYzRnizEtdkqi+qKP0MW9dbk9OsMDXaOI5jlWtTY/AtWMkLw/czVJ7yS9Ex1vi9DB6YsFvw=="],
3212+
"turbo-windows-64": ["turbo-windows-64@2.4.1-canary.2", "", { "os": "win32", "cpu": "x64" }, "sha512-g5Fqu8vGSAHKjoBfp8KQR/AGiuYWbE53eOgKtieew/exQXfh7nBMRHhwNzXTQW+e5k9Px201eEaCoavGmXpHXg=="],
32133213

3214-
"turbo-windows-arm64": ["turbo-windows-arm64@2.3.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-PggC3qH+njPfn1PDVwKrQvvQby8X09ufbqZ2Ha4uSu+5TvPorHHkAbZVHKYj2Y+tvVzxRzi4Sv6NdHXBS9Be5w=="],
3214+
"turbo-windows-arm64": ["turbo-windows-arm64@2.4.1-canary.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-vjrdn8SCLcN0ro4D2Vpdlo3xxAWCLL31C5jzCZ1MO9JGNwfyKQ/PQpag7rS0Mv9tqtRg9/u4SjNwhMmQT1yn4Q=="],
32153215

32163216
"type": ["type@2.7.3", "", {}, "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ=="],
32173217

@@ -4615,9 +4615,7 @@
46154615

46164616
"gaxios/https-proxy-agent": ["https-proxy-agent@5.0.1", "", { "dependencies": { "agent-base": "6", "debug": "4" } }, "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA=="],
46174617

4618-
"gitbook/@gitbook/api": ["@gitbook/api@0.92.0", "", { "dependencies": { "event-iterator": "^2.0.0", "eventsource-parser": "^3.0.0" } }, "sha512-fZHECoW8k6oqMK66QlT0W8EMWQaSEULzqgkI+tZ/gmA/n7Ek5nQwT1TUenEq4JtXPtbKSYG7du0b1AfiOR+FOA=="],
4619-
4620-
"gitbook-v2/next": ["next@15.2.0-canary.33", "", { "dependencies": { "@next/env": "15.2.0-canary.33", "@swc/counter": "0.1.3", "@swc/helpers": "0.5.15", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "15.2.0-canary.33", "@next/swc-darwin-x64": "15.2.0-canary.33", "@next/swc-linux-arm64-gnu": "15.2.0-canary.33", "@next/swc-linux-arm64-musl": "15.2.0-canary.33", "@next/swc-linux-x64-gnu": "15.2.0-canary.33", "@next/swc-linux-x64-musl": "15.2.0-canary.33", "@next/swc-win32-arm64-msvc": "15.2.0-canary.33", "@next/swc-win32-x64-msvc": "15.2.0-canary.33", "sharp": "^0.33.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.41.2", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-WF8QLeYkakuYwksdWY/F+Bi8tNJfIbiSYk9hCmldn9sNp1lU3lqI1hrW1ynbcMSaXC+qQEr7yol2OdvVZ4nZYQ=="],
4618+
"gitbook-v2/next": ["next@15.2.0-canary.45", "", { "dependencies": { "@next/env": "15.2.0-canary.45", "@swc/counter": "0.1.3", "@swc/helpers": "0.5.15", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "15.2.0-canary.45", "@next/swc-darwin-x64": "15.2.0-canary.45", "@next/swc-linux-arm64-gnu": "15.2.0-canary.45", "@next/swc-linux-arm64-musl": "15.2.0-canary.45", "@next/swc-linux-x64-gnu": "15.2.0-canary.45", "@next/swc-linux-x64-musl": "15.2.0-canary.45", "@next/swc-win32-arm64-msvc": "15.2.0-canary.45", "@next/swc-win32-x64-msvc": "15.2.0-canary.45", "sharp": "^0.33.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.41.2", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-UsneTQn9tntbiAaXpvoXhhsTBb58Q2XIs2Dfka+qWA8motBz0ZvW297YHLxhdur4xN0IJvknnZKl5Bs7wAGlOg=="],
46214619

46224620
"glob/minimatch": ["minimatch@10.0.1", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ=="],
46234621

@@ -5559,23 +5557,23 @@
55595557

55605558
"gaxios/https-proxy-agent/debug": ["debug@4.3.7", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ=="],
55615559

5562-
"gitbook-v2/next/@next/env": ["@next/env@15.2.0-canary.33", "", {}, "sha512-y3EPM+JYKU8t2K+i6bc0QrotEZVGpqu9eVjprj4cfS8QZyZcL54s+W9aGB0TBuGavU9tQdZ50W186+toeMV+hw=="],
5560+
"gitbook-v2/next/@next/env": ["@next/env@15.2.0-canary.45", "", {}, "sha512-6XI4H/P7n3unmrRkMZrRDVX69hadQAo3rEqtBhPKo9p/qRWSLt5I0C+1O30Dc/cS3R689Dm/UCYTM4yRL7kCxA=="],
55635561

5564-
"gitbook-v2/next/@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@15.2.0-canary.33", "", { "os": "darwin", "cpu": "arm64" }, "sha512-+fCdK2KmR6lWoCTk1fSd5pvbiLZHfZF+D/Xdz3xrXw+pbnBtXWLKQrPT0bCtDseMxD31qcOywq5mAApvI3EGpA=="],
5562+
"gitbook-v2/next/@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@15.2.0-canary.45", "", { "os": "darwin", "cpu": "arm64" }, "sha512-jLirjoHHYYpTknu3bLrtkpjR9qk4F2CKqbrbdrqLAku7DcWadlTOENu0K4Oh/EqZzyH/8d8PfTcDo5XnvEbj3g=="],
55655563

5566-
"gitbook-v2/next/@next/swc-darwin-x64": ["@next/swc-darwin-x64@15.2.0-canary.33", "", { "os": "darwin", "cpu": "x64" }, "sha512-GrrU+tSmeBRow+7bnn7i5M96g3tc28hPH5t5Y65qUXGmmrZwGZN1e1d+8QbXPdAGkvjEPcOkUNQuQVpp1qpYPA=="],
5564+
"gitbook-v2/next/@next/swc-darwin-x64": ["@next/swc-darwin-x64@15.2.0-canary.45", "", { "os": "darwin", "cpu": "x64" }, "sha512-nIUTv7sWzLNNhvvDKIS1l71ODlC6Z+HtAi8xSNPuTO+9WQzD6rSPdadSkStFYbU/X4SAzJwD5pJyEuBaVIofhg=="],
55675565

5568-
"gitbook-v2/next/@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@15.2.0-canary.33", "", { "os": "linux", "cpu": "arm64" }, "sha512-8RnGxnUpASHoUf6aHUifmZom5b4Ow5nTdCib/CNYXZ6VLuL5ocvmr+DXs/SKzi9h8OHR7JkLwKXHCcF8WyscSg=="],
5566+
"gitbook-v2/next/@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@15.2.0-canary.45", "", { "os": "linux", "cpu": "arm64" }, "sha512-aen3xitlvCUacSBRZzuodAzsEWCKnizNULeU8t4KgjPcCyJkYfg/XpkIN+WWXO8X1CTqQwhUy9IZwXP33xlPww=="],
55695567

5570-
"gitbook-v2/next/@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@15.2.0-canary.33", "", { "os": "linux", "cpu": "arm64" }, "sha512-COyE0LzMuLBZSR+Z/TOGilyJPdwSU588Vt0+o8GoECkoDEnjyuO2s2nHa2kDAcEfUEPkhlo0tErU3mF+8AVOTQ=="],
5568+
"gitbook-v2/next/@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@15.2.0-canary.45", "", { "os": "linux", "cpu": "arm64" }, "sha512-S5lBJw//nGhG83wgSCo+Li91UE4Dh/SOsLrnbRGXIcWmg5KFj5a8pyq/iDa215j2Uk1xp6NWYeBfoiy1k48wrg=="],
55715569

5572-
"gitbook-v2/next/@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@15.2.0-canary.33", "", { "os": "linux", "cpu": "x64" }, "sha512-3Y9lqJs+ftU9jgbLdCtvAvF8MNJsJYGMH7icb8QMs1+yOyHHbmwkZoElKdjwfUWzQ2sX28ywp73GWq4HbrsoUg=="],
5570+
"gitbook-v2/next/@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@15.2.0-canary.45", "", { "os": "linux", "cpu": "x64" }, "sha512-j+mhe/kk2c6sfcmfwt/eK/wHnt3Z30RK9GsejZm1yStN6zuLwGNy1ytEhPDv8Vt2cB4eF1jDWBK+EU9pvxdQhg=="],
55735571

5574-
"gitbook-v2/next/@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@15.2.0-canary.33", "", { "os": "linux", "cpu": "x64" }, "sha512-FS9iA+RkZlhdWGQEKtsplVBXIYZJUn5nsRB+1UY46b3uaL6dDypu13ODaSwYuAwXGgkrZBVF9AFO3y4biBnPlA=="],
5572+
"gitbook-v2/next/@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@15.2.0-canary.45", "", { "os": "linux", "cpu": "x64" }, "sha512-evPdXG4q/njsvZWUB/Yo6sQkEgElkq5yreK5/j2+DYdOmRMLshV3QmdoqhWGRmIpcjKpxXIDKqDN14ncpvx5cA=="],
55755573

5576-
"gitbook-v2/next/@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@15.2.0-canary.33", "", { "os": "win32", "cpu": "arm64" }, "sha512-Ji9CtBbUx06qvvN/rPohJN2FEFGsUv26F50f2nMRYRwrq3POXDjloGOiRocrjU0ty/cUzCz71qTUfKdmv/ajmg=="],
5574+
"gitbook-v2/next/@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@15.2.0-canary.45", "", { "os": "win32", "cpu": "arm64" }, "sha512-X3bAGeWb0RT+vQ5508mU0OQfNrW1CUYavdHIQGHHcp/y7oq1fktNUqgXcNhKQmoxCvmPv/hxsSvlPTzIc7/Znw=="],
55775575

5578-
"gitbook-v2/next/@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@15.2.0-canary.33", "", { "os": "win32", "cpu": "x64" }, "sha512-hjdbGnkwIZ8zN2vlS6lNsEJO37HRtcEGimzfkruBMsi/DwJBqkJvZbNC/XCJy3HFcU58igncqV52p1IPjmAJAw=="],
5576+
"gitbook-v2/next/@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@15.2.0-canary.45", "", { "os": "win32", "cpu": "x64" }, "sha512-QqdTEaFzgNQtJw/CTMCBMK6YZngT+fSuTnmzuY0vkWcIGO6UmzWotxxqwJMHj/S9rBsIpHYmi4UxWyDAj/vfXw=="],
55795577

55805578
"gitbook-v2/next/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="],
55815579

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"devDependencies": {
55
"@changesets/cli": "^2.27.12",
66
"prettier": "^3.0.3",
7-
"turbo": "^2.3.4",
7+
"turbo": "^2.4.1-canary.2",
88
"vercel": "^39.3.0"
99
},
1010
"packageManager": "bun@1.1.18",

packages/gitbook-v2/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"next": "canary",
66
"react": "^19.0.0",
77
"react-dom": "^19.0.0",
8-
"@gitbook/api": "^0.90.0"
8+
"@gitbook/api": "^0.93.0"
99
},
1010
"devDependencies": {
1111
"@opennextjs/cloudflare": "^0.4.3"

packages/gitbook/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@
1313
"unit": "bun test {src,packages}",
1414
"generate": "gitbook-icons ./public/~gitbook/static/icons custom-icons && gitbook-math ./public/~gitbook/static/math",
1515
"copy:icons": "gitbook-icons ./public/~gitbook/static/icons",
16-
"clean": "rm -rf ./.next && rm -rf ./public/~gitbook/static"
16+
"clean": "rm -rf ./.next && rm -rf ./public/~gitbook/static/icons && rm -rf ./public/~gitbook/static/math"
1717
},
1818
"dependencies": {
19-
"@gitbook/api": "^0.92.0",
19+
"@gitbook/api": "^0.93.0",
2020
"@gitbook/cache-do": "workspace:*",
2121
"@gitbook/emoji-codepoints": "workspace:*",
2222
"@gitbook/icons": "workspace:*",

packages/gitbook/src/app/middleware/(site)/fetch.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ import { redirect } from 'next/navigation';
33

44
import {
55
getRevisionPageByPath,
6-
getDocument,
76
getSpaceContentData,
87
getSiteData,
98
getSiteRedirectBySource,
9+
getPageDocument,
1010
} from '@/lib/api';
1111
import { resolvePagePath, resolvePageId } from '@/lib/pages';
1212
import { getSiteContentPointer } from '@/lib/pointer';
@@ -65,9 +65,7 @@ export async function fetchPageData(params: PagePathParams | PageIdParams) {
6565
shareKey: contentData.shareKey,
6666
params,
6767
});
68-
const document = page?.page.documentId
69-
? await getDocument(contentData.space.id, page.page.documentId)
70-
: null;
68+
const document = page ? await getPageDocument(contentData.space.id, page.page) : null;
7169

7270
return {
7371
...contentData,

packages/gitbook/src/app/middleware/(space)/~gitbook/pdf/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import {
2323
getSpaceCustomization,
2424
getSpaceContentData,
2525
getSiteData,
26+
getPageDocument,
2627
} from '@/lib/api';
2728
import { getPagePDFContainerId, PageHrefContext, getAbsoluteHref } from '@/lib/links';
2829
import { resolvePageId } from '@/lib/pages';
@@ -231,8 +232,7 @@ async function PDFPageDocument(props: {
231232
refContext: ContentRefContext;
232233
}) {
233234
const { space, page, refContext } = props;
234-
235-
const document = page.documentId ? await getDocument(space.id, page.documentId) : null;
235+
const document = await getPageDocument(space.id, page);
236236

237237
return (
238238
<PrintPage id={getPagePDFContainerId(page)}>

packages/gitbook/src/lib/api.ts

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ import {
1818
SiteSection,
1919
PublishedSiteContent,
2020
SiteSectionGroup,
21+
ComputedContentSource,
22+
RevisionPageDocument,
2123
} from '@gitbook/api';
2224
import assertNever from 'assert-never';
2325
import { headers } from 'next/headers';
@@ -681,6 +683,50 @@ export const getDocument = cache({
681683
timeout: 20 * 1000,
682684
});
683685

686+
/**
687+
* Get a computed document.
688+
*/
689+
export const getComputedDocument = cache({
690+
name: 'api.getComputedDocument',
691+
tag: (spaceId, source) =>
692+
getAPICacheTag({
693+
tag: 'computed-document',
694+
space: spaceId,
695+
integration: source.integration,
696+
}),
697+
getKeySuffix: getAPIContextId,
698+
get: async (spaceId: string, source: ComputedContentSource, options: CacheFunctionOptions) => {
699+
const apiCtx = await api();
700+
const response = await apiCtx.client.spaces.getComputedDocument(
701+
spaceId,
702+
{ source },
703+
{},
704+
{
705+
signal: options.signal,
706+
...noCacheFetchOptions,
707+
},
708+
);
709+
return cacheResponse(response, cacheTtl_7days);
710+
},
711+
// Temporarily allow for a longer timeout than the default 10s
712+
// because GitBook's API currently re-normalizes all documents
713+
// and it can take more than 10s...
714+
timeout: 20 * 1000,
715+
});
716+
717+
/**
718+
* Get the document for a page.
719+
*/
720+
export async function getPageDocument(spaceId: string, page: RevisionPageDocument) {
721+
if (page.documentId) {
722+
return getDocument(spaceId, page.documentId);
723+
} else if (page.computed) {
724+
return getComputedDocument(spaceId, page.computed);
725+
}
726+
727+
return null;
728+
}
729+
684730
/**
685731
* Mimic the validation done on source server-side to reduce API usage.
686732
*/
@@ -1209,6 +1255,12 @@ export function getAPICacheTag(
12091255
space: string;
12101256
document: string;
12111257
}
1258+
// Immutable data related to a computed document
1259+
| {
1260+
tag: 'computed-document';
1261+
space: string;
1262+
integration: string;
1263+
}
12121264
// All data related to the URL of a content
12131265
| {
12141266
tag: 'url';
@@ -1238,6 +1290,8 @@ export function getAPICacheTag(
12381290
return `space:${spec.space}:revision:${spec.revision}`;
12391291
case 'document':
12401292
return `space:${spec.space}:document:${spec.document}`;
1293+
case 'computed-document':
1294+
return `space:${spec.space}:computed-document:${spec.integration}`;
12411295
case 'collection':
12421296
return `collection:${spec.collection}`;
12431297
case 'site':

packages/gitbook/src/lib/references.tsx

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import {
1717
SpaceContentPointer,
1818
getCollection,
1919
getDocument,
20+
getPageDocument,
2021
getPublishedContentSite,
2122
getReusableContent,
2223
getRevisionFile,
@@ -161,9 +162,7 @@ export async function resolveContentRef(
161162
text = '#' + anchor;
162163

163164
if (resolveAnchorText) {
164-
const document = page.documentId
165-
? await getDocument(space.id, page.documentId)
166-
: null;
165+
const document = await getPageDocument(space.id, page);
167166
if (document) {
168167
const block = getBlockById(document, anchor);
169168
if (block) {
@@ -239,16 +238,6 @@ export async function resolveContentRef(
239238
}
240239
}
241240

242-
case 'snippet': {
243-
return {
244-
href: getGitbookAppHref(
245-
`/o/${contentRef.organization}/snippet/${contentRef.snippet}`,
246-
),
247-
text: 'snippet',
248-
active: false,
249-
};
250-
}
251-
252241
case 'collection': {
253242
const collection = await ignoreAPIError(getCollection(contentRef.collection));
254243
if (!collection) {

packages/react-contentkit/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
},
1111
"dependencies": {
1212
"classnames": "^2.5.1",
13-
"@gitbook/api": "^0.90.0",
13+
"@gitbook/api": "^0.93.0",
1414
"assert-never": "^1.2.1"
1515
},
1616
"peerDependencies": {

0 commit comments

Comments
 (0)