UNPKG

curl-amd

Version:

curl.js is small, fast, extensible module loader that handles AMD, CommonJS Modules/1.1, CSS, HTML/text, and legacy scripts.

57 lines (47 loc) 1.31 kB
/** MIT License (c) copyright 2010-2013 B Cavalier & J Hann */ /** * curl createContext module * * Licensed under the MIT License at: * http://www.opensource.org/licenses/mit-license.php * */ define(['curl/_privileged', 'require'], function (priv, require) { var cache, cleanupScript, loadScript; cache = priv['cache']; cleanupScript = noop; if (typeof document != 'undefined') { cleanupScript = removeScript; loadScript = priv['core'].loadScript; priv['core'].loadScript = function (def) { var el = loadScript.apply(this, arguments); el._curl_id = def.id; } } /** * Removes a module from curl.js's cache so that it can * be re-defined or re-required. Provide an array of moduleIds * instead of a single moduleId to delete many at a time. * @param moduleId {String|Array} the id of a module (or modules) */ return function undefine (moduleId) { var ids, id; ids = [].concat(moduleId); while ((id = ids.pop())) { delete cache[id]; cleanupScript(id); } }; function removeScript (id) { var scripts, i, script; scripts = document.getElementsByTagName('script'); i = 0; while ((script = scripts[i++])) { if (script._curl_id == id) { script.parentNode.removeChild(script); return; // all done! } } } function noop () {} });