import assert from 'node:assert/strict'; import test from 'node:test'; import { findExternalScriptSources, isExternalScriptSrc, rewriteKnownCdnAssetSources, rewriteKnownCdnScriptSources, rewriteKnownCdnStylesheetSources, } from './mindspace-published-script-localize.mjs'; test('isExternalScriptSrc detects http and protocol-relative urls', () => { assert.equal(isExternalScriptSrc('https://cdn.jsdelivr.net/npm/chart.js'), true); assert.equal(isExternalScriptSrc('//cdn.jsdelivr.net/npm/chart.js'), true); assert.equal(isExternalScriptSrc('/assets/page-data-client.js'), false); assert.equal(isExternalScriptSrc('assets/chart.umd.min.js'), false); }); test('rewriteKnownCdnScriptSources rewrites chart.js cdn urls to platform asset', () => { const source = `
`; const result = rewriteKnownCdnScriptSources(source); assert.equal(result.rewrittenCount, 2); assert.match(result.html, /src="\/assets\/chart\.umd\.min\.js"/g); assert.doesNotMatch(result.html, /cdn\.jsdelivr\.net/); assert.doesNotMatch(result.html, /cdnjs\.cloudflare\.com/); assert.match(result.html, /src="\/assets\/page-data-client\.js"/); }); test('findExternalScriptSources lists unresolved external scripts only', () => { const source = ` `; const rewritten = rewriteKnownCdnScriptSources(source).html; assert.deepEqual(findExternalScriptSources(rewritten), ['https://cdn.example.com/app.js']); }); test('rewriteKnownCdnStylesheetSources rewrites leaflet css cdn urls to platform asset', () => { const source = ` `; const result = rewriteKnownCdnStylesheetSources(source); assert.equal(result.rewrittenCount, 2); assert.match(result.html, /href="\/assets\/leaflet\/leaflet\.css"/g); assert.doesNotMatch(result.html, /unpkg\.com\/leaflet/); assert.doesNotMatch(result.html, /cdn\.jsdelivr\.net\/npm\/leaflet/); assert.match(result.html, /href="\/assets\/local\.css"/); }); test('rewriteKnownCdnScriptSources rewrites leaflet js cdn urls to platform asset', () => { const source = ` `; const result = rewriteKnownCdnScriptSources(source); assert.equal(result.rewrittenCount, 2); assert.match(result.html, /src="\/assets\/leaflet\/leaflet\.js"/g); assert.doesNotMatch(result.html, /unpkg\.com\/leaflet/); }); test('rewriteKnownCdnAssetSources rewrites leaflet css and js together', () => { const source = ` `; const result = rewriteKnownCdnAssetSources(source); assert.equal(result.rewrittenCount, 2); assert.match(result.html, /href="\/assets\/leaflet\/leaflet\.css"/); assert.match(result.html, /src="\/assets\/leaflet\/leaflet\.js"/); assert.deepEqual(findExternalScriptSources(result.html), []); });