| 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 |