# shuji

> Command-line tool that writes the original JavaScript and CSS sources embedded in source maps back out as files. It reads .map files, or JavaScript and CSS files whose sourceMappingURL holds an inline Base64 or URL-encoded map or points to a map in the same folder, and can walk directories with a regular-expression filter. Output is flattened to file names by default, or keeps the map's folder structure with --preserve.

- Type: Tool
- Targets: Website
- Category: Website analysis tools
- Relationship: Foundation tool
- Sources reviewed: 2026-10-19
- Added to the catalog: 2026-10-19
- Original resource: <https://github.com/paazmaya/shuji>
- Primary source: <https://github.com/paazmaya/shuji/blob/a97c6df48e2016fde7b072d3e8475dea3d7b872c/README.md>
- Catalog page: <https://awesomerea.org/resources/shuji/>
- Record JSON: <https://awesomerea.org/resources/shuji/record.json>
- Chinese version: [简体中文](https://awesomerea.org/zh/resources/shuji/index.md)

## Requirements & limits

- npm release at review: shuji 0.8.0, published 2023-12-04, which requires Node.js 14.15.0+; the repository publishes tags but no GitHub releases. The reviewed main commit is 139 commits ahead and unreleased: it raises the minimum to Node.js 24.12.0, which the README already states, moves linting to Oxlint and, since 2026-10-11, rejects output paths that would escape the output directory.
- Install the CLI globally with npm and run it on a file or directory with -o for the output directory; the default filter only picks .map files, so -M is needed to scan .js or .css files for inline maps. Maps are read from local files only: a referenced map must sit relative to the code file, and remote maps are not fetched.
- Only sources whose content is embedded in the map's sourcesContent are written; entries that list a path without content are skipped, so maps built without included sources yield nothing for them. Existing files are never overwritten, so flattened sources with the same file name are skipped unless --preserve is used.
- MIT. Recovered files remain the original authors' code under their own terms.

## Primary sources

1. <https://github.com/paazmaya/shuji/blob/a97c6df48e2016fde7b072d3e8475dea3d7b872c/README.md>
2. <https://github.com/paazmaya/shuji/blob/a97c6df48e2016fde7b072d3e8475dea3d7b872c/package.json>
3. <https://github.com/paazmaya/shuji/blob/a97c6df48e2016fde7b072d3e8475dea3d7b872c/CHANGELOG.md>
4. <https://github.com/paazmaya/shuji/blob/a97c6df48e2016fde7b072d3e8475dea3d7b872c/lib/find-map.js>
5. <https://github.com/paazmaya/shuji/blob/a97c6df48e2016fde7b072d3e8475dea3d7b872c/lib/read-sources.js>
6. <https://github.com/paazmaya/shuji/blob/a97c6df48e2016fde7b072d3e8475dea3d7b872c/lib/write-sources.js>
7. <https://github.com/paazmaya/shuji/blob/a97c6df48e2016fde7b072d3e8475dea3d7b872c/LICENSE>
8. <https://www.npmjs.com/package/shuji/v/0.8.0>

## More in Websites

- [Obfuscator.io Deobfuscator](https://awesomerea.org/resources/obfuscator-io-deobfuscator/index.md) · Tool
- [javascript-deobfuscator](https://awesomerea.org/resources/ben-sb-javascript-deobfuscator/index.md) · Tool
- [mitmproxy2swagger](https://awesomerea.org/resources/mitmproxy2swagger/index.md) · Tool
- [JPEXS Free Flash Decompiler (FFDec)](https://awesomerea.org/resources/jpexs-decompiler/index.md) · Tool
- [WasmLens: exploratory WebAssembly inspection](https://awesomerea.org/resources/wasmlens/index.md) · Tool
- [synchrony](https://awesomerea.org/resources/synchrony/index.md) · Tool

## About this entry

The description was reviewed against primary sources.
Original editorial content: MIT. Linked projects, papers and assets retain their own rights and licenses.
