33 lines
1.1 KiB
JavaScript
33 lines
1.1 KiB
JavaScript
|
|
const { getDefaultConfig } = require('expo/metro-config');
|
||
|
|
const { withNativeWind } = require('nativewind/metro');
|
||
|
|
|
||
|
|
const config = getDefaultConfig(__dirname);
|
||
|
|
|
||
|
|
// --- Web: Required for expo-sqlite ---
|
||
|
|
// expo-sqlite on web uses SQLite compiled to WASM; Metro must treat .wasm as an asset.
|
||
|
|
if (!config.resolver.assetExts.includes('wasm')) {
|
||
|
|
config.resolver.assetExts.push('wasm');
|
||
|
|
}
|
||
|
|
|
||
|
|
// --- Web: Required for expo-sqlite ---
|
||
|
|
// SharedArrayBuffer (used by SQLite WASM) requires COEP/COOP headers.
|
||
|
|
// Dev server: set here. Production: set via app.config.js expo-router headers.
|
||
|
|
config.server = config.server ?? {};
|
||
|
|
const existingEnhanceMiddleware = config.server.enhanceMiddleware;
|
||
|
|
config.server.enhanceMiddleware = (middleware, server) => {
|
||
|
|
const nextMiddleware = existingEnhanceMiddleware
|
||
|
|
? existingEnhanceMiddleware(middleware, server)
|
||
|
|
: middleware;
|
||
|
|
|
||
|
|
return (req, res, next) => {
|
||
|
|
res.setHeader('Cross-Origin-Embedder-Policy', 'credentialless');
|
||
|
|
res.setHeader('Cross-Origin-Opener-Policy', 'same-origin');
|
||
|
|
return nextMiddleware(req, res, next);
|
||
|
|
};
|
||
|
|
};
|
||
|
|
|
||
|
|
module.exports = withNativeWind(config, {
|
||
|
|
input: './src/global.css',
|
||
|
|
inlineRem: 16,
|
||
|
|
});
|