neocities/public/js/require.js
BanceDev 811b956a4b updated ace editor with new settings
settings for tab width, font size, keyboard mode, and autocomplete
2024-10-03 18:20:18 -04:00

648 lines
23 KiB
JavaScript

/* eslint-env browser */
/* global importScripts Response Request */
/**
* requirejs compatible loader for cloud9
*
* supports the following loaders
* require("text!./path.md") - load a file as text
* require("json!./file.json") - load a file as json
* require("asset-url!./directory-or-a-file") - get a url for a image, html or audio file or
* a whole directory, files required this way are copied to the cdn without modifications
* require("webworker!./modulname") - get a url that can be used to start a webworker
* require("webworker!<tagname>!./modulname") - get a url for webworker, and include all the
* instances of require("<tagname>!./modulname") in a bundle for that worker
* require("language!./modulname") - the commonly used tagname for language worker
* require("vfs!./module") - bundles js file with it's dependencies in a way that can be used
* on vfs worker, either as a vfs extension or a standalone executable
* require("architect!./modulname") - wraps module in a function allowing
* delayed initialization of architect plugins
* TODO:
* require("glob!./ace/mode/*(:-_test|_highlight_rules).js").load("css", function() {}) -
* require("lazy!./module").load(function() {}) -
*/
(function() {
var global = (function() {
return this;
})();
if (!global && typeof window != "undefined") global = window; // can happen in strict mode
if (!global && typeof self != "undefined") global = self; // can happen in webworker
var commentRegExp = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$|`([^`\\]|\\.)*`)/gm;
var cjsRequireRegExp = /require\s*\(\s*["']([^'"\s]+)["']\s*\)/g;
function getInlineDeps(fn) {
var deps = [];
if (fn.length) {
fn
.toString()
.replace(commentRegExp, "")
.replace(cjsRequireRegExp, function(match, dep, index, str) {
var i = index;
while (str.charCodeAt((i -= 1)) <= 32) {}
if (str.charAt(i) !== ".") deps.push(dep);
});
deps = ["require", "exports", "module"].concat(deps);
}
return deps;
}
var define = function(name, deps, callback) {
// Allow for anonymous modules
if (typeof name !== "string") {
callback = deps;
deps = name;
name = null;
}
// This module may not have dependencies
if (deps && !Array.isArray(deps)) {
callback = deps;
deps = null;
}
if (nextModule) {
if (!name || name == nextModule.name) {
name = nextModule.name;
deps = deps || nextModule.deps;
nextModule = null;
}
}
if (!name) return defQueue.push([deps, callback]);
if (define.loaded[name]) return;
if (!deps && typeof callback == "function") deps = getInlineDeps(callback);
define.loaded[name] = {
id: name,
deps: normalizeNames(name, deps || []),
factory: callback,
exports: {},
packaged: true,
};
if (define.loading[name]) delete define.loading[name];
if (define.lastModule) define.pending.push(name);
else define.lastModule = name;
};
var defQueue = [];
var nextModule;
var addToLoadQueue = function(missing, deps, callback, errback) {
var toLoad = missing.length;
var map = {};
define.queue.push({
deps: deps,
map: map,
toLoad: toLoad,
callback: callback,
errback: errback,
});
for (var i = 0; i < missing.length; ++i) {
var p = missing[i];
map[p] = 1;
if (!define.loading[p]) {
define.loading[p] = 1;
require.load(p);
}
}
};
var processLoadQueue = function(err, id) {
var changed = false;
if (err) {
if (!id) id = err.id;
define.errors[id] = err;
define.queue.forEach(function(r) {
if (r.map[id]) {
r.toLoad = -1;
if (r.errback) r.errback(err);
}
});
if (define.lastModule == id) define.lastModule = null;
define.pending = define.pending.filter(function(p) {
return p != id;
});
changed = true;
err.from = [];
for (var i in define.loaded) {
var index = define.loaded[i].deps.indexOf(id);
if (index != -1) {
err.from.push(define.loaded[i].id);
}
}
console.error("Error loading " + id + " required from " + err.from.slice(0, 2));
} else if (id && !defQueue.length && !define.loaded[id]) {
// the script didn't call define
defQueue = [(config.shim && config.shim[id]) || [[], null]];
}
if (defQueue.length) {
if (defQueue.length > 1) throw new Error("more than one module in defqueue");
define(id, defQueue[0][0], defQueue[0][1]);
defQueue.length = 0;
}
var pending = define.pending;
define.queue.forEach(function(r) {
pending.forEach(function(id) {
if (r.map[id]) r.toLoad--;
});
if (r.map[define.lastModule]) r.toLoad--;
if (!r.toLoad) {
changed = true;
_require("", r.deps, r.callback, r.errback);
}
});
define.lastModule = null;
if (pending.length) define.pending = [];
if (changed) {
define.queue = define.queue.filter(function(r) {
return r.toLoad > 0;
});
}
};
define.amd = {};
define.queue = [];
define.loaded = {};
define.errors = {};
define.loading = {};
define.pending = [];
define.modules = {require: 1, exports: 1, module: 1};
define.fetchedUrls = {};
var activateModule = function(name) {
var module = define.loaded[name];
var exports = module.exports;
if (typeof module.factory !== "function") {
exports = module.factory;
} else {
var req = function(path, callback) {
return _require(name, path, callback);
};
req.config = config;
req.toUrl = function(id) {
return require.toUrl(id);
};
var missing = checkMissing(module.deps);
if (missing.length) return missing;
module.define = define;
var specialModules = {
require: req,
exports: exports,
module: module,
};
if (name.lastIndexOf("architect!", 0) == 0 && !module.pluginFactory) {
module.pluginFactory = module.factory;
module.factory = activateArchitectModule;
}
define.modules[name] = exports;
var args = module.deps.slice(0, module.factory.length);
var returnValue = args.length
? module.factory.apply(
module,
args.map(function(name) {
return specialModules[name] || lookup(name);
})
)
: module.factory(req, exports, module);
exports = returnValue == undefined ? module.exports : returnValue;
}
if (!config.$keepLoaders) delete define.loaded[name];
define.modules[name] = exports;
};
var checkMissing = function(deps, seen, missing) {
missing = missing || {};
seen = seen || {};
for (var i = 0; i < deps.length; ++i) {
var depName = deps[i];
if (!define.modules[depName]) {
var dep = define.loaded[depName];
if (!dep) missing[depName] = 1;
else if (!missing[depName] && !seen[depName]) {
seen[depName] = 1;
checkMissing(dep.deps, seen, missing);
}
}
}
return Object.keys(missing);
};
var lookup = function(moduleName) {
var mod = define.modules[moduleName];
if (mod === undefined && define.loaded[moduleName]) {
activateModule(moduleName);
mod = define.modules[moduleName];
}
return mod;
};
var _require = function(parentId, moduleName, callback, errback) {
if (typeof moduleName === "string") {
var depName = normalizeName(parentId, moduleName);
var module = lookup(depName);
if (module !== undefined) {
if (typeof callback == "function") callback(module);
return module;
} else if (typeof importScripts != "undefined" || syncLoaders.test(moduleName)) {
addToLoadQueue([depName], [depName]);
return lookup(depName);
}
} else if (Array.isArray(moduleName)) {
var deps = normalizeNames(parentId, moduleName);
var missing = checkMissing(deps);
if (!missing.length) {
var args = deps.map(lookup);
return callback && callback.apply(null, args);
} else {
return addToLoadQueue(missing, deps, callback, errback);
}
}
};
var normalizeName = function(parentId, moduleName) {
if (/!/.test(parentId)) parentId = parentId.split("!").pop();
// normalize plugin requires
var i = moduleName.indexOf("!");
if (i !== -1) {
return (
normalizeName(parentId, moduleName.slice(0, i)) +
"!" +
normalizeName(parentId, moduleName.slice(i + 1))
);
}
// normalize relative requires
if (moduleName.charAt(0) == ".") {
var parentChunks = parentId.split("/");
var parentModule = parentChunks.shift();
if (parentModule.charAt(0) == "@") {
parentModule = parentModule + "/" + parentChunks.shift();
}
var path = parentChunks.slice(0, -1).join("/");
moduleName = parentModule + (path ? "/" + path : "") + "/" + moduleName;
while (moduleName.indexOf(".") !== -1 && previous != moduleName) {
var previous = moduleName;
moduleName = moduleName.replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, "");
}
}
return moduleName;
};
var normalizeNames = function(parentId, moduleNames) {
return moduleNames.map(function(name) {
return normalizeName(parentId, name);
});
};
var require = function(module, callback, errback) {
return _require("", module, callback, errback);
};
var config = (require.config = function(cfg) {
if (cfg.baseUrl) config.baseUrl = cfg.baseUrl.replace(/\/*$/, "/");
if (cfg.host) host = cfg.host;
if (Array.isArray(cfg.packages)) {
cfg.packages.forEach(function(pkg) {
if (typeof pkg === "string") pkg = {name: pkg};
config.packages[pkg.name] = {
name: pkg.name,
location: (pkg.location || pkg.name).replace(/\/*$/, "/"),
main: (pkg.main || "main").replace(/\.js$/, "").replace(/^\.\//, ""),
};
});
} else if (cfg.packages) {
config.packages = cfg.packages;
}
cfg.paths &&
Object.keys(cfg.paths).forEach(function(p) {
config.paths[p] = cfg.paths[p];
});
if (
cfg.useCache &&
global.caches &&
(location.protocol === "https:" || location.hostname == "localhost")
) {
config.useCache = true;
checkCache();
}
if (cfg.transform) config.transform = cfg.transform;
if (/\bes5\b/.test(cfg.transform) && !global.shimIncluded) {
if (!console.assert) {
console.assert = function assert() {}; // This method is used by the following es6 shim.
}
var oldFlags = RegExp.prototype.flags;
RegExp.prototype.flags = true;
require(["js-polyfills/es6"]);
RegExp.prototype.flags = oldFlags;
global.shimIncluded = true;
}
if (cfg.assetUrl) config.assetUrl = cfg.assetUrl;
if (cfg.$keepLoaders != undefined) config.$keepLoaders = cfg.$keepLoaders;
});
require.resetConfig = function(cfg) {
var location = global.location;
var baseUrl = location ? location.protocol + "//" + location.host
+ location.pathname.split("/").slice(0, -1).join("/") : "";
config.packages = Object.create(null);
config.paths = Object.create(null);
config.baseUrl = baseUrl;
config.useCache = false;
config.transform = "";
if (cfg) require.config(cfg);
};
require.getConfig = function() {
var script = document.querySelector("script[src*=require]");
return {
packages: config.packages,
paths: config.paths,
baseUrl: config.baseUrl,
useCache: config.useCache,
transform: config.transform,
host: host,
requireSourceUrl: !config.packed && script && script.src,
assetUrl: config.assetUrl,
};
};
require.resetConfig();
define.undef = require.undef = function(module, recursive) {
module = normalizeName("", module);
if (recursive) {
var root = (module + "/").replace(/\/+$/, "/");
undefAll(root, define.errors);
undefAll(root, define.loaded);
undefAll(root, define.modules);
undefAll(root, define.loading);
} else {
undefOne(module, require.toUrl(module, ".js"));
}
};
function undefOne(module, path) {
delete define.errors[module];
delete define.loaded[module];
delete define.modules[module];
delete define.loading[module];
delete define.fetchedUrls[path];
}
function undefAll(module, hash) {
Object.keys(hash).forEach(function(key) {
var i = key.indexOf("!") + 1;
if (key.lastIndexOf(module, 0) == 0) undefOne(key, require.toUrl(key, ".js"));
if (i) {
var plugin = key.slice(0, i - 1);
var resource = key.slice(i);
if (resource.lastIndexOf(module, 0) == 0 || plugin.lastIndexOf(module, 0) == 0) {
undefOne(key, require.toUrl(key, ""));
undefOne(resource, require.toUrl(resource, ""));
}
}
});
}
require.toUrl = function(moduleName, ext, skipExt, isStatic) {
var absRe = /^([\w\+\.\-]+:|\/)/;
var index = moduleName.indexOf("!");
if (index !== -1 || !ext || /^\//.test(moduleName)) ext = "";
var paths = config.paths;
var pkgs = config.packages;
var testPath = moduleName;
var tail = "";
while (testPath) {
if (paths[testPath]) {
moduleName = paths[testPath] + tail;
break;
}
if (pkgs[testPath]) {
moduleName = pkgs[testPath].location + (tail || pkgs[testPath].main);
break;
}
var i = testPath.lastIndexOf("/");
if (i === -1) break;
tail = testPath.substr(i) + tail;
testPath = testPath.slice(0, i);
}
if (skipExt) return testPath;
var url = ext == ".js" && moduleName.slice(-3) == ext ? moduleName : moduleName + ext;
if (moduleName.slice(-3) == ".ts") {
url = moduleName.slice(0, -3) + ext;
}
if (!absRe.test(url)) {
if (ext == ".js" && require.config.transform) url = addTransform(url, moduleName);
var baseUrl = config.baseUrl;
if (baseUrl.slice(-1) != "/") baseUrl += "/";
url = baseUrl + url;
}
if (url[0] == "/") url = host + url;
return url;
};
function addTransform(url, moduleName) {
var transform = require.config.transform;
if (!Array.isArray(transform)) transform = [transform];
return (
"~/" +
transform
.map(function(part) {
if (typeof part == "string") return part;
if (moduleName.lastIndexOf(part[0], 0) != -1) return part[1];
})
.filter(Boolean)
.join(",") +
"/" +
url
).replace("//", "/");
}
function loadText(path, callback) {
var xhr = new global.XMLHttpRequest();
xhr.open("GET", path, true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
xhr.onload = function(e) {
if (xhr.status > 399 && xhr.status < 600) return callback(xhr);
callback(null, xhr.responseText, xhr);
};
xhr.onabort = xhr.onerror = function(e) {
callback(e);
};
xhr.send("");
}
/*** cache ***/
var host =
location.protocol + "//" + location.hostname + (location.port ? ":" + location.port : "");
var loadScript = function(path, id, callback) {
if (!/^\w+:/.test(path)) path = host + path;
var onLoad = function(e, val) {
if (e) return processLoadQueue({id: id, path: path});
if (!/^(\s|\/\*([^*]|[*](?!\/))*\*\/|\/\/.*[\r]?\n)*define\s*\(\s*function\s*\(\s*require\b/.test(val) && !/define\(\[\],/.test(val))
val = "define(function(require, exports, module){" + val + "\n});"
nextModule = {name: id};
/* eslint no-eval:0 */
global.eval(val + "\n//# sourceURL=" + path);
callback(null, id);
return define.loaded[id];
};
loadCached(path, onLoad);
};
var loadCached = function(path, callback) {
return loadText(path, callback);
};
require.load = function(module) {
var i = module.indexOf("!") + 1;
if (i) {
var plugin = module.substring(0, i);
module = module.substr(i);
if (typeof require[plugin] == "function") {
require[plugin](module, processLoadQueue);
} else if (config.baseUrl) {
if (require[plugin]) return (require[plugin][plugin + module] = 1);
require[plugin] = Object.create(null);
require[plugin][plugin + module] = 1;
require([plugin.slice(0, -1)], function(p) {
var pending = require[plugin];
definePlugin(plugin, p);
Object.keys(pending).forEach(function(p) {
delete define.loading[p];
});
require(Object.keys(pending));
});
} else {
console.error("require plugin " + plugin + "missing");
}
} else {
var url = require.toUrl(module, ".js");
if (define.fetchedUrls[url] & 1) return false;
define.fetchedUrls[url] |= 1;
loadScript(url, module, processLoadQueue);
}
};
function definePlugin(plugin, p) {
require[plugin] = function(moduleName, processLoadQueue) {
p.load(moduleName, require, function(value) {
define(plugin + moduleName, [], function() {
return value;
});
processLoadQueue();
});
};
}
/*** plugins ***/
var syncLoaders = /^(language!|webworker!|vfs!|asset-url!)/;
require["language!"] = function(module, callback) {
define("language!" + module, [], module);
callback();
};
require["webworker!"] = function(module, callback) {
var url = require.toUrl(module.split("!").pop(), ".js");
define("webworker!" + module, [], url);
callback();
};
require["asset-url!"] = function(module, callback) {
var url = require.toUrl(module.split("!").pop(), "", "", true);
define("asset-url!" + module, [], url);
callback();
};
require["vfs!"] = function(module, callback) {
var url = require.MODULE_LOAD_URL + "/~node/" + module;
if (define.fetchedUrls[url] & 4) return false;
define.fetchedUrls[url] |= 4;
define("vfs!" + module, [], {
srcUrl: url,
path: module,
});
callback();
};
require["text!"] = function(module, callback) {
var url = require.toUrl(module);
if (define.fetchedUrls[url] & 2) return false;
define.fetchedUrls[url] |= 2;
var onLoad = function(e, val) {
if (e) console.error("Couldn't load module " + module, e);
define("text!" + module, [], val);
callback();
};
loadCached(url, onLoad);
};
require["json!"] = function(module, callback) {
require["text!"](module, function() {
var val = JSON.parse(require("text!" + module));
define("json!" + module, [], val);
callback();
});
};
require["ace/requirejs/text!"] = function(module, callback) {
var url = require.toUrl(module);
if (define.fetchedUrls[url] & 2) return false;
define.fetchedUrls[url] |= 2;
var onLoad = function(e, val) {
if (e) console.error("Couldn't load module " + module, e);
define("ace/requirejs/text!" + module, [], val);
callback();
};
loadCached(url, onLoad);
};
require["architect!"] = function(module, callback) {
var url = require.toUrl(module, ".js");
if (define.fetchedUrls[url] & 1) return false;
define.fetchedUrls[url] |= 1;
loadScript(url, "architect!" + module, processLoadQueue);
};
function activateArchitectModule(_1, _2, _3) {
var module = this;
return function() {
module.pluginFactory(_1, _2, _3);
if (typeof module.exports == "function" && module.exports.consumes) {
return module.exports.apply(this, arguments);
}
return module.exports;
};
}
/*** add global define ***/
if (!global.define || !global.define.packaged) {
define.original = global.define;
global.define = define;
global.define.packaged = true;
}
if (!global.require || !global.require.packaged) {
global.require = require;
global.require.packaged = true;
}
if (!global.requirejs) global.requirejs = require;
global.miniRequire = require;
})();