includejs
Version:
Resource Loader
1,510 lines (1,428 loc) • 184 kB
JavaScript
// source ./umd/umd.js
(function (root, factory) {
'use strict';
var _global, _module;
_global = typeof window === 'undefined' ? global : window;
if (root != null && root !== _global && root.exports) {
_module = root;
}
if (_module == null) {
_module = typeof module === 'undefined' ? { exports: {} } : module;
}
factory(_global, _module, _module.exports, _global.document);
if (typeof include !== 'undefined' && typeof include.js === 'function') {
include.exports = _module.exports;
// allow only one `include` per application
return;
}
_global.include = _module.exports.include;
_global.includeLib = _module.exports.includeLib;
}(this, function (global, module, exports, document) {
'use strict';
var CURRENT_MODULE = module;
var _src_Bin = {};
var _src_Config = {};
var _src_CustomLoader = {};
var _src_Events = {};
var _src_Helper = {};
var _src_Include = {};
var _src_IncludeDeferred = {};
var _src_LazyModule = {};
var _src_PathResolver = {};
var _src_Resource = {};
var _src_Routing = {};
var _src_ScriptStack = {};
var _src_global = {};
var _src_loader_load = {};
var _src_loader_mask = {};
var _src_models_State = {};
var _src_models_Type = {};
var _src_modules_amd = {};
var _src_modules_common = {};
var _src_node_PatchEval = {};
var _src_node_PatchResource = {};
var _src_node_PatchXhr = {};
var _src_node_eval = {};
var _src_node_export = {};
var _src_node_utils_file = {};
var _src_utils_array = {};
var _src_utils_class_Dfr = {};
var _src_utils_fn = {};
var _src_utils_object = {};
var _src_utils_path = {};
var _src_utils_res = {};
var _src_utils_tree = {};
var _src_worker_WorkerClient = {};
var _src_worker_WorkerLoader = {};
// source ./ModuleSimplified.js
var _src_global;
(function () {
// ensure AMD is not active for the model, so that any UMD exports as commonjs
var define = null;
var exports = _src_global != null ? _src_global : {};
var module = { exports: exports };
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.noConflict = exports.include = exports.document = exports.module = exports.global = exports.handler = exports.refs = exports.isWeb = exports.isNode = exports.isBrowser = exports.__require = exports.emptyResponse = exports.IncludeLib = exports.loadBags = void 0;
var _global = typeof global === 'undefined' ? null : global;
exports.global = _global;
var _module = typeof module === 'undefined' ? null : module;
exports.module = _module;
var _document = typeof document === 'undefined' ? null : document;
exports.document = _document;
var _require = typeof require === 'undefined' ? null : require;
var _include = global === null || global === void 0 ? void 0 : global.include;
exports.include = _include;
exports.loadBags = [
_document
];
exports.IncludeLib = {
loadBags: exports.loadBags,
};
exports.emptyResponse = {
load: {}
};
exports.__require = {
nativeRequire: _require,
includeRequire: null
};
var _isBrowser = false, _isNode = false;
//#if (NODE)
_isBrowser = false;
_isNode = true;
//#endif
exports.isBrowser = _isBrowser;
exports.isNode = _isNode;
exports.isWeb = !!(typeof location !== 'undefined' && location.protocol && /^https?:/.test(location.protocol));
exports.refs = {
XMLHttpRequest: global.XMLHttpRequest,
evaluate: typeof __eval !== 'undefined' ? __eval : null
};
exports.handler = {
onerror: null
};
var __noConflict = {
require: _global.require,
module: _global.module,
include: _global.include,
exports: _global.exports
};
function noConflict() {
for (var key in __noConflict) {
try {
_global[key] = __noConflict[key];
}
catch (error) { }
}
}
exports.noConflict = noConflict;
;
function __isObj(x) {
return x != null && typeof x === 'object' && x.constructor === Object;
}
if (_src_global === module.exports) {
// do nothing if
} else if (__isObj(_src_global) && __isObj(module.exports)) {
Object.assign(_src_global, module.exports);
} else {
_src_global = module.exports;
}
;
}());
// end:source ./ModuleSimplified.js
// source ./ModuleSimplified.js
var _src_utils_path;
(function () {
// ensure AMD is not active for the model, so that any UMD exports as commonjs
var define = null;
var exports = _src_utils_path != null ? _src_utils_path : {};
var module = { exports: exports };
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.path_combine = exports.path_isRelative = exports.path_resolveUrl = exports.path_toLocalFile = exports.path_win32Normalize = exports.path_normalize = exports.path_resolveCurrent = exports.path_resolveBase = exports.path_getExtension = exports.path_hasExtension = exports.path_getFile = exports.path_cdUp = exports.path_getDir = void 0;
var Config_1 = _src_Config;
var global_1 = _src_global;
var reg_hasProtocol = /^[\w\-]{2,}:\/\//i;
var reg_hasExt = /\.(?<extension>[\w]{1,})($|\?|#)/;
function path_getDir(path) {
return path.substring(0, path.lastIndexOf('/') + 1);
}
exports.path_getDir = path_getDir;
function path_cdUp(dirpath) {
return dirpath.replace(/[^\/]+\/?$/, '');
}
exports.path_cdUp = path_cdUp;
function path_getFile(path) {
path = path
.replace('file://', '')
.replace(/\\/g, '/')
.replace(/\?[^\n]+$/, '');
if (/^\/\w+:\/[^\/]/i.test(path)) {
// win32 drive
return path.substring(1);
}
return path;
}
exports.path_getFile = path_getFile;
function path_hasExtension(path) {
return reg_hasExt.test(path);
}
exports.path_hasExtension = path_hasExtension;
function path_getExtension(path) {
var _a;
var match = reg_hasExt.exec(path);
return (_a = match === null || match === void 0 ? void 0 : match.groups) === null || _a === void 0 ? void 0 : _a.extension;
}
exports.path_getExtension = path_getExtension;
function path_resolveBase() {
//#if (NODE)
if (global_1.isNode) {
return path_win32Normalize(process.cwd() + '/');
}
//#endif
var doc = global_1.document;
var origin = global_1.document.location.origin;
var path = Config_1.cfg.base || '/';
if (!Config_1.cfg.base && Config_1.cfg.lockedToFolder) {
path = doc.location.pathname;
if (/\.[a-z]{1,5}$/i.test(path)) {
path = path.replace(/[^\\/]+$/i, '');
}
}
return path_combine(origin, path, '/');
}
exports.path_resolveBase = path_resolveBase;
function path_resolveCurrent() {
if (global_1.document == null) {
return global_1.global.module == null ? '' : path_win32Normalize(process.cwd() + '/');
}
var scripts = global_1.document.getElementsByTagName('script');
var last = scripts[scripts.length - 1];
var url = (last && last.getAttribute('src')) || '';
if (url[0] === '/') {
return url;
}
var location = window.location.pathname.replace(/\/[^\/]+\.\w+$/, '');
if (location[location.length - 1] !== '/') {
location += '/';
}
return location + url;
}
exports.path_resolveCurrent = path_resolveCurrent;
function path_normalize(path) {
var path_ = path
.replace(/\\/g, '/')
// remove double slashes, but not near protocol
.replace(/([^:\/])\/{2,}/g, '$1/');
// use triple slashes by file protocol
if (/^file:\/\/[^\/]/.test(path_)) {
path_ = path_.replace('file://', 'file:///');
}
return path_;
}
exports.path_normalize = path_normalize;
function path_win32Normalize(path) {
path = path_normalize(path);
if (path.substring(0, 5) === 'file:') {
return path;
}
return path_combine('file:///', path);
}
exports.path_win32Normalize = path_win32Normalize;
function path_toLocalFile(path) {
//#if (NODE)
if (global_1.isNode) {
if (path.startsWith('file:')) {
path = path.replace(/^file:\/+/, '');
if (/^\w{1,3}:/.test(path) === false) {
path = '/' + path;
}
return path;
}
return path_combine(process.cwd(), path);
}
//#endif
return path;
}
exports.path_toLocalFile = path_toLocalFile;
function path_resolveUrl(url, parent) {
url = path_normalize(url);
if (reg_hasProtocol.test(url)) {
return Path.collapse(url);
}
if (url.substring(0, 2) === './') {
url = url.substring(2);
}
if (url[0] === '/' && parent != null && parent.base != null) {
url = path_combine(parent.base, url);
if (reg_hasProtocol.test(url)) {
return Path.collapse(url);
}
}
if (url[0] === '/' && Config_1.cfg.path && url.indexOf(Config_1.cfg.path) !== 0) {
url = path_combine(Config_1.cfg.path, url);
if (reg_hasProtocol.test(url)) {
return Path.collapse(url);
}
}
if (url[0] !== '/') {
if (parent != null && parent.location != null) {
url = path_combine(parent.location, url);
}
else {
var current = path_resolveCurrent();
var dir = path_getDir(current);
url = path_combine(dir, url);
}
}
if (url[0] !== '/' && reg_hasProtocol.test(url) === false) {
url = '/' + url;
}
return Path.collapse(url);
}
exports.path_resolveUrl = path_resolveUrl;
function path_isRelative(path) {
var c = path.charCodeAt(0);
switch (c) {
case 46: /* . */
return true;
case 47:
// /
return false;
}
return reg_hasProtocol.test(path) === false;
}
exports.path_isRelative = path_isRelative;
function path_combine() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
var out = '';
var imax = args.length;
var i = -1;
while (++i < imax) {
var x = args[i];
if (!x) {
continue;
}
x = path_normalize(x);
if (out === '') {
out = x;
continue;
}
if (out[out.length - 1] !== '/') {
out += '/';
}
if (x[0] === '/') {
x = x.substring(1);
}
out += x;
}
return out;
}
exports.path_combine = path_combine;
var Path;
(function (Path) {
var rgx_host = /^\w+:\/\/[^\/]+\//;
var rgx_subFolder = /\/?([^\/]+\/)\.\.\//;
var rgx_dottedFolder = /\/\.\.\//;
function collapse(url) {
var host = rgx_host.exec(url);
if (host) {
url = url.replace(host[0], '');
}
var path = url;
do {
url = path;
path = path.replace(rgx_subFolder, '/');
} while (path !== url);
path = path.replace(/\/\.\//g, '/');
if (host) {
return host[0] + path;
}
return path;
}
Path.collapse = collapse;
})(Path || (Path = {}));
;
function __isObj(x) {
return x != null && typeof x === 'object' && x.constructor === Object;
}
if (_src_utils_path === module.exports) {
// do nothing if
} else if (__isObj(_src_utils_path) && __isObj(module.exports)) {
Object.assign(_src_utils_path, module.exports);
} else {
_src_utils_path = module.exports;
}
;
}());
// end:source ./ModuleSimplified.js
// source ./ModuleSimplified.js
var _src_models_Type;
(function () {
// ensure AMD is not active for the model, so that any UMD exports as commonjs
var define = null;
var exports = _src_models_Type != null ? _src_models_Type : {};
var module = { exports: exports };
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ResourceType = void 0;
var ResourceType;
(function (ResourceType) {
ResourceType["Js"] = "js";
ResourceType["Css"] = "css";
ResourceType["Load"] = "load";
ResourceType["Ajax"] = "ajax";
ResourceType["Embed"] = "embed";
ResourceType["Lazy"] = "lazy";
ResourceType["Mask"] = "mask";
})(ResourceType = exports.ResourceType || (exports.ResourceType = {}));
;
function __isObj(x) {
return x != null && typeof x === 'object' && x.constructor === Object;
}
if (_src_models_Type === module.exports) {
// do nothing if
} else if (__isObj(_src_models_Type) && __isObj(module.exports)) {
Object.assign(_src_models_Type, module.exports);
} else {
_src_models_Type = module.exports;
}
;
}());
// end:source ./ModuleSimplified.js
// source ./ModuleSimplified.js
var _src_utils_array;
(function () {
// ensure AMD is not active for the model, so that any UMD exports as commonjs
var define = null;
var exports = _src_utils_array != null ? _src_utils_array : {};
var module = { exports: exports };
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.arr_indexOf = exports.arr_ensure = exports.arr_invoke = void 0;
function arr_invoke(arr, args, ctx) {
if (arr == null || arr instanceof Array === false) {
return;
}
for (var i = 0, length = arr.length; i < length; i++) {
if (typeof arr[i] !== 'function') {
continue;
}
if (args == null) {
arr[i].call(ctx);
}
else {
arr[i].apply(ctx, args);
}
}
}
exports.arr_invoke = arr_invoke;
function arr_ensure(obj, xpath) {
if (!xpath) {
return obj;
}
var arr = xpath.split('.'), imax = arr.length - 1, i = 0, key;
for (; i < imax; i++) {
key = arr[i];
obj = obj[key] || (obj[key] = {});
}
key = arr[imax];
return obj[key] || (obj[key] = []);
}
exports.arr_ensure = arr_ensure;
function arr_indexOf(arr, fn) {
if (arr == null)
return -1;
var imax = arr.length, i = -1;
while (++i < imax) {
if (fn(arr[i], i))
return i;
}
return -1;
}
exports.arr_indexOf = arr_indexOf;
;
function __isObj(x) {
return x != null && typeof x === 'object' && x.constructor === Object;
}
if (_src_utils_array === module.exports) {
// do nothing if
} else if (__isObj(_src_utils_array) && __isObj(module.exports)) {
Object.assign(_src_utils_array, module.exports);
} else {
_src_utils_array = module.exports;
}
;
}());
// end:source ./ModuleSimplified.js
// source ./ModuleSimplified.js
var _src_utils_fn;
(function () {
// ensure AMD is not active for the model, so that any UMD exports as commonjs
var define = null;
var exports = _src_utils_fn != null ? _src_utils_fn : {};
var module = { exports: exports };
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.fn_doNothing = exports.fn_proxy = void 0;
function fn_proxy(fn, ctx) {
return function () {
fn.apply(ctx, arguments);
};
}
exports.fn_proxy = fn_proxy;
function fn_doNothing(fn) {
typeof fn === 'function' && fn();
}
exports.fn_doNothing = fn_doNothing;
;
function __isObj(x) {
return x != null && typeof x === 'object' && x.constructor === Object;
}
if (_src_utils_fn === module.exports) {
// do nothing if
} else if (__isObj(_src_utils_fn) && __isObj(module.exports)) {
Object.assign(_src_utils_fn, module.exports);
} else {
_src_utils_fn = module.exports;
}
;
}());
// end:source ./ModuleSimplified.js
// source ./ModuleSimplified.js
var _src_Events;
(function () {
// ensure AMD is not active for the model, so that any UMD exports as commonjs
var define = null;
var exports = _src_Events != null ? _src_Events : {};
var module = { exports: exports };
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Events = void 0;
var array_1 = _src_utils_array;
var fn_1 = _src_utils_fn;
var readycollection = [];
var supports = typeof document !== 'undefined' && typeof window !== 'undefined';
function onReady() {
exports.Events.ready = fn_1.fn_doNothing;
if (readycollection.length === 0) {
return;
}
(0, array_1.arr_invoke)(readycollection);
readycollection.length = 0;
}
function bind() {
if ('onreadystatechange' in document) {
document.onreadystatechange = function () {
if (/complete|interactive/g.test(document.readyState) === false) {
return;
}
onReady();
};
}
else if (document.addEventListener) {
document.addEventListener('DOMContentLoaded', onReady);
}
else {
window.onload = onReady;
}
}
if (supports) {
bind();
}
exports.Events = {
ready: function (callback) {
if (supports === false) {
callback();
return;
}
readycollection.unshift(callback);
}
};
;
function __isObj(x) {
return x != null && typeof x === 'object' && x.constructor === Object;
}
if (_src_Events === module.exports) {
// do nothing if
} else if (__isObj(_src_Events) && __isObj(module.exports)) {
Object.assign(_src_Events, module.exports);
} else {
_src_Events = module.exports;
}
;
}());
// end:source ./ModuleSimplified.js
// source ./ModuleSimplified.js
var _src_Routing;
(function () {
// ensure AMD is not active for the model, so that any UMD exports as commonjs
var define = null;
var exports = _src_Routing != null ? _src_Routing : {};
var module = { exports: exports };
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.RoutesLib = exports.Routes = exports.RoutesCtor = void 0;
var path_1 = _src_utils_path;
var RoutesCtor = /** @class */ (function () {
function RoutesCtor() {
this.routes = {};
}
RoutesCtor.prototype.has = function (namespace) {
return this.routes[namespace] != null;
};
/**
* @param route {String} = Example: '.reference/libjs/{0}/{1}.js'
*/
RoutesCtor.prototype.register = function (namespace, route) {
if (namespace.endsWith('/*')) {
// like TS paths, '@foo/*': [ 'foo/ts/*' ]
var ns = namespace.replace('/*', '');
var path = typeof route === 'string' ? route : route[0];
this.register(ns, path.replace('*', '{0}'));
return;
}
if (typeof route === 'string') {
if ((0, path_1.path_isRelative)(route)) {
var location = (0, path_1.path_getDir)((0, path_1.path_resolveCurrent)());
if ((0, path_1.path_isRelative)(location)) {
location = '/' + location;
}
route = location + route;
}
if (route[0] === '/') {
var base = (0, path_1.path_resolveBase)();
route = (0, path_1.path_combine)(base, route);
}
}
this.routes[namespace] = route instanceof Array
? route
: route.split(/[\{\}]/g);
};
/**
* @param {String} template = Example: 'scroller/scroller.min?ui=black'
*/
RoutesCtor.prototype.resolve = function (namespace, template) {
var questionMark = template.indexOf('?'), aliasIndex = template.indexOf('::'), alias, query = '';
if (aliasIndex !== -1) {
alias = template.substring(aliasIndex + 2);
template = template.substring(0, aliasIndex);
}
if (questionMark !== -1) {
query = template.substring(questionMark);
template = template.substring(0, questionMark);
}
var slugs = template.split('/');
var route = this.routes[namespace];
if (route == null) {
return {
path: slugs.join('/') + query,
params: null,
alias: alias
};
}
var path = route[0];
for (var i = 1; i < route.length; i++) {
if (i % 2 === 0) {
path += route[i];
}
else {
/** if template provides less "breadcrumbs" than needed -
* take always the last one for failed peaces */
var index = parseFloat(route[i]);
if (index > slugs.length - 1) {
index = slugs.length - 1;
}
path += slugs[index];
if (i === route.length - 2) {
for (index++; index < slugs.length; index++) {
path += '/' + slugs[index];
}
}
}
}
return {
path: path + query,
params: null,
alias: alias
};
};
/**
* @arg includeData :
* 1. string - URL to resource
* 2. array - URLs to resources
* 3. object - {route: x} - route defines the route template to resource,
* it must be set before in include.cfg.
* example:
* include.cfg('net','scripts/net/{name}.js')
* include.js({net: 'downloader'}) // -> will load scipts/net/downloader.js
* @arg namespace - route in case of resource url template, or namespace in case of LazyModule
*
* @arg fn - callback function, which receives namespace|route, url to resource and ?id in case of not relative url
* @arg xpath - xpath string of a lazy object 'object.sub.and.othersub';
*/
RoutesCtor.prototype.each = function (type, includeData, fn, namespace, xpath) {
if (includeData == null) {
return;
}
if (type === 'lazy' && xpath == null) {
var obj = includeData;
for (var key_1 in obj) {
this.each(type, obj[key_1], fn, null, key_1);
}
return;
}
if (includeData instanceof Array) {
for (var i = 0; i < includeData.length; i++) {
this.each(type, includeData[i], fn, namespace, xpath);
}
return;
}
if (typeof includeData === 'object') {
for (var key in includeData) {
this.each(type, includeData[key], fn, key, xpath);
}
return;
}
if (typeof includeData === 'string') {
var x = this.resolve(namespace, includeData);
if (namespace) {
namespace += '.' + includeData;
}
fn(namespace, x, xpath);
return;
}
console.error('Include Package is invalid', arguments);
};
RoutesCtor.prototype.getRoutes = function () {
return this.routes;
};
RoutesCtor.prototype.parseAlias = function (route) {
var path = route.path, result = regexpAlias.exec(path);
return result && result[1];
};
return RoutesCtor;
}());
exports.RoutesCtor = RoutesCtor;
exports.Routes = new RoutesCtor();
function RoutesLib() {
return new RoutesCtor();
}
exports.RoutesLib = RoutesLib;
;
var regexpAlias = /([^\\\/]+)\.\w+$/;
;
function __isObj(x) {
return x != null && typeof x === 'object' && x.constructor === Object;
}
if (_src_Routing === module.exports) {
// do nothing if
} else if (__isObj(_src_Routing) && __isObj(module.exports)) {
Object.assign(_src_Routing, module.exports);
} else {
_src_Routing = module.exports;
}
;
}());
// end:source ./ModuleSimplified.js
// source ./ModuleSimplified.js
var _src_utils_object;
(function () {
// ensure AMD is not active for the model, so that any UMD exports as commonjs
var define = null;
var exports = _src_utils_object != null ? _src_utils_object : {};
var module = { exports: exports };
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.obj_setProperty = exports.obj_getProperty = exports.obj_inherit = void 0;
function obj_inherit(target /* source, ..*/) {
if (typeof target === 'function') {
target = target.prototype;
}
var i = 1, imax = arguments.length, source, key;
for (; i < imax; i++) {
source = typeof arguments[i] === 'function'
? arguments[i].prototype
: arguments[i];
for (key in source) {
target[key] = source[key];
}
}
return target;
}
exports.obj_inherit = obj_inherit;
;
function obj_getProperty(obj, property) {
var chain = property.split('.'), length = chain.length, i = 0;
for (; i < length; i++) {
if (obj == null)
return null;
obj = obj[chain[i]];
}
return obj;
}
exports.obj_getProperty = obj_getProperty;
;
function obj_setProperty(obj, property, value) {
var chain = property.split('.'), imax = chain.length - 1, i = -1, key;
while (++i < imax) {
key = chain[i];
if (obj[key] == null)
obj[key] = {};
obj = obj[key];
}
obj[chain[i]] = value;
}
exports.obj_setProperty = obj_setProperty;
;
;
function __isObj(x) {
return x != null && typeof x === 'object' && x.constructor === Object;
}
if (_src_utils_object === module.exports) {
// do nothing if
} else if (__isObj(_src_utils_object) && __isObj(module.exports)) {
Object.assign(_src_utils_object, module.exports);
} else {
_src_utils_object = module.exports;
}
;
}());
// end:source ./ModuleSimplified.js
// source ./ModuleSimplified.js
var _src_utils_tree;
(function () {
// ensure AMD is not active for the model, so that any UMD exports as commonjs
var define = null;
var exports = _src_utils_tree != null ? _src_utils_tree : {};
var module = { exports: exports };
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.tree_resolveUsage = void 0;
var object_1 = _src_utils_object;
var Routing_1 = _src_Routing;
function tree_resolveUsage(resource, usage, next) {
var use = [], imax = usage.length, i = -1, obj, path, name, index, parent;
while (++i < imax) {
name = path = usage[i];
index = path.indexOf('.');
if (index !== -1) {
name = path.substring(0, index);
path = path.substring(index + 1);
}
parent = use_resolveParent(name, resource.parent, resource);
if (parent == null)
return null;
if (parent.state !== 4) {
resource.state = 3;
parent.on(4, next, parent, 'push');
return null;
}
obj = parent.exports;
if (name !== path)
obj = (0, object_1.obj_getProperty)(obj, path);
// if DEBUG
(typeof obj === 'object' && obj == null)
&& console.warn('<include:use> Used resource has no exports', name, resource.url);
// endif
use[i] = obj;
}
return use;
}
exports.tree_resolveUsage = tree_resolveUsage;
;
function use_resolveParent(name, resource, initiator) {
if (resource == null) {
// if DEBUG
console.warn('<include> Usage Not Found:', name);
console.warn('- Ensure to have it included before with the correct alias');
console.warn('- Initiator Stacktrace:');
var arr = [], res = initiator;
while (res != null) {
arr.push(res.url);
res = res.parent;
}
console.warn(arr.join('\n'));
// endif
return null;
}
var includes = resource.includes, i = -1, imax = includes.length, include, exports, alias;
while (++i < imax) {
include = includes[i];
alias = include.route.alias || Routing_1.Routes.parseAlias(include.route);
if (alias === name)
return include.resource;
}
return use_resolveParent(name, resource.parent, initiator);
}
;
function __isObj(x) {
return x != null && typeof x === 'object' && x.constructor === Object;
}
if (_src_utils_tree === module.exports) {
// do nothing if
} else if (__isObj(_src_utils_tree) && __isObj(module.exports)) {
Object.assign(_src_utils_tree, module.exports);
} else {
_src_utils_tree = module.exports;
}
;
}());
// end:source ./ModuleSimplified.js
// source ./ModuleSimplified.js
var _src_models_State;
(function () {
// ensure AMD is not active for the model, so that any UMD exports as commonjs
var define = null;
var exports = _src_models_State != null ? _src_models_State : {};
var module = { exports: exports };
"use strict";
/**
* STATES:
* 0: Resource Created
* 1: Loading
* 2: Loaded - Evaluating
* 2.5: Paused - Evaluating paused
* 3: Evaluated - Childs Loading
* 4: Childs Loaded - Completed
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.State = void 0;
var State;
(function (State) {
State[State["Unknown"] = -1] = "Unknown";
State[State["Created"] = 0] = "Created";
State[State["Loading"] = 1] = "Loading";
State[State["Evaluating"] = 2] = "Evaluating";
State[State["Paused"] = 2.5] = "Paused";
State[State["Evaluated"] = 3] = "Evaluated";
State[State["AllCompleted"] = 4] = "AllCompleted";
})(State = exports.State || (exports.State = {}));
;
function __isObj(x) {
return x != null && typeof x === 'object' && x.constructor === Object;
}
if (_src_models_State === module.exports) {
// do nothing if
} else if (__isObj(_src_models_State) && __isObj(module.exports)) {
Object.assign(_src_models_State, module.exports);
} else {
_src_models_State = module.exports;
}
;
}());
// end:source ./ModuleSimplified.js
// source ./ModuleSimplified.js
var _src_utils_class_Dfr;
(function () {
// ensure AMD is not active for the model, so that any UMD exports as commonjs
var define = null;
var exports = _src_utils_class_Dfr != null ? _src_utils_class_Dfr : {};
var module = { exports: exports };
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.isDeferred = exports.class_Dfr = void 0;
var class_Dfr = /** @class */ (function () {
function class_Dfr() {
this._isAsync = true;
this._done = null;
this._fail = null;
this._always = null;
this._resolved = null;
this._rejected = null;
}
class_Dfr.prototype.defer = function () {
this._rejected = null;
this._resolved = null;
return this;
};
class_Dfr.prototype.isResolved = function () {
return this._resolved != null;
};
class_Dfr.prototype.isRejected = function () {
return this._rejected != null;
};
class_Dfr.prototype.isBusy = function () {
return this._resolved == null && this._rejected == null;
};
class_Dfr.prototype.resolve = function (value) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
var done = this._done, always = this._always;
this._resolved = arguments;
dfr_clearListeners(this);
arr_callOnce(done, this, arguments);
arr_callOnce(always, this, [this]);
return this;
};
class_Dfr.prototype.reject = function (error) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
var fail = this._fail, always = this._always;
this._rejected = arguments;
dfr_clearListeners(this);
arr_callOnce(fail, this, arguments);
arr_callOnce(always, this, [this]);
return this;
};
class_Dfr.prototype.then = function (filterSuccess, filterError) {
var dfr = new class_Dfr();
var done_ = filterSuccess, fail_ = filterError;
this
.done(delegate(dfr, 'resolve', done_))
.fail(delegate(dfr, 'reject', fail_));
return dfr;
};
class_Dfr.prototype.done = function (callback) {
if (this._rejected != null) {
return this;
}
return dfr_bind(this, this._resolved, this._done || (this._done = []), callback);
};
class_Dfr.prototype.fail = function (callback) {
if (this._resolved != null) {
return this;
}
return dfr_bind(this, this._rejected, this._fail || (this._fail = []), callback);
};
class_Dfr.prototype.always = function (callback) {
return dfr_bind(this, this._rejected || this._resolved, this._always || (this._always = []), callback);
};
class_Dfr.prototype.pipe = function (mix /* ..methods */) {
var dfr;
if (typeof mix === 'function') {
dfr = new class_Dfr();
var done_ = mix, fail_ = arguments.length > 1
? arguments[1]
: null;
this
.done(delegate(dfr, 'resolve', done_))
.fail(delegate(dfr, 'reject', fail_));
return dfr;
}
dfr = mix;
var imax = arguments.length, done = imax === 1, fail = imax === 1, i = 0, x;
while (++i < imax) {
x = arguments[i];
switch (x) {
case 'done':
done = true;
break;
case 'fail':
fail = true;
break;
default:
console.error('Unsupported pipe channel', arguments[i]);
break;
}
}
done && this.done(delegate(dfr, 'resolve'));
fail && this.fail(delegate(dfr, 'reject'));
function pipe(dfr, method) {
return function () {
dfr[method].apply(dfr, arguments);
};
}
return this;
};
class_Dfr.prototype.pipeCallback = function () {
var self = this;
return function (error) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
if (error != null) {
self.reject(error);
return;
}
self.resolve.apply(self, args);
};
};
class_Dfr.prototype.catch = function (cb) {
return this.fail(cb);
};
class_Dfr.prototype.finally = function (cb) {
return this.always(cb);
};
class_Dfr.resolve = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
var dfr = new class_Dfr();
return dfr.resolve.apply(dfr, args);
};
class_Dfr.reject = function (error) {
var dfr = new class_Dfr();
return dfr.reject(error);
};
return class_Dfr;
}());
exports.class_Dfr = class_Dfr;
;
// PRIVATE
function delegate(dfr, name, fn) {
return function () {
if (fn != null) {
var override = fn.apply(this, arguments);
if (override != null && override !== dfr) {
if (isDeferred(override)) {
override.then(delegate(dfr, 'resolve'), delegate(dfr, 'reject'));
return;
}
dfr[name](override);
return;
}
}
dfr[name].apply(dfr, arguments);
};
}
function dfr_bind(dfr, arguments_, listeners, callback) {
if (callback == null)
return dfr;
if (arguments_ != null)
callback.apply(dfr, arguments_);
else
listeners.push(callback);
return dfr;
}
function dfr_clearListeners(dfr) {
dfr._done = null;
dfr._fail = null;
dfr._always = null;
}
function arr_callOnce(arr, ctx, args) {
if (arr == null)
return;
var imax = arr.length, i = -1, fn;
while (++i < imax) {
fn = arr[i];
if (fn) {
fn.apply(ctx, args);
}
}
arr.length = 0;
}
function isDeferred(x) {
return x != null
&& typeof x === 'object'
&& typeof x.then === 'function';
}
exports.isDeferred = isDeferred;
;
function __isObj(x) {
return x != null && typeof x === 'object' && x.constructor === Object;
}
if (_src_utils_class_Dfr === module.exports) {
// do nothing if
} else if (__isObj(_src_utils_class_Dfr) && __isObj(module.exports)) {
Object.assign(_src_utils_class_Dfr, module.exports);
} else {
_src_utils_class_Dfr = module.exports;
}
;
}());
// end:source ./ModuleSimplified.js
// source ./ModuleSimplified.js
var _src_IncludeDeferred;
(function () {
// ensure AMD is not active for the model, so that any UMD exports as commonjs
var define = null;
var exports = _src_IncludeDeferred != null ? _src_IncludeDeferred : {};
var module = { exports: exports };
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.IncludeDeferred = void 0;
var Events_1 = _src_Events;
var Routing_1 = _src_Routing;
var Config_1 = _src_Config;
var global_1 = _src_global;
var tree_1 = _src_utils_tree;
var State_1 = _src_models_State;
var Type_1 = _src_models_Type;
var class_Dfr_1 = _src_utils_class_Dfr;
var IncludeDeferred = /** @class */ (function () {
function IncludeDeferred() {
this.callbacks = [];
this.state = State_1.State.Unknown;
this.response = null;
this.includes = [];
// Array: exports
this._use = null;
// Array: names
this._usage = null;
}
IncludeDeferred.prototype.on = function (state, callback, sender, mutator) {
if (sender === void 0) { sender = null; }
if (this === sender && this.state === State_1.State.Unknown) {
callback(this);
return this;
}
// this === sender in case when script loads additional
// resources and there are already parents listeners
if (mutator == null) {
mutator = (this.state < State_1.State.Evaluated || this === sender)
? 'unshift'
: 'push';
}
state <= this.state ? callback(this) : this.callbacks[mutator]({
state: state,
callback: callback
});
return this;
};
IncludeDeferred.prototype.hasPendingChildren = function () {
return false;
};
IncludeDeferred.prototype.readystatechanged = function (state) {
if (this.state < state) {
this.state = state;
}
if (this.state === State_1.State.Evaluated) {
if (this.hasPendingChildren()) {
return;
}
this.state = State_1.State.AllCompleted;
}
var currentState = this.state, cbs = this.callbacks, imax = cbs.length, i = -1;
if (imax === 0) {
return;
}
while (++i < imax) {
var x = cbs[i];
if (x == null || x.state > this.state) {
continue;
}
cbs.splice(i, 1);
imax--;
i--;
x.callback(this);
if (this.state < currentState) {
break;
}
}
};
/** assets loaded and DomContentLoaded */
IncludeDeferred.prototype.ready = function (callback) {
var _this = this;
return this.on(State_1.State.AllCompleted, function () {
Events_1.Events.ready(function () { return _this.resolve(callback); });
}, this);
};
/** assets loaded */
IncludeDeferred.prototype.done = function (callback) {
var _this = this;
return this.on(State_1.State.AllCompleted, function () { return _this.resolve(callback); }, this);
};
IncludeDeferred.prototype.then = function (onComplete, onError) {
this.done(onComplete);
};
IncludeDeferred.prototype.resolve = function (callback) {
return __awaiter(this, void 0, void 0, function () {
var includes, length, i, x, resource, route, type, _a, alias, responseObj, exp, response, before;
var _this = this;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
includes = this.includes;
length = includes == null
? 0
: includes.length;
if (!(length > 0)) return [3 /*break*/, 7];
i = 0;
_b.label = 1;
case 1:
if (!(i < length)) return [3 /*break*/, 7];
x = includes[i];
resource = x.resource;
route = x.route;
type = resource.type;
_a = type;
switch (_a) {
case 'js': return [3 /*break*/, 2];
case 'load': return [3 /*break*/, 2];
case 'ajax': return [3 /*break*/, 2];
case 'mask': return [3 /*break*/, 2];
case 'embed': return [3 /*break*/, 2];
}
return [3 /*break*/, 6];
case 2:
alias = route.alias || Routing_1.Routes.parseAlias(route);
responseObj = type === 'js'
? (this.response)
: (this.response[type] || (this.response[type] = {}));
if (!(alias != null)) return [3 /*break*/, 5];
exp = resource.exports;
if (Config_1.cfg.es6Exports && (exp != null && typeof exp === 'object')) {
exp = exp.default || exp;
}
if (!(0, class_Dfr_1.isDeferred)(exp)) return [3 /*break*/, 4];
return [4 /*yield*/, exp];
case 3:
exp = _b.sent();
_b.label = 4;
case 4:
responseObj[alias] = exp;
return [3 /*break*/, 6];
case 5:
console.warn('<includejs> Alias is undefined', resource);
return [3 /*break*/, 6];
case 6:
i++;
return [3 /*break*/, 1];
case 7:
response = this.response || global_1.emptyResponse;
if (this._use == null && this._usage != null) {
this._use = (0, tree_1.tree_resolveUsage)(this, this._usage, function () {
_this.state = State_1.State.AllCompleted;
_this.resolve(callback);
_this.readystatechanged(State_1.State.AllCompleted);
});
if (this.state < State_1.State.AllCompleted)
return [2 /*return*/];
}
if (this._use) {
callback.apply(null, [response].concat(this._use));
return [2 /*return*/];
}
before = null;
if (this.type === Type_1.ResourceType.Js) {
before = global.include;
global.include = this;
}
callback(response);
if (before != null && global.include === this) {
global.include = before;
}
return [2 /*return*/];
}
});
});
};
return IncludeDeferred;
}());
exports.IncludeDeferred = IncludeDeferred;
;
;
function __isObj(x) {
return x != null && typeof x === 'object' && x.constructor === Object;
}
if (_src_IncludeDeferred === module.exports) {
// do nothing if
} else if (__isObj(_src_IncludeDeferred) && __isObj(module.exports)) {
Object.assign(_src_IncludeDeferred, module.exports);
} else {
_src_IncludeDeferred = module.exports;
}
;
}());
// end:source ./ModuleSimplified.js
// source ./ModuleSimplified.js
var _src_Bin;
(function () {
// ensure AMD is not active for the model, so that any UMD exports as commonjs
var define = null;
var exports = _src_Bin != null ? _src_Bin : {};
var module = { exports: exports };
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.bin_tryReload = exports.bin_remove = exports.bin_removeDelegate = exports.bin = exports.Bin = void 0;
var path_1 = _src_utils_path;
var Config_1 = _src_Config;
exports.Bin = {
add: function (type, id, resource) {
exports.bin[type][normalize(id)] = resource;
},
find: function (url) {
var x = find(exports.bin, url);
return x && x.resource || null;
},
remove: function (url) {
while (true) {
// clear if has multiple types
var x = find(exports.bin, url);
if (x == null)
break;
exports.bin[x.type][x.id] = null;
}
},
get: function (type, url) {
var x = findInType(exports.bin, type, url);
if (x == null) {
x = find(exports.bin, url);
}
return x && x.resource || null;
}
};
exports.bin = {
js: {},
css: {},
load: {},
ajax: {},
embed: {},
mask: {}
};
function bin_removeDelegate(url) {
// use timeout as sys-file-change event is called twice
var timeout;
return function () {
if (timeout) {
clearTimeout(timeout);
}
timeout = setTimeout(function () {
bin_tryReload(url, function () {
Config_1.cfg.autoreload && Config_1.cfg.autoreload.fileChanged(url, 'include');
});
}, 150);
};
}
exports.bin_removeDelegate = bin_removeDelegate;
;
function bin_remove(url) {
var x = find(exports.bin, url);
if (x == null) {
console.warn('<