Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 3 additions & 5 deletions docs/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ A high-level overview of how a request flows through Node.js' infrastructure:

```mermaid
flowchart LR
request[Request] --> cloudflare(Cloudflare Routing Rules)
request[Request] --> cloudflare(Cloudflare Routing & Cache)
cloudflare -- /dist/, /download/, /docs/, /api/, /metrics/ --> worker@{ shape: procs, label: "Release Worker"}
cloudflare -- /... --> website(Website)
worker -- Cache miss --> r2[(R2 bucket)]
worker --> r2[(R2 bucket)]
worker -- Error --> originServer(Origin Server)
originServer
website
Expand All @@ -31,7 +31,6 @@ This goes on until the request is handled or we run out of middlewares to handle

We currently have the following middlewares (in no particular order):

- [CacheMiddleware](../src/middleware/cacheMiddleware.ts) - Caches responses to GET request.
- [R2Middleware](../src/middleware/r2Middleware.ts) - Fetches resource from R2.
- [OriginMiddleware](../src/middleware/originMiddleware.ts) - Fetches resource from the origin server.
Used as a fallback if the R2 middleware fails.
Expand All @@ -45,11 +44,10 @@ We currently have the following middlewares (in no particular order):
flowchart TD
request[Request] --> worker(Release Worker)
worker --> routerHandle("Router.handle")
routerHandle -- HTTP GET --> cacheMiddleware("Cache Middleware")
routerHandle -- HTTP GET --> r2Middleware("R2 Middleware")
routerHandle -- HTTP HEAD --> r2Middleware
routerHandle -- HTTP OPTIONS --> optionsMiddleware("Options Middleware")
routerHandle -- Request --> substituteMiddleware("Substitute Middleware")
substituteMiddleware -- Substituted Request --> routerHandle
cacheMiddleware -- Cache miss --> r2Middleware("R2 Middleware")
r2Middleware -- Error --> originMiddleware("Origin Middleware")
```
5 changes: 0 additions & 5 deletions src/env.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,6 @@ export interface Env {
*/
ENVIRONMENT: 'dev' | 'staging' | 'prod' | 'e2e-tests';

/**
* Should caching be enabled?
*/
CACHING: boolean;

LOG_ERRORS?: boolean;

/**
Expand Down
158 changes: 0 additions & 158 deletions src/middleware/cacheMiddleware.test.ts

This file was deleted.

60 changes: 0 additions & 60 deletions src/middleware/cacheMiddleware.ts

This file was deleted.

1 change: 1 addition & 0 deletions src/middleware/originMiddleware.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ export class OriginMiddleware implements Middleware {
'cache-control': isDirectoryPath(request.urlObj.pathname)
? CACHE_HEADERS.failure
: CACHE_HEADERS.success,
'cache-tag': 'release-worker,release-worker:origin',
},
});
}
Expand Down
1 change: 1 addition & 0 deletions src/middleware/r2Middleware.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ async function handleDirectory(
'last-modified': result.lastModified.toUTCString(),
'content-type': 'text/html',
'cache-control': CACHE_HEADERS.success,
'cache-tag': 'release-worker,release-worker:directory',
},
});
}
Expand Down
1 change: 1 addition & 0 deletions src/providers/provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ export type HttpResponseHeaders = {
'accept-range': string;
'access-control-allow-origin': string;
'cache-control': string;
'cache-tag': string;
expires: string;
'last-modified': string;
'content-encoding': string;
Expand Down
1 change: 1 addition & 0 deletions src/providers/r2Provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,7 @@ function r2MetadataToHeaders(
'access-control-allow-origin': object.key.endsWith('.json') ? '*' : '',
'cache-control':
httpStatusCode === 200 ? CACHE_HEADERS.success : CACHE_HEADERS.failure,
'cache-tag': 'release-worker,release-worker:file',
expires: httpMetadata?.cacheExpiry?.toUTCString() ?? '',
'last-modified': getLastModified(object),
'content-language': httpMetadata?.contentLanguage ?? '',
Expand Down
16 changes: 5 additions & 11 deletions src/routes/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import latestVersions from '../constants/latestVersions.json' assert { type: 'json' };
import { cached } from '../middleware/cacheMiddleware';
import { MethodNotAllowedMiddleware } from '../middleware/methodNotAllowedMiddleware';
import { NotFoundMiddleware } from '../middleware/notFoundMiddleware';
import { OptionsMiddleware } from '../middleware/optionsMiddleware';
Expand All @@ -12,7 +11,6 @@ import type { Router } from './router';

export function registerRoutes(router: Router): void {
const r2Middleware = new R2Middleware();
const cachedR2Middleware = cached(r2Middleware);
const originMiddleware = new OriginMiddleware();

const corepackRedirectMiddleware = new RedirectionMiddleware(
Expand All @@ -22,7 +20,7 @@ export function registerRoutes(router: Router): void {
router.options('*', new OptionsMiddleware());

router.head('/metrics/?:filePath+', r2Middleware, originMiddleware);
router.get('/metrics/?:filePath+', cachedR2Middleware, originMiddleware);
router.get('/metrics/?:filePath+', r2Middleware, originMiddleware);

router.all('/api/corepack.html', corepackRedirectMiddleware);
router.all('/docs/latest/api/corepack.html', corepackRedirectMiddleware);
Expand Down Expand Up @@ -53,20 +51,16 @@ export function registerRoutes(router: Router): void {
router.get('/llms.txt', r2Middleware);

router.head('/dist/?:filePath+', r2Middleware, originMiddleware);
router.get('/dist/?:filePath+', cachedR2Middleware, originMiddleware);
router.get('/dist/?:filePath+', r2Middleware, originMiddleware);

router.head('/download/?:filePath+', r2Middleware, originMiddleware);
router.get('/download/?:filePath+', cachedR2Middleware, originMiddleware);
router.get('/download/?:filePath+', r2Middleware, originMiddleware);

router.head('/api/?:filePath+', r2Middleware, originMiddleware);
router.get('/api/?:filePath+', cachedR2Middleware, originMiddleware);
router.get('/api/?:filePath+', r2Middleware, originMiddleware);

router.head('/docs/?:version?/:filePath+?', r2Middleware, originMiddleware);
router.get(
'/docs/?:version?/:filePath+?',
cachedR2Middleware,
originMiddleware
);
router.get('/docs/?:version?/:filePath+?', r2Middleware, originMiddleware);

router.post('/_throw', new ThrowMiddleware());

Expand Down
9 changes: 6 additions & 3 deletions wrangler.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
"vars": {
"workers_dev": true,
"ENVIRONMENT": "dev",
"CACHING": false,
"LOG_ERRORS": true,
"S3_ENDPOINT": "https://07be8d2fbc940503ca1be344714cb0d1.r2.cloudflarestorage.com",
"BUCKET_NAME": "dist-prod",
Expand All @@ -30,7 +29,6 @@
"vars": {
"workers_dev": true,
"ENVIRONMENT": "staging",
"CACHING": true,
"USE_KV": true,
"LOG_ERRORS": false,
"S3_ENDPOINT": "https://07be8d2fbc940503ca1be344714cb0d1.r2.cloudflarestorage.com",
Expand All @@ -50,6 +48,9 @@
"id": "a8378d5444a2465ca7202ebaa5d8deb1",
},
],
"cache": {
Comment thread
cursor[bot] marked this conversation as resolved.
"enabled": true,
},
},
"prod": {
"account_id": "07be8d2fbc940503ca1be344714cb0d1",
Expand Down Expand Up @@ -82,7 +83,6 @@
"vars": {
"workers_dev": false,
"ENVIRONMENT": "prod",
"CACHING": true,
"LOG_ERRORS": false,
"S3_ENDPOINT": "https://07be8d2fbc940503ca1be344714cb0d1.r2.cloudflarestorage.com",
"BUCKET_NAME": "dist-prod",
Expand All @@ -101,6 +101,9 @@
"id": "a8378d5444a2465ca7202ebaa5d8deb1",
},
],
"cache": {
"enabled": true,
},
Comment thread
cursor[bot] marked this conversation as resolved.
},
},
}