UNPKG

babel-core

Version:

Turn ES6 code into readable vanilla ES5 with source maps

86 lines (67 loc) 2.11 kB
"use strict"; var transform = module.exports = require("../transformation"); transform.version = require("../../../package").version; transform.transform = transform; transform.run = function (code, opts) { opts = opts || {}; opts.sourceMap = "inline"; return new Function(transform(code, opts).code)(); }; transform.load = function (url, callback, opts, hold) { opts = opts || {}; opts.filename = opts.filename || url; var xhr = global.ActiveXObject ? new global.ActiveXObject("Microsoft.XMLHTTP") : new global.XMLHttpRequest(); xhr.open("GET", url, true); if ("overrideMimeType" in xhr) xhr.overrideMimeType("text/plain"); xhr.onreadystatechange = function () { if (xhr.readyState !== 4) return; var status = xhr.status; if (status === 0 || status === 200) { var param = [xhr.responseText, opts]; if (!hold) transform.run.apply(transform, param); if (callback) callback(param); } else { throw new Error("Could not load " + url); } }; xhr.send(null); }; var runScripts = function () { var scripts = []; var types = ["text/ecmascript-6", "text/6to5", "text/babel", "module"]; var index = 0; var exec = function () { var param = scripts[index]; if (param instanceof Array) { transform.run.apply(transform, param); index++; exec(); } }; var run = function (script, i) { var opts = {}; if (script.src) { transform.load(script.src, function (param) { scripts[i] = param; exec(); }, opts, true); } else { opts.filename = "embedded"; scripts[i] = [script.innerHTML, opts]; } }; var _scripts = global.document .getElementsByTagName("script"); for (var i = 0; i < _scripts.length; ++i) { var _script = _scripts[i]; if (types.indexOf(_script.type) >= 0) scripts.push(_script); } for (i in scripts) { run(scripts[i], i); } exec(); }; if (global.addEventListener) { global.addEventListener("DOMContentLoaded", runScripts, false); } else if (global.attachEvent) { global.attachEvent("onload", runScripts); }