@berachain/config 0.2.7 → 0.2.8-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bepolia.cjs +7 -1
- package/dist/bepolia.d.ts +4 -0
- package/dist/bepolia.d.ts.map +1 -1
- package/dist/bepolia.mjs +7 -1
- package/dist/chunk-6OF46MO2.mjs +135 -0
- package/dist/chunk-AU3LYJAB.cjs +75 -0
- package/dist/chunk-B2BTOQVP.cjs +25 -0
- package/dist/chunk-CBAAKY4N.cjs +152 -0
- package/dist/chunk-DEP7BIPJ.cjs +151 -0
- package/dist/chunk-EYYJ2UZT.cjs +10 -0
- package/dist/chunk-F5UIDRP6.mjs +77 -0
- package/dist/chunk-FEDP4MQE.cjs +135 -0
- package/dist/chunk-GB6ZGTAF.mjs +152 -0
- package/dist/chunk-KJXYSGNH.mjs +10 -0
- package/dist/chunk-LALEUPWL.mjs +8 -0
- package/dist/chunk-NF5WIUL6.cjs +77 -0
- package/dist/chunk-OWAB24JG.mjs +25 -0
- package/dist/chunk-VWRKCGMU.mjs +75 -0
- package/dist/chunk-XA5DMTFW.mjs +75 -0
- package/dist/chunk-XHPQ7VX6.mjs +151 -0
- package/dist/chunk-YT7WZDGI.cjs +8 -0
- package/dist/chunk-ZTYHPIUW.cjs +75 -0
- package/dist/index.cjs +10 -1
- package/dist/index.mjs +10 -1
- package/dist/internal/header-sources.cjs +409 -13
- package/dist/internal/header-sources.mjs +409 -13
- package/dist/internal/index.cjs +37 -1
- package/dist/internal/index.d.ts +16 -0
- package/dist/internal/index.d.ts.map +1 -1
- package/dist/internal/index.mjs +37 -1
- package/dist/internal/maintenance.cjs +24 -1
- package/dist/internal/maintenance.mjs +24 -1
- package/dist/internal/nextjs/index.cjs +83 -1
- package/dist/internal/nextjs/index.mjs +83 -1
- package/dist/internal/nextjs/utils/index.cjs +40 -1
- package/dist/internal/nextjs/utils/index.mjs +40 -1
- package/dist/internal/sentry/index.cjs +10 -1
- package/dist/internal/sentry/index.mjs +10 -1
- package/dist/internal/sentry/sentry.client.config.cjs +65 -1
- package/dist/internal/sentry/sentry.client.config.mjs +65 -1
- package/dist/internal/tailwind/config.d.ts +1 -1
- package/dist/internal/tailwind/index.cjs +237 -1
- package/dist/internal/tailwind/index.d.ts +1 -1
- package/dist/internal/tailwind/index.mjs +237 -1
- package/dist/internal/wagmi/index.cjs +57 -1
- package/dist/internal/wagmi/index.mjs +57 -1
- package/dist/mainnet.cjs +8 -1
- package/dist/mainnet.d.ts +4 -0
- package/dist/mainnet.d.ts.map +1 -1
- package/dist/mainnet.mjs +8 -1
- package/dist/sentry.edge.config-3Y5ABKSB.cjs +22 -0
- package/dist/sentry.edge.config-SIWSKDGR.mjs +22 -0
- package/dist/sentry.server.config-HY6I2WQ5.mjs +22 -0
- package/dist/sentry.server.config-ZXGUVYT6.cjs +22 -0
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-2GCBWNKH.mjs +0 -1
- package/dist/chunk-2OLL4MUY.cjs +0 -1
- package/dist/chunk-2RLHVELA.mjs +0 -2
- package/dist/chunk-5YLBFOPA.mjs +0 -1
- package/dist/chunk-6CZTBBJT.cjs +0 -2
- package/dist/chunk-DUO7UEQD.cjs +0 -1
- package/dist/chunk-HJ25KNL4.cjs +0 -1
- package/dist/chunk-HLFO7V5I.cjs +0 -1
- package/dist/chunk-ITASDGG4.cjs +0 -1
- package/dist/chunk-MS6UGFXI.mjs +0 -1
- package/dist/chunk-MW34QRNX.cjs +0 -1
- package/dist/chunk-N45AQAIZ.mjs +0 -1
- package/dist/chunk-O243TIHY.mjs +0 -1
- package/dist/chunk-QHBQ2EN5.mjs +0 -1
- package/dist/chunk-QYM6VRYU.mjs +0 -1
- package/dist/chunk-WMZLZQ6E.mjs +0 -1
- package/dist/chunk-X5MTSC5T.cjs +0 -1
- package/dist/chunk-YLWSSHG6.cjs +0 -1
- package/dist/sentry.edge.config-AU3IBVBN.cjs +0 -1
- package/dist/sentry.edge.config-PXSVFOH6.mjs +0 -1
- package/dist/sentry.server.config-IOCQ5KDF.cjs +0 -1
- package/dist/sentry.server.config-NEPRXZ2E.mjs +0 -1
|
@@ -1,16 +1,412 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
|
-
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var _chunkB2BTOQVPcjs = require('../chunk-B2BTOQVP.cjs');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
var _chunkYT7WZDGIcjs = require('../chunk-YT7WZDGI.cjs');
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
var _chunkFEDP4MQEcjs = require('../chunk-FEDP4MQE.cjs');
|
|
11
|
+
require('../chunk-CBAAKY4N.cjs');
|
|
12
|
+
require('../chunk-DEP7BIPJ.cjs');
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
var _chunkAU3LYJABcjs = require('../chunk-AU3LYJAB.cjs');
|
|
22
|
+
require('../chunk-EYYJ2UZT.cjs');
|
|
23
|
+
|
|
24
|
+
// src/internal/dedupeCspSources.ts
|
|
25
|
+
function parseSource(raw) {
|
|
26
|
+
const schemeSplit = raw.indexOf("://");
|
|
27
|
+
if (schemeSplit === -1) {
|
|
28
|
+
return void 0;
|
|
29
|
+
}
|
|
30
|
+
const scheme = raw.slice(0, schemeSplit).toLowerCase();
|
|
31
|
+
const rest = raw.slice(schemeSplit + 3);
|
|
32
|
+
const pathStart = rest.indexOf("/");
|
|
33
|
+
const host = (pathStart === -1 ? rest : rest.slice(0, pathStart)).toLowerCase();
|
|
34
|
+
const path = pathStart === -1 ? "/" : rest.slice(pathStart);
|
|
35
|
+
if (!host) {
|
|
36
|
+
return void 0;
|
|
37
|
+
}
|
|
38
|
+
return { raw, scheme, host, path };
|
|
39
|
+
}
|
|
40
|
+
function hostMatches(patternHost, targetHost) {
|
|
41
|
+
if (!patternHost.startsWith("*.")) {
|
|
42
|
+
return patternHost === targetHost;
|
|
43
|
+
}
|
|
44
|
+
const suffix = patternHost.slice(1);
|
|
45
|
+
return targetHost.endsWith(suffix) && targetHost.length > suffix.length;
|
|
46
|
+
}
|
|
47
|
+
function covers(pattern, target) {
|
|
48
|
+
if (pattern.scheme !== target.scheme) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
if (!hostMatches(pattern.host, target.host)) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
if (pattern.path.endsWith("/")) {
|
|
55
|
+
return target.path.startsWith(pattern.path);
|
|
56
|
+
}
|
|
57
|
+
return target.path === pattern.path;
|
|
58
|
+
}
|
|
59
|
+
function dedupeCspSources(sources) {
|
|
60
|
+
const parsed = sources.map((raw) => ({ raw, parsed: parseSource(raw) }));
|
|
61
|
+
return parsed.filter(({ parsed: target }, i) => {
|
|
62
|
+
if (!target) {
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
return !parsed.some(({ parsed: pattern }, j) => {
|
|
66
|
+
if (i === j || !pattern) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
if (!covers(pattern, target)) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
if (covers(target, pattern)) {
|
|
73
|
+
return j < i;
|
|
74
|
+
}
|
|
75
|
+
return true;
|
|
76
|
+
});
|
|
77
|
+
}).map(({ raw }) => raw);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// src/internal/sentry/getSentryKeys.ts
|
|
81
|
+
function getSentryKeys({
|
|
82
|
+
dsn = process.env.NEXT_PUBLIC_SENTRY_DSN
|
|
83
|
+
} = {}) {
|
|
84
|
+
if (!dsn) {
|
|
85
|
+
return void 0;
|
|
86
|
+
}
|
|
87
|
+
const re = /^(?:https:\/\/)([A-z0-9]{32})(?::{0,1})([A-z0-9]*)(?:@)(o[a-z0-9]+)(?:\.ingest\.us\.sentry\.io)\/([0-9]{16})/i;
|
|
88
|
+
const match = _optionalChain([dsn, 'optionalAccess', _ => _.match, 'call', _2 => _2(re)]);
|
|
89
|
+
if (!match) {
|
|
90
|
+
return void 0;
|
|
91
|
+
}
|
|
92
|
+
const [
|
|
93
|
+
,
|
|
94
|
+
key,
|
|
95
|
+
// this is a secret stored in a deprecated dns format
|
|
96
|
+
deprecatedSecret,
|
|
97
|
+
org,
|
|
98
|
+
projectId
|
|
99
|
+
] = match;
|
|
100
|
+
const cspEndpoint = new URL(
|
|
101
|
+
`https://${org}.ingest.us.sentry.io/api/${projectId}/security/?sentry_key=${key}`
|
|
102
|
+
);
|
|
103
|
+
cspEndpoint.searchParams.set("sentry_key", key);
|
|
104
|
+
cspEndpoint.searchParams.set("sentry_env", _chunkB2BTOQVPcjs.sentryEnvironment);
|
|
105
|
+
cspEndpoint.searchParams.set("sentry_release", _chunkB2BTOQVPcjs.sentryRelease);
|
|
106
|
+
return {
|
|
107
|
+
dsn: match[0],
|
|
108
|
+
projectId,
|
|
109
|
+
deprecatedSecret: deprecatedSecret || void 0,
|
|
110
|
+
cspEndpoint,
|
|
111
|
+
org,
|
|
112
|
+
publicKey: match[1]
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// src/internal/header-sources.ts
|
|
117
|
+
var config = _chunkFEDP4MQEcjs.chainConfigs[_chunkAU3LYJABcjs.defaultChainId];
|
|
118
|
+
var modules = {
|
|
119
|
+
berachain: {
|
|
120
|
+
connect: [
|
|
121
|
+
"https://*.berachain.com/",
|
|
122
|
+
// staging hosts are only reachable outside production
|
|
123
|
+
_chunkAU3LYJABcjs.isProduction ? null : "https://*.berachain-staging.com/",
|
|
124
|
+
"https://raw.githubusercontent.com/berachain/metadata/",
|
|
125
|
+
`${_chunkAU3LYJABcjs.imageBaseUrl}/`,
|
|
126
|
+
"https://*.quiknode.pro",
|
|
127
|
+
// Subgraph queries are served by same-origin typed REST endpoints under
|
|
128
|
+
// /api/honey/* and /api/pol/* (covered by 'self'), not direct browser
|
|
129
|
+
// requests to the upstream URLs.
|
|
130
|
+
config.pol.bribeBoostApi,
|
|
131
|
+
_chunkYT7WZDGIcjs.getUriFromLink.call(void 0, config.beep),
|
|
132
|
+
_chunkYT7WZDGIcjs.getUriFromLink.call(void 0, config.api),
|
|
133
|
+
_chunkAU3LYJABcjs.jsonRpcUrl,
|
|
134
|
+
_chunkAU3LYJABcjs.publicJsonRpcUrl,
|
|
135
|
+
_chunkAU3LYJABcjs.alchemyJsonRpcUrl,
|
|
136
|
+
"https://api.routescan.io/v2/network/"
|
|
137
|
+
],
|
|
138
|
+
img: [
|
|
139
|
+
// trailing slash so sub-paths (e.g. /bend-curators/x.png/public) match;
|
|
140
|
+
// CSP path-matches exactly without it
|
|
141
|
+
`${_chunkAU3LYJABcjs.imageBaseUrl}/`,
|
|
142
|
+
"https://raw.githubusercontent.com/berachain/metadata/"
|
|
143
|
+
]
|
|
144
|
+
},
|
|
145
|
+
beranames: {
|
|
146
|
+
connect: [
|
|
147
|
+
// avatars
|
|
148
|
+
"https://beranames-assets-berachain.s3.eu-central-003.backblazeb2.com/"
|
|
149
|
+
],
|
|
150
|
+
img: [
|
|
151
|
+
"https://beranames-assets-berachain.s3.eu-central-003.backblazeb2.com/"
|
|
152
|
+
]
|
|
153
|
+
},
|
|
154
|
+
swapAggregators: {
|
|
155
|
+
connect: [
|
|
156
|
+
// empty on chains without a proxy — omit rather than emit a bare "/"
|
|
157
|
+
config.bex.aggregatorsProxyUrl ? `${config.bex.aggregatorsProxyUrl}/` : null,
|
|
158
|
+
"https://open-api.openocean.finance/",
|
|
159
|
+
"https://api.haiku.trade/",
|
|
160
|
+
"https://api.fly.trade/",
|
|
161
|
+
"https://api.enso.finance/",
|
|
162
|
+
"https://api.enso.build/",
|
|
163
|
+
// zaps
|
|
164
|
+
"https://api.relay.link/"
|
|
165
|
+
]
|
|
166
|
+
},
|
|
167
|
+
walletConnect: {
|
|
168
|
+
connect: [
|
|
169
|
+
"wss://relay.walletconnect.com/",
|
|
170
|
+
"wss://relay.walletconnect.org/",
|
|
171
|
+
"https://verify.walletconnect.org/v3/public-key"
|
|
172
|
+
],
|
|
173
|
+
frame: [
|
|
174
|
+
"https://verify.walletconnect.com/",
|
|
175
|
+
"https://verify.walletconnect.org/"
|
|
176
|
+
]
|
|
177
|
+
},
|
|
178
|
+
coinbaseWallet: {
|
|
179
|
+
connect: [
|
|
180
|
+
"wss://www.walletlink.org/rpc",
|
|
181
|
+
"https://www.walletlink.org/events",
|
|
182
|
+
"https://chain-proxy.wallet.coinbase.com/"
|
|
183
|
+
]
|
|
184
|
+
},
|
|
185
|
+
metamask: {
|
|
186
|
+
connect: [
|
|
187
|
+
"wss://metamask-sdk.api.cx.metamask.io/socket.io/",
|
|
188
|
+
"https://metamask-sdk.api.cx.metamask.io"
|
|
189
|
+
]
|
|
190
|
+
},
|
|
191
|
+
thirdweb: {
|
|
192
|
+
connect: ["https://*.thirdweb.com/"],
|
|
193
|
+
// export pk iframe
|
|
194
|
+
frame: ["https://embedded-wallet.thirdweb.com/"]
|
|
195
|
+
},
|
|
196
|
+
dynamic: {
|
|
197
|
+
connect: ["https://app.dynamicauth.com/api"]
|
|
198
|
+
},
|
|
199
|
+
binance: {
|
|
200
|
+
connect: ["https://wallet.binance.com/tonbridge/"]
|
|
201
|
+
},
|
|
202
|
+
tron: {
|
|
203
|
+
connect: ["https://api.trongrid.io/"]
|
|
204
|
+
},
|
|
205
|
+
layerZero: {
|
|
206
|
+
connect: [
|
|
207
|
+
"https://*.layerzero-scan.com/",
|
|
208
|
+
"https://scan.layerzero-api.com/"
|
|
209
|
+
]
|
|
210
|
+
},
|
|
211
|
+
pelagus: {
|
|
212
|
+
img: ["https://pelaguswallet.io/docs/img"]
|
|
213
|
+
},
|
|
214
|
+
externalRpcs: {
|
|
215
|
+
// non-Berachain chains read by wallets/bridges
|
|
216
|
+
connect: [
|
|
217
|
+
"https://api.avax.network/ext/bc/C/rpc",
|
|
218
|
+
"https://polygon-rpc.com",
|
|
219
|
+
"https://mainnet.optimism.io/",
|
|
220
|
+
"https://arb1.arbitrum.io/rpc",
|
|
221
|
+
"https://mainnet.base.org/",
|
|
222
|
+
"https://eth.merkle.io"
|
|
223
|
+
]
|
|
224
|
+
},
|
|
225
|
+
tokenIcons: {
|
|
226
|
+
img: [
|
|
227
|
+
"https://assets.coingecko.com/coins/images/",
|
|
228
|
+
"https://coin-images.coingecko.com/coins/images/",
|
|
229
|
+
"https://icons.llama.fi/",
|
|
230
|
+
"https://icons.llamao.fi/",
|
|
231
|
+
"https://static.debank.com/",
|
|
232
|
+
"https://raw.githubusercontent.com/trustwallet/assets/"
|
|
233
|
+
]
|
|
234
|
+
},
|
|
235
|
+
bend: {
|
|
236
|
+
img: ["https://cdn.morpho.org/"]
|
|
237
|
+
},
|
|
238
|
+
pyth: {
|
|
239
|
+
connect: ["https://hermes.pyth.network/v2/"]
|
|
240
|
+
},
|
|
241
|
+
fonts: {
|
|
242
|
+
font: [
|
|
243
|
+
"https://cdn.jsdelivr.net/npm/@fontsource/",
|
|
244
|
+
// collected by sentry (needed by browser extensions)
|
|
245
|
+
"https://fonts.gstatic.com",
|
|
246
|
+
"https://use.typekit.net/"
|
|
247
|
+
]
|
|
248
|
+
},
|
|
249
|
+
sentry: {
|
|
250
|
+
// csp reporting
|
|
251
|
+
connect: ["https://*.sentry.io/"]
|
|
252
|
+
},
|
|
253
|
+
posthog: {
|
|
254
|
+
// toolbar + heatmaps
|
|
255
|
+
connect: ["https://*.posthog.com"],
|
|
256
|
+
img: ["https://*.posthog.com"],
|
|
257
|
+
frame: ["https://*.posthog.com"],
|
|
258
|
+
font: ["https://*.posthog.com"],
|
|
259
|
+
style: ["https://*.posthog.com"],
|
|
260
|
+
media: ["https://*.posthog.com"]
|
|
261
|
+
},
|
|
262
|
+
vercel: {
|
|
263
|
+
// toolbar + live comments
|
|
264
|
+
connect: ["https://vercel.live", "wss://ws-us3.pusher.com"],
|
|
265
|
+
img: ["https://vercel.live", "https://vercel.com"],
|
|
266
|
+
frame: ["https://vercel.live/"],
|
|
267
|
+
font: ["https://vercel.live", "https://assets.vercel.com"],
|
|
268
|
+
style: ["https://vercel.live"]
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
var headerSourceModules = modules;
|
|
272
|
+
function getContentSecurityPolicy({
|
|
273
|
+
isDevelopment,
|
|
274
|
+
cspReporting,
|
|
275
|
+
dynamicScriptCsp = {},
|
|
276
|
+
modules: enabledModules = {},
|
|
277
|
+
...args
|
|
278
|
+
}) {
|
|
279
|
+
const defaultSrc = [];
|
|
280
|
+
function collect(directive) {
|
|
281
|
+
return Object.entries(headerSourceModules).filter(
|
|
282
|
+
([module]) => enabledModules[module] !== false
|
|
283
|
+
).flatMap(([, sources]) => _nullishCoalesce(sources[directive], () => ( []))).filter((url) => Boolean(_optionalChain([url, 'optionalAccess', _3 => _3.trim, 'call', _4 => _4()])));
|
|
284
|
+
}
|
|
285
|
+
const connectionSources = dedupeCspSources(
|
|
286
|
+
collect("connect").concat(_nullishCoalesce(args.connectionSources, () => ( []))).filter((link) => {
|
|
287
|
+
const url = _chunkYT7WZDGIcjs.getUriFromLink.call(void 0, link);
|
|
288
|
+
if (!url || url.trim() === "") {
|
|
289
|
+
return false;
|
|
290
|
+
}
|
|
291
|
+
if (url.startsWith(_chunkAU3LYJABcjs.goldskyBaseUrl) && url !== _chunkAU3LYJABcjs.goldskyBaseUrl) {
|
|
292
|
+
return false;
|
|
293
|
+
}
|
|
294
|
+
return true;
|
|
295
|
+
})
|
|
296
|
+
);
|
|
297
|
+
const pictureSources = dedupeCspSources(
|
|
298
|
+
collect("img").concat(_nullishCoalesce(args.pictureSources, () => ( [])))
|
|
299
|
+
);
|
|
300
|
+
const frameSources = dedupeCspSources(
|
|
301
|
+
collect("frame").concat(_nullishCoalesce(args.frameSources, () => ( [])))
|
|
302
|
+
);
|
|
303
|
+
const fontSources = dedupeCspSources(
|
|
304
|
+
collect("font").concat(_nullishCoalesce(args.fontSources, () => ( [])))
|
|
305
|
+
);
|
|
306
|
+
const styleSources = dedupeCspSources(
|
|
307
|
+
collect("style").concat(_nullishCoalesce(args.styleSources, () => ( [])))
|
|
308
|
+
);
|
|
309
|
+
const workerSources = dedupeCspSources(
|
|
310
|
+
collect("worker").concat(_nullishCoalesce(args.workerSources, () => ( [])))
|
|
311
|
+
);
|
|
312
|
+
const mediaSources = dedupeCspSources(
|
|
313
|
+
collect("media").concat(_nullishCoalesce(args.mediaSources, () => ( [])))
|
|
314
|
+
);
|
|
315
|
+
const scriptSources = dynamicScriptCsp === "disabled" ? dedupeCspSources(collect("script").concat(_nullishCoalesce(args.scriptSources, () => ( [])))) : dedupeCspSources(
|
|
316
|
+
[
|
|
317
|
+
dynamicScriptCsp.nonce ? `'nonce-${dynamicScriptCsp.nonce}'` : "",
|
|
318
|
+
"'strict-dynamic'",
|
|
319
|
+
"'sha256-k2HGvaYkGyYZxOwKGxgE1mr06tZEDcEXNZ5mdcldK0o='",
|
|
320
|
+
..._nullishCoalesce(dynamicScriptCsp.sha, () => ( []))
|
|
321
|
+
].filter((source) => source !== "")
|
|
322
|
+
);
|
|
323
|
+
let cspHeader = `
|
|
324
|
+
default-src 'self' ${defaultSrc.join(" ")};
|
|
3
325
|
base-uri 'self';
|
|
4
|
-
frame-src 'self' ${
|
|
326
|
+
frame-src 'self' ${frameSources.join(" ")};
|
|
5
327
|
frame-ancestors 'self' https://*.posthog.com;
|
|
6
|
-
script-src 'self' ${
|
|
7
|
-
worker-src 'self' blob: data: ${
|
|
8
|
-
font-src 'self' ${
|
|
9
|
-
style-src 'self' ${
|
|
10
|
-
img-src 'self' data: ${
|
|
11
|
-
connect-src 'self' ${
|
|
12
|
-
media-src 'self' ${
|
|
13
|
-
`;
|
|
14
|
-
|
|
328
|
+
script-src 'self' ${scriptSources.concat([isDevelopment ? "'unsafe-eval'" : ""]).join(" ")};
|
|
329
|
+
worker-src 'self' blob: data: ${workerSources.join(" ")};
|
|
330
|
+
font-src 'self' ${fontSources.join(" ")};
|
|
331
|
+
style-src 'self' ${styleSources.join(" ")} 'unsafe-inline';
|
|
332
|
+
img-src 'self' data: ${pictureSources.join(" ")};
|
|
333
|
+
connect-src 'self' ${connectionSources.join(" ")};
|
|
334
|
+
media-src 'self' ${mediaSources.join(" ")};
|
|
335
|
+
`;
|
|
336
|
+
if (cspReporting) {
|
|
337
|
+
cspHeader += `
|
|
338
|
+
report-uri ${cspReporting};
|
|
15
339
|
report-to csp-endpoint;
|
|
16
|
-
|
|
340
|
+
`;
|
|
341
|
+
}
|
|
342
|
+
return cspHeader.replace(/\s{2,}/g, " ").trim();
|
|
343
|
+
}
|
|
344
|
+
var staticPictureSources = [
|
|
345
|
+
// Only add image delivery URL if it exists and can be processed
|
|
346
|
+
`${_chunkAU3LYJABcjs.imageBaseUrl}/`,
|
|
347
|
+
"https://raw.githubusercontent.com/berachain/metadata/",
|
|
348
|
+
"https://assets.coingecko.com/coins/images/",
|
|
349
|
+
"https://berachain.ghost.io/content/images/"
|
|
350
|
+
].filter((url) => {
|
|
351
|
+
if (!url || url.trim() === "") {
|
|
352
|
+
return false;
|
|
353
|
+
}
|
|
354
|
+
return true;
|
|
355
|
+
});
|
|
356
|
+
function cspMiddleware({
|
|
357
|
+
response,
|
|
358
|
+
csp
|
|
359
|
+
}) {
|
|
360
|
+
const sentryCspEndpoint = _optionalChain([getSentryKeys, 'call', _5 => _5(), 'optionalAccess', _6 => _6.cspEndpoint]);
|
|
361
|
+
const nonce = _optionalChain([csp, 'optionalAccess', _7 => _7.dynamicScriptCsp]) !== "disabled" ? _nullishCoalesce(_optionalChain([csp, 'optionalAccess', _8 => _8.dynamicScriptCsp, 'optionalAccess', _9 => _9.nonce]), () => ( Buffer.from(crypto.randomUUID()).toString("base64"))) : void 0;
|
|
362
|
+
const isDevelopment = process.env.NODE_ENV === "development";
|
|
363
|
+
const headers = [
|
|
364
|
+
{
|
|
365
|
+
key: "Content-Security-Policy",
|
|
366
|
+
value: getContentSecurityPolicy({
|
|
367
|
+
...csp,
|
|
368
|
+
dynamicScriptCsp: _optionalChain([csp, 'optionalAccess', _10 => _10.dynamicScriptCsp]) === "disabled" ? csp.dynamicScriptCsp : {
|
|
369
|
+
..._optionalChain([csp, 'optionalAccess', _11 => _11.dynamicScriptCsp]),
|
|
370
|
+
nonce
|
|
371
|
+
},
|
|
372
|
+
isDevelopment,
|
|
373
|
+
cspReporting: _optionalChain([sentryCspEndpoint, 'optionalAccess', _12 => _12.toString, 'call', _13 => _13()])
|
|
374
|
+
})
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
key: "X-Frame-Options",
|
|
378
|
+
value: "DENY"
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
key: "X-Content-Type-Options",
|
|
382
|
+
value: "nosniff"
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
key: "X-Nonce",
|
|
386
|
+
value: nonce
|
|
387
|
+
}
|
|
388
|
+
];
|
|
389
|
+
if (sentryCspEndpoint) {
|
|
390
|
+
headers.push({
|
|
391
|
+
key: "Reporting-To",
|
|
392
|
+
value: `{"group":"csp-endpoint","max_age":10886400,"endpoints":[{"url":"${sentryCspEndpoint}"}],"include_subdomains":true}"`
|
|
393
|
+
});
|
|
394
|
+
headers.push({
|
|
395
|
+
key: "Reporting-Endpoints",
|
|
396
|
+
value: `csp-endpoint="${sentryCspEndpoint}"`
|
|
397
|
+
});
|
|
398
|
+
}
|
|
399
|
+
for (const header of headers) {
|
|
400
|
+
if (!header.value) {
|
|
401
|
+
continue;
|
|
402
|
+
}
|
|
403
|
+
response.headers.set(header.key, header.value);
|
|
404
|
+
}
|
|
405
|
+
return response;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
exports.cspMiddleware = cspMiddleware; exports.getContentSecurityPolicy = getContentSecurityPolicy; exports.headerSourceModules = headerSourceModules; exports.staticPictureSources = staticPictureSources;
|