neptune-web-wallet/vite-plugin-csp.ts

35 lines
1.1 KiB
TypeScript
Raw Permalink Normal View History

import type { Plugin } from 'vite'
export function cspPlugin(): Plugin {
return {
name: 'vite-plugin-csp',
transformIndexHtml(html) {
const isDev = process.env.NODE_ENV === 'development'
const apiUrl = process.env.VITE_APP_API || 'http://zsmartex.com:8080'
const devUrl = apiUrl
const prodUrl = apiUrl.replace(/^http:/, 'https:')
const cspContent = isDev
? `default-src 'self' blob: data:;
script-src 'self' 'wasm-unsafe-eval' blob:;
style-src 'self' 'unsafe-inline';
connect-src 'self' ${devUrl};
img-src 'self' data:;`
: `default-src 'self' blob: data:;
script-src 'self' 'wasm-unsafe-eval' blob:;
style-src 'self';
connect-src 'self' ${devUrl};
img-src 'self' data:;`
return html.replace(
/<meta\s+http-equiv="Content-Security-Policy"[\s\S]*?\/>/,
`<meta
http-equiv="Content-Security-Policy"
content="${cspContent}"
/>`
)
},
}
}