mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-09-18 00:25:07 +00:00
666e8426e1
Co-authored-by: Nicolas Dorseuil <nicolas@gitbook.io>
43 lines
1.8 KiB
JavaScript
43 lines
1.8 KiB
JavaScript
import { WorkerEntrypoint } from 'cloudflare:workers';
|
|
import { runWithCloudflareRequestContext } from '../../.open-next/cloudflare/init.js';
|
|
|
|
import { handler as middlewareHandler } from '../../.open-next/middleware/handler.mjs';
|
|
|
|
export { DOQueueHandler } from '../../.open-next/.build/durable-objects/queue.js';
|
|
|
|
export { DOShardedTagCache } from '../../.open-next/.build/durable-objects/sharded-tag-cache.js';
|
|
|
|
export default class extends WorkerEntrypoint {
|
|
async fetch(request) {
|
|
return runWithCloudflareRequestContext(request, this.env, this.ctx, async () => {
|
|
// - `Request`s are handled by the Next server
|
|
const reqOrResp = await middlewareHandler(request, this.env, this.ctx);
|
|
if (reqOrResp instanceof Response) {
|
|
return reqOrResp;
|
|
}
|
|
|
|
if (this.env.STAGE !== 'preview') {
|
|
// https://developers.cloudflare.com/workers/configuration/versions-and-deployments/gradual-deployments/#version-affinity
|
|
reqOrResp.headers.set(
|
|
'Cloudflare-Workers-Version-Overrides',
|
|
`gitbook-open-v2-${this.env.STAGE}="${this.env.WORKER_VERSION_ID}"`
|
|
);
|
|
return this.env.DEFAULT_WORKER?.fetch(reqOrResp, {
|
|
cf: {
|
|
cacheEverything: false,
|
|
},
|
|
});
|
|
}
|
|
// If we are in preview mode, we need to send the request to the preview URL
|
|
const modifiedUrl = new URL(reqOrResp.url);
|
|
modifiedUrl.hostname = this.env.PREVIEW_HOSTNAME;
|
|
const nextRequest = new Request(modifiedUrl, reqOrResp);
|
|
return fetch(nextRequest, {
|
|
cf: {
|
|
cacheEverything: false,
|
|
},
|
|
});
|
|
});
|
|
}
|
|
}
|