Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Object#fromEntries polyfill (with 6 lines of code) #36426

Merged
24 changes: 24 additions & 0 deletions packages/next-polyfill-module/src/index.js
Expand Up @@ -94,3 +94,27 @@ if (!Promise.prototype.finally) {
)
}
}

/**
* Available in:
* Edge: never
* Firefox: 63
* Chrome: 73
* Safari: 12.1
*
* https://caniuse.com/mdn-javascript_builtins_object_fromentries
*/
// Modified from https://github.com/tc39/proposal-object-from-entries/blob/main/polyfill.js
// Modified from https://github.com/feross/fromentries/blob/29b52a850bb3a47c390937631c2638edf3443942/index.js
// License MIT
if (!Object.fromEntries) {
Object.fromEntries = function (iterable) {
// Assume the input is either an iterable object or an array-like object
return Array.from(iterable).reduce(function (obj, entry) {
// https://github.com/tc39/proposal-object-from-entries/blob/e4837799c1586a07c101570b27997497e5290c22/polyfill.js#L9-L10
// contract is that entry has "0" and "1" keys, not that it is an array or iterable.
obj[entry[0]] = entry[1]
return obj
}, {})
}
}