{
  "added_at": "2026-10-19",
  "additional_evidence_urls": [
    "https://github.com/paazmaya/shuji/blob/a97c6df48e2016fde7b072d3e8475dea3d7b872c/package.json",
    "https://github.com/paazmaya/shuji/blob/a97c6df48e2016fde7b072d3e8475dea3d7b872c/CHANGELOG.md",
    "https://github.com/paazmaya/shuji/blob/a97c6df48e2016fde7b072d3e8475dea3d7b872c/lib/find-map.js",
    "https://github.com/paazmaya/shuji/blob/a97c6df48e2016fde7b072d3e8475dea3d7b872c/lib/read-sources.js",
    "https://github.com/paazmaya/shuji/blob/a97c6df48e2016fde7b072d3e8475dea3d7b872c/lib/write-sources.js",
    "https://github.com/paazmaya/shuji/blob/a97c6df48e2016fde7b072d3e8475dea3d7b872c/LICENSE",
    "https://www.npmjs.com/package/shuji/v/0.8.0"
  ],
  "category": "web-analysis",
  "description_en": "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.",
  "description_zh": "命令行工具，可把源映射（source map）中内嵌的原始 JavaScript 和 CSS 源码重新写出为文件。它能读取 .map 文件，也能读取 sourceMappingURL 中内联了 Base64 或 URL 编码映射、或指向同一目录下映射文件的 JavaScript 和 CSS 文件，并可按正则表达式筛选、递归遍历目录。默认只按文件名平铺输出，使用 --preserve 则保留映射中的目录结构。",
  "entry_url": "https://awesomerea.org/resources/shuji/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/shuji/",
  "evidence_url": "https://github.com/paazmaya/shuji/blob/a97c6df48e2016fde7b072d3e8475dea3d7b872c/README.md",
  "group": "tools",
  "id": "shuji",
  "json_url": "https://awesomerea.org/resources/shuji/record.json",
  "kind": "tool",
  "markdown_url": "https://awesomerea.org/resources/shuji/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/shuji/index.md",
  "name": "shuji",
  "name_zh": "shuji 源映射源码恢复工具",
  "record_type": "resource",
  "relationship": "foundation",
  "requirements": [
    "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."
  ],
  "requirements_zh": [
    "审阅时的 npm 版本为 shuji 0.8.0，发布于 2023-12-04，要求 Node.js 14.15.0+；仓库只有标签，没有发布 GitHub Release。所审阅的 main 分支提交领先该版本 139 个提交且尚未发布：它把最低要求提高到 Node.js 24.12.0（README 已按此说明），把代码检查迁移到 Oxlint，并自 2026-10-11 起拒绝会跳出输出目录的输出路径。",
    "用 npm 全局安装命令行工具，对文件或目录运行，并用 -o 指定输出目录；默认筛选条件只匹配 .map 文件，因此要扫描 .js 或 .css 文件中的内联映射需改用 -M。只读取本地文件中的映射：被引用的映射必须位于相对代码文件的路径上，不会获取远程映射。",
    "只有源码内容嵌入在映射 sourcesContent 中的源文件才会被写出；只列出路径而无内容的条目会被跳过，因此未包含源码的映射无法恢复这些文件。已存在的文件不会被覆盖，所以平铺输出时同名源文件会被跳过，除非使用 --preserve。",
    "采用 MIT 许可。恢复出的文件仍是原作者的代码，适用其自身条款。"
  ],
  "targets": [
    "website"
  ],
  "url": "https://github.com/paazmaya/shuji",
  "verification": "source-reviewed",
  "verified_at": "2026-10-19"
}
