RSNewWebUI/webui-src/make-src/template.js
2020-01-15 19:11:24 +05:30

115 lines
3.2 KiB
JavaScript

(function() {
'use strict';
const globals = typeof window === 'undefined' ? global : window;
if (typeof globals.require === 'function') return;
let modules = {},
cache = {},
aliases = {},
has = {}.hasOwnProperty;
const unalias = function(alias, loaderPath) {
const _cmp = 'components/';
let start = 0;
if (loaderPath) {
if (loaderPath.startsWith(_cmp)) {
start = _cmp.length;
}
if (loaderPath.indexOf('/', start) > 0) {
loaderPath = loaderPath.substring(
start,
loaderPath.indexOf('/', start)
);
}
}
const result =
aliases[alias + '/index.js'] ||
aliases[loaderPath + '/deps/' + alias + '/index.js'];
if (result) {
return _cmp + result.substring(0, result.length - '.js'.length);
}
return alias;
};
const expand = function(root, name) {
const _reg = /^\.\.?(\/|$)/;
let results = [],
parts = (_reg.test(name) ? root + '/' + name : name).split('/');
for (let part of parts) {
if (part === '..') {
results.pop();
} else if (part !== '.' && part !== '') {
results.push(part);
}
}
return results.join('/');
};
const dirname = function(path) {
return path
.split('/')
.slice(0, -1)
.join('/');
};
const localRequire = function(path) {
return function(name) {
let absolute = expand(dirname(path), name);
return globals.require(absolute, path);
};
};
const initModule = function(name, definition) {
let module = { id: name, exports: {} };
cache[name] = module;
definition(module.exports, localRequire(name), module);
return module.exports;
};
const require = function(name, loaderPath) {
if (loaderPath === undefined) loaderPath = '/';
let path = unalias(name, loaderPath);
if (path in cache) return cache[path].exports;
if (path in modules) return initModule(path, modules[path]);
let dirIndex = expand(path, './index');
if (dirIndex in cache) return cache[dirIndex].exports;
if (dirIndex in modules) return initModule(dirIndex, modules[dirIndex]);
throw new Error(
'Cannot find module "' + name + '" from ' + '"' + loaderPath + '"'
);
};
require.alias = function(from, to) {
aliases[to] = from;
};
require.register = require.define = function(bundle, fn) {
if (typeof bundle === 'object') {
for (let key in bundle) {
if (has.call(bundle, key)) {
modules[key] = bundle[key];
}
}
} else {
modules[bundle] = fn;
}
};
require.list = function() {
let result = [];
for (let item in modules) {
if (has.call(modules, item)) {
result.push(item);
}
}
return result;
};
require._cache = cache;
globals.require = require;
})();