| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 | 
							- // Copyright 2014 Simon Lydell
 
- // X11 (“MIT”) Licensed. (See LICENSE.)
 
- // 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) {
 
-     return JSON.parse(string.replace(/^\)\]\}'/, ""))
 
-   }
 
-   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)
 
-     }
 
-     read(mapData.url, function(error, result) {
 
-       if (error) {
 
-         return callback(error)
 
-       }
 
-       try {
 
-         mapData.map = parseMapToJSON(String(result))
 
-       } 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 = parseMapToJSON(String(read(mapData.url)))
 
-     return mapData
 
-   }
 
-   var dataUriRegex = /^data:([^,;]*)(;[^,;]*)*(?:,(.*))?$/
 
-   var jsonMimeTypeRegex = /^(?:application|text)\/json$/
 
-   function resolveSourceMapHelper(code, codeUrl) {
 
-     var url = sourceMappingURL.getFrom(code)
 
-     if (!url) {
 
-       return null
 
-     }
 
-     var dataUri = url.match(dataUriRegex)
 
-     if (dataUri) {
 
-       var mimeType = dataUri[1]
 
-       var lastParameter = dataUri[2]
 
-       var encoded = dataUri[3]
 
-       if (!jsonMimeTypeRegex.test(mimeType)) {
 
-         throw new Error("Unuseful data uri mime type: " + (mimeType || "text/plain"))
 
-       }
 
-       return {
 
-         sourceMappingURL: url,
 
-         url: null,
 
-         sourcesRelativeTo: codeUrl,
 
-         map: parseMapToJSON(lastParameter === ";base64" ? atob(encoded) : decodeURIComponent(encoded))
 
-       }
 
-     }
 
-     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.length
 
-     var errored = false
 
-     var result = {
 
-       sourcesResolved: [],
 
-       sourcesContent:  []
 
-     }
 
-     var done = function(error) {
 
-       if (errored) {
 
-         return
 
-       }
 
-       if (error) {
 
-         errored = true
 
-         return callback(error)
 
-       }
 
-       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 {
 
-         read(fullUrl, function(error, source) {
 
-           result.sourcesContent[index] = String(source)
 
-           done(error)
 
-         })
 
-       }
 
-     })
 
-   }
 
-   function resolveSourcesSync(map, mapUrl, read, options) {
 
-     var result = {
 
-       sourcesResolved: [],
 
-       sourcesContent:  []
 
-     }
 
-     resolveSourcesHelper(map, mapUrl, options, function(fullUrl, sourceContent, index) {
 
-       result.sourcesResolved[index] = fullUrl
 
-       if (read !== null) {
 
-         if (typeof sourceContent === "string") {
 
-           result.sourcesContent[index] = sourceContent
 
-         } else {
 
-           result.sourcesContent[index] = String(read(fullUrl))
 
-         }
 
-       }
 
-     })
 
-     return result
 
-   }
 
-   var endingSlash = /\/?$/
 
-   function resolveSourcesHelper(map, mapUrl, options, fn) {
 
-     options = options || {}
 
-     var fullUrl
 
-     var sourceContent
 
-     for (var index = 0, len = map.sources.length; index < len; index++) {
 
-       if (map.sourceRoot && !options.ignoreSourceRoot) {
 
-         // 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, map.sourceRoot.replace(endingSlash, "/"), map.sources[index])
 
-       } else {
 
-         fullUrl = resolveUrl(mapUrl, 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 = {}
 
-     }
 
-     resolveSourceMap(code, codeUrl, read, function(error, mapData) {
 
-       if (error) {
 
-         return callback(error)
 
-       }
 
-       if (!mapData) {
 
-         return callback(null, null)
 
-       }
 
-       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 = 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
 
-   }
 
- }));
 
 
  |