-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathnext.config.js
More file actions
executable file
·113 lines (105 loc) · 2.55 KB
/
next.config.js
File metadata and controls
executable file
·113 lines (105 loc) · 2.55 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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
const ensureAbsoluteUrl = (value, fallback) => {
const candidate = value || fallback;
if (
candidate.startsWith("http://") ||
candidate.startsWith("https://")
) {
return candidate.replace(/\/+$/, "");
}
if (
candidate.startsWith("localhost") ||
candidate.startsWith("127.0.0.1")
) {
return `http://${candidate.replace(/\/+$/, "")}`;
}
return `https://${candidate.replace(/\/+$/, "")}`;
};
const normalizeHost = (value) =>
value.replace(/^https?:\/\//, "").replace(/\/+$/, "");
const appUrl = ensureAbsoluteUrl(
process.env.NEXT_PUBLIC_APP_URL || process.env.NEXT_PUBLIC_SITE_URL,
"http://localhost:4002",
);
const appHost = new URL(appUrl).host;
const deploymentRootDomain = normalizeHost(
process.env.NEXT_PUBLIC_DEPLOYMENT_ROOT_DOMAIN || "coderocket.app",
);
const previewRootDomain = normalizeHost(
process.env.NEXT_PUBLIC_PREVIEW_ROOT_DOMAIN || "preview.coderocket.app",
);
const webcontainerRootDomain = normalizeHost(
process.env.NEXT_PUBLIC_WEBCONTAINER_ROOT_DOMAIN ||
"webcontainer.coderocket.app",
);
const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL || "";
const supabaseHost = supabaseUrl ? new URL(supabaseUrl).hostname : null;
const allowedOrigins = Array.from(
new Set(
[
appHost,
deploymentRootDomain,
`*.${deploymentRootDomain}`,
previewRootDomain,
`*.${previewRootDomain}`,
webcontainerRootDomain,
`*.${webcontainerRootDomain}`,
"localhost:4002",
].filter(Boolean),
),
);
const remotePatterns = [
...(supabaseHost
? [
{
protocol: "https",
hostname: supabaseHost,
port: "",
pathname: "/storage/v1/object/public/**",
},
]
: []),
{
protocol: "https",
hostname: "aceternity.com",
port: "",
pathname: "/**",
},
];
/** @type {import('next').NextConfig} */
const nextConfig = {
experimental: {
serverActions: {
bodySizeLimit: "2mb",
allowedOrigins,
},
},
async redirects() {
return [
{
source: "/marketplace",
destination: "/components",
permanent: true,
},
{
source: "/marketplace/:path*",
destination: "/components",
permanent: true,
},
{
source: "/templates",
destination: "/components",
permanent: true,
},
{
source: "/templates/:path*",
destination: "/components/:path*",
permanent: true,
},
];
},
reactStrictMode: false,
images: {
remotePatterns,
},
};
module.exports = nextConfig;