jsdk-offical
Version:
JSDK is the most comprehensive TypeScript framework, like JDK.
217 lines (216 loc) • 7.4 kB
JavaScript
//# sourceURL=../dist/jscore.js
//JSDK 2.7.0 MIT
Promise.prototype.always = function (fn) {
return this.then((t1) => {
return fn.call(this, t1, true);
}).catch((t2) => {
return fn.call(this, t2, false);
});
};
var JS;
(function (JS) {
let core;
(function (core) {
let AS = Array.prototype.slice, newArray = (a, from) => {
return a == void 0 ? [] : AS.apply(a, [from == void 0 ? 0 : from]);
};
class Promises {
static create(fn, ...args) {
return new Promise((resolve, reject) => {
fn.apply({
resolve: resolve,
reject: reject
}, newArray(arguments, 1));
});
}
static createPlan(fn) {
return function () {
return Promises.create.apply(Promises, [fn].concat(Array.prototype.slice.apply(arguments)));
};
}
static newPlan(p, args, ctx) {
return () => { return p.apply(ctx || p, args); };
}
static resolvePlan(v) {
return () => { return Promise.resolve(v); };
}
static rejectPlan(v) {
return () => { return Promise.reject(v); };
}
static order(ps) {
var seq = Promise.resolve();
ps.forEach(plan => {
seq = seq.then(plan);
});
return seq;
}
static all(ps) {
var a = [];
ps.forEach(task => {
a.push(task());
});
return Promise.all(a);
}
static race(ps) {
var a = [];
ps.forEach(task => {
a.push(task());
});
return Promise.race(a);
}
}
core.Promises = Promises;
})(core = JS.core || (JS.core = {}));
})(JS || (JS = {}));
var Promises = JS.core.Promises;
var JS;
(function (JS) {
let core;
(function (core) {
let D, _head = () => { return D.querySelector('head'); }, _uncached = (u) => {
return `${u}${u.indexOf('?') < 0 ? '?' : '&'}_=${new Date().getTime()}`;
}, _loading = (k, a, b) => {
if (!a) {
k['onreadystatechange'] = () => {
if (k['readyState'] == 'loaded' || k['readyState'] == 'complete')
b();
};
k.onload = k.onerror = b;
}
};
if (self['HTMLElement'])
D = document;
class Loader {
static css(url, async = false, uncached) {
if (!url)
return Promise.reject(null);
return core.Promises.create(function () {
let k = D.createElement('link'), back = () => {
k.onload = k.onerror = k['onreadystatechange'] = null;
k = null;
this.resolve(url);
};
k.type = 'text/css';
k.rel = 'stylesheet';
k.charset = 'utf-8';
_loading(k, async, back);
k.href = uncached ? _uncached(url) : url;
_head().appendChild(k);
if (async)
back();
});
}
static js(url, async = false, uncached) {
if (!url)
return Promise.reject(null);
return core.Promises.create(function () {
let s = D.createElement('script'), back = () => {
s.onload = s.onerror = s['onreadystatechange'] = null;
s = null;
this.resolve(url);
};
s.type = 'text/javascript';
s.async = async;
_loading(s, async, back);
s.src = uncached ? _uncached(url) : url;
_head().appendChild(s);
if (async)
back();
});
}
}
core.Loader = Loader;
})(core = JS.core || (JS.core = {}));
})(JS || (JS = {}));
var Loader = JS.core.Loader;
var JS;
(function (JS) {
JS.version = '2.7.0';
function config(d, v) {
let l = arguments.length;
if (l == 0)
return _cfg;
if (!d)
return;
if (typeof d === 'string') {
if (l == 1) {
return _cfg[d];
}
else {
_cfg[d] = v;
return;
}
}
else {
for (let k in d) {
if (d.hasOwnProperty(k))
_cfg[k] = d[k];
}
}
}
JS.config = config;
let P = Promises, _cfg = {}, _ldd = {}, _ts = (u) => {
let c = JS.config('cachedImport');
if (c === true)
return u;
let s = '_=' + (c ? c : '' + Date.now());
return u.lastIndexOf('?') > 0 ? `${u}&${s}` : `${u}?${s}`;
}, _min = (u, t) => {
if (JS.config('minImport')) {
if (u.endsWith('.min.' + t))
return u;
if (u.endsWith('.' + t))
return u.slice(0, u.length - t.length - 1) + '.min.' + t;
}
else
return u;
}, _impLib = (v) => {
let a = v.endsWith('#async'), n = a ? v.slice(0, v.length - 6) : v, c = JS.config('libs')[n];
if (c) {
let ps = typeof c == 'string' ? [c] : c, tasks = [];
ps.forEach(path => {
if (path.startsWith('$')) {
tasks.push(_impLib(path.slice(1)));
}
else {
tasks.push(_impFile(path + (a ? '#async' : '')));
}
});
return P.newPlan(P.order, [tasks]);
}
else {
console.error('Not found the <' + n + '> library in JSDK settings.');
return P.resolvePlan(null);
}
}, _impFile = (s) => {
let u = s;
if (s.startsWith('!')) {
let jr = JS.config('jsdkRoot');
jr = jr ? jr : (JS.config('libRoot') + '/jsdk/' + JS.version);
u = jr + s.slice(1);
}
else if (s.startsWith('~')) {
u = JS.config('libRoot') + s.slice(1);
}
let us = u.split('#'), len = us.length, u0 = us[0], ayc = len > 1 && us[1] == 'async';
if (_ldd[u0])
return P.resolvePlan(null);
_ldd[u0] = 1;
if (u0.endsWith('.js')) {
return P.newPlan(Loader.js, [_ts(_min(u0, 'js')), ayc]);
}
else if (u0.endsWith('.css')) {
return P.newPlan(Loader.css, [_ts(_min(u0, 'css')), ayc]);
}
};
function imports(url) {
if (JS.config('closeImport'))
return Promise.resolve();
let us = typeof url === 'string' ? [url] : url, tasks = [];
us.forEach(uri => {
tasks.push(uri.startsWith('$') ? _impLib(uri.slice(1)) : _impFile(uri));
});
return P.order(tasks);
}
JS.imports = imports;
})(JS || (JS = {}));