babel-plugin-transform-proxy-compat
This babel plugin enables Proxy usage in IE 11. In order to make this work, we have to rewrite property lookups, assignments, property deletions, function invocations, in statements and for in loops to use functions in order to execute the correct proxy handlers.
Options
resolveProxyCompat
Object
, default to { module: 'proxy-compat' }
Accepts either:
-
module
property with astring
value when the proxy APIs should be retrieved from an external module.
// Config
{
module: 'my-proxy-compat';
}
// Result
import ProxyCompat from 'my-proxy-compat';
const callKey = ProxyCompat.callKey;
callKey(console, 'log', 'I am Compat');
-
global
property with astring
value when the proxy APIs should be retrieved from a global variable.
// Config
{
global: 'MyProxyCompat';
}
// Result
const callKey = MyProxyCompat.callKey;
callKey(console, 'log', 'I am Compat');
-
independent
property with astring
value when the proxy APIs should be retrieved from independent modules.
// Config
{
independent: 'my-proxy-compat';
}
// Result
import callKey from 'my-proxy-compat/callKey';
callKey(console, 'log', 'I am Compat');
Disabling compat transform with comment
It's possible to disable the proxy compat transform for a specific file using the /* proxy-compat-disable */
comment at the top of the file. This is an escape hatch for code that is performance sensitive and doesn't manipulate any Proxy. Make sure to use it extremely wisely.
/* proxy-compat-disable */
function palindrome(str) {
return (
str ===
str
.split('')
.reverse()
.join('')
);
}