-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathnext.config.js
More file actions
64 lines (61 loc) · 1.98 KB
/
Copy pathnext.config.js
File metadata and controls
64 lines (61 loc) · 1.98 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
import nextra from 'nextra'
import { contentSignal } from './data/profile.js'
const withNextra = nextra({ readingTime: true })
const developmentScriptSource =
process.env.NODE_ENV === 'development' ? " 'unsafe-eval'" : ''
const securityHeaders = [
{
key: 'Content-Security-Policy',
value: `default-src 'self'; script-src 'self' 'unsafe-inline'${developmentScriptSource}; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob:; font-src 'self'; connect-src 'self'; frame-ancestors 'none'; object-src 'none'; base-uri 'self'; form-action 'self'`
},
{ key: 'Content-Signal', value: contentSignal },
{
key: 'Strict-Transport-Security',
value: 'max-age=31536000; includeSubDomains'
},
{ key: 'Referrer-Policy', value: 'strict-origin-when-cross-origin' },
{
key: 'Permissions-Policy',
value: 'camera=(), microphone=(), geolocation=(), payment=(), usb=()'
},
{ key: 'X-Content-Type-Options', value: 'nosniff' }
]
export default withNextra({
reactStrictMode: true,
agentRules: false,
turbopack: {
resolveAlias: { 'next-mdx-import-source-file': './mdx-components.jsx' }
},
compress: true,
poweredByHeader: false,
images: {
formats: ['image/avif', 'image/webp'],
deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
imageSizes: [16, 32, 48, 64, 96, 128, 256, 384]
},
async redirects() {
return [
{ source: '/more', destination: '/recommendations', permanent: true },
{
source: '/earlier-work',
destination: '/recommendations#earlier-recommendations',
permanent: true
},
{ source: '/llm.txt', destination: '/llms.txt', permanent: true },
{
source: '/www/:path*',
destination: 'https://mohsinht.com/:path*',
permanent: true
}
]
},
async headers() {
return [
{ source: '/:path*', headers: securityHeaders },
{
source: '/downloads/:path*',
headers: [{ key: 'X-Robots-Tag', value: 'noindex, follow' }]
}
]
}
})