@growing-web/esm-pack-core
Version:
esm pack build core.
93 lines (79 loc) • 2.3 kB
JavaScript
/*
object-assign
(c) Sindre Sorhus
@license MIT
*/
/* eslint-disable no-unused-vars */
var getOwnPropertySymbols = Object.getOwnPropertySymbols
var hasOwnProperty = Object.prototype.hasOwnProperty
var propIsEnumerable = Object.prototype.propertyIsEnumerable
function toObject(val) {
if (val === null || val === undefined) {
throw new TypeError('Object.assign cannot be called with null or undefined')
}
return Object(val)
}
function shouldUseNative() {
try {
if (!Object.assign) {
return false
}
// Detect buggy property enumeration order in older V8 versions.
// https://bugs.chromium.org/p/v8/issues/detail?id=4118
var test1 = new String('abc') // eslint-disable-line no-new-wrappers
test1[5] = 'de'
if (Object.getOwnPropertyNames(test1)[0] === '5') {
return false
}
// https://bugs.chromium.org/p/v8/issues/detail?id=3056
var test2 = {}
for (var i = 0; i < 10; i++) {
test2['_' + String.fromCharCode(i)] = i
}
var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
return test2[n]
})
if (order2.join('') !== '0123456789') {
return false
}
// https://bugs.chromium.org/p/v8/issues/detail?id=3056
var test3 = {}
'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
test3[letter] = letter
})
if (
Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst'
) {
return false
}
return true
} catch (err) {
// We don't expect any of the above to throw, but better to be safe.
return false
}
}
module.exports = shouldUseNative()
? Object.assign
: function (target, source) {
var from
var to = toObject(target)
var symbols
for (var s = 1; s < arguments.length; s++) {
from = Object(arguments[s])
for (var key in from) {
if (hasOwnProperty.call(from, key)) {
to[key] = from[key]
}
}
if (getOwnPropertySymbols) {
symbols = getOwnPropertySymbols(from)
for (var i = 0; i < symbols.length; i++) {
if (propIsEnumerable.call(from, symbols[i])) {
to[symbols[i]] = from[symbols[i]]
}
}
}
}
return to
}