-
-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
browser_only: don't convert to runtime errors on identifiers or function application #138
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
jchavarri
commented
Jun 14, 2024
davesnx
reviewed
Jun 17, 2024
davesnx
added a commit
to davesnx/opam-repository
that referenced
this pull request
Jul 23, 2024
CHANGES: ## 0.3.1 * Update quickjs dependency to 0.1.2 by @davesnx ## 0.3.0 * browser-ppx: process stritems by @jchavarri in ml-in-barcelona/server-reason-react#127 * Make React.Children.* APIs work as expected by @davesnx in ml-in-barcelona/server-reason-react#130 * Improve global crashes by @davesnx in ml-in-barcelona/server-reason-react#132 * Support assets in `mel.module` by @jchavarri in ml-in-barcelona/server-reason-react#134 * browser_only: don't convert to runtime errors on identifiers or function application by @jchavarri in ml-in-barcelona/server-reason-react#138 * Port `j` quoted strings interpolation from Melange by @jchavarri in ml-in-barcelona/server-reason-react#139 * mel.module: handle asset prefix by @jchavarri in ml-in-barcelona/server-reason-react#140 * Add browser_only transformation to useEffect automatically by @davesnx in ml-in-barcelona/server-reason-react#145 * Append doctype tag on html lowercase by @davesnx in ml-in-barcelona/server-reason-react#136 * Transform Pexp_function with browser_only by @davesnx in ml-in-barcelona/server-reason-react#146 ## 0.2.0 - Remove data-reactroot attr from ReactDOM.renderToString ml-in-barcelona/server-reason-react#129 by @pedrobslisboa - Make useUrl return the provided serverUrl ml-in-barcelona/server-reason-react#125 by @purefunctor - Replace Js.Re implemenation from `pcre` to quickjs b1a3e225cdad1298d705fbbd9618e15b0427ef0f by @davesnx - Remove Belt.Array.push ml-in-barcelona/server-reason-react#122 by @davesnx ## 0.1.0 Initial release of server-reason-react, includes: - Server-side rendering of ReasonReact components (renderToString, renderToStaticMarkup & renderToLwtStream) - `server-reason-react.browser_ppx` for skipping code from the server - `server-reason-react.melange_ppx` for enabling melange bindings and extensions which run on the server - `server-reason-react.belt` a native Belt implementation - `server-reason-react.js` a native Js implementation (unsafe and limited) - `server-reason-react.url` and `server-reason-react.url-native` a universal library with both implementations to work with URLs on the server and the client - `server-reason-react.promise` and `server-reason-react.promise-native` a universal library with both implementations to work with Promises on the server and the client. Based on https://github.com/aantron/promise - `server-reason-react.melange-fetch` a fork of melange-fetch which is a melange library to fetch data on the client via the Fetch API. This fork is to be able to compile it on the server (not running). - `server-reason-react.webapi` a fork of melange-webapi which is a melange library to work with the Web API on the client. This fork is to be able to compile it on the server (not running).
avsm
pushed a commit
to avsm/opam-repository
that referenced
this pull request
Sep 5, 2024
CHANGES: ## 0.3.1 * Update quickjs dependency to 0.1.2 by @davesnx ## 0.3.0 * browser-ppx: process stritems by @jchavarri in ml-in-barcelona/server-reason-react#127 * Make React.Children.* APIs work as expected by @davesnx in ml-in-barcelona/server-reason-react#130 * Improve global crashes by @davesnx in ml-in-barcelona/server-reason-react#132 * Support assets in `mel.module` by @jchavarri in ml-in-barcelona/server-reason-react#134 * browser_only: don't convert to runtime errors on identifiers or function application by @jchavarri in ml-in-barcelona/server-reason-react#138 * Port `j` quoted strings interpolation from Melange by @jchavarri in ml-in-barcelona/server-reason-react#139 * mel.module: handle asset prefix by @jchavarri in ml-in-barcelona/server-reason-react#140 * Add browser_only transformation to useEffect automatically by @davesnx in ml-in-barcelona/server-reason-react#145 * Append doctype tag on html lowercase by @davesnx in ml-in-barcelona/server-reason-react#136 * Transform Pexp_function with browser_only by @davesnx in ml-in-barcelona/server-reason-react#146 ## 0.2.0 - Remove data-reactroot attr from ReactDOM.renderToString ml-in-barcelona/server-reason-react#129 by @pedrobslisboa - Make useUrl return the provided serverUrl ml-in-barcelona/server-reason-react#125 by @purefunctor - Replace Js.Re implemenation from `pcre` to quickjs b1a3e225cdad1298d705fbbd9618e15b0427ef0f by @davesnx - Remove Belt.Array.push ml-in-barcelona/server-reason-react#122 by @davesnx ## 0.1.0 Initial release of server-reason-react, includes: - Server-side rendering of ReasonReact components (renderToString, renderToStaticMarkup & renderToLwtStream) - `server-reason-react.browser_ppx` for skipping code from the server - `server-reason-react.melange_ppx` for enabling melange bindings and extensions which run on the server - `server-reason-react.belt` a native Belt implementation - `server-reason-react.js` a native Js implementation (unsafe and limited) - `server-reason-react.url` and `server-reason-react.url-native` a universal library with both implementations to work with URLs on the server and the client - `server-reason-react.promise` and `server-reason-react.promise-native` a universal library with both implementations to work with Promises on the server and the client. Based on https://github.com/aantron/promise - `server-reason-react.melange-fetch` a fork of melange-fetch which is a melange library to fetch data on the client via the Fetch API. This fork is to be able to compile it on the server (not running). - `server-reason-react.webapi` a fork of melange-webapi which is a melange library to work with the Web API on the client. This fork is to be able to compile it on the server (not running).
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I had a case where I used
browser_only
in some event handler using a curried function, e.g.:onKeyDown=[%browser_only onKeyDown(~foo) ]
This code converted to plain
Runtime.fail_impossible_action_in_ssr
, crashing the server application at runtime.This PR removes some of the cases where
browser_only
can be used:so this extension can only be used to convert function definitions.
Users can still use
switch%platform
for identifiers and function applications, which prevents running on footguns like the one mentioned above.