Not sure if this is rollup/stream or rollup problem.
Configuring rollup sourcemap:true gives error.
Changing to sourcemap:'inline' works.
Place the below 3 files in an empty project.
You should observe the error (new since rollup@3, issue wasn't present in the last 2.x).
Run again, the error should disappear.
I inserted some dumb logging up and down the error stack to see what was going on with the data. What I saw is that we end up with the sourcemap twice. Once as a base64 encoded inline comment and appended to that directly is an unencoded .js.map
file contents. When that is attempted to be extracted, it blows up of course. Switching to inline mode removes the presence of the .js.map
files being output and so the problem disappears.
Note the end where the base64 inline sourcemap ends and we jump right into a javascript object from the non-inline sourcemap file that was emitted as an "asset".
{
path: '',
map: null,
content: '(function () {\n' +
" 'use strict';\n" +
'\n' +
' var urlDecode = {\n' +
' urlDecode: urlDecode$1,\n' +
' encodeURIComponent: encodeURIComponent,\n' +
' decodeURIComponent: decodeURIComponent\n' +
' };\n' +
' function encodeURIComponent(str) {\n' +
' return window.encodeURIComponent(str);\n' +
' }\n' +
' function decodeURIComponent(str) {\n' +
' return window.decodeURIComponent(str);\n' +
' }\n' +
' function urlDecode$1(url) {\n' +
' var limit = 5,\n' +
' i,\n' +
' origUrl = url;\n' +
' url = url.trim();\n' +
' if (!url) return origUrl;\n' +
'\n' +
" // don't try to decode stuff that doesn't start with http\n" +
" if (url.toLowerCase().indexOf('http') !== 0) return url;\n" +
' for (i = 0; i <= limit; i++) {\n' +
" if (url.toLowerCase().indexOf('http://') == 0 || url.toLowerCase().indexOf('https://') == 0) {\n" +
' return url;\n' +
' }\n' +
' try {\n' +
' url = window.decodeURIComponent(url);\n' +
' } catch (e) {\n' +
' return origUrl;\n' +
' }\n' +
' }\n' +
' return origUrl;\n' +
' }\n' +
'\n' +
" var aUrl = 'http%25253A%25252F%25252Fexample.com%25253Ffoo%2525252Cbar%25253Dhello%2525252Cworld';\n" +
" console.log('Hello world: ' + urlDecode(aUrl));\n" +
'\n' +
'})();\n' +
'//# sourceMappingURL=some-app.js.map\n' +
'\n' +
`//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29tZS1hcHAuanMiLCJzb3VyY2VzIjpbInNyYy9qcy9saWIvdXJsLWRlY29kZS5qcyIsInNyYy9qcy9zb21lLWFwcC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgdXJsRGVjb2RlLFxuICAgIGVuY29kZVVSSUNvbXBvbmVudCxcbiAgICBkZWNvZGVVUklDb21wb25lbnQsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlVVJJQ29tcG9uZW50IChzdHIpIHtcbiAgICByZXR1cm4gd2luZG93LmVuY29kZVVSSUNvbXBvbmVudChzdHIpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZVVSSUNvbXBvbmVudCAoc3RyKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5kZWNvZGVVUklDb21wb25lbnQoc3RyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVybERlY29kZSh1cmwpIHtcbiAgICB2YXIgbGltaXQgPSA1LCBpLFxuICAgICAgICBvcmlnVXJsID0gdXJsO1xuXG4gICAgdXJsID0gdXJsLnRyaW0oKTtcblxuICAgIGlmICghdXJsKSByZXR1cm4gb3JpZ1VybDtcblxuICAgIC8vIGRvbid0IHRyeSB0byBkZWNvZGUgc3R1ZmYgdGhhdCBkb2Vzbid0IHN0YXJ0IHdpdGggaHR0cFxuICAgIGlmICh1cmwudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdodHRwJykgIT09IDApIHJldHVybiB1cmw7XG5cbiAgICBmb3IgKGk9MDsgaSA8PSBsaW1pdDsgaSsrICkge1xuICAgICAgICBpZiAodXJsLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignaHR0cDovLycpID09IDBcbiAgICAgICAgICAgIHx8IHVybC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2h0dHBzOi8vJykgPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdXJsID0gd2luZG93LmRlY29kZVVSSUNvbXBvbmVudCh1cmwpOyAgICBcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIG9yaWdVcmw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9yaWdVcmw7XG59IiwiXG5pbXBvcnQgdXJsRGVjb2RlIGZyb20gJy4vbGliL3VybC1kZWNvZGUuanMnO1xuXG5jb25zdCBhVXJsID0gJ2h0dHAlMjUyNTNBJTI1MjUyRiUyNTI1MkZleGFtcGxlLmNvbSUyNTI1M0Zmb28lMjUyNTI1MkNiYXIlMjUyNTNEaGVsbG8lMjUyNTI1MkN3b3JsZCc7XG5cbmNvbnNvbGUubG9nKCdIZWxsbyB3b3JsZDogJyArIHVybERlY29kZShhVXJsKSk7Il0sIm5hbWVzIjpbInVybERlY29kZSIsImVuY29kZVVSSUNvbXBvbmVudCIsImRlY29kZVVSSUNvbXBvbmVudCIsInN0ciIsIndpbmRvdyIsInVybCIsImxpbWl0IiwiaSIsIm9yaWdVcmwiLCJ0cmltIiwidG9Mb3dlckNhc2UiLCJpbmRleE9mIiwiZSIsImFVcmwiLCJjb25zb2xlIiwibG9nIl0sIm1hcHBpbmdzIjoiOzs7QUFHQSxvQkFBZTtJQUNYQSxFQUFBQSxTQUFTLEVBQVRBLFdBQVM7SUFDVEMsRUFBQUEsa0JBQWtCLEVBQWxCQSxrQkFBa0I7SUFDbEJDLEVBQUFBLGtCQUFrQixFQUFsQkEsa0JBQUFBO0lBQ0osQ0FBQyxDQUFBO0lBRU0sU0FBU0Qsa0JBQWtCQSxDQUFFRSxHQUFHLEVBQUU7SUFDckMsRUFBQSxPQUFPQyxNQUFNLENBQUNILGtCQUFrQixDQUFDRSxHQUFHLENBQUMsQ0FBQTtJQUN6QyxDQUFBO0lBQ08sU0FBU0Qsa0JBQWtCQSxDQUFFQyxHQUFHLEVBQUU7SUFDckMsRUFBQSxPQUFPQyxNQUFNLENBQUNGLGtCQUFrQixDQUFDQyxHQUFHLENBQUMsQ0FBQTtJQUN6QyxDQUFBO0lBRU8sU0FBU0gsV0FBU0EsQ0FBQ0ssR0FBRyxFQUFFO01BQzNCLElBQUlDLEtBQUssR0FBRyxDQUFDO1FBQUVDLENBQUM7SUFDWkMsSUFBQUEsT0FBTyxHQUFHSCxHQUFHLENBQUE7SUFFakJBLEVBQUFBLEdBQUcsR0FBR0EsR0FBRyxDQUFDSSxJQUFJLEVBQUUsQ0FBQTtJQUVoQixFQUFBLElBQUksQ0FBQ0osR0FBRyxFQUFFLE9BQU9HLE9BQU8sQ0FBQTs7SUFFeEI7SUFDQSxFQUFBLElBQUlILEdBQUcsQ0FBQ0ssV0FBVyxFQUFFLENBQUNDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBT04sR0FBRyxDQUFBO01BRXZELEtBQUtFLENBQUMsR0FBQyxDQUFDLEVBQUVBLENBQUMsSUFBSUQsS0FBSyxFQUFFQyxDQUFDLEVBQUUsRUFBRztRQUN4QixJQUFJRixHQUFHLENBQUNLLFdBQVcsRUFBRSxDQUFDQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUN0Q04sR0FBRyxDQUFDSyxXQUFXLEVBQUUsQ0FBQ0MsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRTtJQUMvQyxNQUFBLE9BQU9OLEdBQUcsQ0FBQTtJQUNkLEtBQUE7UUFDQSxJQUFJO0lBQ0FBLE1BQUFBLEdBQUcsR0FBR0QsTUFBTSxDQUFDRixrQkFBa0IsQ0FBQ0csR0FBRyxDQUFDLENBQUE7U0FDdkMsQ0FDRCxPQUFPTyxDQUFDLEVBQUU7SUFDTixNQUFBLE9BQU9KLE9BQU8sQ0FBQTtJQUNsQixLQUFBO0lBQ0osR0FBQTtJQUNBLEVBQUEsT0FBT0EsT0FBTyxDQUFBO0lBQ2xCOztJQ3JDQSxJQUFNSyxJQUFJLEdBQUcsc0ZBQXNGLENBQUE7SUFFbkdDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLGVBQWUsR0FBR2YsU0FBUyxDQUFDYSxJQUFJLENBQUMsQ0FBQzs7Ozs7OyJ9{"version":3,"file":"some-app.js","sources":["src/js/lib/url-decode.js","src/js/some-app.js"],"sourcesContent":["\\n\\n\\nexport default {\\n urlDecode,\\n encodeURIComponent,\\n decodeURIComponent,\\n};\\n\\nexport function encodeURIComponent (str) {\\n return window.encodeURIComponent(str);\\n}\\nexport function decodeURIComponent (str) {\\n return window.decodeURIComponent(str);\\n}\\n\\nexport function urlDecode(url) {\\n var limit = 5, i,\\n origUrl = url;\\n\\n url = url.trim();\\n\\n if (!url) return origUrl;\\n\\n // don't try to decode stuff that doesn't start with http\\n if (url.toLowerCase().indexOf('http') !== 0) return url;\\n\\n for (i=0; i <= limit; i++ ) {\\n if (url.toLowerCase().indexOf('http://') == 0\\n || url.toLowerCase().indexOf('https://') == 0) {\\n return url;\\n }\\n try {\\n url = window.decodeURIComponent(url); \\n }\\n catch (e) {\\n return origUrl;\\n }\\n }\\n return origUrl;\\n}","\\nimport urlDecode from './lib/url-decode.js';\\n\\nconst aUrl = 'http%25253A%25252F%25252Fexample.com%25253Ffoo%2525252Cbar%25253Dhello%2525252Cworld';\\n\\nconsole.log('Hello world: ' + urlDecode(aUrl));"],"names":["urlDecode","encodeURIComponent","decodeURIComponent","str","window","url","limit","i","origUrl","trim","toLowerCase","indexOf","e","aUrl","console","log"],"mappings":";;;AAGA,oBAAe;IACXA,EAAAA,SAAS,EAATA,WAAS;IACTC,EAAAA,kBAAkB,EAAlBA,kBAAkB;IAClBC,EAAAA,kBAAkB,EAAlBA,kBAAAA;IACJ,CAAC,CAAA;IAEM,SAASD,kBAAkBA,CAAEE,GAAG,EAAE;IACrC,EAAA,OAAOC,MAAM,CAACH,kBAAkB,CAACE,GAAG,CAAC,CAAA;IACzC,CAAA;IACO,SAASD,kBAAkBA,CAAEC,GAAG,EAAE;IACrC,EAAA,OAAOC,MAAM,CAACF,kBAAkB,CAACC,GAAG,CAAC,CAAA;IACzC,CAAA;IAEO,SAASH,WAASA,CAACK,GAAG,EAAE;MAC3B,IAAIC,KAAK,GAAG,CAAC;QAAEC,CAAC;IACZC,IAAAA,OAAO,GAAGH,GAAG,CAAA;IAEjBA,EAAAA,GAAG,GAAGA,GAAG,CAACI,IAAI,EAAE,CAAA;IAEhB,EAAA,IAAI,CAACJ,GAAG,EAAE,OAAOG,OAAO,CAAA;;IAExB;IACA,EAAA,IAAIH,GAAG,CAACK,WAAW,EAAE,CAACC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAON,GAAG,CAAA;MAEvD,KAAKE,CAAC,GAAC,CAAC,EAAEA,CAAC,IAAID,KAAK,EAAEC,CAAC,EAAE,EAAG;QACxB,IAAIF,GAAG,CAACK,WAAW,EAAE,CAACC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IACtCN,GAAG,CAACK,WAAW,EAAE,CAACC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;IAC/C,MAAA,OAAON,GAAG,CAAA;IACd,KAAA;QACA,IAAI;IACAA,MAAAA,GAAG,GAAGD,MAAM,CAACF,kBAAkB,CAACG,GAAG,CAAC,CAAA;SACvC,CACD,OAAOO,CAAC,EAAE;IACN,MAAA,OAAOJ,OAAO,CAAA;IAClB,KAAA;IACJ,GAAA;IACA,EAAA,OAAOA,OAAO,CAAA;IAClB;;ICrCA,IAAMK,IAAI,GAAG,sFAAsF,CAAA;IAEnGC,OAAO,CAACC,GAAG,CAAC,eAAe,GAAGf,SAAS,CAACa,IAAI,CAAC,CAAC;;;;;;"}`,
preExistingComment: null
}
I expect both inline/non-inline sourcemap configs to work.
I expect the examples in the README to work.
See above.