{"version":3,"file":"strip-shebang.mjs","sources":["../src/capture.ts","../src/plugin.ts"],"sourcesContent":["import type { CaptureOption, CaptureShebangFunction } from './types';\r\n\r\nexport function processCaptureOption(option?: CaptureOption): CaptureShebangFunction | null {\r\n\r\n  // return null if option is null or undefined\r\n  if (option == null) return null;\r\n\r\n  // return option if it's a function\r\n  if (typeof option === 'function') return option;\r\n\r\n  // throw if option is not an object at this point\r\n  if (typeof option !== 'object') throw new TypeError(`${option as unknown as string} is not a function nor an object`);\r\n\r\n  // return capture function from object\r\n  return (captured) => {\r\n    option.shebang = captured;\r\n  };\r\n\r\n}\r\n","import { createFilter } from '@rollup/pluginutils';\r\nimport MagicString from 'magic-string';\r\nimport type { Plugin } from 'rollup';\r\nimport { processCaptureOption } from './capture';\r\nimport type { StripShebangOptions } from './types';\r\n\r\nexport function stripShebang(options: StripShebangOptions = {}): Plugin {\r\n\r\n  const {\r\n    include = /\\.[jt]s$/,\r\n    exclude,\r\n    capture,\r\n    sourcemap,\r\n  } = options;\r\n\r\n  // create filter\r\n  const filter = createFilter(include, exclude);\r\n\r\n  // normalize capture option\r\n  const captureShebang = processCaptureOption(capture);\r\n\r\n  // normalize sourcemap option\r\n  const generateMap: boolean = sourcemap !== false;\r\n\r\n  return {\r\n\r\n    name: 'strip-shebang',\r\n\r\n    transform(sourceCode, id) {\r\n\r\n      // exit if filter doesn't pass the test\r\n      if (!filter(id)) return;\r\n\r\n      // check if shebang is present in the file\r\n      const match = /^#!.*/.exec(sourceCode);\r\n\r\n      // exit if shebang not resent\r\n      if (!match) return;\r\n\r\n      // get shebang from match\r\n      const [shebang] = match;\r\n\r\n      // store shebang\r\n      if (captureShebang) {\r\n        captureShebang(shebang);\r\n      }\r\n\r\n      // get shebang length\r\n      const { length } = shebang;\r\n\r\n      // return transformed string only if no sourcemap needs to be generated\r\n      if (!generateMap) return sourceCode.substring(length);\r\n\r\n      // create sourcemap manager\r\n      const ms = new MagicString(sourceCode).remove(0, length);\r\n\r\n      // return transformed string with sourcemap\r\n      const code = ms.toString();\r\n      const map = ms.generateMap({ hires: true });\r\n      return { code, map };\r\n\r\n    },\r\n\r\n  };\r\n\r\n}\r\n"],"names":["processCaptureOption","option","TypeError","captured","shebang","stripShebang","options","include","exclude","capture","sourcemap","filter","createFilter","captureShebang","generateMap","name","transform","sourceCode","id","match","exec","length","substring","ms","MagicString","remove","code","toString","map","hires"],"mappings":";;;AAEM,SAAUA,oBAAoBA,CAACC,MAAsB,EAAA;AAEzD;AACA,EAAA,IAAIA,MAAM,IAAI,IAAI,EAAE,OAAO,IAAI,CAAA;AAE/B;AACA,EAAA,IAAI,OAAOA,MAAM,KAAK,UAAU,EAAE,OAAOA,MAAM,CAAA;AAE/C;AACA,EAAA,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE,MAAM,IAAIC,SAAS,CAAC,CAAA,EAAGD,MAA2B,CAAA,gCAAA,CAAkC,CAAC,CAAA;AAErH;AACA,EAAA,OAAQE,QAAQ,IAAI;IAClBF,MAAM,CAACG,OAAO,GAAGD,QAAQ,CAAA;GAC1B,CAAA;AAEH;;ACZgB,SAAAE,YAAYA,CAACC,OAAA,GAA+B,EAAE,EAAA;EAE5D,MAAM;AACJC,IAAAA,OAAO,GAAG,UAAU;IACpBC,OAAO;IACPC,OAAO;AACPC,IAAAA,SAAAA;AACD,GAAA,GAAGJ,OAAO,CAAA;AAEX;AACA,EAAA,MAAMK,MAAM,GAAGC,YAAY,CAACL,OAAO,EAAEC,OAAO,CAAC,CAAA;AAE7C;AACA,EAAA,MAAMK,cAAc,GAAGb,oBAAoB,CAACS,OAAO,CAAC,CAAA;AAEpD;AACA,EAAA,MAAMK,WAAW,GAAYJ,SAAS,KAAK,KAAK,CAAA;EAEhD,OAAO;AAELK,IAAAA,IAAI,EAAE,eAAe;AAErBC,IAAAA,SAASA,CAACC,UAAU,EAAEC,EAAE,EAAA;AAEtB;AACA,MAAA,IAAI,CAACP,MAAM,CAACO,EAAE,CAAC,EAAE,OAAA;AAEjB;AACA,MAAA,MAAMC,KAAK,GAAG,OAAO,CAACC,IAAI,CAACH,UAAU,CAAC,CAAA;AAEtC;MACA,IAAI,CAACE,KAAK,EAAE,OAAA;AAEZ;AACA,MAAA,MAAM,CAACf,OAAO,CAAC,GAAGe,KAAK,CAAA;AAEvB;AACA,MAAA,IAAIN,cAAc,EAAE;QAClBA,cAAc,CAACT,OAAO,CAAC,CAAA;AACzB,OAAA;AAEA;MACA,MAAM;AAAEiB,QAAAA,MAAAA;AAAQ,OAAA,GAAGjB,OAAO,CAAA;AAE1B;MACA,IAAI,CAACU,WAAW,EAAE,OAAOG,UAAU,CAACK,SAAS,CAACD,MAAM,CAAC,CAAA;AAErD;AACA,MAAA,MAAME,EAAE,GAAG,IAAIC,WAAW,CAACP,UAAU,CAAC,CAACQ,MAAM,CAAC,CAAC,EAAEJ,MAAM,CAAC,CAAA;AAExD;AACA,MAAA,MAAMK,IAAI,GAAGH,EAAE,CAACI,QAAQ,EAAE,CAAA;AAC1B,MAAA,MAAMC,GAAG,GAAGL,EAAE,CAACT,WAAW,CAAC;AAAEe,QAAAA,KAAK,EAAE,IAAA;AAAM,OAAA,CAAC,CAAA;MAC3C,OAAO;QAAEH,IAAI;AAAEE,QAAAA,GAAAA;OAAK,CAAA;AAEtB,KAAA;GAED,CAAA;AAEH;;;;"}