| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348 | // Note: source-map-resolve.js is generated from source-map-resolve-node.js and// source-map-resolve-template.js. Only edit the two latter files, _not_// source-map-resolve.js!void (function(root, factory) {  if (typeof define === "function" && define.amd) {    define(["source-map-url", "resolve-url"], factory)  } else if (typeof exports === "object") {    var sourceMappingURL = require("source-map-url")    var resolveUrl = require("resolve-url")    module.exports = factory(sourceMappingURL, resolveUrl)  } else {    root.sourceMapResolve = factory(root.sourceMappingURL, root.resolveUrl)  }}(this, function(sourceMappingURL, resolveUrl) {  function callbackAsync(callback, error, result) {    setImmediate(function() { callback(error, result) })  }  function parseMapToJSON(string, data) {    try {      return JSON.parse(string.replace(/^\)\]\}'/, ""))    } catch (error) {      error.sourceMapData = data      throw error    }  }  function readSync(read, url, data) {    var readUrl = url    try {      return String(read(readUrl))    } catch (error) {      error.sourceMapData = data      throw error    }  }  function resolveSourceMap(code, codeUrl, read, callback) {    var mapData    try {      mapData = resolveSourceMapHelper(code, codeUrl)    } catch (error) {      return callbackAsync(callback, error)    }    if (!mapData || mapData.map) {      return callbackAsync(callback, null, mapData)    }    var readUrl = mapData.url    read(readUrl, function(error, result) {      if (error) {        error.sourceMapData = mapData        return callback(error)      }      mapData.map = String(result)      try {        mapData.map = parseMapToJSON(mapData.map, mapData)      } catch (error) {        return callback(error)      }      callback(null, mapData)    })  }  function resolveSourceMapSync(code, codeUrl, read) {    var mapData = resolveSourceMapHelper(code, codeUrl)    if (!mapData || mapData.map) {      return mapData    }    mapData.map = readSync(read, mapData.url, mapData)    mapData.map = parseMapToJSON(mapData.map, mapData)    return mapData  }  var dataUriRegex = /^data:([^,;]*)(;[^,;]*)*(?:,(.*))?$/  /**   * The media type for JSON text is application/json.   *   * {@link https://tools.ietf.org/html/rfc8259#section-11 | IANA Considerations }   *   * `text/json` is non-standard media type   */  var jsonMimeTypeRegex = /^(?:application|text)\/json$/  /**   * JSON text exchanged between systems that are not part of a closed ecosystem   * MUST be encoded using UTF-8.   *   * {@link https://tools.ietf.org/html/rfc8259#section-8.1 | Character Encoding}   */  var jsonCharacterEncoding = "utf-8"  function base64ToBuf(b64) {    var binStr = atob(b64)    var len = binStr.length    var arr = new Uint8Array(len)    for (var i = 0; i < len; i++) {      arr[i] = binStr.charCodeAt(i)    }    return arr  }  function decodeBase64String(b64) {    if (typeof TextDecoder === "undefined" || typeof Uint8Array === "undefined") {      return atob(b64)    }    var buf = base64ToBuf(b64);    // Note: `decoder.decode` method will throw a `DOMException` with the    // `"EncodingError"` value when an coding error is found.    var decoder = new TextDecoder(jsonCharacterEncoding, {fatal: true})    return decoder.decode(buf);  }  function resolveSourceMapHelper(code, codeUrl) {    var url = sourceMappingURL.getFrom(code)    if (!url) {      return null    }    var dataUri = url.match(dataUriRegex)    if (dataUri) {      var mimeType = dataUri[1] || "text/plain"      var lastParameter = dataUri[2] || ""      var encoded = dataUri[3] || ""      var data = {        sourceMappingURL: url,        url: null,        sourcesRelativeTo: codeUrl,        map: encoded      }      if (!jsonMimeTypeRegex.test(mimeType)) {        var error = new Error("Unuseful data uri mime type: " + mimeType)        error.sourceMapData = data        throw error      }      try {        data.map = parseMapToJSON(          lastParameter === ";base64" ? decodeBase64String(encoded) : decodeURIComponent(encoded),          data        )      } catch (error) {        error.sourceMapData = data        throw error      }      return data    }    var mapUrl = resolveUrl(codeUrl, url)    return {      sourceMappingURL: url,      url: mapUrl,      sourcesRelativeTo: mapUrl,      map: null    }  }  function resolveSources(map, mapUrl, read, options, callback) {    if (typeof options === "function") {      callback = options      options = {}    }    var pending = map.sources ? map.sources.length : 0    var result = {      sourcesResolved: [],      sourcesContent:  []    }    if (pending === 0) {      callbackAsync(callback, null, result)      return    }    var done = function() {      pending--      if (pending === 0) {        callback(null, result)      }    }    resolveSourcesHelper(map, mapUrl, options, function(fullUrl, sourceContent, index) {      result.sourcesResolved[index] = fullUrl      if (typeof sourceContent === "string") {        result.sourcesContent[index] = sourceContent        callbackAsync(done, null)      } else {        var readUrl = fullUrl        read(readUrl, function(error, source) {          result.sourcesContent[index] = error ? error : String(source)          done()        })      }    })  }  function resolveSourcesSync(map, mapUrl, read, options) {    var result = {      sourcesResolved: [],      sourcesContent:  []    }    if (!map.sources || map.sources.length === 0) {      return result    }    resolveSourcesHelper(map, mapUrl, options, function(fullUrl, sourceContent, index) {      result.sourcesResolved[index] = fullUrl      if (read !== null) {        if (typeof sourceContent === "string") {          result.sourcesContent[index] = sourceContent        } else {          var readUrl = fullUrl          try {            result.sourcesContent[index] = String(read(readUrl))          } catch (error) {            result.sourcesContent[index] = error          }        }      }    })    return result  }  var endingSlash = /\/?$/  function resolveSourcesHelper(map, mapUrl, options, fn) {    options = options || {}    var fullUrl    var sourceContent    var sourceRoot    for (var index = 0, len = map.sources.length; index < len; index++) {      sourceRoot = null      if (typeof options.sourceRoot === "string") {        sourceRoot = options.sourceRoot      } else if (typeof map.sourceRoot === "string" && options.sourceRoot !== false) {        sourceRoot = map.sourceRoot      }      // If the sourceRoot is the empty string, it is equivalent to not setting      // the property at all.      if (sourceRoot === null || sourceRoot === '') {        fullUrl = resolveUrl(mapUrl, map.sources[index])      } else {        // Make sure that the sourceRoot ends with a slash, so that `/scripts/subdir` becomes        // `/scripts/subdir/<source>`, not `/scripts/<source>`. Pointing to a file as source root        // does not make sense.        fullUrl = resolveUrl(mapUrl, sourceRoot.replace(endingSlash, "/"), map.sources[index])      }      sourceContent = (map.sourcesContent || [])[index]      fn(fullUrl, sourceContent, index)    }  }  function resolve(code, codeUrl, read, options, callback) {    if (typeof options === "function") {      callback = options      options = {}    }    if (code === null) {      var mapUrl = codeUrl      var data = {        sourceMappingURL: null,        url: mapUrl,        sourcesRelativeTo: mapUrl,        map: null      }      var readUrl = mapUrl      read(readUrl, function(error, result) {        if (error) {          error.sourceMapData = data          return callback(error)        }        data.map = String(result)        try {          data.map = parseMapToJSON(data.map, data)        } catch (error) {          return callback(error)        }        _resolveSources(data)      })    } else {      resolveSourceMap(code, codeUrl, read, function(error, mapData) {        if (error) {          return callback(error)        }        if (!mapData) {          return callback(null, null)        }        _resolveSources(mapData)      })    }    function _resolveSources(mapData) {      resolveSources(mapData.map, mapData.sourcesRelativeTo, read, options, function(error, result) {        if (error) {          return callback(error)        }        mapData.sourcesResolved = result.sourcesResolved        mapData.sourcesContent  = result.sourcesContent        callback(null, mapData)      })    }  }  function resolveSync(code, codeUrl, read, options) {    var mapData    if (code === null) {      var mapUrl = codeUrl      mapData = {        sourceMappingURL: null,        url: mapUrl,        sourcesRelativeTo: mapUrl,        map: null      }      mapData.map = readSync(read, mapUrl, mapData)      mapData.map = parseMapToJSON(mapData.map, mapData)    } else {      mapData = resolveSourceMapSync(code, codeUrl, read)      if (!mapData) {        return null      }    }    var result = resolveSourcesSync(mapData.map, mapData.sourcesRelativeTo, read, options)    mapData.sourcesResolved = result.sourcesResolved    mapData.sourcesContent  = result.sourcesContent    return mapData  }  return {    resolveSourceMap:     resolveSourceMap,    resolveSourceMapSync: resolveSourceMapSync,    resolveSources:       resolveSources,    resolveSourcesSync:   resolveSourcesSync,    resolve:              resolve,    resolveSync:          resolveSync,    parseMapToJSON:       parseMapToJSON  }}));
 |