j2s/lib/core.ts

68 lines
2.1 KiB
TypeScript

var env: Environment;
// @ts-ignore
return (_env: Environment) => {
env = _env;
env.global.assert = (cond, msg) => {
try {
if (!cond()) throw 'condition not satisfied';
log('Passed ' + msg);
return true;
}
catch (e) {
log('Failed ' + msg + ' because of: ' + e);
return false;
}
}
try {
run('values/object');
run('values/symbol');
run('values/function');
run('values/errors');
run('values/string');
run('values/number');
run('values/boolean');
run('values/array');
env.internals.special(Object, Function, Error, Array);
env.global.setTimeout = (func, delay, ...args) => {
if (typeof func !== 'function') throw new TypeError("func must be a function.");
delay = (delay ?? 0) - 0;
return env.internals.setTimeout(() => func(...args), delay)
};
env.global.setInterval = (func, delay, ...args) => {
if (typeof func !== 'function') throw new TypeError("func must be a function.");
delay = (delay ?? 0) - 0;
return env.internals.setInterval(() => func(...args), delay)
};
env.global.clearTimeout = (id) => {
id = id | 0;
env.internals.clearTimeout(id);
};
env.global.clearInterval = (id) => {
id = id | 0;
env.internals.clearInterval(id);
};
run('promise');
run('map');
run('set');
run('regex');
run('require');
log('Loaded polyfills!');
}
catch (e: any) {
if (!_env.captureErr) throw e;
var err = 'Uncaught error while loading polyfills: ';
if (typeof Error !== 'undefined' && e instanceof Error && e.toString !== {}.toString) err += e;
else if ('message' in e) {
if ('name' in e) err += e.name + ": " + e.message;
else err += 'Error: ' + e.message;
}
else err += e;
log(e);
}
};