14:50
<annevk>
Domenic: hey, you could make the ARIA thing right? I could join an hour in, potentially
15:22
<Domenic>
annevk: I'm not sure it's really a good use of time...
15:24
<annevk>
Yeah... And they didn't reply to our comments about that either ☹️
17:50
<DerekNonGeneric>

Regardless, an implementation of a given set of IDL fragments needs to be able to recognize all platform objects that are created by the implementation. https://webidl.spec.whatwg.org/#idl-objects

w/o having read the whole Web IDL spec to find out why does anyone know what the reason for this is?

also, would be curious to know if the new IDL Object that we just released (DOMException) in Node.js v17.0.0 would be considered a real "platform object" or if not, how we should classify these new objects that are to be backed by the IDL type system if they aren't already?

17:52
<Domenic>
DerekNonGeneric: an implementation needs to be able to recognize platform objects so that it can properly implement the "is a platform object" checks in the Web IDL spec and elsewhere.
17:53
<Domenic>
I suspect that DOMException should be considered as such in Node.js, e.g. for structuredClone().
17:55
<DerekNonGeneric>
yeah, so we will likely need to write up something like isPlatformObject(), but whether or not we should expose it is another story
19:13
<Andreu Botella (he/they)>
I'm not sure how Node does things, but I've been looking into implementing serializable platform objects in Deno, and V8 requires you to have at least one internal field before it lets you define a custom serialization.
19:13
<Andreu Botella (he/they)>
FTR
19:26
<DerekNonGeneric>
Andreu Botella (he/they): tbh, i was not the one who originally contributed that error so it's hard for me to know what alternatives were considered to shipping that, but think that we needed to work around the problem we had w/ the AbortController error (AbortError) not existing..
19:27
<DerekNonGeneric>
When abort() is called, the fetch() promise rejects with an Error of type DOMException, with name AbortError https://developer.mozilla.org/en-US/docs/Web/API/AbortController/abort
19:31
<DerekNonGeneric>
still a bit surprised about what we shipped for structuredClone() and am not sure how more people didn't asked more questions about that lol
19:34
<DerekNonGeneric>
we will probably need to use isPlatformObject() to detect whether the deserialized object we are outputting is all correct when implementing the next iteration (hopefully standardized) version of structuredClone() if the discuss i was reading made any sense https://github.com/tc39/ecma262/issues/2555
19:39
<DerekNonGeneric>
I'm not sure how Node does things, but I've been looking into implementing serializable platform objects in Deno, and V8 requires you to have at least one internal field before it lets you define a custom serialization.
um, not sure about whether or not we have plans to make any more "platform objects", but my goal is really just to ensure that the couple we have so far are actually implemented correctly since atm i have very low confidence that those aren't potemkin villagers
19:40
<Andreu Botella (he/they)>
The thing with V8's implementation of structured clone is that the delegate methods that let you override (de)serialization are only called for objects with internal slots
19:40
<Andreu Botella (he/they)>
so effectively V8 already implements its own kind of platform object determination
19:40
<Andreu Botella (he/they)>
see this bug Luca Casonato filed: https://bugs.chromium.org/p/v8/issues/detail?id=11927
19:48
<DerekNonGeneric>
ooh, nice, you are sort of making the case for adding more of these in that issue, but definitely going to be having users running code in some kind of hybrid franken-environment
22:01
<DerekNonGeneric>
Andreu Botella (he/they), Luca Casonato : not too familiar w/ the problem you all are facing, but maybe we can leverage isV8IntrinsicIdentifier to at least ensure that those bases are covered and then gradually append the Web IDL type identifiers as we make use of https://babeljs.io/docs/en/babel-types#v8intrinsicidentifier
22:19
<DerekNonGeneric>
so, it might just be a union of the identifiers supplied by that predicate and then some other predicate that includes these identifiers listed in Web IDL (?) https://webidl.spec.whatwg.org/#idl-types
22:41
<DerekNonGeneric>
we might still be missing guidance from standards about what should be censored from the objects passed to structuredClone, but this would somewhat be like having to roll your own and at least for JS-types, the algorithm should probably parseV8Intrinsic https://github.com/babel/babel/blob/HEAD/packages/babel-parser/src/plugins/v8intrinsic.js#L7
23:08
<DerekNonGeneric>
anyways, isPlatformObjectwould probably be a strange name for such a predicate from the perspective of Node.js developers.. i wonder if a more appropriate name would be isWebPlatformObject so that we can distinguish btwx web standards and the objects that are unique to our platform (things like process and require()), which were in-house back-end developments