8000 GitHub - WebReflection/is-proxy: A `Proxy.isProxy(object)` utility.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

WebReflection/is-proxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@webreflection/is-proxy

A slightly different take at is-proxy in a 100% ESM friendly way, with a pony export, a way to avoid multiple patches plus a default global patch export.

The patch is immutable and 100% secured:

  • no overrides of the original code are possible
  • no interception of the proxies are possible via WeakSet prototype pollution (include this module on top of your list of modules though)
  • designed to be unobtrusive for the original global Proxy but extremly handy when needed

... when or why would I need this?

It's a great question and if you ask to TC39 delegates they'll answer that:

No, there can be no way for a Proxy to forced to be identified as a Proxy.

I would even agree if not for the fact everything I deal with daily is Proxy based and neither TC39 nor WHATWG is providing a way to deal with proxies when structuredClone is used, so that all we are left with is user-land code that MUST be able to intercept proxies before throwing errors happen, do something with these proxies and/or do something else (eventually) once received on the other side ... so that after years of impossibility of keeping things simple I've just decided it's about the time somebody provides a Proxy.isProxy(object) utility that can work with proxies created both in your code or in 3rd party code and WASM runtime, or literally anywhere else that's needed/desired to survive postMessage dance and whatnot around this topic.

// global patch
import '@webreflection/is-proxy';
// ... or ...
import Proxy from '@webreflection/is-proxy';

// ponyfill
import pony from '@webreflection/is-proxy';

const MyProxy = pony(Proxy);
// if it was already globally patched,
// you'll get the global proxy instead

The End.


ℹ️ This should not be needed ...

The day Symbol.toStructuredClone or any variant of it will be officially available is the day force-intercepting proxies will likely not be useful or desired anymore.

Until that day though, this module is here to help people building beyond ECMAScript and WHATWG standard capabilities so: keep hacking & keep having fun!

About

A `Proxy.isProxy(object)` utility.

Resources

Readme

License

Stars

Watchers

Forks

Packages

No packages published
0