Show More
Commit Description:
submission report
Commit Description:
submission report
References:
File last commit:
Show/Diff file:
Action:
node_modules/core-js/modules/_export.js
| 43 lines
| 1.6 KiB
| application/javascript
| JavascriptLexer
|
r789 | var global = require('./_global'); | |||
var core = require('./_core'); | ||||
var hide = require('./_hide'); | ||||
var redefine = require('./_redefine'); | ||||
var ctx = require('./_ctx'); | ||||
var PROTOTYPE = 'prototype'; | ||||
var $export = function (type, name, source) { | ||||
var IS_FORCED = type & $export.F; | ||||
var IS_GLOBAL = type & $export.G; | ||||
var IS_STATIC = type & $export.S; | ||||
var IS_PROTO = type & $export.P; | ||||
var IS_BIND = type & $export.B; | ||||
var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE]; | ||||
var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); | ||||
var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {}); | ||||
var key, own, out, exp; | ||||
if (IS_GLOBAL) source = name; | ||||
for (key in source) { | ||||
// contains in native | ||||
own = !IS_FORCED && target && target[key] !== undefined; | ||||
// export native or passed | ||||
out = (own ? target : source)[key]; | ||||
// bind timers to global for call from export context | ||||
exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; | ||||
// extend global | ||||
if (target) redefine(target, key, out, type & $export.U); | ||||
// export | ||||
if (exports[key] != out) hide(exports, key, exp); | ||||
if (IS_PROTO && expProto[key] != out) expProto[key] = out; | ||||
} | ||||
}; | ||||
global.core = core; | ||||
// type bitmap | ||||
$export.F = 1; // forced | ||||
$export.G = 2; // global | ||||
$export.S = 4; // static | ||||
$export.P = 8; // proto | ||||
$export.B = 16; // bind | ||||
$export.W = 32; // wrap | ||||
$export.U = 64; // safe | ||||
$export.R = 128; // real proto method for `library` | ||||
module.exports = $export; | ||||