{"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":["import fs from 'fs';\nimport { promisify } from 'util';\nimport { Plugin, ExistingRawSourceMap } from 'rollup';\nimport { CreateFilter, createFilter } from '@rollup/pluginutils';\nimport atob from 'atob';\nimport * as urlLib from 'url';\nimport decodeUriComponentLib from 'decode-uri-component';\n\ninterface ResolvedSourceMap {\n  map: ExistingRawSourceMap;\n  url: string | null;\n  sourcesRelativeTo: string;\n  sourceMappingURL: string;\n}\n\nfunction resolveUrl(...args: string[]): string {\n  return args.reduce((resolved, nextUrl) => urlLib.resolve(resolved, nextUrl));\n}\n\nfunction customDecodeUriComponent(string: string): string {\n  return decodeUriComponentLib(string.replace(/\\+/g, '%2B'));\n}\n\nfunction parseMapToJSON(string: string): ExistingRawSourceMap {\n  return <ExistingRawSourceMap>JSON.parse(string.replace(/^\\)\\]\\}'/, ''));\n}\n\nconst sourceMappingURLRegex = RegExp(\n  '(?:/\\\\*(?:\\\\s*\\\\r?\\\\n(?://)?)?(?:[#@] sourceMappingURL=([^\\\\s\\'\"]*))\\\\s*\\\\*/|//(?:[#@] sourceMappingURL=([^\\\\s\\'\"]*)))\\\\s*',\n);\n\nfunction getSourceMappingUrl(code: string): string | null {\n  const match = sourceMappingURLRegex.exec(code);\n  return match ? match[1] || match[2] || '' : null;\n}\n\nasync function resolveSourceMap(\n  code: string,\n  codeUrl: string,\n  read: (path: string) => Promise<Buffer | string>,\n): Promise<ResolvedSourceMap | null> {\n  const sourceMappingURL = getSourceMappingUrl(code);\n  if (!sourceMappingURL) {\n    return null;\n  }\n  const dataUri = /^data:([^,;]*)(;[^,;]*)*(?:,(.*))?$/.exec(sourceMappingURL);\n  if (dataUri) {\n    const mimeType = dataUri[1] || 'text/plain';\n    if (!/^(?:application|text)\\/json$/.test(mimeType)) {\n      throw new Error('Unuseful data uri mime type: ' + mimeType);\n    }\n    const map = parseMapToJSON(\n      (dataUri[2] === ';base64' ? atob : decodeURIComponent)(dataUri[3] || ''),\n    );\n    return { sourceMappingURL, url: null, sourcesRelativeTo: codeUrl, map };\n  }\n  const url = resolveUrl(codeUrl, sourceMappingURL);\n  const map = parseMapToJSON(String(await read(customDecodeUriComponent(url))));\n  return { sourceMappingURL, url, sourcesRelativeTo: url, map };\n}\n\ninterface ResolvedSources {\n  sourcesResolved: string[];\n  sourcesContent: (string | Error)[];\n}\n\nasync function resolveSources(\n  map: ExistingRawSourceMap,\n  mapUrl: string,\n  read: (path: string) => Promise<Buffer | string>,\n): Promise<ResolvedSources> {\n  const sourcesResolved: string[] = [];\n  const sourcesContent: (string | Error)[] = [];\n  for (let index = 0, len = map.sources.length; index < len; index++) {\n    const sourceRoot = map.sourceRoot;\n    const sourceContent = (map.sourcesContent || [])[index];\n    const resolvePaths = [mapUrl, map.sources[index]];\n    if (sourceRoot !== undefined && sourceRoot !== '') {\n      resolvePaths.splice(1, 0, sourceRoot.replace(/\\/?$/, '/'));\n    }\n    sourcesResolved[index] = resolveUrl(...resolvePaths);\n    if (typeof sourceContent === 'string') {\n      sourcesContent[index] = sourceContent;\n      continue;\n    }\n    try {\n      const source = await read(customDecodeUriComponent(sourcesResolved[index]));\n      sourcesContent[index] = String(source);\n    } catch (error) {\n      sourcesContent[index] = <Error>error;\n    }\n  }\n  return { sourcesResolved, sourcesContent };\n}\n\nexport interface SourcemapsPluginOptions {\n  include?: Parameters<CreateFilter>[0];\n  exclude?: Parameters<CreateFilter>[1];\n  readFile?(path: string, callback: (error: Error | null, data: Buffer | string) => void): void;\n}\n\nexport default function sourcemaps({\n  include,\n  exclude,\n  readFile = fs.readFile,\n}: SourcemapsPluginOptions = {}): Plugin {\n  const filter = createFilter(include, exclude);\n  const promisifiedReadFile = promisify(readFile);\n\n  return {\n    name: 'sourcemaps',\n\n    async load(id: string) {\n      if (!filter(id)) {\n        return null;\n      }\n\n      let code: string;\n      try {\n        code = (await promisifiedReadFile(id)).toString();\n      } catch {\n        this.warn('Failed reading file');\n        return null;\n      }\n\n      let map: ExistingRawSourceMap;\n      try {\n        const result = await resolveSourceMap(code, id, promisifiedReadFile);\n\n        // The code contained no sourceMappingURL\n        if (result === null) {\n          return code;\n        }\n\n        map = result.map;\n      } catch {\n        this.warn('Failed resolving source map');\n        return code;\n      }\n\n      // Resolve sources if they're not included\n      if (map.sourcesContent === undefined) {\n        try {\n          const { sourcesContent } = await resolveSources(map, id, promisifiedReadFile);\n          if (sourcesContent.every(item => typeof item === 'string')) {\n            map.sourcesContent = sourcesContent as string[];\n          }\n        } catch {\n          this.warn('Failed resolving sources for source map');\n        }\n      }\n\n      return { code, map };\n    },\n  };\n}\n"],"names":["urlLib","decodeUriComponentLib","atob","fs","createFilter","promisify"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,SAAS,UAAU,CAAC,GAAG,IAAc,EAAA;IACnC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,KAAKA,iBAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,wBAAwB,CAAC,MAAc,EAAA;IAC9C,OAAOC,yCAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,cAAc,CAAC,MAAc,EAAA;AACpC,IAAA,OAA6B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,qBAAqB,GAAG,MAAM,CAClC,4HAA4H,CAC7H,CAAC;AAEF,SAAS,mBAAmB,CAAC,IAAY,EAAA;IACvC,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/C,IAAA,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AACnD,CAAC;AAED,eAAe,gBAAgB,CAC7B,IAAY,EACZ,OAAe,EACf,IAAgD,EAAA;AAEhD,IAAA,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,gBAAgB,EAAE;AACrB,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;IACD,MAAM,OAAO,GAAG,qCAAqC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC7E,IAAA,IAAI,OAAO,EAAE;QACX,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC;AAC5C,QAAA,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAClD,YAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,QAAQ,CAAC,CAAC;AAC7D,SAAA;AACD,QAAA,MAAM,GAAG,GAAG,cAAc,CACxB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,GAAGC,wBAAI,GAAG,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CACzE,CAAC;AACF,QAAA,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AACzE,KAAA;IACD,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAClD,IAAA,MAAM,GAAG,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,iBAAiB,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAChE,CAAC;AAOD,eAAe,cAAc,CAC3B,GAAyB,EACzB,MAAc,EACd,IAAgD,EAAA;IAEhD,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,MAAM,cAAc,GAAuB,EAAE,CAAC;AAC9C,IAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE;AAClE,QAAA,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;AAClC,QAAA,MAAM,aAAa,GAAG,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;AACxD,QAAA,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,QAAA,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,EAAE,EAAE;AACjD,YAAA,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5D,SAAA;QACD,eAAe,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,GAAG,YAAY,CAAC,CAAC;AACrD,QAAA,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;AACrC,YAAA,cAAc,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC;YACtC,SAAS;AACV,SAAA;QACD,IAAI;AACF,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5E,cAAc,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxC,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACd,YAAA,cAAc,CAAC,KAAK,CAAC,GAAU,KAAK,CAAC;AACtC,SAAA;AACF,KAAA;AACD,IAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC;AAC7C,CAAC;AAQa,SAAU,UAAU,CAAC,EACjC,OAAO,EACP,OAAO,EACP,QAAQ,GAAGC,sBAAE,CAAC,QAAQ,MACK,EAAE,EAAA;IAC7B,MAAM,MAAM,GAAGC,wBAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9C,IAAA,MAAM,mBAAmB,GAAGC,cAAS,CAAC,QAAQ,CAAC,CAAC;IAEhD,OAAO;AACL,QAAA,IAAI,EAAE,YAAY;QAElB,MAAM,IAAI,CAAC,EAAU,EAAA;AACnB,YAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;AACf,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;AAED,YAAA,IAAI,IAAY,CAAC;YACjB,IAAI;gBACF,IAAI,GAAG,CAAC,MAAM,mBAAmB,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;AACnD,aAAA;YAAC,OAAM,EAAA,EAAA;AACN,gBAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACjC,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;AAED,YAAA,IAAI,GAAyB,CAAC;YAC9B,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,EAAE,EAAE,mBAAmB,CAAC,CAAC;;gBAGrE,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,oBAAA,OAAO,IAAI,CAAC;AACb,iBAAA;AAED,gBAAA,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AAClB,aAAA;YAAC,OAAM,EAAA,EAAA;AACN,gBAAA,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;AACzC,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;;AAGD,YAAA,IAAI,GAAG,CAAC,cAAc,KAAK,SAAS,EAAE;gBACpC,IAAI;AACF,oBAAA,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,EAAE,EAAE,mBAAmB,CAAC,CAAC;AAC9E,oBAAA,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,EAAE;AAC1D,wBAAA,GAAG,CAAC,cAAc,GAAG,cAA0B,CAAC;AACjD,qBAAA;AACF,iBAAA;gBAAC,OAAM,EAAA,EAAA;AACN,oBAAA,IAAI,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;AACtD,iBAAA;AACF,aAAA;AAED,YAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;SACtB;KACF,CAAC;AACJ;;;;"}