Some checks failed
		
		
	
	Build and Deploy docker container / build (push) Failing after 1m50s
				
			
		
			
				
	
	
		
			113 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const { withContentlayer } = require('next-contentlayer2')
 | |
| 
 | |
| const withBundleAnalyzer = require('@next/bundle-analyzer')({
 | |
|   enabled: process.env.ANALYZE === 'true',
 | |
| })
 | |
| 
 | |
| // You might need to insert additional domains in script-src if you are using external services
 | |
| const ContentSecurityPolicy = `
 | |
|   default-src 'self';
 | |
|   script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app analytics.umami.is;
 | |
|   style-src 'self' 'unsafe-inline';
 | |
|   img-src * blob: data:;
 | |
|   media-src s3.jonb.io* melisweetsimple.jonb.io*;
 | |
|   connect-src *;
 | |
|   font-src 'self';
 | |
|   frame-src giscus.app
 | |
| `
 | |
| 
 | |
| const securityHeaders = [
 | |
|   // https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
 | |
|   {
 | |
|     key: 'Content-Security-Policy',
 | |
|     value: ContentSecurityPolicy.replace(/\n/g, ''),
 | |
|   },
 | |
|   // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy
 | |
|   {
 | |
|     key: 'Referrer-Policy',
 | |
|     value: 'strict-origin-when-cross-origin',
 | |
|   },
 | |
|   // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
 | |
|   {
 | |
|     key: 'X-Frame-Options',
 | |
|     value: 'DENY',
 | |
|   },
 | |
|   // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options
 | |
|   {
 | |
|     key: 'X-Content-Type-Options',
 | |
|     value: 'nosniff',
 | |
|   },
 | |
|   // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-DNS-Prefetch-Control
 | |
|   {
 | |
|     key: 'X-DNS-Prefetch-Control',
 | |
|     value: 'on',
 | |
|   },
 | |
|   // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security
 | |
|   {
 | |
|     key: 'Strict-Transport-Security',
 | |
|     value: 'max-age=31536000; includeSubDomains',
 | |
|   },
 | |
|   // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Feature-Policy
 | |
|   {
 | |
|     key: 'Permissions-Policy',
 | |
|     value: 'camera=(), microphone=(), geolocation=()',
 | |
|   },
 | |
| ]
 | |
| 
 | |
| const output = process.env.EXPORT ? 'export' : undefined
 | |
| const basePath = process.env.BASE_PATH || undefined
 | |
| const unoptimized = process.env.UNOPTIMIZED ? true : undefined
 | |
| 
 | |
| /**
 | |
|  * @type {import('next/dist/next-server/server/config').NextConfig}
 | |
|  **/
 | |
| module.exports = () => {
 | |
|   const plugins = [withContentlayer, withBundleAnalyzer]
 | |
|   return plugins.reduce((acc, next) => next(acc), {
 | |
|     output,
 | |
|     basePath,
 | |
|     reactStrictMode: true,
 | |
|     pageExtensions: ['ts', 'tsx', 'js', 'jsx', 'md', 'mdx'],
 | |
|     eslint: {
 | |
|       dirs: ['app', 'components', 'layouts', 'scripts'],
 | |
|     },
 | |
|     images: {
 | |
|       remotePatterns: [
 | |
|         {
 | |
|           protocol: 'https',
 | |
|           hostname: 'picsum.photos',
 | |
|         },
 | |
|         {
 | |
|           protocol: 'https',
 | |
|           hostname: 's3.jonb.io',
 | |
|           port: '',
 | |
|           pathname: '/cdn/**',
 | |
|         },
 | |
|         {
 | |
|           protocol: 'https',
 | |
|           hostname: 'melisweetsimple.jonb.io',
 | |
|           port: '',
 | |
|           pathname: '/**',
 | |
|         },
 | |
|       ],
 | |
|       unoptimized,
 | |
|     },
 | |
|     async headers() {
 | |
|       return [
 | |
|         {
 | |
|           source: '/(.*)',
 | |
|           headers: securityHeaders,
 | |
|         },
 | |
|       ]
 | |
|     },
 | |
|     webpack: (config, options) => {
 | |
|       config.module.rules.push({
 | |
|         test: /\.svg$/,
 | |
|         use: ['@svgr/webpack'],
 | |
|       })
 | |
| 
 | |
|       return config
 | |
|     },
 | |
|   })
 | |
| }
 |