/
index.js
60 lines (51 loc) 路 1.86 KB
/
index.js
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
/* eslint-env serviceworker */
import { Router } from 'itty-router'
import { ipfsGet } from './ipfs.js'
import { ipnsGet } from './ipns.js'
import { gatewayGet } from './gateway.js'
import { metricsGet } from './metrics.js'
// Export Durable Object namespace from the root module.
export { GatewayMetrics1 } from './durable-objects/gateway-metrics.js'
export { SummaryMetrics1 } from './durable-objects/summary-metrics.js'
export { CidsTracker0 } from './durable-objects/cids.js'
export { GatewayRedirectCounter0 } from './durable-objects/gateway-redirect-counter.js'
import { addCorsHeaders, withCorsHeaders } from './cors.js'
import { errorHandler } from './error-handler.js'
import { envAll } from './env.js'
const router = Router()
router
.all('*', envAll)
.get('/metrics', withCorsHeaders(metricsGet))
.get('/ipfs/:cid', withCorsHeaders(ipfsGet))
.get('/ipfs/:cid/*', withCorsHeaders(ipfsGet))
.head('/ipfs/:cid', withCorsHeaders(ipfsGet))
.head('/ipfs/:cid/*', withCorsHeaders(ipfsGet))
.get('/ipns/:name', withCorsHeaders(ipnsGet))
.get('/ipns/:name/*', withCorsHeaders(ipnsGet))
.get('*', withCorsHeaders(gatewayGet))
.head('*', withCorsHeaders(gatewayGet))
/**
* @param {Error} error
* @param {Request} request
* @param {import('./env').Env} env
*/
function serverError(error, request, env) {
return addCorsHeaders(request, errorHandler(error, env))
}
// https://developer.mozilla.org/en-US/docs/Web/API/FetchEvent
/** @typedef {{ waitUntil(p: Promise): void }} Ctx */
export default {
async fetch(request, env, ctx) {
try {
const res = await router.handle(request, env, ctx)
env.log.timeEnd('request')
return env.log.end(res)
} catch (error) {
if (env.log) {
env.log.timeEnd('request')
return env.log.end(serverError(error, request, env))
}
return serverError(error, request, env)
}
},
}