Skip to content

Commit abef0b8

Browse files
authored
Fix Chart.js CSP block and BTC asset name filter (#141)
- Self-host Chart.js v4 and date-fns adapter instead of loading from CDN, which was blocked by the Content-Security-Policy script-src 'self' header - Fix BTC balance filter to match by assetName ('BTC') instead of assetSymbol which differs between environments - Update mock data to reflect actual API response format
1 parent 5ab8f7f commit abef0b8

8 files changed

Lines changed: 47 additions & 8 deletions

File tree

e2e/mock-server.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ const MOCK_DATA = {
1010
],
1111
balances: [
1212
{
13-
assetName: 'Bitcoin',
14-
assetSymbol: 'BTC',
13+
assetName: 'BTC',
14+
assetSymbol: 'B',
1515
onchainBalance: 35390000,
1616
lndOnchainBalance: 35300000,
1717
lightningBalance: 128180000,
@@ -110,6 +110,8 @@ const server = http.createServer((req, res) => {
110110
'/monitoring/btc.js': 'monitoring-btc.js',
111111
'/monitoring/usd': 'monitoring-usd.html',
112112
'/monitoring/usd.js': 'monitoring-usd.js',
113+
'/monitoring/chart.min.js': 'chart.min.js',
114+
'/monitoring/chartjs-adapter-date-fns.min.js': 'chartjs-adapter-date-fns.min.js',
113115
};
114116

115117
const file = routes[req.url];

nest-cli.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"collection": "@nestjs/schematics",
33
"sourceRoot": "src",
44
"compilerOptions": {
5-
"assets": ["assets/home.html", "assets/monitoring.html", "assets/monitoring.js", "assets/monitoring-btc.html", "assets/monitoring-btc.js", "assets/monitoring-usd.html", "assets/monitoring-usd.js"],
5+
"assets": ["assets/home.html", "assets/monitoring.html", "assets/monitoring.js", "assets/monitoring-btc.html", "assets/monitoring-btc.js", "assets/monitoring-usd.html", "assets/monitoring-usd.js", "assets/chart.min.js", "assets/chartjs-adapter-date-fns.min.js"],
66
"watchAssets": true
77
}
88
}

src/assets/chart.min.js

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/assets/chartjs-adapter-date-fns.min.js

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/assets/monitoring-btc.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,8 @@ <h2>BTC Balance History</h2>
9898
<div class="loading">Loading BTC monitoring data...</div>
9999
</div>
100100

101-
<script src="https://cdn.jsdelivr.net/npm/chart.js@4/dist/chart.umd.min.js"></script>
102-
<script src="https://cdn.jsdelivr.net/npm/chartjs-adapter-date-fns@3/dist/chartjs-adapter-date-fns.bundle.min.js"></script>
101+
<script src="/monitoring/chart.min.js"></script>
102+
<script src="/monitoring/chartjs-adapter-date-fns.min.js"></script>
103103
<script src="/monitoring/btc.js"></script>
104104
</body>
105105
</html>

src/assets/monitoring-btc.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ function render(data) {
3434

3535
var btcBalance = null;
3636
for (var i = 0; i < data.balances.length; i++) {
37-
if (data.balances[i].assetSymbol === 'BTC') {
37+
if (data.balances[i].assetName === 'BTC') {
3838
btcBalance = data.balances[i];
3939
break;
4040
}

src/assets/monitoring-usd.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,8 @@ <h2>USD Balance History</h2>
9898
<div class="loading">Loading USD monitoring data...</div>
9999
</div>
100100

101-
<script src="https://cdn.jsdelivr.net/npm/chart.js@4/dist/chart.umd.min.js"></script>
102-
<script src="https://cdn.jsdelivr.net/npm/chartjs-adapter-date-fns@3/dist/chartjs-adapter-date-fns.bundle.min.js"></script>
101+
<script src="/monitoring/chart.min.js"></script>
102+
<script src="/monitoring/chartjs-adapter-date-fns.min.js"></script>
103103
<script src="/monitoring/usd.js"></script>
104104
</body>
105105
</html>

src/subdomains/monitoring/controllers/monitoring.controller.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,22 @@ export class MonitoringController {
5858
);
5959
}
6060

61+
@Get('chart.min.js')
62+
@ApiExcludeEndpoint()
63+
async chartJs(@Res() res: Response): Promise<void> {
64+
res.type('application/javascript').send(
65+
readFileSync(join(__dirname, '..', '..', '..', 'assets', 'chart.min.js')).toString(),
66+
);
67+
}
68+
69+
@Get('chartjs-adapter-date-fns.min.js')
70+
@ApiExcludeEndpoint()
71+
async chartAdapterJs(@Res() res: Response): Promise<void> {
72+
res.type('application/javascript').send(
73+
readFileSync(join(__dirname, '..', '..', '..', 'assets', 'chartjs-adapter-date-fns.min.js')).toString(),
74+
);
75+
}
76+
6177
@Get('data')
6278
@ApiExcludeEndpoint()
6379
async monitoringData(): Promise<{

0 commit comments

Comments
 (0)