21:09
<ljharb>
i had no idea there was a way to expose an array proxy, that makes me very happy :-p
21:29
<bakkot>
it reveals proxies in general, not just arrays
21:30
<bakkot>
proxies for anything non-callable and non-exotic (except array), anyway
21:31
<bakkot>
I guess not just "non-exotic", but specifically "no internal slots, and the prototype is object.prototype", plus a few other types
23:45
<ljharb>
hm
23:46
<ljharb>
maybe i'm not clear on how structured clone works
23:46
<ljharb>
atm, i can tell you if any x is a proxy for a builtin as long as you claim it's a specific one, modulo function, array, and error et al
23:47
<ljharb>
to determine that a proxy for anything else is a proxy is trickier and rests on implementation details of the handlers and/or the original function/methods
23:52
<bakkot>
yeah except also structuredClone(new Proxy({}, {})) throws
23:53
<bakkot>
unlike structuredClone({})
23:53
<bakkot>
it was... not written by people who care about preserving proxy transparency, is my impression
23:58
<shu>
well, i daresay the cardinality of the set of people who care about preserving proxy transparency is very small
23:58
<bakkot>
dunno, we sure got a lot of annoyed comments on private fields
23:58
<bakkot>
and that wasn't even making them any less transparent than they already are
23:58
<shu>
i do not think they were about proxy transparency
23:59
<shu>
i still think they all came down to hating #, and there was a lot of post-hoc rationalization for why they were bad even from first principles
23:59
<bakkot>
rather than "transparency", then, let us say that it was about the ability to wrap a proxy around a thing and have it still work like the original thing
23:59
<bakkot>
genuinely, no, there was a completely separate concern about proxies