rescript-lang / rescript-core

A drop-in standard library for ReScript. Intended to be familiar for JavaScript developers, easy to use, and be rich enough (without being bloated) so that you don't need to reach for anything else for typical ReScript development.
MIT License
162 stars 28 forks source link

Unsafe host-specific bindings #240

Open cometkim opened 3 months ago

cometkim commented 3 months ago

We have this in the Core module.

@val external window: Dom.window = "window"
@val external document: Dom.document = "document"
@val external globalThis: {..} = "globalThis"

(ref: https://github.com/rescript-association/rescript-core/blob/22642ea/src/RescriptCore.res#L47-L49)

However, using window and document is not safe because

I also think that the compiler and the Core should not promote specific hosts. window & document are part of the HTML and has nothing to do with Node.js. global is Node.js specific and has nothing to do with browsers.

IMO Core should delegate bindings to third-parties (e.g. rescript-webapi) and keep the representation in JavaScript itself.