first
This commit is contained in:
55
node_modules/core-js/internals/export.js
generated
vendored
Normal file
55
node_modules/core-js/internals/export.js
generated
vendored
Normal file
@ -0,0 +1,55 @@
|
||||
'use strict';
|
||||
var global = require('../internals/global');
|
||||
var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
|
||||
var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
|
||||
var defineBuiltIn = require('../internals/define-built-in');
|
||||
var defineGlobalProperty = require('../internals/define-global-property');
|
||||
var copyConstructorProperties = require('../internals/copy-constructor-properties');
|
||||
var isForced = require('../internals/is-forced');
|
||||
|
||||
/*
|
||||
options.target - name of the target object
|
||||
options.global - target is the global object
|
||||
options.stat - export as static methods of target
|
||||
options.proto - export as prototype methods of target
|
||||
options.real - real prototype method for the `pure` version
|
||||
options.forced - export even if the native feature is available
|
||||
options.bind - bind methods to the target, required for the `pure` version
|
||||
options.wrap - wrap constructors to preventing global pollution, required for the `pure` version
|
||||
options.unsafe - use the simple assignment of property instead of delete + defineProperty
|
||||
options.sham - add a flag to not completely full polyfills
|
||||
options.enumerable - export as enumerable property
|
||||
options.dontCallGetSet - prevent calling a getter on target
|
||||
options.name - the .name of the function if it does not match the key
|
||||
*/
|
||||
module.exports = function (options, source) {
|
||||
var TARGET = options.target;
|
||||
var GLOBAL = options.global;
|
||||
var STATIC = options.stat;
|
||||
var FORCED, target, key, targetProperty, sourceProperty, descriptor;
|
||||
if (GLOBAL) {
|
||||
target = global;
|
||||
} else if (STATIC) {
|
||||
target = global[TARGET] || defineGlobalProperty(TARGET, {});
|
||||
} else {
|
||||
target = (global[TARGET] || {}).prototype;
|
||||
}
|
||||
if (target) for (key in source) {
|
||||
sourceProperty = source[key];
|
||||
if (options.dontCallGetSet) {
|
||||
descriptor = getOwnPropertyDescriptor(target, key);
|
||||
targetProperty = descriptor && descriptor.value;
|
||||
} else targetProperty = target[key];
|
||||
FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
|
||||
// contained in target
|
||||
if (!FORCED && targetProperty !== undefined) {
|
||||
if (typeof sourceProperty == typeof targetProperty) continue;
|
||||
copyConstructorProperties(sourceProperty, targetProperty);
|
||||
}
|
||||
// add a flag to not completely full polyfills
|
||||
if (options.sham || (targetProperty && targetProperty.sham)) {
|
||||
createNonEnumerableProperty(sourceProperty, 'sham', true);
|
||||
}
|
||||
defineBuiltIn(target, key, sourceProperty, options);
|
||||
}
|
||||
};
|
Reference in New Issue
Block a user