Files
nym/nym-wallet/scripts/check-mui-singletons.js
Tommy Verrall 3ae986acc8 Tauri prod CSP for Emotion/MUI and window maximize ACL
- Tauri was injecting nonces/hashes into style-src, which disables
'unsafe-inline' and blocked Emotion/MUI runtime <style> tags.
- Grant core:window:allow-maximize so frontend maximize() passes ACL.
- Add node-status and explorer helpers plus chart mappers; Jest coverage
- NodeOperatorInsights on BondedNymNode; optional API moniker/location
- Shared MUI Emotion cache (speedy: false) and CacheProvider wiring
- SendInputModal: amount/recipient validation timing; memoized fee check
- AuthLayout refresh; NodeTable overflow-x; Bonding error title typo fix
2026-04-17 12:05:01 +02:00

46 lines
1015 B
JavaScript

/* eslint-disable no-console -- build-time diagnostic */
const path = require('path');
const fs = require('fs');
const walletRoot = path.resolve(__dirname, '..');
const PKGS = [
'@emotion/react',
'@emotion/styled',
'@emotion/cache',
'@mui/material',
'@mui/system',
'@mui/styled-engine',
'@mui/private-theming',
'@mui/utils',
'@mui/lab',
'@mui/icons-material',
'react',
'react-dom',
];
const probes = [
walletRoot,
path.join(walletRoot, 'node_modules', '@nymproject', 'react'),
path.join(walletRoot, 'node_modules', '@mui', 'material'),
];
let bad = 0;
PKGS.forEach((pkg) => {
const seen = new Set();
probes.forEach((probe) => {
try {
const p = require.resolve(`${pkg}/package.json`, { paths: [probe] });
seen.add(fs.realpathSync(p));
} catch {
/* probe may not resolve this package */
}
});
if (seen.size > 1) {
bad += 1;
console.error(`[singleton] DUPLICATE ${pkg}:\n ${[...seen].join('\n ')}`);
}
});
process.exit(bad ? 1 : 0);