| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | var currentExecutingScript = require("current-executing-script");
/**
 * Implements utility functions which facilitate the dealing with scripts such
 * as the download and execution of a JavaScript file.
 */
var ScriptUtil = {
    /**
     * Loads a script from a specific source.
     *
     * @param src the source from the which the script is to be (down)loaded
     * @param async true to asynchronously load the script or false to
     * synchronously load the script
     * @param prepend true to schedule the loading of the script as soon as
     * possible or false to schedule the loading of the script at the end of the
     * scripts known at the time
     * @param relativeURL whether we need load the library from url relative
     * to the url that lib-jitsi-meet was loaded. Useful when sourcing the
     * library from different location than the app that is using it
     */
    loadScript: function (src, async, prepend, relativeURL) {
        var d = document;
        var tagName = 'script';
        var script = d.createElement(tagName);
        var referenceNode = d.getElementsByTagName(tagName)[0];
        script.async = async;
        if (relativeURL) {
            // finds the src url of the current loaded script
            // and use it as base of the src supplied argument
            var scriptEl = currentExecutingScript();
            if(scriptEl) {
                var scriptSrc = scriptEl.src;
                var baseScriptSrc
                    = scriptSrc.substring(0, scriptSrc.lastIndexOf('/') + 1);
                if (scriptSrc && baseScriptSrc)
                    src = baseScriptSrc + src;
            }
        }
        script.src = src;
        if (prepend) {
            referenceNode.parentNode.insertBefore(script, referenceNode);
        } else {
            referenceNode.parentNode.appendChild(script);
        }
    }
};
module.exports = ScriptUtil;
 |