diff options
author | Florian Dold <florian.dold@gmail.com> | 2017-12-10 21:51:33 +0100 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2017-12-10 21:51:33 +0100 |
commit | 0469abd4a9c9270a1fdc962969e36e63699af8b4 (patch) | |
tree | f9864d4a4148621378958794cbbfdc2393733283 /node_modules/source-map-resolve | |
parent | 6947e79bbc258f7bc96af424ddb71a511f0c15a3 (diff) |
upgrade dependencies
Diffstat (limited to 'node_modules/source-map-resolve')
-rw-r--r-- | node_modules/source-map-resolve/.npmignore | 1 | ||||
-rw-r--r-- | node_modules/source-map-resolve/LICENSE | 2 | ||||
-rw-r--r-- | node_modules/source-map-resolve/bower.json | 2 | ||||
-rw-r--r-- | node_modules/source-map-resolve/changelog.md | 13 | ||||
-rw-r--r-- | node_modules/source-map-resolve/component.json | 2 | ||||
-rw-r--r-- | node_modules/source-map-resolve/generate-source-map-resolve.js | 5 | ||||
-rw-r--r-- | node_modules/source-map-resolve/lib/decode-uri-component.js | 11 | ||||
-rw-r--r-- | node_modules/source-map-resolve/lib/source-map-resolve-node.js | 39 | ||||
-rw-r--r-- | node_modules/source-map-resolve/package.json | 7 | ||||
-rw-r--r-- | node_modules/source-map-resolve/source-map-resolve.js | 30 | ||||
-rw-r--r-- | node_modules/source-map-resolve/source-map-resolve.js.template | 2 | ||||
-rw-r--r-- | node_modules/source-map-resolve/test/common.js | 27 | ||||
-rw-r--r-- | node_modules/source-map-resolve/test/source-map-resolve.js | 1124 | ||||
-rw-r--r-- | node_modules/source-map-resolve/test/windows.js | 166 | ||||
-rw-r--r-- | node_modules/source-map-resolve/x-package.json5 | 2 |
15 files changed, 88 insertions, 1345 deletions
diff --git a/node_modules/source-map-resolve/.npmignore b/node_modules/source-map-resolve/.npmignore deleted file mode 100644 index 3c3629e64..000000000 --- a/node_modules/source-map-resolve/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/node_modules/source-map-resolve/LICENSE b/node_modules/source-map-resolve/LICENSE index c9a4e1bb4..748f42e87 100644 --- a/node_modules/source-map-resolve/LICENSE +++ b/node_modules/source-map-resolve/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2014, 2015, 2016 Simon Lydell +Copyright (c) 2014, 2015, 2016, 2017 Simon Lydell Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/node_modules/source-map-resolve/bower.json b/node_modules/source-map-resolve/bower.json index f1c32a8e5..552663be2 100644 --- a/node_modules/source-map-resolve/bower.json +++ b/node_modules/source-map-resolve/bower.json @@ -1,6 +1,6 @@ { "name": "source-map-resolve", - "version": "0.5.0", + "version": "0.5.1", "author": "Simon Lydell", "license": "MIT", "description": "Resolve the source map and/or sources for a generated file.", diff --git a/node_modules/source-map-resolve/changelog.md b/node_modules/source-map-resolve/changelog.md index ac046f5a2..d730d3698 100644 --- a/node_modules/source-map-resolve/changelog.md +++ b/node_modules/source-map-resolve/changelog.md @@ -1,3 +1,16 @@ +### Version 0.5.1 (2017-10-21) ### + +- Fixed: URLs are now decoded before being passed to `read` in Node.js. This + allows reading files with spaces, for example. +- Fixed: Missing or empty `sources` fields (such as `sources: []`) in source + maps are now handled. Previously, such source maps would cause crashes or + callbacks never bing called. Now, an empty result is produced: + + ```js + sourcesResolved: [], + sourcesContent: [] + ``` + ### Version 0.5.0 (2016-02-28) ### - Improved: Errors now have a `sourceMapData` property that contain as much as diff --git a/node_modules/source-map-resolve/component.json b/node_modules/source-map-resolve/component.json index 5aa9a37e6..c081ca0c2 100644 --- a/node_modules/source-map-resolve/component.json +++ b/node_modules/source-map-resolve/component.json @@ -1,6 +1,6 @@ { "name": "source-map-resolve", - "version": "0.5.0", + "version": "0.5.1", "author": "Simon Lydell", "license": "MIT", "description": "Resolve the source map and/or sources for a generated file.", diff --git a/node_modules/source-map-resolve/generate-source-map-resolve.js b/node_modules/source-map-resolve/generate-source-map-resolve.js index cc869fd31..a37e393aa 100644 --- a/node_modules/source-map-resolve/generate-source-map-resolve.js +++ b/node_modules/source-map-resolve/generate-source-map-resolve.js @@ -1,4 +1,4 @@ -// Copyright 2014 Simon Lydell +// Copyright 2014, 2017 Simon Lydell // X11 (“MIT”) Licensed. (See LICENSE.) var fs = require("fs") @@ -14,6 +14,9 @@ nodeCode = nodeCode // Remove `urix`. .replace(/(\w+)\s*=\s*urix\(\1\)\s*/g, "") + // Remove `decode-uri-component`. + .replace(/(var readUrl = )decodeUriComponent\(([\w.]+)\)/g, "$1$2") + // Change `module.exports = {...}` to `return {...}`. .replace(/module\.exports = (\{[^}]+\})\s*$/, "return $1") diff --git a/node_modules/source-map-resolve/lib/decode-uri-component.js b/node_modules/source-map-resolve/lib/decode-uri-component.js new file mode 100644 index 000000000..c7064ff4d --- /dev/null +++ b/node_modules/source-map-resolve/lib/decode-uri-component.js @@ -0,0 +1,11 @@ +// Copyright 2017 Simon Lydell +// X11 (“MIT”) Licensed. (See LICENSE.) + +var decodeUriComponent = require("decode-uri-component") + +function customDecodeUriComponent(string) { + // `decodeUriComponent` turns `+` into ` `, but that's not wanted. + return decodeUriComponent(string.replace(/\+/g, "%2B")) +} + +module.exports = customDecodeUriComponent diff --git a/node_modules/source-map-resolve/lib/source-map-resolve-node.js b/node_modules/source-map-resolve/lib/source-map-resolve-node.js index f5904b229..f80953d5d 100644 --- a/node_modules/source-map-resolve/lib/source-map-resolve-node.js +++ b/node_modules/source-map-resolve/lib/source-map-resolve-node.js @@ -1,10 +1,11 @@ -// Copyright 2014, 2015, 2016 Simon Lydell +// Copyright 2014, 2015, 2016, 2017 Simon Lydell // X11 (“MIT”) Licensed. (See LICENSE.) -var sourceMappingURL = require("source-map-url") -var resolveUrl = require("./resolve-url") -var urix = require("urix") -var atob = require("atob") +var sourceMappingURL = require("source-map-url") +var resolveUrl = require("./resolve-url") +var decodeUriComponent = require("./decode-uri-component") +var urix = require("urix") +var atob = require("atob") @@ -22,8 +23,9 @@ function parseMapToJSON(string, data) { } function readSync(read, url, data) { + var readUrl = decodeUriComponent(url) try { - return String(read(url)) + return String(read(readUrl)) } catch (error) { error.sourceMapData = data throw error @@ -42,7 +44,8 @@ function resolveSourceMap(code, codeUrl, read, callback) { if (!mapData || mapData.map) { return callbackAsync(callback, null, mapData) } - read(mapData.url, function(error, result) { + var readUrl = decodeUriComponent(mapData.url) + read(readUrl, function(error, result) { if (error) { error.sourceMapData = mapData return callback(error) @@ -117,12 +120,17 @@ function resolveSources(map, mapUrl, read, options, callback) { callback = options options = {} } - var pending = map.sources.length + 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) { @@ -136,7 +144,8 @@ function resolveSources(map, mapUrl, read, options, callback) { result.sourcesContent[index] = sourceContent callbackAsync(done, null) } else { - read(fullUrl, function(error, source) { + var readUrl = decodeUriComponent(fullUrl) + read(readUrl, function(error, source) { result.sourcesContent[index] = error ? error : String(source) done() }) @@ -149,20 +158,27 @@ function resolveSourcesSync(map, mapUrl, read, options) { 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 = decodeUriComponent(fullUrl) try { - result.sourcesContent[index] = String(read(fullUrl)) + result.sourcesContent[index] = String(read(readUrl)) } catch (error) { result.sourcesContent[index] = error } } } }) + return result } @@ -211,7 +227,8 @@ function resolve(code, codeUrl, read, options, callback) { sourcesRelativeTo: mapUrl, map: null } - read(mapUrl, function(error, result) { + var readUrl = decodeUriComponent(mapUrl) + read(readUrl, function(error, result) { if (error) { error.sourceMapData = data return callback(error) diff --git a/node_modules/source-map-resolve/package.json b/node_modules/source-map-resolve/package.json index 11d23fcf9..83fff6ea5 100644 --- a/node_modules/source-map-resolve/package.json +++ b/node_modules/source-map-resolve/package.json @@ -1,6 +1,6 @@ { "name": "source-map-resolve", - "version": "0.5.0", + "version": "0.5.1", "author": "Simon Lydell", "license": "MIT", "description": "Resolve the source map and/or sources for a generated file.", @@ -22,11 +22,12 @@ "browser": "source-map-resolve.js", "scripts": { "lint": "jshint lib/ test/", - "unit": "node test/source-map-resolve.js && node test/windows.js", + "unit": "node test/source-map-resolve.js && node test/windows.js && node test/read.js", "test": "npm run lint && npm run unit", "build": "node generate-source-map-resolve.js" }, "dependencies": { + "decode-uri-component": "^0.2.0", "source-map-url": "^0.4.0", "atob": "^2.0.0", "urix": "^0.1.0", @@ -52,4 +53,4 @@ "android-browser/4" ] } -}
\ No newline at end of file +} diff --git a/node_modules/source-map-resolve/source-map-resolve.js b/node_modules/source-map-resolve/source-map-resolve.js index 9979db2e5..387fc1970 100644 --- a/node_modules/source-map-resolve/source-map-resolve.js +++ b/node_modules/source-map-resolve/source-map-resolve.js @@ -1,4 +1,4 @@ -// Copyright 2014, 2015, 2016 Simon Lydell +// Copyright 2014, 2015, 2016, 2017 Simon Lydell // X11 (“MIT”) Licensed. (See LICENSE.) // Note: source-map-resolve.js is generated from source-map-resolve-node.js and @@ -31,8 +31,9 @@ void (function(root, factory) { } function readSync(read, url, data) { + var readUrl = url try { - return String(read(url)) + return String(read(readUrl)) } catch (error) { error.sourceMapData = data throw error @@ -51,7 +52,8 @@ void (function(root, factory) { if (!mapData || mapData.map) { return callbackAsync(callback, null, mapData) } - read(mapData.url, function(error, result) { + var readUrl = mapData.url + read(readUrl, function(error, result) { if (error) { error.sourceMapData = mapData return callback(error) @@ -124,12 +126,17 @@ void (function(root, factory) { callback = options options = {} } - var pending = map.sources.length + 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) { @@ -143,7 +150,8 @@ void (function(root, factory) { result.sourcesContent[index] = sourceContent callbackAsync(done, null) } else { - read(fullUrl, function(error, source) { + var readUrl = fullUrl + read(readUrl, function(error, source) { result.sourcesContent[index] = error ? error : String(source) done() }) @@ -156,20 +164,27 @@ void (function(root, factory) { 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(fullUrl)) + result.sourcesContent[index] = String(read(readUrl)) } catch (error) { result.sourcesContent[index] = error } } } }) + return result } @@ -217,7 +232,8 @@ void (function(root, factory) { sourcesRelativeTo: mapUrl, map: null } - read(mapUrl, function(error, result) { + var readUrl = mapUrl + read(readUrl, function(error, result) { if (error) { error.sourceMapData = data return callback(error) diff --git a/node_modules/source-map-resolve/source-map-resolve.js.template b/node_modules/source-map-resolve/source-map-resolve.js.template index 4553a255a..813198a1d 100644 --- a/node_modules/source-map-resolve/source-map-resolve.js.template +++ b/node_modules/source-map-resolve/source-map-resolve.js.template @@ -1,4 +1,4 @@ -// Copyright 2014, 2015, 2016 Simon Lydell +// Copyright 2014, 2015, 2016, 2017 Simon Lydell // X11 (“MIT”) Licensed. (See LICENSE.) // Note: source-map-resolve.js is generated from source-map-resolve-node.js and diff --git a/node_modules/source-map-resolve/test/common.js b/node_modules/source-map-resolve/test/common.js deleted file mode 100644 index 8616c171d..000000000 --- a/node_modules/source-map-resolve/test/common.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2014 Simon Lydell -// X11 (“MIT”) Licensed. (See LICENSE.) - -function u(url) { - return "code\n/*# sourceMappingURL=" + url + " */" -} - -function read(x) { - return function() { - return x - } -} - -function Throws(x) { - throw new Error(x) -} - -function identity(x) { - return x -} - -module.exports = { - u: u, - read: read, - Throws: Throws, - identity: identity -} diff --git a/node_modules/source-map-resolve/test/source-map-resolve.js b/node_modules/source-map-resolve/test/source-map-resolve.js deleted file mode 100644 index b5aaea9e9..000000000 --- a/node_modules/source-map-resolve/test/source-map-resolve.js +++ /dev/null @@ -1,1124 +0,0 @@ -// Copyright 2014, 2015, 2016 Simon Lydell -// X11 (“MIT”) Licensed. (See LICENSE.) - -var test = require("tape") -var asyncify = require("simple-asyncify") -var common = require("./common") -var u = common.u -var read = common.read -var Throws = common.Throws -var identity = common.identity - -var sourceMapResolve = require("../") - -// Polyfills. -require("setimmediate") -if (typeof window !== "undefined" && !window.atob) { - window.atob = require("Base64").atob -} - -"use strict" - -var map = { - simple: { - mappings: "AAAA", - sources: ["foo.js"], - names: [] - }, - sourceRoot: { - mappings: "AAAA", - sourceRoot: "/static/js/app/", - sources: ["foo.js", "lib/bar.js", "../vendor/dom.js", "/version.js", "//foo.org/baz.js"], - names: [] - }, - sourceRootNoSlash: { - mappings: "AAAA", - sourceRoot: "/static/js/app", - sources: ["foo.js", "lib/bar.js", "../vendor/dom.js", "/version.js", "//foo.org/baz.js"], - names: [] - }, - sourceRootEmpty: { - mappings: "AAAA", - sourceRoot: "", - sources: ["foo.js", "lib/bar.js", "../vendor/dom.js", "/version.js", "//foo.org/baz.js"], - names: [] - }, - sourcesContent: { - mappings: "AAAA", - sourceRoot: "/static/js/app/", - sources: ["foo.js", "lib/bar.js", "../vendor/dom.js", "/version.js", "//foo.org/baz.js"], - sourcesContent: ["foo.js", "lib/bar.js", "../vendor/dom.js", "/version.js", "//foo.org/baz.js"], - names: [] - }, - mixed: { - mappings: "AAAA", - sources: ["foo.js", "lib/bar.js", "../vendor/dom.js", "/version.js", "//foo.org/baz.js"], - sourcesContent: ["foo.js", null , null , "/version.js", "//foo.org/baz.js"], - names: [] - } -} -map.simpleString = JSON.stringify(map.simple) -map.XSSIsafe = ")]}'" + map.simpleString - -var code = { - fileRelative: u("foo.js.map"), - domainRelative: u("/foo.js.map"), - schemeRelative: u("//foo.org/foo.js.map"), - absolute: u("https://foo.org/foo.js.map"), - dataUri: u("data:application/json," + - "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" + - "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D"), - base64: u("data:application/json;base64," + - "eyJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VzIjpbImZvby5qcyJdLCJuYW1lcyI6W119"), - dataUriText: u("data:text/json," + - "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" + - "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D"), - dataUriParameter: u("data:application/json;charset=UTF-8;foo=bar," + - "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" + - "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D"), - dataUriNoMime: u("data:,foo"), - dataUriInvalidMime: u("data:text/html,foo"), - dataUriInvalidJSON: u("data:application/json,foo"), - dataUriXSSIsafe: u("data:application/json," + ")%5D%7D%27" + - "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" + - "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D"), - dataUriEmpty: u("data:"), - noMap: "" -} - - -function testResolveSourceMap(method, sync) { - return function(t) { - var wrap = (sync ? identity : asyncify) - - var codeUrl = "http://example.com/a/b/c/foo.js" - - t.plan(1 + 12*3 + 6*4) - - t.equal(typeof method, "function", "is a function") - - if (sync) { - method = asyncify(method) - } - - var next = false - function isAsync() { t.ok(next, "is async") } - - method(code.fileRelative, codeUrl, wrap(read(map.simpleString)), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "foo.js.map", - url: "http://example.com/a/b/c/foo.js.map", - sourcesRelativeTo: "http://example.com/a/b/c/foo.js.map", - map: map.simple - }, "fileRelative") - isAsync() - }) - - method(code.domainRelative, codeUrl, wrap(read(map.simpleString)), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "/foo.js.map", - url: "http://example.com/foo.js.map", - sourcesRelativeTo: "http://example.com/foo.js.map", - map: map.simple - }, "domainRelative") - isAsync() - }) - - method(code.schemeRelative, codeUrl, wrap(read(map.simpleString)), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "//foo.org/foo.js.map", - url: "http://foo.org/foo.js.map", - sourcesRelativeTo: "http://foo.org/foo.js.map", - map: map.simple - }, "schemeRelative") - isAsync() - }) - - method(code.absolute, codeUrl, wrap(read(map.simpleString)), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "https://foo.org/foo.js.map", - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: map.simple - }, "absolute") - isAsync() - }) - - method(code.dataUri, codeUrl, wrap(Throws), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "data:application/json," + - "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" + - "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D", - url: null, - sourcesRelativeTo: codeUrl, - map: map.simple - }, "dataUri") - isAsync() - }) - - method(code.base64, codeUrl, wrap(Throws), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "data:application/json;base64," + - "eyJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VzIjpbImZvby5qcyJdLCJuYW1lcyI6W119", - url: null, - sourcesRelativeTo: codeUrl, - map: map.simple - }, "base64") - isAsync() - }) - - method(code.dataUriText, codeUrl, wrap(Throws), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "data:text/json," + - "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" + - "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D", - url: null, - sourcesRelativeTo: codeUrl, - map: map.simple - }, "dataUriText") - isAsync() - }) - - method(code.dataUriParameter, codeUrl, wrap(Throws), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "data:application/json;charset=UTF-8;foo=bar," + - "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" + - "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D", - url: null, - sourcesRelativeTo: codeUrl, - map: map.simple - }, "dataUriParameter") - isAsync() - }) - - method(code.dataUriNoMime, codeUrl, wrap(Throws), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: "data:,foo", - url: null, - sourcesRelativeTo: codeUrl, - map: "foo" - }, "dataUriNoMime .sourceMapData") - t.ok(error.message.match(/mime type.+text\/plain/), "dataUriNoMime") - t.notOk(result) - isAsync() - }) - - method(code.dataUriInvalidMime, codeUrl, wrap(Throws), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: "data:text/html,foo", - url: null, - sourcesRelativeTo: codeUrl, - map: "foo" - }, "dataUriInvalidMime .sourceMapData") - t.ok(error.message.match(/mime type.+text\/html/), "dataUriInvalidMime") - t.notOk(result) - isAsync() - }) - - method(code.dataUriInvalidJSON, codeUrl, wrap(Throws), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: "data:application/json,foo", - url: null, - sourcesRelativeTo: codeUrl, - map: "foo" - }, "dataUriInvalidJSON .sourceMapData") - t.ok(error instanceof SyntaxError && error.message !== "data:application/json,foo", - "dataUriInvalidJSON") - t.notOk(result) - isAsync() - }) - - method(code.dataUriXSSIsafe, codeUrl, wrap(Throws), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "data:application/json," + ")%5D%7D%27" + - "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" + - "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D", - url: null, - sourcesRelativeTo: codeUrl, - map: map.simple - }, "dataUriXSSIsafe") - isAsync() - }) - - method(code.dataUriEmpty, codeUrl, wrap(Throws), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: "data:", - url: null, - sourcesRelativeTo: codeUrl, - map: "" - }, "dataUriEmpty .sourceMapData") - t.ok(error.message.match(/mime type.+text\/plain/), "dataUriEmpty") - t.notOk(result) - isAsync() - }) - - method(code.noMap, codeUrl, wrap(Throws), function(error, result) { - t.error(error) - t.equal(result, null, "noMap") - isAsync() - }) - - method(code.absolute, codeUrl, wrap(read([map.simpleString])), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "https://foo.org/foo.js.map", - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: map.simple - }, "read non-string") - isAsync() - }) - - method(code.absolute, codeUrl, wrap(read("invalid JSON")), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: "https://foo.org/foo.js.map", - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: "invalid JSON" - }, "read invalid JSON .sourceMapData") - t.ok(error instanceof SyntaxError, "read invalid JSON") - t.notOk(result) - isAsync() - }) - - method(code.absolute, codeUrl, wrap(read(map.XSSIsafe)), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "https://foo.org/foo.js.map", - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: map.simple - }, "XSSIsafe map") - isAsync() - }) - - method(code.absolute, codeUrl, wrap(Throws), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: "https://foo.org/foo.js.map", - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: null - }, "read throws .sourceMapData") - t.equal(error.message, "https://foo.org/foo.js.map", "read throws") - t.notOk(result) - isAsync() - }) - - next = true - } -} - -test(".resolveSourceMap", testResolveSourceMap(sourceMapResolve.resolveSourceMap, false)) - -test(".resolveSourceMapSync", testResolveSourceMap(sourceMapResolve.resolveSourceMapSync, true)) - - -function testResolveSources(method, sync) { - return function(t) { - var wrap = (sync ? identity : asyncify) - - var mapUrl = "http://example.com/a/b/c/foo.js.map" - - t.plan(1 + 9*3 + 4) - - t.equal(typeof method, "function", "is a function") - - if (sync) { - method = asyncify(method) - } - - var next = false - function isAsync() { t.ok(next, "is async") } - - var options - - method(map.simple, mapUrl, wrap(identity), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourcesResolved: ["http://example.com/a/b/c/foo.js"], - sourcesContent: ["http://example.com/a/b/c/foo.js"] - }, "simple") - isAsync() - }) - - method(map.sourceRoot, mapUrl, wrap(identity), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourcesResolved: [ - "http://example.com/static/js/app/foo.js", - "http://example.com/static/js/app/lib/bar.js", - "http://example.com/static/js/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], - sourcesContent: [ - "http://example.com/static/js/app/foo.js", - "http://example.com/static/js/app/lib/bar.js", - "http://example.com/static/js/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ] - }, "sourceRoot") - isAsync() - }) - - options = {sourceRoot: false} - method(map.sourceRoot, mapUrl, wrap(identity), options, function(error, result) { - t.error(error) - t.deepEqual(result, { - sourcesResolved: [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], - sourcesContent: [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ] - }, "ignore sourceRoot") - isAsync() - }) - - options = {sourceRoot: "/static/js/"} - method(map.sourceRoot, mapUrl, wrap(identity), options, function(error, result) { - t.error(error) - t.deepEqual(result, { - sourcesResolved: [ - "http://example.com/static/js/foo.js", - "http://example.com/static/js/lib/bar.js", - "http://example.com/static/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], - sourcesContent: [ - "http://example.com/static/js/foo.js", - "http://example.com/static/js/lib/bar.js", - "http://example.com/static/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ] - }, "custom sourceRoot") - isAsync() - }) - - method(map.sourceRootNoSlash, mapUrl, wrap(identity), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourcesResolved: [ - "http://example.com/static/js/app/foo.js", - "http://example.com/static/js/app/lib/bar.js", - "http://example.com/static/js/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], - sourcesContent: [ - "http://example.com/static/js/app/foo.js", - "http://example.com/static/js/app/lib/bar.js", - "http://example.com/static/js/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ] - }, "sourceRootNoSlash") - isAsync() - }) - - method(map.sourceRootEmpty, mapUrl, wrap(identity), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourcesResolved: [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], - sourcesContent: [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ] - }, "sourceRootEmpty") - isAsync() - }) - - method(map.sourcesContent, mapUrl, wrap(Throws), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourcesResolved: [ - "http://example.com/static/js/app/foo.js", - "http://example.com/static/js/app/lib/bar.js", - "http://example.com/static/js/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], - sourcesContent: [ - "foo.js", - "lib/bar.js", - "../vendor/dom.js", - "/version.js", - "//foo.org/baz.js" - ] - }, "sourcesContent") - isAsync() - }) - - method(map.mixed, mapUrl, wrap(identity), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourcesResolved: [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], - sourcesContent: [ - "foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "/version.js", - "//foo.org/baz.js" - ] - }, "mixed") - isAsync() - }) - - method(map.simple, mapUrl, wrap(read(["non", "string"])), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourcesResolved: ["http://example.com/a/b/c/foo.js"], - sourcesContent: ["non,string"] - }, "read non-string") - isAsync() - }) - - method(map.mixed, mapUrl, wrap(Throws), function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "read throws .sourcesResolved") - var sourcesContent = result.sourcesContent - for (var index = 0, len = sourcesContent.length; index < len; index++) { - var item = sourcesContent[index] - if (item instanceof Error) { - sourcesContent[index] = null - } - } - t.deepEqual(sourcesContent, [ - "foo.js", - null, - null, - "/version.js", - "//foo.org/baz.js" - ], "read throws .sourcesContent") - isAsync() - }) - - next = true - } -} - -test(".resolveSources", testResolveSources(sourceMapResolve.resolveSources, false)) - -test(".resolveSourcesSync", testResolveSources(sourceMapResolve.resolveSourcesSync, true)) - -test(".resolveSourcesSync no read", function(t) { - t.plan(1) - - var mapUrl = "http://example.com/a/b/c/foo.js.map" - var result = sourceMapResolve.resolveSourcesSync(map.mixed, mapUrl, null) - - t.deepEqual(result, { - sourcesResolved: [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], - sourcesContent: [] - }) -}) - - -function testResolve(method, sync) { - return function(t) { - var wrap = (sync ? identity : asyncify) - var wrapMap = function(mapFn, fn) { - return wrap(function(url) { - if (/\.map$/.test(url)) { - return mapFn(url) - } - return fn(url) - }) - } - - var codeUrl = "http://example.com/a/b/c/foo.js" - - t.plan(1 + 15*3 + 19*4 + 4) - - t.equal(typeof method, "function", "is a function") - - if (sync) { - method = asyncify(method) - } - - var next = false - function isAsync() { t.ok(next, "is async") } - - var readSimple = wrapMap(read(map.simpleString), identity) - - method(code.fileRelative, codeUrl, readSimple, function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "foo.js.map", - url: "http://example.com/a/b/c/foo.js.map", - sourcesRelativeTo: "http://example.com/a/b/c/foo.js.map", - map: map.simple, - sourcesResolved: ["http://example.com/a/b/c/foo.js"], - sourcesContent: ["http://example.com/a/b/c/foo.js"] - }, "fileRelative") - isAsync() - }) - - method(code.domainRelative, codeUrl, readSimple, function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "/foo.js.map", - url: "http://example.com/foo.js.map", - sourcesRelativeTo: "http://example.com/foo.js.map", - map: map.simple, - sourcesResolved: ["http://example.com/foo.js"], - sourcesContent: ["http://example.com/foo.js"] - }, "domainRelative") - isAsync() - }) - - method(code.schemeRelative, codeUrl, readSimple, function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "//foo.org/foo.js.map", - url: "http://foo.org/foo.js.map", - sourcesRelativeTo: "http://foo.org/foo.js.map", - map: map.simple, - sourcesResolved: ["http://foo.org/foo.js"], - sourcesContent: ["http://foo.org/foo.js"] - }, "schemeRelative") - isAsync() - }) - - method(code.absolute, codeUrl, readSimple, function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "https://foo.org/foo.js.map", - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: map.simple, - sourcesResolved: ["https://foo.org/foo.js"], - sourcesContent: ["https://foo.org/foo.js"] - }, "absolute") - isAsync() - }) - - method(code.dataUri, codeUrl, wrapMap(Throws, identity), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "data:application/json," + - "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" + - "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D", - url: null, - sourcesRelativeTo: codeUrl, - map: map.simple, - sourcesResolved: ["http://example.com/a/b/c/foo.js"], - sourcesContent: ["http://example.com/a/b/c/foo.js"] - }, "dataUri") - isAsync() - }) - - method(code.base64, codeUrl, wrapMap(Throws, identity), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "data:application/json;base64," + - "eyJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VzIjpbImZvby5qcyJdLCJuYW1lcyI6W119", - url: null, - sourcesRelativeTo: codeUrl, - map: map.simple, - sourcesResolved: ["http://example.com/a/b/c/foo.js"], - sourcesContent: ["http://example.com/a/b/c/foo.js"] - }, "base64") - isAsync() - }) - - method(code.dataUriText, codeUrl, wrapMap(Throws, identity), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "data:text/json," + - "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" + - "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D", - url: null, - sourcesRelativeTo: codeUrl, - map: map.simple, - sourcesResolved: ["http://example.com/a/b/c/foo.js"], - sourcesContent: ["http://example.com/a/b/c/foo.js"] - }, "dataUriText") - isAsync() - }) - - method(code.dataUriParameter, codeUrl, wrapMap(Throws, identity), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "data:application/json;charset=UTF-8;foo=bar," + - "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" + - "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D", - url: null, - sourcesRelativeTo: codeUrl, - map: map.simple, - sourcesResolved: ["http://example.com/a/b/c/foo.js"], - sourcesContent: ["http://example.com/a/b/c/foo.js"] - }, "dataUriParameter") - isAsync() - }) - - method(code.dataUriNoMime, codeUrl, wrap(Throws), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: "data:,foo", - url: null, - sourcesRelativeTo: codeUrl, - map: "foo" - }, "dataUriNoMime .sourceMapData") - t.ok(error.message.match(/mime type.+text\/plain/), "dataUriNoMime") - t.notOk(result) - isAsync() - }) - - method(code.dataUriInvalidMime, codeUrl, wrap(Throws), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: "data:text/html,foo", - url: null, - sourcesRelativeTo: codeUrl, - map: "foo" - }, "dataUriInvalidMime .sourceMapData") - t.ok(error.message.match(/mime type.+text\/html/), "dataUriInvalidMime") - t.notOk(result) - isAsync() - }) - - method(code.dataUriInvalidJSON, codeUrl, wrap(Throws), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: "data:application/json,foo", - url: null, - sourcesRelativeTo: codeUrl, - map: "foo" - }, "dataUriInvalidJSON .sourceMapData") - t.ok(error instanceof SyntaxError && error.message !== "data:application/json,foo", - "dataUriInvalidJSON") - t.notOk(result) - isAsync() - }) - - method(code.dataUriXSSIsafe, codeUrl, wrapMap(Throws, identity), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "data:application/json," + ")%5D%7D%27" + - "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" + - "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D", - url: null, - sourcesRelativeTo: codeUrl, - map: map.simple, - sourcesResolved: ["http://example.com/a/b/c/foo.js"], - sourcesContent: ["http://example.com/a/b/c/foo.js"] - }, "dataUriXSSIsafe") - isAsync() - }) - - method(code.dataUriEmpty, codeUrl, wrap(Throws), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: "data:", - url: null, - sourcesRelativeTo: codeUrl, - map: "" - }, "dataUriEmpty .sourceMapData") - t.ok(error.message.match(/mime type.+text\/plain/), "dataUriEmpty") - t.notOk(result) - isAsync() - }) - - method(code.noMap, codeUrl, wrap(Throws), function(error, result) { - t.error(error) - t.equal(result, null, "noMap") - isAsync() - }) - - method(code.absolute, codeUrl, wrap(read([map.simpleString])), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "https://foo.org/foo.js.map", - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: map.simple, - sourcesResolved: ["https://foo.org/foo.js"], - sourcesContent: [map.simpleString] - }, "read non-string") - isAsync() - }) - - method(code.absolute, codeUrl, wrap(read("invalid JSON")), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: "https://foo.org/foo.js.map", - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: "invalid JSON" - }, "read invalid JSON .sourceMapData") - t.ok(error instanceof SyntaxError, "read invalid JSON") - t.notOk(result) - isAsync() - }) - - method(code.absolute, codeUrl, wrapMap(read(map.XSSIsafe), identity), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "https://foo.org/foo.js.map", - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: map.simple, - sourcesResolved: ["https://foo.org/foo.js"], - sourcesContent: ["https://foo.org/foo.js"] - }, "XSSIsafe map") - isAsync() - }) - - method(code.absolute, codeUrl, wrap(Throws), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: "https://foo.org/foo.js.map", - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: null - }, "read throws .sourceMapData") - t.equal(error.message, "https://foo.org/foo.js.map", "read throws") - t.notOk(result) - isAsync() - }) - - function readMap(what) { - return wrapMap(read(JSON.stringify(what)), identity) - } - - var options - - method(code.fileRelative, codeUrl, readMap(map.simple), function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, ["http://example.com/a/b/c/foo.js"], "simple") - t.deepEqual(result.sourcesContent, ["http://example.com/a/b/c/foo.js"], "simple") - isAsync() - }) - - method(code.fileRelative, codeUrl, readMap(map.sourceRoot), function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, [ - "http://example.com/static/js/app/foo.js", - "http://example.com/static/js/app/lib/bar.js", - "http://example.com/static/js/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "sourceRoot") - t.deepEqual(result.sourcesContent, [ - "http://example.com/static/js/app/foo.js", - "http://example.com/static/js/app/lib/bar.js", - "http://example.com/static/js/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "sourceRoot") - isAsync() - }) - - options = {sourceRoot: false} - method(code.fileRelative, codeUrl, readMap(map.sourceRoot), options, function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "ignore sourceRoot") - t.deepEqual(result.sourcesContent, [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "ignore sourceRoot") - isAsync() - }) - - options = {sourceRoot: "/static/js/"} - method(code.fileRelative, codeUrl, readMap(map.sourceRoot), options, function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, [ - "http://example.com/static/js/foo.js", - "http://example.com/static/js/lib/bar.js", - "http://example.com/static/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "custom sourceRoot") - t.deepEqual(result.sourcesContent, [ - "http://example.com/static/js/foo.js", - "http://example.com/static/js/lib/bar.js", - "http://example.com/static/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "custom sourceRoot") - isAsync() - }) - - method(code.fileRelative, codeUrl, readMap(map.sourceRootNoSlash), function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, [ - "http://example.com/static/js/app/foo.js", - "http://example.com/static/js/app/lib/bar.js", - "http://example.com/static/js/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "sourceRootNoSlash") - t.deepEqual(result.sourcesContent, [ - "http://example.com/static/js/app/foo.js", - "http://example.com/static/js/app/lib/bar.js", - "http://example.com/static/js/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "sourceRootNoSlash") - isAsync() - }) - - method(code.fileRelative, codeUrl, readMap(map.sourceRootEmpty), function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "sourceRootEmpty") - t.deepEqual(result.sourcesContent, [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "sourceRootEmpty") - isAsync() - }) - - method(code.fileRelative, codeUrl, readMap(map.sourcesContent), function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, [ - "http://example.com/static/js/app/foo.js", - "http://example.com/static/js/app/lib/bar.js", - "http://example.com/static/js/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "sourcesContent") - t.deepEqual(result.sourcesContent, [ - "foo.js", - "lib/bar.js", - "../vendor/dom.js", - "/version.js", - "//foo.org/baz.js" - ], "sourcesContent") - isAsync() - }) - - method(code.fileRelative, codeUrl, readMap(map.mixed), function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "mixed") - t.deepEqual(result.sourcesContent, [ - "foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "/version.js", - "//foo.org/baz.js" - ], "mixed") - isAsync() - }) - - method(code.fileRelative, codeUrl, wrap(read([map.simpleString])), function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, ["http://example.com/a/b/c/foo.js"], "read non-string") - t.deepEqual(result.sourcesContent, [map.simpleString], "read non-string") - isAsync() - }) - - function ThrowsMap(what) { - return wrapMap(read(JSON.stringify(what)), Throws) - } - - method(code.fileRelative, codeUrl, ThrowsMap(map.mixed), function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "read throws .sourcesResolved") - var sourcesContent = result.sourcesContent - for (var index = 0, len = sourcesContent.length; index < len; index++) { - var item = sourcesContent[index] - if (item instanceof Error) { - sourcesContent[index] = null - } - } - t.deepEqual(sourcesContent, [ - "foo.js", - null, - null, - "/version.js", - "//foo.org/baz.js" - ], "read throws .sourcesContent") - isAsync() - }) - - var mapUrl = "https://foo.org/foo.js.map" - - method(null, mapUrl, readSimple, function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: null, - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: map.simple, - sourcesResolved: ["https://foo.org/foo.js"], - sourcesContent: ["https://foo.org/foo.js"] - }, "mapUrl simple") - isAsync() - }) - - method(null, mapUrl, wrap(read([map.simpleString])), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: null, - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: map.simple, - sourcesResolved: ["https://foo.org/foo.js"], - sourcesContent: [map.simpleString] - }, "mapUrl read non-string") - isAsync() - }) - - method(null, mapUrl, wrap(read("invalid JSON")), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: null, - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: "invalid JSON" - }, "mapUrl read invalid JSON .sourceMapData") - t.ok(error instanceof SyntaxError, "mapUrl read invalid JSON") - t.notOk(result) - isAsync() - }) - - method(null, mapUrl, wrapMap(read(map.XSSIsafe), identity), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: null, - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: map.simple, - sourcesResolved: ["https://foo.org/foo.js"], - sourcesContent: ["https://foo.org/foo.js"] - }, "mapUrl XSSIsafe map") - isAsync() - }) - - method(null, mapUrl, wrap(Throws), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: null, - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: null - }, "mapUrl read throws .sourceMapData") - t.equal(error.message, "https://foo.org/foo.js.map", "mapUrl read throws") - t.notOk(result) - isAsync() - }) - - mapUrl = "http://example.com/a/b/c/foo.js.map" - - options = {sourceRoot: "/static/js/"} - method(null, mapUrl, readMap(map.sourceRoot), options, function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, [ - "http://example.com/static/js/foo.js", - "http://example.com/static/js/lib/bar.js", - "http://example.com/static/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "mapUrl custom sourceRoot") - t.deepEqual(result.sourcesContent, [ - "http://example.com/static/js/foo.js", - "http://example.com/static/js/lib/bar.js", - "http://example.com/static/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "mapUrl custom sourceRoot") - isAsync() - }) - - method(null, mapUrl, readMap(map.mixed), function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "mapUrl mixed") - t.deepEqual(result.sourcesContent, [ - "foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "/version.js", - "//foo.org/baz.js" - ], "mapUrl mixed") - isAsync() - }) - - next = true - } -} - -test(".resolve", testResolve(sourceMapResolve.resolve, false)) - -test(".resolveSync", testResolve(sourceMapResolve.resolveSync, true)) - -test(".parseMapToJSON", function(t) { - t.plan(1) - t.deepEqual(sourceMapResolve.parseMapToJSON(map.XSSIsafe), map.simple) -}) diff --git a/node_modules/source-map-resolve/test/windows.js b/node_modules/source-map-resolve/test/windows.js deleted file mode 100644 index 611ec7dcd..000000000 --- a/node_modules/source-map-resolve/test/windows.js +++ /dev/null @@ -1,166 +0,0 @@ -// Copyright 2014 Simon Lydell -// X11 (“MIT”) Licensed. (See LICENSE.) - -var path = require("path") -var test = require("tape") -var asyncify = require("simple-asyncify") -var common = require("./common") -var u = common.u -var read = common.read -var identity = common.identity - -var sourceMapResolve = require("../") - -path.sep = "\\" - - -function testResolveSourceMap(method, sync) { - return function(t) { - var wrap = (sync ? identity : asyncify) - - var codeUrl = "c:\\a\\b\\c\\foo.js" - - t.plan(3 * 2) - - if (sync) { - method = asyncify(method) - } - - var map = {} - var readMap = wrap(read(JSON.stringify(map))) - - method(u("foo.js.map"), codeUrl, readMap, function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "foo.js.map", - url: "/a/b/c/foo.js.map", - sourcesRelativeTo: "/a/b/c/foo.js.map", - map: map - }) - }) - - method(u("/foo.js.map"), codeUrl, readMap, function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "/foo.js.map", - url: "/foo.js.map", - sourcesRelativeTo: "/foo.js.map", - map: map - }) - }) - - method(u("../foo.js.map"), codeUrl, readMap, function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "../foo.js.map", - url: "/a/b/foo.js.map", - sourcesRelativeTo: "/a/b/foo.js.map", - map: map - }) - }) - - } -} - -test(".resolveSourceMap", testResolveSourceMap(sourceMapResolve.resolveSourceMap, false)) - -test(".resolveSourceMapSync", testResolveSourceMap(sourceMapResolve.resolveSourceMapSync, true)) - - -function testResolveSources(method, sync) { - return function(t) { - var wrap = (sync ? identity : asyncify) - - var mapUrl = "c:\\a\\b\\c\\foo.js.map" - - t.plan(1 * 3) - - if (sync) { - method = asyncify(method) - } - - var map = { - sources: ["foo.js", "/foo.js", "../foo.js"] - } - - method(map, mapUrl, wrap(identity), function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, ["/a/b/c/foo.js", "/foo.js", "/a/b/foo.js"]) - t.deepEqual(result.sourcesContent, ["/a/b/c/foo.js", "/foo.js", "/a/b/foo.js"]) - }) - - } -} - -test(".resolveSources", testResolveSources(sourceMapResolve.resolveSources, false)) - -test(".resolveSourcesSync", testResolveSources(sourceMapResolve.resolveSourcesSync, true)) - - -function testResolve(method, sync) { - return function(t) { - var wrap = (sync ? identity : asyncify) - var wrapMap = function(mapFn, fn) { - return wrap(function(url) { - if (/\.map$/.test(url)) { - return mapFn(url) - } - return fn(url) - }) - } - - var codeUrl = "c:\\a\\b\\c\\foo.js" - - t.plan(3 * 2) - - if (sync) { - method = asyncify(method) - } - - var map = { - sources: ["foo.js", "/foo.js", "../foo.js"] - } - var readMap = wrapMap(read(JSON.stringify(map)), identity) - - method(u("foo.js.map"), codeUrl, readMap, function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "foo.js.map", - url: "/a/b/c/foo.js.map", - sourcesRelativeTo: "/a/b/c/foo.js.map", - map: map, - sourcesResolved: ["/a/b/c/foo.js", "/foo.js", "/a/b/foo.js"], - sourcesContent: ["/a/b/c/foo.js", "/foo.js", "/a/b/foo.js"] - }) - }) - - method(u("/foo.js.map"), codeUrl, readMap, function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "/foo.js.map", - url: "/foo.js.map", - sourcesRelativeTo: "/foo.js.map", - map: map, - sourcesResolved: ["/foo.js", "/foo.js", "/foo.js"], - sourcesContent: ["/foo.js", "/foo.js", "/foo.js"] - }) - }) - - method(u("../foo.js.map"), codeUrl, readMap, function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "../foo.js.map", - url: "/a/b/foo.js.map", - sourcesRelativeTo: "/a/b/foo.js.map", - map: map, - sourcesResolved: ["/a/b/foo.js", "/foo.js", "/a/foo.js"], - sourcesContent: ["/a/b/foo.js", "/foo.js", "/a/foo.js"] - }) - }) - - } -} - -test(".resolve", testResolve(sourceMapResolve.resolve, false)) - -test(".resolveSync", testResolve(sourceMapResolve.resolveSync, true)) diff --git a/node_modules/source-map-resolve/x-package.json5 b/node_modules/source-map-resolve/x-package.json5 index fb03d6e4e..957399f3c 100644 --- a/node_modules/source-map-resolve/x-package.json5 +++ b/node_modules/source-map-resolve/x-package.json5 @@ -1,6 +1,6 @@ { name: "source-map-resolve", - version: "0.5.0", + version: "0.5.1", author: "Simon Lydell", license: "MIT", description: "Resolve the source map and/or sources for a generated file.", |