UNPKG

smallest-script-loader

Version:

Smallest promise-based script loader with cache support

44 lines (39 loc) 1.08 kB
(function (global, factory) { if (typeof define === "function" && define.amd) { define(['exports'], factory); } else if (typeof exports !== "undefined") { factory(exports); } else { var mod = { exports: {} }; factory(mod.exports); global.index = mod.exports; } })(this, function (exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = loadScript; const scripts = new Map(); /** * Loads an external script * @param {string} url Script's URL * @returns {Promise} */ function loadScript(url) { if (scripts.has(url)) { return scripts.get(url); } const script = document.createElement('script'); script.async = true; scripts.set(url, new Promise(function (resolve, reject) { script.addEventListener('load', resolve); script.addEventListener('error', () => reject(new Error(`Failed to load the script: ${url}.`))); script.src = url; document.body.appendChild(script); })); return scripts.get(url); } });