electron-angular-boilerplate
Version:
A basic electron app using AngularJS and Skeleton CSS with ES6 support
47 lines (46 loc) • 1.57 kB
JavaScript
/* */
;
var $ = require("./$"),
$def = require("./$.def"),
$iter = require("./$.iter"),
BUGGY = $iter.BUGGY,
forOf = require("./$.for-of"),
assertInstance = require("./$.assert").inst,
INTERNAL = require("./$.uid").safe('internal');
module.exports = function(NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {
var Base = $.g[NAME],
C = Base,
ADDER = IS_MAP ? 'set' : 'add',
proto = C && C.prototype,
O = {};
if (!$.DESC || !$.isFunction(C) || !(IS_WEAK || !BUGGY && proto.forEach && proto.entries)) {
C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
require("./$.mix")(C.prototype, methods);
} else {
C = wrapper(function(target, iterable) {
assertInstance(target, C, NAME);
target[INTERNAL] = new Base;
if (iterable != undefined)
forOf(iterable, IS_MAP, target[ADDER], target);
});
$.each.call('add,clear,delete,forEach,get,has,set,keys,values,entries'.split(','), function(KEY) {
var chain = KEY == 'add' || KEY == 'set';
if (KEY in proto)
$.hide(C.prototype, KEY, function(a, b) {
var result = this[INTERNAL][KEY](a === 0 ? 0 : a, b);
return chain ? this : result;
});
});
if ('size' in proto)
$.setDesc(C.prototype, 'size', {get: function() {
return this[INTERNAL].size;
}});
}
require("./$.cof").set(C, NAME);
O[NAME] = C;
$def($def.G + $def.W + $def.F, O);
require("./$.species")(C);
if (!IS_WEAK)
common.setIter(C, NAME, IS_MAP);
return C;
};