diff --git a/Gruntfile.js b/Gruntfile.js index ce390aebe8..c516673a68 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -47,11 +47,12 @@ module.exports = grunt => { let minifyLibFileList = copyJsFileList .filter(item => item.minify) - .reduce((map, item) => { - map[item.dest] = item.originalDest; - - return map; - }, {}); + .map(item => { + return { + dest: item.dest, + src: item.originalDest, + }; + }); let currentPath = path.dirname(fs.realpathSync(__filename)); diff --git a/application/Espo/Modules/Crm/Resources/metadata/app/jsLibs.json b/application/Espo/Modules/Crm/Resources/metadata/app/jsLibs.json index d731819596..91225813c6 100644 --- a/application/Espo/Modules/Crm/Resources/metadata/app/jsLibs.json +++ b/application/Espo/Modules/Crm/Resources/metadata/app/jsLibs.json @@ -3,11 +3,13 @@ "path": "client/modules/crm/lib/fullcalendar.js", "devPath": "client/modules/crm/lib/original/fullcalendar.js", "exportsTo": "$.fn", - "exportsAs": "fullCalendar" + "exportsAs": "fullCalendar", + "sourceMap": true }, "vis": { "path": "client/modules/crm/lib/vis.js", "devPath": "client/modules/crm/lib/original/vis.js", - "exportsAs": "vis" + "exportsAs": "vis", + "sourceMap": true } } diff --git a/application/Espo/Resources/metadata/app/jsLibs.json b/application/Espo/Resources/metadata/app/jsLibs.json index 54320a84fc..6dc5473c7f 100644 --- a/application/Espo/Resources/metadata/app/jsLibs.json +++ b/application/Espo/Resources/metadata/app/jsLibs.json @@ -3,7 +3,8 @@ "path": "client/lib/flotr2.js", "devPath": "client/lib/original/flotr2.js", "exportsTo": "window", - "exportsAs": "Flotr" + "exportsAs": "Flotr", + "sourceMap": true }, "Base64": { "exportsTo": "window", @@ -18,7 +19,8 @@ "path": "client/lib/summernote.js", "devPath": "client/lib/original/summernote.js", "exportsTo": "$.fn", - "exportsAs": "summernote" + "exportsAs": "summernote", + "sourceMap": true }, "Textcomplete": { "exportsTo": "$.fn", @@ -34,12 +36,14 @@ "path": "client/lib/cronstrue-i18n.js", "devPath": "client/lib/original/cronstrue-i18n.js", "exportsTo": "window", - "exportsAs": "cronstrue" + "exportsAs": "cronstrue", + "sourceMap": true }, "Cropper": { "path": "client/lib/cropper.js", "exportsTo": "$.fn", - "exportsAs": "cropper" + "exportsAs": "cropper", + "sourceMap": true }, "gridstack": { "exportsTo": "window", @@ -54,13 +58,15 @@ "path": "client/lib/exif.js", "devPath": "client/lib/original/exif.js", "exportsTo": "window", - "exportsAs": "EXIF" + "exportsAs": "EXIF", + "sourceMap": true }, "JsBarcode": { "path": "client/lib/JsBarcode.all.js", "devPath": "client/lib/original/JsBarcode.all.js", "exportsTo": "window", - "exportsAs": "JsBarcode" + "exportsAs": "JsBarcode", + "sourceMap": true }, "qrcode": { "path": "client/lib/qrcode.js", diff --git a/client/src/loader.js b/client/src/loader.js index e10809d6c8..3dddb5bcc9 100644 --- a/client/src/loader.js +++ b/client/src/loader.js @@ -65,6 +65,12 @@ this._internalModuleMap = {}; this.isDeveloperMode = false; + + /** + * @type {string} + * @private + */ + this._baseUrl = window.location.origin + window.location.pathname; }; _.extend(Espo.Loader.prototype, /** @lends Espo.Loader.prototype */{ @@ -175,9 +181,21 @@ if (!module && name.indexOf('lib!') === 0) { noStrictMode = true; + + if (!this.isDeveloperMode) { + let readName = name.substring(4); + + let hasSourceMap = (this._libsConfig[readName] || {}).sourceMap + + if (hasSourceMap) { + let realPath = path.split('?')[0]; + + script += `\n//# sourceMappingURL=${this._baseUrl + realPath}.map`; + } + } } - script += `\n//# sourceURL=/${path}`; + script += `\n//# sourceURL=${this._baseUrl + path}`; // For bc. if (module && module !== 'crm') {