matthiasmullie / minify

CSS & JavaScript minifier, in PHP. Removes whitespace, strips comments, combines files (incl. @import statements and small assets in CSS files), and optimizes/shortens a few common programming patterns.
https://matthiasmullie.github.io/minify/
MIT License
1.98k stars 310 forks source link

WebPack runtime minification issue #376

Open asadkn opened 3 years ago

asadkn commented 3 years ago

With Elementor (free version) main file elementor/assets/js/webpack.runtime.js

Similar to #360 and #375 but not exactly same.

The issue: Uncaught SyntaxError: Unexpected token 'if' Reference Point: (document.currentScript)scriptUrl=document.currentScript.src if(!scriptUrl) minify version: dev-master

It appears there's a semicolon needed before the if or after the variable assignment.

Full code:

/******/ (() => { // webpackBootstrap
/******/    "use strict";
/******/    var __webpack_modules__ = ({});
/************************************************************************/
/******/    // The module cache
/******/    var __webpack_module_cache__ = {};
/******/    
/******/    // The require function
/******/    function __webpack_require__(moduleId) {
/******/        // Check if module is in cache
/******/        if(__webpack_module_cache__[moduleId]) {
/******/            return __webpack_module_cache__[moduleId].exports;
/******/        }
/******/        // Create a new module (and put it into the cache)
/******/        var module = __webpack_module_cache__[moduleId] = {
/******/            // no module.id needed
/******/            // no module.loaded needed
/******/            exports: {}
/******/        };
/******/    
/******/        // Execute the module function
/******/        __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/    
/******/        // Return the exports of the module
/******/        return module.exports;
/******/    }
/******/    
/******/    // expose the modules object (__webpack_modules__)
/******/    __webpack_require__.m = __webpack_modules__;
/******/    
/************************************************************************/
/******/    /* webpack/runtime/create fake namespace object */
/******/    (() => {
/******/        // create a fake namespace object
/******/        // mode & 1: value is a module id, require it
/******/        // mode & 2: merge all properties of value into the ns
/******/        // mode & 4: return value when already ns object
/******/        // mode & 8|1: behave like require
/******/        __webpack_require__.t = function(value, mode) {
/******/            if(mode & 1) value = this(value);
/******/            if(mode & 8) return value;
/******/            if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/            var ns = Object.create(null);
/******/            __webpack_require__.r(ns);
/******/            var def = {};
/******/            if(mode & 2 && typeof value == 'object' && value) {
/******/                for(const key in value) def[key] = () => value[key];
/******/            }
/******/            def['default'] = () => value;
/******/            __webpack_require__.d(ns, def);
/******/            return ns;
/******/        };
/******/    })();
/******/    
/******/    /* webpack/runtime/define property getters */
/******/    (() => {
/******/        // define getter functions for harmony exports
/******/        __webpack_require__.d = (exports, definition) => {
/******/            for(var key in definition) {
/******/                if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/                    Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/                }
/******/            }
/******/        };
/******/    })();
/******/    
/******/    /* webpack/runtime/ensure chunk */
/******/    (() => {
/******/        __webpack_require__.f = {};
/******/        // This file contains only the entry chunk.
/******/        // The chunk loading function for additional chunks
/******/        __webpack_require__.e = (chunkId) => {
/******/            return Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {
/******/                __webpack_require__.f[key](chunkId, promises);
/******/                return promises;
/******/            }, []));
/******/        };
/******/    })();
/******/    
/******/    /* webpack/runtime/get javascript chunk filename */
/******/    (() => {
/******/        // This function allow to reference async chunks
/******/        __webpack_require__.u = (chunkId) => {
/******/            // return url for filenames not based on template
/******/            if (chunkId === "vendors-node_modules_babel_runtime-corejs2_helpers_asyncToGenerator_js-node_modules_babel_run-fdf909") return "04f4d467c8355e0cce98.bundle.js";
/******/            if (chunkId === "lightbox") return "" + chunkId + ".48b7d7dfa0c8ff9ab7ae.bundle.js";
/******/            if (chunkId === "text-path") return "" + chunkId + ".fb1264c8db00088e9b55.bundle.js";
/******/            if (chunkId === "node_modules_babel_runtime-corejs2_helpers_objectSpread2_js-assets_dev_js_frontend_handlers_b-376ec2") return "6b76acc9eaf52001d003.bundle.js";
/******/            if (chunkId === "accordion") return "" + chunkId + ".e9e0c47570d3bc2ea472.bundle.js";
/******/            if (chunkId === "alert") return "" + chunkId + ".1ddc787a09e65acb8bd5.bundle.js";
/******/            if (chunkId === "counter") return "" + chunkId + ".699093eac935b541cdfe.bundle.js";
/******/            if (chunkId === "progress") return "" + chunkId + ".f88c14a27e3da5dcc9d8.bundle.js";
/******/            if (chunkId === "tabs") return "tabs.e9db15b9aa8a58bcf375.bundle.js";
/******/            if (chunkId === "toggle") return "" + chunkId + ".f62080504158ea96ac4c.bundle.js";
/******/            if (chunkId === "video") return "" + chunkId + ".a67431c1becbede4d80c.bundle.js";
/******/            if (chunkId === "image-carousel") return "" + chunkId + ".11194c4f02ba1ff5ad84.bundle.js";
/******/            if (chunkId === "text-editor") return "" + chunkId + ".723f26db489b3ec260a7.bundle.js";
/******/            // return url for filenames based on template
/******/            return "" + chunkId + ".js";
/******/        };
/******/    })();
/******/    
/******/    /* webpack/runtime/global */
/******/    (() => {
/******/        __webpack_require__.g = (function() {
/******/            if (typeof globalThis === 'object') return globalThis;
/******/            try {
/******/                return this || new Function('return this')();
/******/            } catch (e) {
/******/                if (typeof window === 'object') return window;
/******/            }
/******/        })();
/******/    })();
/******/    
/******/    /* webpack/runtime/hasOwnProperty shorthand */
/******/    (() => {
/******/        __webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)
/******/    })();
/******/    
/******/    /* webpack/runtime/load script */
/******/    (() => {
/******/        var inProgress = {};
/******/        var dataWebpackPrefix = "elementor:";
/******/        // loadScript function to load a script via script tag
/******/        __webpack_require__.l = (url, done, key) => {
/******/            if(inProgress[url]) { inProgress[url].push(done); return; }
/******/            var script, needAttach;
/******/            if(key !== undefined) {
/******/                var scripts = document.getElementsByTagName("script");
/******/                for(var i = 0; i < scripts.length; i++) {
/******/                    var s = scripts[i];
/******/                    if(s.getAttribute("src") == url || s.getAttribute("data-webpack") == dataWebpackPrefix + key) { script = s; break; }
/******/                }
/******/            }
/******/            if(!script) {
/******/                needAttach = true;
/******/                script = document.createElement('script');
/******/        
/******/                script.charset = 'utf-8';
/******/                script.timeout = 120;
/******/                if (__webpack_require__.nc) {
/******/                    script.setAttribute("nonce", __webpack_require__.nc);
/******/                }
/******/                script.setAttribute("data-webpack", dataWebpackPrefix + key);
/******/                script.src = url;
/******/            }
/******/            inProgress[url] = [done];
/******/            var onScriptComplete = (prev, event) => {
/******/                // avoid mem leaks in IE.
/******/                script.onerror = script.onload = null;
/******/                clearTimeout(timeout);
/******/                var doneFns = inProgress[url];
/******/                delete inProgress[url];
/******/                script.parentNode && script.parentNode.removeChild(script);
/******/                doneFns && doneFns.forEach((fn) => fn(event));
/******/                if(prev) return prev(event);
/******/            }
/******/            ;
/******/            var timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);
/******/            script.onerror = onScriptComplete.bind(null, script.onerror);
/******/            script.onload = onScriptComplete.bind(null, script.onload);
/******/            needAttach && document.head.appendChild(script);
/******/        };
/******/    })();
/******/    
/******/    /* webpack/runtime/make namespace object */
/******/    (() => {
/******/        // define __esModule on exports
/******/        __webpack_require__.r = (exports) => {
/******/            if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/                Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/            }
/******/            Object.defineProperty(exports, '__esModule', { value: true });
/******/        };
/******/    })();
/******/    
/******/    /* webpack/runtime/publicPath */
/******/    (() => {
/******/        var scriptUrl;
/******/        if (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + "";
/******/        var document = __webpack_require__.g.document;
/******/        if (!scriptUrl && document) {
/******/            if (document.currentScript)
/******/                scriptUrl = document.currentScript.src
/******/            if (!scriptUrl) {
/******/                var scripts = document.getElementsByTagName("script");
/******/                if(scripts.length) scriptUrl = scripts[scripts.length - 1].src
/******/            }
/******/        }
/******/        // When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration
/******/        // or pass an empty string ("") and set the __webpack_public_path__ variable from your code to use your own logic.
/******/        if (!scriptUrl) throw new Error("Automatic publicPath is not supported in this browser");
/******/        scriptUrl = scriptUrl.replace(/#.*$/, "").replace(/\?.*$/, "").replace(/\/[^\/]+$/, "/");
/******/        __webpack_require__.p = scriptUrl;
/******/    })();
/******/    
/******/    /* webpack/runtime/jsonp chunk loading */
/******/    (() => {
/******/        // no baseURI
/******/        
/******/        // object to store loaded and loading chunks
/******/        // undefined = chunk not loaded, null = chunk preloaded/prefetched
/******/        // Promise = chunk loading, 0 = chunk loaded
/******/        var installedChunks = {
/******/            "webpack.runtime": 0
/******/        };
/******/        
/******/        var deferredModules = [
/******/        
/******/        ];
/******/        __webpack_require__.f.j = (chunkId, promises) => {
/******/                // JSONP chunk loading for javascript
/******/                var installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;
/******/                if(installedChunkData !== 0) { // 0 means "already installed".
/******/        
/******/                    // a Promise means "currently loading".
/******/                    if(installedChunkData) {
/******/                        promises.push(installedChunkData[2]);
/******/                    } else {
/******/                        if(true) { // all chunks have JS
/******/                            // setup Promise in chunk cache
/******/                            var promise = new Promise((resolve, reject) => {
/******/                                installedChunkData = installedChunks[chunkId] = [resolve, reject];
/******/                            });
/******/                            promises.push(installedChunkData[2] = promise);
/******/        
/******/                            // start chunk loading
/******/                            var url = __webpack_require__.p + __webpack_require__.u(chunkId);
/******/                            // create error before stack unwound to get useful stacktrace later
/******/                            var error = new Error();
/******/                            var loadingEnded = (event) => {
/******/                                if(__webpack_require__.o(installedChunks, chunkId)) {
/******/                                    installedChunkData = installedChunks[chunkId];
/******/                                    if(installedChunkData !== 0) installedChunks[chunkId] = undefined;
/******/                                    if(installedChunkData) {
/******/                                        var errorType = event && (event.type === 'load' ? 'missing' : event.type);
/******/                                        var realSrc = event && event.target && event.target.src;
/******/                                        error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')';
/******/                                        error.name = 'ChunkLoadError';
/******/                                        error.type = errorType;
/******/                                        error.request = realSrc;
/******/                                        installedChunkData[1](error);
/******/                                    }
/******/                                }
/******/                            };
/******/                            __webpack_require__.l(url, loadingEnded, "chunk-" + chunkId);
/******/                        } else installedChunks[chunkId] = 0;
/******/                    }
/******/                }
/******/        };
/******/        
/******/        // no prefetching
/******/        
/******/        // no preloaded
/******/        
/******/        // no HMR
/******/        
/******/        // no HMR manifest
/******/        
/******/        var checkDeferredModules = () => {
/******/        
/******/        };
/******/        function checkDeferredModulesImpl() {
/******/            var result;
/******/            for(var i = 0; i < deferredModules.length; i++) {
/******/                var deferredModule = deferredModules[i];
/******/                var fulfilled = true;
/******/                for(var j = 1; j < deferredModule.length; j++) {
/******/                    var depId = deferredModule[j];
/******/                    if(installedChunks[depId] !== 0) fulfilled = false;
/******/                }
/******/                if(fulfilled) {
/******/                    deferredModules.splice(i--, 1);
/******/                    result = __webpack_require__(__webpack_require__.s = deferredModule[0]);
/******/                }
/******/            }
/******/            if(deferredModules.length === 0) {
/******/                __webpack_require__.x();
/******/                __webpack_require__.x = () => {
/******/        
/******/                }
/******/            }
/******/            return result;
/******/        }
/******/        __webpack_require__.x = () => {
/******/            // reset startup function so it can be called again when more startup code is added
/******/            __webpack_require__.x = () => {
/******/        
/******/            }
/******/            chunkLoadingGlobal = chunkLoadingGlobal.slice();
/******/            for(var i = 0; i < chunkLoadingGlobal.length; i++) webpackJsonpCallback(chunkLoadingGlobal[i]);
/******/            return (checkDeferredModules = checkDeferredModulesImpl)();
/******/        };
/******/        
/******/        // install a JSONP callback for chunk loading
/******/        var webpackJsonpCallback = (data) => {
/******/            var [chunkIds, moreModules, runtime, executeModules] = data;
/******/            // add "moreModules" to the modules object,
/******/            // then flag all "chunkIds" as loaded and fire callback
/******/            var moduleId, chunkId, i = 0, resolves = [];
/******/            for(;i < chunkIds.length; i++) {
/******/                chunkId = chunkIds[i];
/******/                if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {
/******/                    resolves.push(installedChunks[chunkId][0]);
/******/                }
/******/                installedChunks[chunkId] = 0;
/******/            }
/******/            for(moduleId in moreModules) {
/******/                if(__webpack_require__.o(moreModules, moduleId)) {
/******/                    __webpack_require__.m[moduleId] = moreModules[moduleId];
/******/                }
/******/            }
/******/            if(runtime) runtime(__webpack_require__);
/******/            parentChunkLoadingFunction(data);
/******/            while(resolves.length) {
/******/                resolves.shift()();
/******/            }
/******/        
/******/            // add entry modules from loaded chunk to deferred list
/******/            if(executeModules) deferredModules.push.apply(deferredModules, executeModules);
/******/        
/******/            // run deferred modules when all chunks ready
/******/            return checkDeferredModules();
/******/        }
/******/        
/******/        var chunkLoadingGlobal = self["webpackChunkelementor"] = self["webpackChunkelementor"] || [];
/******/        var parentChunkLoadingFunction = chunkLoadingGlobal.push.bind(chunkLoadingGlobal);
/******/        chunkLoadingGlobal.push = webpackJsonpCallback;
/******/    })();
/******/    
/************************************************************************/
/******/    // run startup
/******/    return __webpack_require__.x();
/******/ })()
;
//# sourceMappingURL=webpack.runtime.js.map
ghost commented 2 years ago

Any updates on this issue?

nise commented 2 years ago

See solution approach in #360