polyn
Version:
polyn is a collection of Node and browser compatible JavaScript utilities that focus on polymorphism
42 lines (35 loc) • 1.24 kB
JavaScript
(function () {
'use strict';
var warn = function (err) {
var log = console.warn || console.log;
log(err.message, err);
return err;
};
if (!window) {
return warn(new Error('[POLYN] Unable to define module: UNKNOWN RUNTIME'));
}
window.polyn = window.polyn || {}
window.polyn.addModule = function addModule(name, dependencies, Factory) {
var i, singleton;
if (Array.isArray(dependencies)) {
for (i = 0; i < dependencies.length; i += 1) {
if (!polyn[dependencies[i]]) {
return warn(new Error('[POLYN] Unable to define module: LOADED OUT OF ORDER'));
}
}
}
singleton = new Factory(polyn);
Object.defineProperty(polyn, name, {
get: function () {
return singleton;
},
set: function () {
return warn(new Error('[POLYN] polyn modules are read-only'));
},
// this property should show up when this object's property names are enumerated
enumerable: true,
// this property may not be deleted
configurable: false
});
}
}());