JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://unpkg.com/source-map@0.7.3/dist/source-map.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.5/jszip.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.8/FileSaver.min.js"></script>
<form id="form">
<input type="url" required placeholder="source map" name="sourcemap">
<input type="submit">
</form>
JavaScript
sourceMap.SourceMapConsumer.initialize({
'lib/mappings.wasm': 'https://unpkg.com/source-map@0.7.3/lib/mappings.wasm'
})
form.onsubmit = async evt => {
evt.preventDefault()
const cors = 'https://cors-anywhere.herokuapp.com/'
const sourceMapURL = evt.target.sourcemap.value
document.body.innerText = 'downloading sourcemap...'
const rawSourceMap = await fetch(cors + sourceMapURL).then(r => r.json())
document.body.innerText = 'generatin AST...'
sourceMap.SourceMapConsumer.with(rawSourceMap, null, async consumer => {
document.body.innerText = `generatin zip file from ${consumer.sources.length} files`
const zip = new JSZip()
for (const source of consumer.sources) {
let content = consumer.sourceContentFor(source)
if (content === null) {
const url = new URL(source, sourceMapURL)
content = await fetch(url).then(res => res.blob())
}
console.log(content)
zip.file(source, content)
}
zip.generateAsync({type:'blob'}).then(blob => saveAs(blob, 'out.zip'))
})
}