-
-
Notifications
You must be signed in to change notification settings - Fork 17
Expand file tree
/
Copy pathindex.ts
More file actions
71 lines (54 loc) · 2.87 KB
/
index.ts
File metadata and controls
71 lines (54 loc) · 2.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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';
import { OriginMiddleware } from '../middleware/originMiddleware';
import { R2Middleware } from '../middleware/r2Middleware';
import { RedirectionMiddleware } from '../middleware/redirectionMiddleware';
import { SubtitutionMiddleware } from '../middleware/subtituteMiddleware';
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(
'https://github.com/nodejs/corepack#readme'
);
router.options('*', [new OptionsMiddleware()]);
router.head('/metrics/?:filePath+', [r2Middleware, originMiddleware]);
router.get('/metrics/?:filePath+', [cachedR2Middleware, originMiddleware]);
router.all('/api/corepack.html', [corepackRedirectMiddleware]);
router.all('/docs/latest/api/corepack.html', [corepackRedirectMiddleware]);
// Register routes for latest releases (e.g. `/dist/latest/`)
for (const branch in latestVersions) {
const latestVersion = latestVersions[branch as keyof typeof latestVersions];
const subtitutionMiddleware = new SubtitutionMiddleware(
router,
branch,
latestVersion
);
router.head(`/dist/${branch}*`, [subtitutionMiddleware]);
router.get(`/dist/${branch}*`, [subtitutionMiddleware]);
router.head(`/download/release/${branch}*`, [subtitutionMiddleware]);
router.get(`/download/release/${branch}*`, [subtitutionMiddleware]);
router.head(`/docs/${branch}*`, [subtitutionMiddleware]);
router.get(`/docs/${branch}*`, [subtitutionMiddleware]);
}
router.head('/node-config-schema.json', [r2Middleware]);
router.get('/node-config-schema.json', [r2Middleware]);
router.head('/dist/?:filePath+', [r2Middleware, originMiddleware]);
router.get('/dist/?:filePath+', [cachedR2Middleware, originMiddleware]);
router.head('/download/?:filePath+', [r2Middleware, originMiddleware]);
router.get('/download/?:filePath+', [cachedR2Middleware, originMiddleware]);
router.head('/api/?:filePath+', [r2Middleware, originMiddleware]);
router.get('/api/?:filePath+', [cachedR2Middleware, originMiddleware]);
router.head('/docs/?:version?/:filePath+?', [r2Middleware, originMiddleware]);
router.get('/docs/?:version?/:filePath+?', [
cachedR2Middleware,
originMiddleware,
]);
router.get('*', [new NotFoundMiddleware()]);
router.all('*', [new MethodNotAllowedMiddleware()]);
}
export * from './router';