00:03:41  * howdoiquit (Quit: Connection closed for inactivity)
00:30:44  * AtumTquit (Remote host closed the connection)
01:05:06  * jridgewellquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
01:09:06  <ljharb>can someone run eshost and tell me what `Function.prototype.toString.call(new Proxy(() => {}, {}))` does? i would expect it to be the same as `Function.prototype.toString.call(() => {})`, but it seems like it throws (due to failing the brand check)
01:09:17  <ljharb>also, the exception i get has "Proxy.toString" in its stack trace which seems problematic
01:12:32  <Domenic>stack traces, /shrug
01:13:10  <ljharb>lol, fair
01:13:18  <ljharb>it just means an isProxy function is even easier to build
01:13:20  <Bakkot>safari gives `function ProxyObject() { [native code] }`
01:13:26  <ljharb>lol
01:13:40  <Bakkot>brand check in F.p.toString should probably just be [[Call]] instead of [[ECMAScriptCode]]
01:13:54  <ljharb>if brand-checks aren't forwarded tho, then it basically means that an isProxy function is trivial to build for any built-in type, and i was under the impression it was really important that that not be the case
01:13:56  <Bakkot>proxys copy over call and construct, but not [[ECMAScriptCode]]
01:14:08  <ljharb>right, i agree it should be [[Call]] in that particular method
01:14:21  <Bakkot>though that might then require further IsHTMLDDA special casing
01:14:22  <ljharb>(or, it should copy over that slot too)
01:15:31  <Bakkot>isArray doesn't forward brand checks but special cases array proxies
01:15:40  <Bakkot>but Map and Set brand checks will fail on proxies, yeah
01:17:15  <Bakkot>this came up with private fields too, and the decision was that proxies should not forward private fields. so it will be possible to make new types which are not proxyable.
01:17:17  <Bakkot>apparently this is OK?
01:17:54  <bterlson>most things will still work on the proxy won't it?
01:18:07  <Bakkot>define "most things"?
01:18:24  <Bakkot>things which perform brand checks, including all private field accesses, will not. other things will.
01:19:47  <bterlson>this.#x still works doesn't it?
01:21:28  <Bakkot>no.
01:22:21  <bterlson>oh right, this is still proxied
01:22:24  <bterlson>gah
01:22:28  <bterlson>delete proxies
01:22:36  <ljharb>Bakkot: very builtin has internal slots tho.
01:22:37  <ljharb>*every
01:23:03  <ljharb>so if you want to proxy something and make it invisible, you have to also explicitly hide away every possibly brand-checking method
01:23:14  <Bakkot>s/'something'/a builtin/, sure
01:23:32  <ljharb>well, a builtin or something with private fields
01:23:36  <Bakkot>indeed.
01:23:55  <Bakkot>apparently this is ok!
01:24:45  <Bakkot>it actually makes a lot of sense for private fields if you think about the WeakMap model.
01:25:11  <ljharb>i'm not denying it makes sense
01:25:19  <ljharb>but it seems like it makes proxies mostly useless
01:25:35  <Bakkot>eh, I don't think the majority use case is proxying builtins.
01:25:46  <ljharb>what's the majority use case of proxies?
01:25:51  <Bakkot>though I do think it would be nice to be able to transparently proxy functions.
01:25:52  <bterlson>Bakkot: library idea: proxy that unwraps the receiver for method invocations on it
01:26:01  <ljharb>(also, is any use case of Proxy "majority" tho)
01:26:29  <Bakkot>whatever markm is doing is the majority use case, and he doesn't seem to mind the above semantics
01:26:30  <Bakkot>so!
01:26:32  <ljharb>lol
01:27:03  <ljharb>lol so basically this means my `is-callable` package, to make it return true for a Proxy that has `[[Call]]`, has to also have an `isProxy` function, so that when `typeof` is function i can early-return true. sigh
01:27:50  <Bakkot>your package also doesn't handle document.all correctly, looks like
01:28:32  <ljharb>surely not, nothing i have handles it
01:28:49  <ljharb>but ofc now that it's in the spec, and not just some browser whackery, i have to actually handle it all over the place
01:29:00  <Bakkot>well, it's only partly in the spec...
01:29:06  <ljharb>ᕕ( ᐛ )ᕗ whee
01:29:13  <Bakkot>the spec doesn't make any mention of it being callable, but it is!
01:30:03  <Bakkot>it is just some browser whackery though. non-browser hosts are normatively prohibted from making it.
01:30:36  <Bakkot>well, actually, not exactly normatively.
01:30:41  <Bakkot>it's a "should" in a NOTE.
01:30:47  <ljharb>depending on your interpretation of annex b :-p
01:47:34  * bradleymeckjoined
01:47:44  * bradleymeckquit (Client Quit)
02:54:27  * caridyquit (Read error: Connection reset by peer)
02:55:01  * caridyjoined
03:43:34  * ademaquit (Ping timeout: 264 seconds)
03:47:53  * ademajoined
04:14:48  * jmdyck1quit (Quit: Leaving.)
05:02:05  * STRMLquit (*.net *.split)
05:02:06  * wha121[m]quit (*.net *.split)
05:05:02  * samthquit (*.net *.split)
05:05:02  * mathiasbynensquit (*.net *.split)
05:05:02  * dhermanquit (*.net *.split)
05:05:02  * maggiepintquit (*.net *.split)
05:05:02  * akleinquit (*.net *.split)
05:05:02  * Domenicquit (*.net *.split)
05:05:02  * akleinjoined
05:05:02  * mathiasbynensjoined
05:05:02  * Domenicjoined
05:05:02  * wha121[m]joined
05:05:02  * maggiepintjoined
05:05:02  * samthjoined
05:05:02  * dhermanjoined
05:05:02  * STRMLjoined
05:05:11  * bterlsontopic: ECMA TC39 | https://github.com/tc39 | +v's are your friendly neighborhood delegates! | Logs: http://logs.libuv.org/tc39/latest
05:26:40  * gskachkovquit (Quit: gskachkov)
05:27:05  <Domenic>No. I have the one true majority use case for proxies.
05:27:10  <Domenic>Let me show you my codes.
05:28:09  <Domenic>https://github.com/jsdom/webidl2js/blob/ccae0c1f39195b395c1891e7f45b3f3c4a1be8cd/lib/constructs/interface.js#L425
05:28:34  <Domenic>https://github.com/jsdom/webidl2js/blob/ccae0c1f39195b395c1891e7f45b3f3c4a1be8cd/test/__snapshots__/test.js.snap#L1025
05:28:46  <ljharb>Domenic: is that basically to emulate "weird" DOM behavior?
05:28:51  <Domenic>yes :D
05:28:54  <ljharb>lol
05:28:57  <Domenic>It's so amazing
05:28:58  <ljharb>fair enough
05:29:01  <Domenic>TimothyGu is my hero
05:29:17  <Domenic>(he submitted the PR to implement this)
05:29:22  <ljharb>jsdom isn't meant to run in browsers tho, right?
05:29:40  <ljharb>so your proxies are purely adding functionality, instead of trying to encapsulate/hide it?
05:30:14  <ljharb>that sounds like a nice way to avoid all this internal slot stuff :-p
05:31:51  <ljharb>hm, i guess you need that if you want to provide the data attr stuff, too
06:08:25  * howdoijoined
06:11:09  <Domenic>Yes, you need it for many things
06:11:18  <Domenic>And jsdom does run in browsers, although I'm not sure I'd recommend it
06:14:21  <ljharb>gotcha
07:14:31  * gskachkovjoined
08:51:22  * akleinquit (Ping timeout: 276 seconds)
08:51:22  * jeffmoquit (Ping timeout: 276 seconds)
08:51:46  * jeffmojoined
08:51:48  * akleinjoined
10:25:09  * mylesborinsquit (Quit: farewell for now)
10:25:39  * mylesborinsjoined
11:44:31  * jmdyckjoined
12:03:28  * rwaldronquit (Remote host closed the connection)
12:03:28  * leobalterquit (Remote host closed the connection)
12:05:29  * leobalterjoined
12:12:52  * dilijevquit (Ping timeout: 276 seconds)
12:12:52  * ljharbquit (Ping timeout: 276 seconds)
12:14:41  * dilijevjoined
12:14:59  * ljharbjoined
13:00:58  * gskachkovquit (Quit: gskachkov)
13:01:35  * gskachkovjoined
13:01:41  * gskachkovquit (Client Quit)
13:04:53  * gibson042joined
13:05:59  * gskachkovjoined
13:13:41  * howdoiquit (Quit: Connection closed for inactivity)
14:08:01  * gskachkovquit (Quit: gskachkov)
14:09:31  * AtumTjoined
14:10:42  * gskachkovjoined
14:33:11  * gskachkovquit (Quit: gskachkov)
14:33:55  * gskachkovjoined
14:38:23  * gskachkovquit (Ping timeout: 248 seconds)
14:58:41  * rwaldronjoined
15:39:29  * gskachkovjoined
16:01:03  * Fishrock123joined
17:02:58  * jridgewelljoined
17:20:47  * cloudshujoined
17:32:48  * Fishrock123quit (Remote host closed the connection)
17:36:58  * jridgewellquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
17:38:36  * Fishrock123joined
17:49:29  * jridgewelljoined
18:18:28  * gsathyaquit (Changing host)
18:18:29  * gsathyajoined
18:48:31  * AtumT_joined
18:51:26  * AtumTquit (Ping timeout: 255 seconds)
19:00:08  * Fishrock123quit (Remote host closed the connection)
19:01:15  * AtumTjoined
19:01:23  * caridyquit (Read error: Connection reset by peer)
19:01:46  * caridyjoined
19:02:20  * AtumT_quit (Ping timeout: 240 seconds)
19:14:36  * Fishrock123joined
19:50:17  * cloudshuquit (Quit: Connection closed for inactivity)
20:00:00  * jridgewellquit (Read error: Connection reset by peer)
20:30:23  * Fishrock123quit (Remote host closed the connection)
20:35:01  * Fishrock123joined
21:31:34  * bradleymeckjoined
22:42:04  * bradleymeckquit (Quit: bradleymeck)
22:51:54  * Fishrock123quit (Remote host closed the connection)
23:00:42  * Fishrock123joined
23:39:25  * bradleymeckjoined