{"version":3,"file":"index.cjs","sources":["index.js"],"sourcesContent":["import { createFilter } from '@rollup/pluginutils'\nimport { chmod } from 'node:fs/promises'\nimport { join } from 'node:path'\nimport MagicString from 'magic-string'\n\nexport default function shebang({\n  include = ['**/*.js'],\n  exclude,\n  regexp = /^\\s*#!.*\\n*/,\n  shebang = '#!/usr/bin/env node',\n  separator = '\\n\\n',\n  mode = 0o755,\n  insert = true,\n  preserve = true,\n  executable = true\n} = {}) {\n  const scripts = new Set()\n  const shebangs = new Map()\n  const filter = createFilter(include, exclude)\n\n  if (typeof shebang === 'function') shebang = shebang()\n  mode &= ~process.umask()\n\n  return {\n    name: 'shebang-bin',\n\n    transform(code, id) {\n      if (!filter(id)) return\n\n      const match = code.match(regexp)\n      if (!match) return\n\n      const [preserved] = match\n      const { index } = match\n      const magicString = new MagicString(code)\n      magicString.remove(index, preserved.length)\n      shebangs.set(id, preserved)\n\n      return {\n        code: magicString.toString(),\n        map: magicString.generateMap({ includeContent: true, hires: true })\n      }\n    },\n\n    renderChunk(code, { isEntry, facadeModuleId, fileName }, { file, dir, sourcemap }) {\n      if (!isEntry || !facadeModuleId || !filter(facadeModuleId)) return\n\n      if (executable) {\n        scripts.add(file || join(dir || process.cwd(), fileName))\n      }\n\n      if (preserve) {\n        const preserved = shebangs.get(facadeModuleId)\n        if (preserved) return prepend(preserved)\n      }\n\n      if (insert) return prepend(`${shebang}${separator}`)\n\n      function prepend(prefix) {\n        if (!sourcemap) {\n          return `${prefix}${code}`\n        }\n\n        const magicString = new MagicString(code)\n        magicString.prepend(`${prefix}${code}`)\n\n        return {\n          code: magicString.toString(),\n          map: magicString.generateMap({ includeContent: true, hires: true })\n        }\n      }\n    },\n\n    async writeBundle() {\n      await Promise.all(\n        [...scripts].map(file => chmod(file, mode))\n      )\n    }\n  }\n}\n"],"names":["createFilter","join","chmod"],"mappings":"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"}