UNPKG

jsmodern

Version:

An extension to existing JavaScript, influenced by other great languages such as Rust, Dart, Java, Golang, etc.

46 lines 1.49 kB
function toObject(name) { switch (name) { case 'array': return Array; case 'boolean': return Boolean; case 'date': return Date; case 'error': return Error; case 'function': return Function; case 'map': return Map; case 'number': return Number; case 'object': return Object; case 'promise': return Promise; case 'regExp': return RegExp; case 'set': return Set; case 'string': return String; case 'symbol': return Symbol; case 'weakMap': return WeakMap; case 'weakSet': return WeakSet; case 'iterator': default: { return 'undefined' === typeof (window) ? global : window; } } } export function extend(extensions) { const ext = extensions || {}; const extKeys = Object.keys(ext); if (!extKeys.length) return; const featuresList = extKeys.map((n) => { return { type: toObject(n), features: ext[n] }; }); for (const { type, features } of featuresList) { for (const { fn, label, isStatic } of features) { const ctr = type; const root = isStatic || !ctr.prototype ? ctr : ctr.prototype; if (label in root) continue; Object.defineProperty(root, label, { configurable: true, value: fn, writable: true, }); } } } //# sourceMappingURL=extend.js.map