diff --git a/compilers/package-lock.json b/compilers/package-lock.json index c0364fb4d..758506298 100644 --- a/compilers/package-lock.json +++ b/compilers/package-lock.json @@ -10,6 +10,7 @@ "license": "MIT", "dependencies": { "rescript-1000": "npm:rescript@10.0.0", + "rescript-1010": "npm:rescript@10.1.0-rc.4", "rescript-820": "npm:bs-platform@8.2.0", "rescript-902": "npm:bs-platform@9.0.2", "rescript-912": "npm:rescript@9.1.2" @@ -28,6 +29,19 @@ "rescript": "rescript" } }, + "node_modules/rescript-1010": { + "name": "rescript", + "version": "10.1.0-rc.4", + "resolved": "https://registry.npmjs.org/rescript/-/rescript-10.1.0-rc.4.tgz", + "integrity": "sha512-xvUfEKBs1U/WN1mFX8YipvNj7KUChX/ULvyb1TP2wSR2qgNrcRAy+dW7jc2F2tv0Qbrc47HEZi/1Ni0z3nVvmw==", + "hasInstallScript": true, + "bin": { + "bsc": "bsc", + "bsrefmt": "bsrefmt", + "bstracing": "lib/bstracing", + "rescript": "rescript" + } + }, "node_modules/rescript-820": { "name": "bs-platform", "version": "8.2.0", @@ -60,6 +74,11 @@ "resolved": "https://registry.npmjs.org/rescript/-/rescript-10.0.0.tgz", "integrity": "sha512-LhNg/4+0j8NvoFeslgAeYLlzUwkq6kR6l6v8BnZ61VDTxopK2l96uT1lq5lv1aMxzMDynvE2qnX0zalre+6XxA==" }, + "rescript-1010": { + "version": "npm:rescript@10.1.0-rc.4", + "resolved": "https://registry.npmjs.org/rescript/-/rescript-10.1.0-rc.4.tgz", + "integrity": "sha512-xvUfEKBs1U/WN1mFX8YipvNj7KUChX/ULvyb1TP2wSR2qgNrcRAy+dW7jc2F2tv0Qbrc47HEZi/1Ni0z3nVvmw==" + }, "rescript-820": { "version": "npm:bs-platform@8.2.0", "resolved": "https://registry.npmjs.org/bs-platform/-/bs-platform-8.2.0.tgz", diff --git a/compilers/package.json b/compilers/package.json index 9ed24d9b3..5dc863069 100644 --- a/compilers/package.json +++ b/compilers/package.json @@ -8,6 +8,7 @@ "rescript-820": "npm:bs-platform@8.2.0", "rescript-902": "npm:bs-platform@9.0.2", "rescript-912": "npm:rescript@9.1.2", - "rescript-1000": "npm:rescript@10.0.0" + "rescript-1000": "npm:rescript@10.0.0", + "rescript-1010": "npm:rescript@10.1.0-rc.4" } } diff --git a/package-lock.json b/package-lock.json index 7c6b01594..626a03cda 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,7 +41,7 @@ "esbuild-loader": "^2.13.1", "postcss-cli": "^8.3.0", "reanalyze": "^2.16.0", - "rescript": "9.1.2", + "rescript": "^10.1.0-rc.4", "tailwindcss": "^2.1.4" }, "engines": { @@ -7319,8 +7319,9 @@ } }, "node_modules/rescript": { - "version": "9.1.2", - "integrity": "sha512-4wHvTDv3nyYnAPJHcg1RGG8z7u3HDiBf6RN3P/dITDv859Qo35aKOzJWQtfBzbAs0EKNafLqei3TnUqiAv6BwQ==", + "version": "10.1.0-rc.4", + "resolved": "https://registry.npmjs.org/rescript/-/rescript-10.1.0-rc.4.tgz", + "integrity": "sha512-xvUfEKBs1U/WN1mFX8YipvNj7KUChX/ULvyb1TP2wSR2qgNrcRAy+dW7jc2F2tv0Qbrc47HEZi/1Ni0z3nVvmw==", "dev": true, "hasInstallScript": true, "bin": { @@ -14699,8 +14700,9 @@ "dev": true }, "rescript": { - "version": "9.1.2", - "integrity": "sha512-4wHvTDv3nyYnAPJHcg1RGG8z7u3HDiBf6RN3P/dITDv859Qo35aKOzJWQtfBzbAs0EKNafLqei3TnUqiAv6BwQ==", + "version": "10.1.0-rc.4", + "resolved": "https://registry.npmjs.org/rescript/-/rescript-10.1.0-rc.4.tgz", + "integrity": "sha512-xvUfEKBs1U/WN1mFX8YipvNj7KUChX/ULvyb1TP2wSR2qgNrcRAy+dW7jc2F2tv0Qbrc47HEZi/1Ni0z3nVvmw==", "dev": true }, "resolve": { diff --git a/package.json b/package.json index f003b4d59..d141b21ec 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ }, "scripts": { "dev": "next", - "build": "rescript && npm run update-index && next build", + "build": "rescript clean -with-deps && rescript && npm run update-index && next build", "test": "node scripts/test-examples.mjs && node scripts/test-hrefs.mjs", "reanalyze": "reanalyze -all-cmt .", "update-index": "node scripts/extract-indices.mjs && node scripts/extract-tocs.mjs && node scripts/extract-syntax.mjs && node scripts/generate_feed.mjs > public/blog/feed.xml" @@ -47,7 +47,7 @@ "esbuild-loader": "^2.13.1", "postcss-cli": "^8.3.0", "reanalyze": "^2.16.0", - "rescript": "9.1.2", + "rescript": "^10.1.0-rc.4", "tailwindcss": "^2.1.4" } } diff --git a/pages/docs/manual/latest/function.mdx b/pages/docs/manual/latest/function.mdx index 9606fa11b..4b638ebd2 100644 --- a/pages/docs/manual/latest/function.mdx +++ b/pages/docs/manual/latest/function.mdx @@ -415,6 +415,78 @@ If you write down the uncurried function's type, you'll add a dot there as well. **This feature seems trivial**, but is actually one of our most important features, as a primarily functional language. We encourage you to use it if you'd like to remove any mention of `Curry` runtime in the JS output. +## Async/Await (from v10.1) + +Just as in JS, an async function can be declared by adding `async` before the definition, and `await` can be used in the body of such functions. +The output looks like idiomatic JS: + + + +```res example +let getUserName = async (userId) => userId + +let greetUser = async (userId) => { + let name = await getUserName(userId) + "Hello " ++ name ++ "!" +} +``` +```js +async function greetUser(userId) { + var name = await getUserName(userId); + return "Hello " + name + "!"; +} +``` + + +The return type of `getUser` is inferred to be `promise`. +Similarly, `await getUserName(userId)` returns a `string` when the function returns `promise`. +Using `await` outside of an `async` function (including in a non-async callback to an async function) is an error. + +### Ergonomic error handling + +Error handling is done by simply using `try`/`catch`, or a switch with an `exception` case, just as in functions that are not async. +Both JS exceptions and exceptions defined in ReScript can be caught. The compiler takes care of packaging JS exceptions into the builtin `JsError` exception: + + + +```res example +exception SomeReScriptException + +let somethingThatMightThrow = async () => raise(SomeReScriptException) + +let someAsyncFn = async () => { + switch await somethingThatMightThrow() { + | data => Some(data) + | exception JsError(_) => None + | exception SomeReScriptException => None + } +} +``` +```js +var SomeReScriptException = /* @__PURE__ */Caml_exceptions.create("Example.SomeReScriptException"); + +async function someAsyncFn(param) { + var data; + try { + data = await somethingThatMightThrow(undefined); + } + catch (raw_exn){ + var exn = Caml_js_exceptions.internalToOCamlException(raw_exn); + if (exn.RE_EXN_ID === "JsError") { + return ; + } + if (exn.RE_EXN_ID === SomeReScriptException) { + return ; + } + throw exn; + } + return data; +} +``` + + + + ## The ignore() Function Occasionally you may want to ignore the return value of a function. ReScript provides an `ignore()` function that discards the value of its argument and returns `()`: diff --git a/pages/docs/manual/latest/promise.mdx b/pages/docs/manual/latest/promise.mdx index 9cc9d3d5c..619e4cfc4 100644 --- a/pages/docs/manual/latest/promise.mdx +++ b/pages/docs/manual/latest/promise.mdx @@ -6,9 +6,7 @@ canonical: "/docs/manual/latest/promise" # Async & Promise -ReScript's primary mechanism for async programming is the same as JavaScript's (callbacks and promises), since we compile cleanly to JavaScript and would like to avoid dragging in a heavy custom runtime. - -There is currently no support for `async` and `await` keywords in ReScript; though our new Promise API bindings revamp + [pipe](pipe) will make your async code already look better than otherwise. +Support for `async` and `await` is added in compiler version 10.1. The majority of existing code is based on promises. The new Promise API bindings make async code look better than with old promises. ## Promise (new) diff --git a/scripts/generate_feed.mjs b/scripts/generate_feed.mjs index 713a70566..dd4845a93 100644 --- a/scripts/generate_feed.mjs +++ b/scripts/generate_feed.mjs @@ -8,6 +8,5 @@ console.log(content); export { content , - } /* content Not a pure module */ diff --git a/scripts/test-examples.mjs b/scripts/test-examples.mjs index aa3d85ca1..de95bd687 100644 --- a/scripts/test-examples.mjs +++ b/scripts/test-examples.mjs @@ -14,7 +14,7 @@ let tempFileNameRegex = /_tempFile\.res/g // see the package.json on how to define another rescript version let compilersDir = path.join(__dirname, "..", "compilers") -let bsc = path.join(compilersDir, 'node_modules', 'rescript-1000', process.platform, 'bsc.exe') +let bsc = path.join(compilersDir, 'node_modules', 'rescript-1010', process.platform, 'bsc.exe') const prepareCompilers = () => { if (fs.existsSync(bsc)) { diff --git a/src/Blog.mjs b/src/Blog.mjs index e2ee30e64..d13195776 100644 --- a/src/Blog.mjs +++ b/src/Blog.mjs @@ -44,7 +44,7 @@ function Blog$CategorySelector(Props) { }, Belt_Array.map(tabs, (function (tab) { var onClick = function (evt) { evt.preventDefault(); - return Curry._1(onSelected, tab); + Curry._1(onSelected, tab); }; var isActive = selected === tab; var text = tab ? "Archived" : "All"; @@ -245,9 +245,9 @@ function $$default(props) { }, React.createElement(Blog$CategorySelector, { selected: currentSelection, onSelected: (function (selection) { - return Curry._1(setSelection, (function (param) { - return selection; - })); + Curry._1(setSelection, (function (param) { + return selection; + })); }) }))), result); } @@ -301,6 +301,5 @@ export { $$default , $$default as default, getStaticProps , - } /* middleDotSpacer Not a pure module */ diff --git a/src/BlogArticle.mjs b/src/BlogArticle.mjs index 4f39fcee1..68d7e1c22 100644 --- a/src/BlogArticle.mjs +++ b/src/BlogArticle.mjs @@ -213,6 +213,5 @@ export { $$default as default, getStaticProps , getStaticPaths , - } /* middleDotSpacer Not a pure module */ diff --git a/src/Design.mjs b/src/Design.mjs index 1cbc63286..54602d491 100644 --- a/src/Design.mjs +++ b/src/Design.mjs @@ -32,6 +32,5 @@ var $$default = Design$default; export { $$default , $$default as default, - } /* react Not a pure module */ diff --git a/src/DocsOverview.mjs b/src/DocsOverview.mjs index 21e2af49b..111262847 100644 --- a/src/DocsOverview.mjs +++ b/src/DocsOverview.mjs @@ -85,7 +85,7 @@ function DocsOverview$default(Props) { var version = evt.target.value; var url = Url.parse(router.route); var targetUrl = "/" + (url.base.join("/") + ("/" + (version + ("/" + url.pagepath.join("/"))))); - return Next.Router.push(router, targetUrl); + Next.Router.push(router, targetUrl); }; versionSelect = React.createElement("div", { className: "text-fire" @@ -120,6 +120,5 @@ var $$default = DocsOverview$default; export { $$default , $$default as default, - } /* Next Not a pure module */ diff --git a/src/Packages.mjs b/src/Packages.mjs index 8ee2565e9..df46416cb 100644 --- a/src/Packages.mjs +++ b/src/Packages.mjs @@ -16,6 +16,7 @@ import * as Process from "process"; import * as Markdown from "./components/Markdown.mjs"; import * as SearchBox from "./components/SearchBox.mjs"; import * as Belt_Array from "rescript/lib/es6/belt_Array.js"; +import * as Js_promise from "rescript/lib/es6/js_promise.js"; import * as Navigation from "./components/Navigation.mjs"; import * as Belt_Option from "rescript/lib/es6/belt_Option.js"; import * as Caml_option from "rescript/lib/es6/caml_option.js"; @@ -201,7 +202,7 @@ function Packages$Card(Props) { }, Belt_Array.map(match[2], (function (keyword) { var onMouseDown = Belt_Option.map(onKeywordSelect, (function (cb, evt) { evt.preventDefault(); - return Curry._1(cb, keyword); + Curry._1(cb, keyword); })); var tmp = { key: keyword, @@ -231,7 +232,7 @@ function Packages$InfoSidebar$Toggle(Props) { ); var onMouseDown = function (evt) { evt.preventDefault(); - return Curry._1(toggle, undefined); + Curry._1(toggle, undefined); }; return React.createElement("button", { className: className, @@ -252,57 +253,57 @@ function Packages$InfoSidebar(Props) { }, React.createElement(Packages$InfoSidebar$Toggle, { enabled: filter.includeOfficial, toggle: (function (param) { - return Curry._1(setFilter, (function (prev) { - return { - searchterm: prev.searchterm, - includeOfficial: !filter.includeOfficial, - includeCommunity: prev.includeCommunity, - includeNpm: prev.includeNpm, - includeUrlResource: prev.includeUrlResource - }; - })); + Curry._1(setFilter, (function (prev) { + return { + searchterm: prev.searchterm, + includeOfficial: !filter.includeOfficial, + includeCommunity: prev.includeCommunity, + includeNpm: prev.includeNpm, + includeUrlResource: prev.includeUrlResource + }; + })); }), children: "Official" }), React.createElement(Packages$InfoSidebar$Toggle, { enabled: filter.includeCommunity, toggle: (function (param) { - return Curry._1(setFilter, (function (prev) { - return { - searchterm: prev.searchterm, - includeOfficial: prev.includeOfficial, - includeCommunity: !filter.includeCommunity, - includeNpm: prev.includeNpm, - includeUrlResource: prev.includeUrlResource - }; - })); + Curry._1(setFilter, (function (prev) { + return { + searchterm: prev.searchterm, + includeOfficial: prev.includeOfficial, + includeCommunity: !filter.includeCommunity, + includeNpm: prev.includeNpm, + includeUrlResource: prev.includeUrlResource + }; + })); }), children: "Community" }), React.createElement(Packages$InfoSidebar$Toggle, { enabled: filter.includeNpm, toggle: (function (param) { - return Curry._1(setFilter, (function (prev) { - return { - searchterm: prev.searchterm, - includeOfficial: prev.includeOfficial, - includeCommunity: prev.includeCommunity, - includeNpm: !filter.includeNpm, - includeUrlResource: prev.includeUrlResource - }; - })); + Curry._1(setFilter, (function (prev) { + return { + searchterm: prev.searchterm, + includeOfficial: prev.includeOfficial, + includeCommunity: prev.includeCommunity, + includeNpm: !filter.includeNpm, + includeUrlResource: prev.includeUrlResource + }; + })); }), children: "NPM package" }), React.createElement(Packages$InfoSidebar$Toggle, { enabled: filter.includeUrlResource, toggle: (function (param) { - return Curry._1(setFilter, (function (prev) { - return { - searchterm: prev.searchterm, - includeOfficial: prev.includeOfficial, - includeCommunity: prev.includeCommunity, - includeNpm: prev.includeNpm, - includeUrlResource: !filter.includeUrlResource - }; - })); + Curry._1(setFilter, (function (prev) { + return { + searchterm: prev.searchterm, + includeOfficial: prev.includeOfficial, + includeCommunity: prev.includeCommunity, + includeNpm: prev.includeNpm, + includeUrlResource: !filter.includeUrlResource + }; + })); }), children: "URL resources" }))), React.createElement("div", undefined, React.createElement("h2", { @@ -358,22 +359,22 @@ function $$default(props) { var allResources = Belt_Array.concat(npms, urls); var resources = state ? applySearch(allResources, state._0) : allResources; var onValueChange = function (value) { - return Curry._1(setState, (function (param) { - if (value === "") { - return /* All */0; - } else { - return { - _0: value, - [Symbol.for("name")]: "Filtered" - }; - } - })); + Curry._1(setState, (function (param) { + if (value === "") { + return /* All */0; + } else { + return { + _0: value, + [Symbol.for("name")]: "Filtered" + }; + } + })); }; var searchValue = state ? state._0 : ""; var onClear = function (param) { - return Curry._1(setState, (function (param) { - return /* All */0; - })); + Curry._1(setState, (function (param) { + return /* All */0; + })); }; var match$2 = Belt_Array.reduce(resources, [ [], @@ -400,12 +401,12 @@ function $$default(props) { var officialResources = match$2[0]; var onKeywordSelect = function (keyword) { Curry._1(scrollToTop, undefined); - return Curry._1(setState, (function (param) { - return { - _0: keyword, - [Symbol.for("name")]: "Filtered" - }; - })); + Curry._1(setState, (function (param) { + return { + _0: keyword, + [Symbol.for("name")]: "Filtered" + }; + })); }; var officialCategory = officialResources.length !== 0 ? React.createElement(Packages$Category, { title: "Official Resources", @@ -435,20 +436,18 @@ function $$default(props) { var firstRenderDone = React.useRef(false); React.useEffect((function () { firstRenderDone.current = true; - }), []); React.useEffect((function () { Belt_Option.forEach(Js_dict.get(router.query, "search"), onValueChange); - }), [firstRenderDone.current]); var updateQuery = function (value) { - return Next.Router.replaceObj(router, { - pathname: router.pathname, - query: value === "" ? ({}) : Js_dict.fromArray([[ - "search", - value - ]]) - }); + Next.Router.replaceObj(router, { + pathname: router.pathname, + query: value === "" ? ({}) : Js_dict.fromArray([[ + "search", + value + ]]) + }); }; React.useEffect((function () { if (state) { @@ -456,7 +455,6 @@ function $$default(props) { } else { updateQuery(""); } - }), [state]); var overlayState = React.useState(function () { return false; @@ -504,38 +502,37 @@ function $$default(props) { function getStaticProps(_ctx) { var __x = fetch("https://registry.npmjs.org/-/v1/search?text=keywords:rescript&size=250"); - var __x$1 = __x.then(function (response) { - return response.json(); - }); - return __x$1.then(function (data) { - var pkges = Belt_Array.map(data.objects, (function (item) { - var pkg = item.package; - return { - name: pkg.name, - version: pkg.version, - keywords: uniqueKeywords(filterKeywords(pkg.keywords)), - description: Belt_Option.getWithDefault(pkg.description, ""), - repositoryHref: Js_null.fromOption(pkg.links.repository), - npmHref: pkg.links.npm - }; - })); - var index_data_dir = Path.join(Process.cwd(), "./data"); - var urlResources = JSON.parse(Fs.readFileSync(Path.join(index_data_dir, "packages_url_resources.json"), "utf8")); - var props = { - packages: pkges, - urlResources: urlResources - }; - return Promise.resolve({ - props: props, - revalidate: 43200 - }); - }); + var __x$1 = Js_promise.then_((function (response) { + return response.json(); + }), __x); + return Js_promise.then_((function (data) { + var pkges = Belt_Array.map(data.objects, (function (item) { + var pkg = item.package; + return { + name: pkg.name, + version: pkg.version, + keywords: uniqueKeywords(filterKeywords(pkg.keywords)), + description: Belt_Option.getWithDefault(pkg.description, ""), + repositoryHref: Js_null.fromOption(pkg.links.repository), + npmHref: pkg.links.npm + }; + })); + var index_data_dir = Path.join(Process.cwd(), "./data"); + var urlResources = JSON.parse(Fs.readFileSync(Path.join(index_data_dir, "packages_url_resources.json"), "utf8")); + var props = { + packages: pkges, + urlResources: urlResources + }; + return Promise.resolve({ + props: props, + revalidate: 43200 + }); + }), __x$1); } export { $$default , $$default as default, getStaticProps , - } /* fs Not a pure module */ diff --git a/src/Playground.mjs b/src/Playground.mjs index 8a731e90a..a858a244a 100644 --- a/src/Playground.mjs +++ b/src/Playground.mjs @@ -118,16 +118,15 @@ function Playground$Pane(Props) { Curry._1(setCurrent, (function (param) { return selected; })); - }), [selected]); var headers = Belt_Array.mapWithIndex(tabs, (function (i, tab) { var title = tab.title; var onMouseDown = function (evt) { evt.preventDefault(); evt.stopPropagation(); - return Curry._1(setCurrent, (function (param) { - return i; - })); + Curry._1(setCurrent, (function (param) { + return i; + })); }; var active = current === i; var onClick = function (param) { @@ -789,28 +788,28 @@ function Playground$WarningFlagsWidget(Props) { var enter = function (evt) { evt.preventDefault(); evt.stopPropagation(); - return Curry._1(setState, (function (prev) { - return { - TAG: 1, - lastState: prev, - token: token, - [Symbol.for("name")]: "ShowTokenHint" - }; - })); + Curry._1(setState, (function (prev) { + return { + TAG: 1, + lastState: prev, + token: token, + [Symbol.for("name")]: "ShowTokenHint" + }; + })); }; var leave = function (evt) { evt.preventDefault(); evt.stopPropagation(); - return Curry._1(setState, (function (prev) { - switch (prev.TAG | 0) { - case /* ShowTokenHint */1 : - return prev.lastState; - case /* HideSuggestion */0 : - case /* Typing */2 : - return prev; - - } - })); + Curry._1(setState, (function (prev) { + switch (prev.TAG | 0) { + case /* ShowTokenHint */1 : + return prev.lastState; + case /* HideSuggestion */0 : + case /* Typing */2 : + return prev; + + } + })); }; match = [ enter, @@ -824,9 +823,9 @@ function Playground$WarningFlagsWidget(Props) { } var onClick = function (evt) { evt.preventDefault(); - return Curry._1(onUpdate, Belt_Array.keep(flags, (function (t) { - return t.flag !== flag; - }))); + Curry._1(onUpdate, Belt_Array.keep(flags, (function (t) { + return t.flag !== flag; + }))); }; var tmp = { key: String(i) + flag, @@ -895,7 +894,6 @@ function Playground$WarningFlagsWidget(Props) { case "Escape" : return Belt_Option.forEach(Caml_option.nullable_to_opt(inputRef.current), (function (el) { el.blur(); - })); case "Tab" : switch (state.TAG | 0) { @@ -1075,48 +1073,48 @@ function Playground$WarningFlagsWidget(Props) { }) : undefined; var onMouseEnter = function (evt) { evt.preventDefault(); - return Curry._1(setState, (function (prev) { - switch (prev.TAG | 0) { - case /* HideSuggestion */0 : - case /* ShowTokenHint */1 : - return prev; - case /* Typing */2 : - var fuzzySuggestion = prev.suggestion; - if (typeof fuzzySuggestion === "number" || fuzzySuggestion.TAG !== /* FuzzySuggestions */0) { - return prev; - } else { - return { - TAG: 2, - suggestion: { - TAG: 0, - modifier: fuzzySuggestion.modifier, - precedingTokens: fuzzySuggestion.precedingTokens, - results: fuzzySuggestion.results, - selected: i, - [Symbol.for("name")]: "FuzzySuggestions" - }, - input: state.input, - [Symbol.for("name")]: "Typing" - }; - } - + Curry._1(setState, (function (prev) { + switch (prev.TAG | 0) { + case /* HideSuggestion */0 : + case /* ShowTokenHint */1 : + return prev; + case /* Typing */2 : + var fuzzySuggestion = prev.suggestion; + if (typeof fuzzySuggestion === "number" || fuzzySuggestion.TAG !== /* FuzzySuggestions */0) { + return prev; + } else { + return { + TAG: 2, + suggestion: { + TAG: 0, + modifier: fuzzySuggestion.modifier, + precedingTokens: fuzzySuggestion.precedingTokens, + results: fuzzySuggestion.results, + selected: i, + [Symbol.for("name")]: "FuzzySuggestions" + }, + input: state.input, + [Symbol.for("name")]: "Typing" + }; } - })); + + } + })); }; var onClick = function (evt) { evt.preventDefault(); - return Curry._1(setState, (function (prev) { - switch (prev.TAG | 0) { - case /* HideSuggestion */0 : - case /* ShowTokenHint */1 : - return prev; - case /* Typing */2 : - var full = modifier + flag; - var completed = WarningFlagDescription.Parser.tokensToString(precedingTokens) + full; - return updateInput(prev, completed); - - } - })); + Curry._1(setState, (function (prev) { + switch (prev.TAG | 0) { + case /* HideSuggestion */0 : + case /* ShowTokenHint */1 : + return prev; + case /* Typing */2 : + var full = modifier + flag; + var completed = WarningFlagDescription.Parser.tokensToString(precedingTokens) + full; + return updateInput(prev, completed); + + } + })); }; var tmp = { key: flag, @@ -1148,50 +1146,50 @@ function Playground$WarningFlagsWidget(Props) { var onChange = function (evt) { evt.preventDefault(); var input = evt.target.value; - return Curry._1(setState, (function (prev) { - return updateInput(prev, input); - })); + Curry._1(setState, (function (prev) { + return updateInput(prev, input); + })); }; var onBlur = function (evt) { evt.preventDefault(); evt.stopPropagation(); - return Curry._1(setState, (function (prev) { - switch (prev.TAG | 0) { + Curry._1(setState, (function (prev) { + switch (prev.TAG | 0) { + case /* HideSuggestion */0 : + return prev; + case /* ShowTokenHint */1 : + var match = prev.lastState; + switch (match.TAG | 0) { case /* HideSuggestion */0 : - return prev; case /* ShowTokenHint */1 : - var match = prev.lastState; - switch (match.TAG | 0) { - case /* HideSuggestion */0 : - case /* ShowTokenHint */1 : - return { - TAG: 0, - input: "", - [Symbol.for("name")]: "HideSuggestion" - }; - case /* Typing */2 : - return { - TAG: 0, - input: match.input, - [Symbol.for("name")]: "HideSuggestion" - }; - - } + return { + TAG: 0, + input: "", + [Symbol.for("name")]: "HideSuggestion" + }; case /* Typing */2 : return { TAG: 0, - input: prev.input, + input: match.input, [Symbol.for("name")]: "HideSuggestion" }; } - })); + case /* Typing */2 : + return { + TAG: 0, + input: prev.input, + [Symbol.for("name")]: "HideSuggestion" + }; + + } + })); }; var onFocus = function (evt) { var input = evt.target.value; - return Curry._1(setState, (function (prev) { - return updateInput(prev, input); - })); + Curry._1(setState, (function (prev) { + return updateInput(prev, input); + })); }; var isActive; switch (state.TAG | 0) { @@ -1224,10 +1222,10 @@ function Playground$WarningFlagsWidget(Props) { if (exit === 1) { var onMouseDown = function (evt) { evt.preventDefault(); - return Curry._1(onUpdate, [{ - enabled: false, - flag: "a" - }]); + Curry._1(onUpdate, [{ + enabled: false, + flag: "a" + }]); }; var onClick = function (param) { @@ -1235,7 +1233,6 @@ function Playground$WarningFlagsWidget(Props) { var onFocus$1 = function (evt) { evt.preventDefault(); evt.stopPropagation(); - }; deleteButton = React.createElement("button", { className: "focus:outline-none self-start focus:ring hover:cursor-pointer hover:bg-gray-40 p-2 rounded-full", @@ -1250,7 +1247,6 @@ function Playground$WarningFlagsWidget(Props) { if (!isActive) { return Belt_Option.forEach(Caml_option.nullable_to_opt(inputRef.current), (function (el) { el.focus(); - })); } @@ -1306,12 +1302,12 @@ function Playground$Settings(Props) { var config = Props.config; var availableTargetLangs = RescriptCompilerApi.Version.availableLanguages(readyState.selected.apiVersion); var onTargetLangSelect = function (lang) { - return Curry._1(dispatch, { - TAG: 1, - lang: lang, - code: editorCode.current, - [Symbol.for("name")]: "SwitchLanguage" - }); + Curry._1(dispatch, { + TAG: 1, + lang: lang, + code: editorCode.current, + [Symbol.for("name")]: "SwitchLanguage" + }); }; var onWarningFlagsUpdate = function (flags) { var normalizeEmptyFlags = function (flags) { @@ -1324,24 +1320,24 @@ function Playground$Settings(Props) { }]; } }; - return Curry._1(setConfig, { - module_system: config.module_system, - warn_flags: WarningFlagDescription.Parser.tokensToString(normalizeEmptyFlags(flags)) - }); + Curry._1(setConfig, { + module_system: config.module_system, + warn_flags: WarningFlagDescription.Parser.tokensToString(normalizeEmptyFlags(flags)) + }); }; var onModuleSystemUpdate = function (module_system) { - return Curry._1(setConfig, { - module_system: module_system, - warn_flags: config.warn_flags - }); + Curry._1(setConfig, { + module_system: module_system, + warn_flags: config.warn_flags + }); }; var warnFlagTokens = Belt_Result.getWithDefault(WarningFlagDescription.Parser.parse(config.warn_flags), []); var onResetClick = function (evt) { evt.preventDefault(); - return Curry._1(setConfig, { - module_system: "nodejs", - warn_flags: "+a-4-9-20-40-41-42-50-61-102-109" - }); + Curry._1(setConfig, { + module_system: "nodejs", + warn_flags: "+a-4-9-20-40-41-42-50-61-102-109" + }); }; var titleClass = "hl-5 text-gray-20 mb-2"; return React.createElement("div", { @@ -1352,12 +1348,12 @@ function Playground$Settings(Props) { onChange: (function (evt) { evt.preventDefault(); var id = evt.target.value; - return Curry._1(dispatch, { - TAG: 0, - id: id, - libraries: readyState.selected.libraries, - [Symbol.for("name")]: "SwitchToCompiler" - }); + Curry._1(dispatch, { + TAG: 0, + id: id, + libraries: readyState.selected.libraries, + [Symbol.for("name")]: "SwitchToCompiler" + }); }), name: "compilerVersions", value: readyState.selected.id, @@ -1467,7 +1463,6 @@ function Playground$ControlPanel$ShareButton(Props) { Curry._1(setState, (function (param) { return /* Init */0; })); - }), [actionIndicatorKey]); var onClick = function (evt) { evt.preventDefault(); @@ -1522,11 +1517,11 @@ function Playground$ControlPanel(Props) { var ready = state._0; var onFormatClick = function (evt) { evt.preventDefault(); - return Curry._1(dispatch, { - TAG: 2, - _0: editorCode.current, - [Symbol.for("name")]: "Format" - }); + Curry._1(dispatch, { + TAG: 2, + _0: editorCode.current, + [Symbol.for("name")]: "Format" + }); }; var createShareLink = function (param) { var lang = ready.targetLang; @@ -1730,11 +1725,11 @@ function Playground$OutputPanel(Props) { var ready$3 = compilerState._0; var config = ready$3.selected.config; var setConfig = function (config) { - return Curry._1(compilerDispatch, { - TAG: 4, - _0: config, - [Symbol.for("name")]: "UpdateConfig" - }); + Curry._1(compilerDispatch, { + TAG: 4, + _0: config, + [Symbol.for("name")]: "UpdateConfig" + }); }; settingsPane = React.createElement(Playground$Settings, { readyState: ready$3, @@ -1830,13 +1825,13 @@ function Playground$default(Props) { var setActionCount = match$2[1]; var actionCount = match$2[0]; var onAction = function (param) { - return Curry._1(setActionCount, (function (prev) { - if (prev > 1000000) { - return 0; - } else { - return prev + 1 | 0; - } - })); + Curry._1(setActionCount, (function (prev) { + if (prev > 1000000) { + return 0; + } else { + return prev + 1 | 0; + } + })); }; var match$3 = CompilerManagerHook.useCompilerManager(initialLang, onAction, undefined); var compilerDispatch = match$3[1]; @@ -1886,7 +1881,6 @@ function Playground$default(Props) { }); } }); - }), [compilerState]); var cmErrors; if (typeof compilerState === "number") { @@ -2030,20 +2024,18 @@ function Playground$default(Props) { var timer$1 = setTimeout((function (param) { Curry._1(timeoutCompile.current, undefined); typingTimer.current = undefined; - }), 100); typingTimer.current = Caml_option.some(timer$1); - }), onMarkerFocus: (function (rowCol) { - return Curry._1(setFocusedRowCol, (function (_prev) { - return rowCol; - })); + Curry._1(setFocusedRowCol, (function (_prev) { + return rowCol; + })); }), onMarkerFocusLeave: (function (param) { - return Curry._1(setFocusedRowCol, (function (param) { - - })); + Curry._1(setFocusedRowCol, (function (param) { + + })); }), value: editorCode.current, mode: mode @@ -2069,6 +2061,5 @@ var $$default = Playground$default; export { $$default , $$default as default, - } /* Not a pure module */ diff --git a/src/SyntaxLookup.mjs b/src/SyntaxLookup.mjs index 0fdc443c6..506d5509d 100644 --- a/src/SyntaxLookup.mjs +++ b/src/SyntaxLookup.mjs @@ -201,7 +201,6 @@ function SyntaxLookup(Props) { return /* ShowAll */0; })); } - }), [router]); var onSearchValueChange = function (value) { if (value === "") { @@ -212,14 +211,14 @@ function SyntaxLookup(Props) { return Next.Router.push(router, "/syntax-lookup#" + item.id); } var filtered = searchItems(value); - return Curry._1(setState, (function (param) { - return { - TAG: 0, - _0: value, - _1: filtered, - [Symbol.for("name")]: "ShowFiltered" - }; - })); + Curry._1(setState, (function (param) { + return { + TAG: 0, + _0: value, + _1: filtered, + [Symbol.for("name")]: "ShowFiltered" + }; + })); }; var details; if (typeof state === "number" || state.TAG === /* ShowFiltered */0) { @@ -267,7 +266,7 @@ function SyntaxLookup(Props) { var children = Belt_Array.map(items, (function (item) { var onMouseDown = function (evt) { evt.preventDefault(); - return onSearchValueChange(item.name); + onSearchValueChange(item.name); }; return React.createElement("span", { key: item.name, @@ -306,7 +305,7 @@ function SyntaxLookup(Props) { ]; } var onSearchClear = function (param) { - return onSearchValueChange(""); + onSearchValueChange(""); }; return React.createElement("div", undefined, React.createElement("div", { className: "flex flex-col items-center" @@ -341,6 +340,5 @@ var make = SyntaxLookup; export { make , - } /* indexData Not a pure module */ diff --git a/src/bindings/Fuse.mjs b/src/bindings/Fuse.mjs index 067710619..1ab5371dc 100644 --- a/src/bindings/Fuse.mjs +++ b/src/bindings/Fuse.mjs @@ -5,6 +5,5 @@ var Options = {}; export { Options , - } /* No side effect */ diff --git a/src/bindings/HeadlessUI.mjs b/src/bindings/HeadlessUI.mjs index e581087a1..35a51c43d 100644 --- a/src/bindings/HeadlessUI.mjs +++ b/src/bindings/HeadlessUI.mjs @@ -31,6 +31,5 @@ export { Menu , Listbox , Transition , - } /* No side effect */ diff --git a/src/bindings/Next.mjs b/src/bindings/Next.mjs index 1585ec5ab..76df658a2 100644 --- a/src/bindings/Next.mjs +++ b/src/bindings/Next.mjs @@ -15,15 +15,12 @@ var GetStaticPaths = {}; var GetServerSideProps_Res = { setHeader: (function (prim0, prim1, prim2) { prim0.setHeader(prim1, prim2); - }), write: (function (prim0, prim1) { prim0.write(prim1); - }), end_: (function (prim) { prim.end(); - }) }; @@ -39,22 +36,18 @@ var Link$1 = { var Router_Events = { on: (function (prim0, prim1) { prim0.on(prim1.NAME, prim1.VAL); - }), off: (function (prim0, prim1) { prim0.off(prim1.NAME, prim1.VAL); - }) }; function Router_push(prim0, prim1) { prim0.push(prim1); - } function Router_pushObj(prim0, prim1) { prim0.push(prim1); - } function Router_useRouter(prim) { @@ -63,12 +56,10 @@ function Router_useRouter(prim) { function Router_replace(prim0, prim1) { prim0.replace(prim1); - } function Router_replaceObj(prim0, prim1) { prim0.replace(prim1); - } var Router$1 = { @@ -110,6 +101,5 @@ export { Head$1 as Head, $$Error$1 as $$Error, Dynamic , - } /* Link Not a pure module */ diff --git a/src/bindings/RescriptCompilerApi.mjs b/src/bindings/RescriptCompilerApi.mjs index ba27ab077..37126ac0f 100644 --- a/src/bindings/RescriptCompilerApi.mjs +++ b/src/bindings/RescriptCompilerApi.mjs @@ -472,10 +472,8 @@ function setConfig(t, config) { } Belt_Option.forEach(moduleSystem, (function (moduleSystem) { t.setModuleSystem(moduleSystem); - })); t.setWarnFlags(config.warn_flags); - } function convertSyntax(fromLang, toLang, code, t) { @@ -567,6 +565,5 @@ export { ConversionResult , Config , Compiler , - } /* No side effect */ diff --git a/src/bindings/Webapi.mjs b/src/bindings/Webapi.mjs index 428f1b7ff..47e54052f 100644 --- a/src/bindings/Webapi.mjs +++ b/src/bindings/Webapi.mjs @@ -11,6 +11,5 @@ export { $$Document , ClassList , $$Element , - } /* No side effect */ diff --git a/src/bindings/Worker.mjs b/src/bindings/Worker.mjs index 6dcee8b10..bb42f0a4a 100644 --- a/src/bindings/Worker.mjs +++ b/src/bindings/Worker.mjs @@ -11,34 +11,27 @@ function Make(funarg) { App: { postMessage: (function (prim0, prim1) { prim0.postMessage(prim1); - }), onMessage: (function (prim0, prim1) { prim0.onmessage = prim1; - }), onError: (function (prim0, prim1) { prim0.onerror = prim1; - }), terminate: (function (prim) { prim.terminate(); - }) }, $$Worker: { postMessage: (function (prim) { postMessage(prim); - }), onMessage: (function (prim0, prim1) { prim0.onmessage = prim1; - }), self: self, importScripts: (function (prim) { importScripts(prim); - }) } }; @@ -47,6 +40,5 @@ function Make(funarg) { export { make , Make , - } /* No side effect */ diff --git a/src/common/Ansi.mjs b/src/common/Ansi.mjs index 83b520564..ad78e963b 100644 --- a/src/common/Ansi.mjs +++ b/src/common/Ansi.mjs @@ -544,6 +544,5 @@ export { onlyText , SgrString , Printer , - } /* No side effect */ diff --git a/src/common/Ansi.res b/src/common/Ansi.res index 746c9cdd3..0ea839c93 100644 --- a/src/common/Ansi.res +++ b/src/common/Ansi.res @@ -52,9 +52,9 @@ module Sgr = { } } -let esc = j`\\u001B` +let esc = j`\u001B` -let isAscii = (c: string) => Js.Re.test_(%re(`/[\\x40-\\x7F]/`), c) +let isAscii = (c: string) => Js.Re.test_(%re(`/[\x40-\x7F]/`), c) module Location = { type t = { @@ -109,7 +109,7 @@ module Location = { module Lexer = { open Location - open Sgr + open! Sgr type token = | Text({loc: Location.loc, content: string}) @@ -177,7 +177,7 @@ module Lexer = { let loc = {startPos: startPos, endPos: startPos + Js.String.length(raw) - 1} - let token = Js.Re.exec_(%re(`/\\[([0-9;]+)([\\x40-\\x7F])/`), raw)->( + let token = Js.Re.exec_(%re(`/\[([0-9;]+)([\x40-\x7F])/`), raw)->( x => switch x { | Some(result) => @@ -320,7 +320,7 @@ module SgrString = { let toString = (e: t): string => { let content = { open Js.String2 - replaceByRe(e.content, %re("/\\n/g"), "\\n")->replace(esc, "") + replaceByRe(e.content, %re("/\n/g"), "\\n")->replace(esc, "") } let params = Belt.Array.map(e.params, Sgr.paramToString)->Js.Array2.joinWith(", ") @@ -336,7 +336,7 @@ module Printer = { | Text({content, loc: {startPos, endPos}}) => let content = { open Js.String2 - replaceByRe(content, %re("/\\n/g"), "\\n")->replace(esc, "") + replaceByRe(content, %re("/\n/g"), "\\n")->replace(esc, "") } j`Text "$content" ($startPos to $endPos)` | Sgr({params, raw, loc: {startPos, endPos}}) => diff --git a/src/common/App.mjs b/src/common/App.mjs index 064de7b27..d322ef46b 100644 --- a/src/common/App.mjs +++ b/src/common/App.mjs @@ -328,6 +328,5 @@ function make(props) { export { make , - } /* Not a pure module */ diff --git a/src/common/BlogApi.mjs b/src/common/BlogApi.mjs index 285f9e384..23f149c90 100644 --- a/src/common/BlogApi.mjs +++ b/src/common/BlogApi.mjs @@ -101,6 +101,5 @@ export { getAllPosts , blogPathToSlug , RssFeed , - } /* fs Not a pure module */ diff --git a/src/common/BlogFrontmatter.mjs b/src/common/BlogFrontmatter.mjs index e1134873a..ede4c6d28 100644 --- a/src/common/BlogFrontmatter.mjs +++ b/src/common/BlogFrontmatter.mjs @@ -191,6 +191,5 @@ export { decodeAuthor , authorDecoder , decode , - } /* No side effect */ diff --git a/src/common/ColorTheme.mjs b/src/common/ColorTheme.mjs index 4f0ee8b7c..66cb6eec3 100644 --- a/src/common/ColorTheme.mjs +++ b/src/common/ColorTheme.mjs @@ -9,6 +9,5 @@ function toCN(value) { export { toCN , - } /* No side effect */ diff --git a/src/common/CompilerManagerHook.mjs b/src/common/CompilerManagerHook.mjs index 0806971bd..04e5bb2f3 100644 --- a/src/common/CompilerManagerHook.mjs +++ b/src/common/CompilerManagerHook.mjs @@ -15,19 +15,18 @@ import * as RescriptCompilerApi from "../bindings/RescriptCompilerApi.mjs"; function loadScriptPromise(url) { return new Promise((function (resolve, _reject) { LoadScript$1(url, (function (param) { - return resolve({ - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }); + resolve({ + TAG: 0, + _0: undefined, + [Symbol.for("name")]: "Ok" + }); }), (function (_err) { - return resolve({ - TAG: 1, - _0: "Could not load script: " + url, - [Symbol.for("name")]: "Error" - }); + resolve({ + TAG: 1, + _0: "Could not load script: " + url, + [Symbol.for("name")]: "Error" + }); })); - })); } @@ -139,7 +138,7 @@ function useCompilerManager(initialLangOpt, onAction, param) { var state = match[0]; var dispatch = function (action) { Belt_Option.forEach(onAction, (function (cb) { - return Curry._1(cb, action); + Curry._1(cb, action); })); switch (action.TAG | 0) { case /* SwitchToCompiler */0 : @@ -232,19 +231,19 @@ function useCompilerManager(initialLangOpt, onAction, param) { } var targetLang = match$1[1]; var result = match$1[0]; - return Curry._1(setState, (function (param) { - return { - TAG: 2, - _0: { - versions: ready$1.versions, - selected: ready$1.selected, - targetLang: targetLang, - errors: [], - result: result - }, - [Symbol.for("name")]: "Ready" - }; - })); + Curry._1(setState, (function (param) { + return { + TAG: 2, + _0: { + versions: ready$1.versions, + selected: ready$1.selected, + targetLang: targetLang, + errors: [], + result: result + }, + [Symbol.for("name")]: "Ready" + }; + })); })); case /* Format */2 : var code$1 = action._0; @@ -352,35 +351,35 @@ function useCompilerManager(initialLangOpt, onAction, param) { } }; var dispatchError = function (err) { - return Curry._1(setState, (function (prev) { - var msg = err._0; - if (typeof prev === "number") { - return { - TAG: 0, - _0: msg, - [Symbol.for("name")]: "SetupFailed" - }; - } - if (prev.TAG !== /* Ready */2) { - return { - TAG: 0, - _0: msg, - [Symbol.for("name")]: "SetupFailed" - }; - } - var ready = prev._0; - return { - TAG: 2, - _0: { - versions: ready.versions, - selected: ready.selected, - targetLang: ready.targetLang, - errors: ready.errors.concat([msg]), - result: ready.result - }, - [Symbol.for("name")]: "Ready" - }; - })); + Curry._1(setState, (function (prev) { + var msg = err._0; + if (typeof prev === "number") { + return { + TAG: 0, + _0: msg, + [Symbol.for("name")]: "SetupFailed" + }; + } + if (prev.TAG !== /* Ready */2) { + return { + TAG: 0, + _0: msg, + [Symbol.for("name")]: "SetupFailed" + }; + } + var ready = prev._0; + return { + TAG: 2, + _0: { + versions: ready.versions, + selected: ready.selected, + targetLang: ready.targetLang, + errors: ready.errors.concat([msg]), + result: ready.result + }, + [Symbol.for("name")]: "Ready" + }; + })); }; React.useEffect((function () { if (typeof state === "number") { @@ -421,11 +420,11 @@ function useCompilerManager(initialLangOpt, onAction, param) { })); } var msg = result._0.join("; "); - return dispatchError({ - TAG: 1, - _0: msg, - [Symbol.for("name")]: "CompilerLoadingError" - }); + dispatchError({ + TAG: 1, + _0: msg, + [Symbol.for("name")]: "CompilerLoadingError" + }); }); } else { dispatchError({ @@ -447,7 +446,6 @@ function useCompilerManager(initialLangOpt, onAction, param) { Belt_Array.forEach(ready.selected.libraries, (function (lib) { var prim = getLibraryCmijUrl(ready.selected.id, lib); LoadScript.removeScript(prim); - })); var instance = rescript_compiler.make(); var apiVersion = RescriptCompilerApi.Version.fromString(rescript_compiler.api_version); @@ -478,11 +476,11 @@ function useCompilerManager(initialLangOpt, onAction, param) { })); } var msg = result._0.join("; "); - return dispatchError({ - TAG: 1, - _0: msg, - [Symbol.for("name")]: "CompilerLoadingError" - }); + dispatchError({ + TAG: 1, + _0: msg, + [Symbol.for("name")]: "CompilerLoadingError" + }); }); break; case /* SetupFailed */0 : @@ -556,7 +554,6 @@ function useCompilerManager(initialLangOpt, onAction, param) { } } - }), [state]); return [ state, @@ -567,6 +564,5 @@ function useCompilerManager(initialLangOpt, onAction, param) { export { FinalResult , useCompilerManager , - } /* react Not a pure module */ diff --git a/src/common/Constants.mjs b/src/common/Constants.mjs index fd15219aa..1ebf9d013 100644 --- a/src/common/Constants.mjs +++ b/src/common/Constants.mjs @@ -66,6 +66,5 @@ export { languageManual , ecosystem , tools , - } /* No side effect */ diff --git a/src/common/DateStr.mjs b/src/common/DateStr.mjs index a106f08d4..9b64e6bfe 100644 --- a/src/common/DateStr.mjs +++ b/src/common/DateStr.mjs @@ -12,6 +12,5 @@ function toDate(dateStr) { export { fromDate , toDate , - } /* No side effect */ diff --git a/src/common/DocFrontmatter.mjs b/src/common/DocFrontmatter.mjs index 52d3757d8..7bf63bed0 100644 --- a/src/common/DocFrontmatter.mjs +++ b/src/common/DocFrontmatter.mjs @@ -31,6 +31,5 @@ function decode(json) { export { decode , - } /* No side effect */ diff --git a/src/common/HighlightJs.mjs b/src/common/HighlightJs.mjs index a9f268de3..d24c061a7 100644 --- a/src/common/HighlightJs.mjs +++ b/src/common/HighlightJs.mjs @@ -49,6 +49,5 @@ function renderHLJS(highlightedLinesOpt, darkmodeOpt, code, lang, param) { export { renderHLJS , - } /* react Not a pure module */ diff --git a/src/common/Hooks.mjs b/src/common/Hooks.mjs index 5c4e7cc32..43ecff326 100644 --- a/src/common/Hooks.mjs +++ b/src/common/Hooks.mjs @@ -52,6 +52,5 @@ var useWindowWidth = (() => { export { useOutsideClick , useWindowWidth , - } /* No side effect */ diff --git a/src/common/Mdx.mjs b/src/common/Mdx.mjs index 3167117ec..1bdd7b521 100644 --- a/src/common/Mdx.mjs +++ b/src/common/Mdx.mjs @@ -170,6 +170,5 @@ export { MdxChildren , Components , Provider , - } /* Provider Not a pure module */ diff --git a/src/common/OurUsers.mjs b/src/common/OurUsers.mjs index b6100fc94..7d38696c7 100644 --- a/src/common/OurUsers.mjs +++ b/src/common/OurUsers.mjs @@ -168,6 +168,5 @@ var companies = [ export { companies , - } /* No side effect */ diff --git a/src/common/Url.mjs b/src/common/Url.mjs index 0c55014fa..5918bd950 100644 --- a/src/common/Url.mjs +++ b/src/common/Url.mjs @@ -45,6 +45,5 @@ function parse(route) { export { parse , prettyString , - } /* No side effect */ diff --git a/src/common/Util.mjs b/src/common/Util.mjs index 8bec3df26..e3bb59d1b 100644 --- a/src/common/Util.mjs +++ b/src/common/Util.mjs @@ -57,6 +57,5 @@ export { $$String , $$Date , Json , - } /* No side effect */ diff --git a/src/common/WarningFlagDescription.mjs b/src/common/WarningFlagDescription.mjs index 2d4d7d495..6ae6be0fa 100644 --- a/src/common/WarningFlagDescription.mjs +++ b/src/common/WarningFlagDescription.mjs @@ -399,7 +399,6 @@ function merge(base, other) { }))); Belt_Array.forEach(other, (function (token) { dict[token.flag] = token; - })); return Js_dict.values(dict).sort(function (t1, t2) { var f1 = t1.flag; @@ -438,6 +437,5 @@ export { lookup , lookupAll , fuzzyLookup , - } /* Not a pure module */ diff --git a/src/common/XmlHttpRequest.mjs b/src/common/XmlHttpRequest.mjs index fbb1d53a3..0426744c3 100644 --- a/src/common/XmlHttpRequest.mjs +++ b/src/common/XmlHttpRequest.mjs @@ -19,6 +19,5 @@ export { Upload , decodeReadyState , readyState , - } /* No side effect */ diff --git a/src/components/AnsiPre.mjs b/src/components/AnsiPre.mjs index e81279e02..a35a29730 100644 --- a/src/components/AnsiPre.mjs +++ b/src/components/AnsiPre.mjs @@ -82,6 +82,5 @@ var make = AnsiPre; export { make , - } /* react Not a pure module */ diff --git a/src/components/ApiIntro.mjs b/src/components/ApiIntro.mjs index 04817ca2c..d64b810c6 100644 --- a/src/components/ApiIntro.mjs +++ b/src/components/ApiIntro.mjs @@ -13,6 +13,5 @@ var make = ApiIntro; export { make , - } /* react Not a pure module */ diff --git a/src/components/ApiMarkdown.mjs b/src/components/ApiMarkdown.mjs index 70967a414..49d005641 100644 --- a/src/components/ApiMarkdown.mjs +++ b/src/components/ApiMarkdown.mjs @@ -20,6 +20,5 @@ var $$default = Mdx.Components.t(undefined, undefined, undefined, Markdown.Intro export { $$default , $$default as default, - } /* default Not a pure module */ diff --git a/src/components/Button.mjs b/src/components/Button.mjs index 09e9c3a3e..f4a5d1097 100644 --- a/src/components/Button.mjs +++ b/src/components/Button.mjs @@ -27,7 +27,7 @@ function Button(Props) { var padding = size ? "px-8 py-4 rounded-lg" : "px-4 py-2 captions rounded"; var rel = target === "_blank" ? "noopener noreferrer" : undefined; var tmp = { - className: "select-none hover:cursor-pointer transition-colors duration-200 body-button focus:outline-none " + bgColor + " " + padding, + className: "select-none hover:cursor-pointer transition-colors duration-200 body-button focus:outline-none " + bgColor + " " + padding + "", role: "button" }; if (href !== undefined) { @@ -46,6 +46,5 @@ var make = Button; export { make , - } /* react Not a pure module */ diff --git a/src/components/CodeExample.mjs b/src/components/CodeExample.mjs index 5b66e2977..141e392a6 100644 --- a/src/components/CodeExample.mjs +++ b/src/components/CodeExample.mjs @@ -82,18 +82,16 @@ function CodeExample$CopyButton(Props) { var nextFrameId = window.requestAnimationFrame(function (param) { bannerEl.classList.toggle("opacity-0"); bannerEl.classList.toggle("opacity-100"); - }); var timeoutId = setTimeout((function (param) { buttonEl.removeChild(bannerEl); - return Curry._1(setState, (function (param) { - return /* Init */0; - })); + Curry._1(setState, (function (param) { + return /* Init */0; + })); }), 3000); return (function (param) { window.cancelAnimationFrame(nextFrameId); clearTimeout(timeoutId); - }); }), [state]); return React.createElement("button", { @@ -152,9 +150,9 @@ function CodeExample$Toggle(Props) { var activeClass = selected === i ? "font-medium text-12 text-gray-40 bg-gray-5 border-t-2 first:border-l" : "font-medium text-12 hover:text-gray-60 border-t-2 bg-gray-20 hover:cursor-pointer"; var onClick = function (evt) { evt.preventDefault(); - return Curry._1(setSelected, (function (param) { - return i; - })); + Curry._1(setSelected, (function (param) { + return i; + })); }; var key = label$1 + ("-" + String(i)); var paddingX = numberOfItems >= 3 ? ( @@ -241,6 +239,5 @@ var make = CodeExample; export { make , Toggle , - } /* Icon Not a pure module */ diff --git a/src/components/CodeMirror.mjs b/src/components/CodeMirror.mjs index f5cb33feb..064ba1e17 100644 --- a/src/components/CodeMirror.mjs +++ b/src/components/CodeMirror.mjs @@ -95,7 +95,7 @@ function useHoverTooltip(cmStateRef, cmRef, param) { React.useEffect((function () { attach(tooltip); return (function (param) { - return clear(tooltip); + clear(tooltip); }); }), []); var checkIfTextMarker = (function(el) { @@ -190,7 +190,7 @@ function useHoverTooltip(cmStateRef, cmRef, param) { marker.clear(); var timerId = setTimeout((function (param) { stateRef.current = /* Hidden */0; - return hide(tooltip); + hide(tooltip); }), 200); stateRef.current = { el: match.el, @@ -199,7 +199,6 @@ function useHoverTooltip(cmStateRef, cmRef, param) { hideTimer: Caml_option.some(timerId), [Symbol.for("name")]: "Shown" }; - }; var onMouseMove = function (evt) { var match = stateRef.current; @@ -209,7 +208,6 @@ function useHoverTooltip(cmStateRef, cmRef, param) { var pageX = evt.pageX; var pageY = evt.pageY; update(tooltip, pageY - 35 | 0, pageX, match.hoverHint.hint); - }; return [ onMouseOver, @@ -254,7 +252,7 @@ function hash(a) { return a; } -var eq = Caml_obj.caml_equal; +var eq = Caml_obj.equal; var ErrorHash = Belt_Id.MakeHashable({ hash: hash, @@ -264,7 +262,6 @@ var ErrorHash = Belt_Id.MakeHashable({ function updateErrors(state, onMarkerFocus, onMarkerFocusLeave, cm, errors) { Belt_Array.forEach(state.marked, (function (mark) { mark.clear(); - })); var errorsMap = Belt_HashMap.make(errors.length, ErrorHash); state.marked = []; @@ -302,7 +299,6 @@ function updateErrors(state, onMarkerFocus, onMarkerFocusLeave, cm, errors) { } }); state.marked.push(__x); - })); var isMarkerId = function (id) { if (id.startsWith("gutter-marker")) { @@ -320,7 +316,7 @@ function updateErrors(state, onMarkerFocus, onMarkerFocusLeave, cm, errors) { var rowCol = extractRowColFromId(id); if (rowCol !== undefined) { return Belt_Option.forEach(onMarkerFocus, (function (cb) { - return Curry._1(cb, rowCol); + Curry._1(cb, rowCol); })); } @@ -334,12 +330,11 @@ function updateErrors(state, onMarkerFocus, onMarkerFocusLeave, cm, errors) { var rowCol = extractRowColFromId(id); if (rowCol !== undefined) { return Belt_Option.forEach(onMarkerFocusLeave, (function (cb) { - return Curry._1(cb, rowCol); + Curry._1(cb, rowCol); })); } }); - } function CodeMirror(Props) { @@ -396,17 +391,14 @@ function CodeMirror(Props) { var cm = Codemirror.fromTextArea(input, options); Belt_Option.forEach(minHeight, (function (minHeight) { cm.getScrollerElement().style.minHeight = minHeight; - })); Belt_Option.forEach(maxHeight, (function (maxHeight) { cm.getScrollerElement().style.maxHeight = maxHeight; - })); Belt_Option.forEach(onChange, (function (onValueChange) { cm.on("change", (function (instance) { - return Curry._1(onValueChange, instance.getValue()); + Curry._1(onValueChange, instance.getValue()); })); - })); cm.setValue(value); var wrapper = cm.getWrapperElement(); @@ -420,12 +412,10 @@ function CodeMirror(Props) { Codemirror.off(wrapper, "mousemove", Curry.__1(onMouseMove)); cm.toTextArea(); cmRef.current = undefined; - }); }), []); React.useEffect((function () { cmStateRef.current.hoverHints = hoverHints; - }), [hoverHints]); var cm = cmRef.current; if (cm !== undefined) { @@ -456,7 +446,6 @@ function CodeMirror(Props) { React.useEffect((function () { var cm = Belt_Option.getExn(cmRef.current); cm.setOption("mode", mode); - }), [mode]); React.useEffect((function () { var cm = cmRef.current; @@ -519,6 +508,5 @@ export { CM , useWindowWidth , make$2 as make, - } /* tooltip Not a pure module */ diff --git a/src/components/CodeMirror.res b/src/components/CodeMirror.res index 134e304f6..0d7e73f00 100644 --- a/src/components/CodeMirror.res +++ b/src/components/CodeMirror.res @@ -381,8 +381,8 @@ let useHoverTooltip = (~cmStateRef: React.ref, ~cmRef: React.ref @@ -394,9 +394,9 @@ let useHoverTooltip = (~cmStateRef: React.ref, ~cmRef: React.refCM.markText(from, to_, markerObj) stateRef.current = Shown({ - el: el, - marker: marker, - hoverHint: hoverHint, + el, + marker, + hoverHint, hideTimer: None, }) } @@ -423,9 +423,9 @@ let useHoverTooltip = (~cmStateRef: React.ref, ~cmRef: React.ref () @@ -503,10 +503,7 @@ let updateErrors = (~state: state, ~onMarkerFocus=?, ~onMarkerFocusLeave=?, ~cm: let errorsMap = Belt.HashMap.make(~hintSize=Belt.Array.length(errors), ~id=module(ErrorHash)) state.marked = [] - cm->{ - open CM - clearGutter(errorGutterId) - } + cm->CM.clearGutter(CM.errorGutterId) let wrapper = cm->CM.getWrapperElement @@ -557,35 +554,29 @@ let updateErrors = (~state: state, ~onMarkerFocus=?, ~onMarkerFocusLeave=?, ~cm: let isMarkerId = id => Js.String2.startsWith(id, "gutter-marker") || Js.String2.startsWith(id, "text-marker") - wrapper->{ - open DomUtil - setOnMouseOver(evt => { - let target = Event.target(evt) + wrapper->DomUtil.setOnMouseOver(evt => { + let target = DomUtil.Event.target(evt) - let id = getId(target) - if isMarkerId(id) { - switch extractRowColFromId(id) { - | Some(rowCol) => Belt.Option.forEach(onMarkerFocus, cb => cb(rowCol)) - | None => () - } + let id = DomUtil.getId(target) + if isMarkerId(id) { + switch extractRowColFromId(id) { + | Some(rowCol) => Belt.Option.forEach(onMarkerFocus, cb => cb(rowCol)) + | None => () } - }) - } + } + }) - wrapper->{ - open DomUtil - setOnMouseOut(evt => { - let target = Event.target(evt) + wrapper->DomUtil.setOnMouseOut(evt => { + let target = DomUtil.Event.target(evt) - let id = getId(target) - if isMarkerId(id) { - switch extractRowColFromId(id) { - | Some(rowCol) => Belt.Option.forEach(onMarkerFocusLeave, cb => cb(rowCol)) - | None => () - } + let id = DomUtil.getId(target) + if isMarkerId(id) { + switch extractRowColFromId(id) { + | Some(rowCol) => Belt.Option.forEach(onMarkerFocusLeave, cb => cb(rowCol)) + | None => () } - }) - } + } + }) } @react.component @@ -610,7 +601,7 @@ let make = // props relevant for the react wrapper ): React.element => { let inputElement = React.useRef(Js.Nullable.null) let cmRef: React.ref> = React.useRef(None) - let cmStateRef = React.useRef({marked: [], hoverHints: hoverHints}) + let cmStateRef = React.useRef({marked: [], hoverHints}) let windowWidth = useWindowWidth() let (onMouseOver, onMouseOut, onMouseMove) = useHoverTooltip(~cmStateRef, ~cmRef, ()) diff --git a/src/components/DocSearch.mjs b/src/components/DocSearch.mjs index e01f460ab..ad401e741 100644 --- a/src/components/DocSearch.mjs +++ b/src/components/DocSearch.mjs @@ -52,10 +52,8 @@ function DocSearch(Props) { })); Belt_Option.forEach(Caml_option.nullable_to_opt(inputRef.current), (function (prim) { prim.focus(); - })); e.preventDefault(); - }; var handleGlobalKeyDown = function (e) { var match = e.key; @@ -75,37 +73,33 @@ function DocSearch(Props) { window.addEventListener("keydown", handleGlobalKeyDown); return (function (param) { window.addEventListener("keydown", handleGlobalKeyDown); - }); }), [setState]); var clearInput = function (param) { - return Belt_Option.forEach(Caml_option.nullable_to_opt(inputRef.current), (function (el) { - el.value = ""; - - })); + Belt_Option.forEach(Caml_option.nullable_to_opt(inputRef.current), (function (el) { + el.value = ""; + })); }; var onClick = function (param) { Curry._1(setState, (function (param) { return /* Active */0; })); clearInput(undefined); - return Belt_Option.forEach(Caml_option.nullable_to_opt(inputRef.current), (function (el) { - el.focus(); - - })); + Belt_Option.forEach(Caml_option.nullable_to_opt(inputRef.current), (function (el) { + el.focus(); + })); }; var onBlur = function (param) { clearInput(undefined); - return Curry._1(setState, (function (param) { - return /* Inactive */1; - })); + Curry._1(setState, (function (param) { + return /* Inactive */1; + })); }; var onKeyDown = function (evt) { var key = evt.key; if (key === "Escape") { return Belt_Option.forEach(Caml_option.nullable_to_opt(inputRef.current), (function (el) { el.blur(); - })); } @@ -150,22 +144,20 @@ function DocSearch$Textbox(Props) { Curry._1(setState, (function (param) { return /* Active */0; })); - return Belt_Option.forEach(Caml_option.nullable_to_opt(inputRef.current), (function (el) { - el.focus(); - - })); + Belt_Option.forEach(Caml_option.nullable_to_opt(inputRef.current), (function (el) { + el.focus(); + })); }; var onBlur = function (param) { - return Curry._1(setState, (function (param) { - return /* Inactive */1; - })); + Curry._1(setState, (function (param) { + return /* Inactive */1; + })); }; var onKeyDown = function (evt) { var key = evt.key; if (key === "Escape") { return Belt_Option.forEach(Caml_option.nullable_to_opt(inputRef.current), (function (el) { el.blur(); - })); } @@ -197,6 +189,5 @@ var make = DocSearch; export { Textbox , make , - } /* Icon Not a pure module */ diff --git a/src/components/Docson.mjs b/src/components/Docson.mjs index 951630953..d05414d38 100644 --- a/src/components/Docson.mjs +++ b/src/components/Docson.mjs @@ -25,6 +25,5 @@ var make = Docson$2; export { make , - } /* react Not a pure module */ diff --git a/src/components/Footer.mjs b/src/components/Footer.mjs index 2b0b9cb1a..8e8e90357 100644 --- a/src/components/Footer.mjs +++ b/src/components/Footer.mjs @@ -81,6 +81,5 @@ var make = Footer; export { make , - } /* Icon Not a pure module */ diff --git a/src/components/Icon.mjs b/src/components/Icon.mjs index 97086b1df..87d63e2b3 100644 --- a/src/components/Icon.mjs +++ b/src/components/Icon.mjs @@ -408,6 +408,5 @@ export { ExternalLink , Copy , Clipboard , - } /* react Not a pure module */ diff --git a/src/components/Image.mjs b/src/components/Image.mjs index 77656126b..27f83f4dd 100644 --- a/src/components/Image.mjs +++ b/src/components/Image.mjs @@ -26,6 +26,5 @@ var $$default = Image$default; export { $$default , $$default as default, - } /* react Not a pure module */ diff --git a/src/components/ImageGallery.mjs b/src/components/ImageGallery.mjs index 3d0eed913..4c6503a7b 100644 --- a/src/components/ImageGallery.mjs +++ b/src/components/ImageGallery.mjs @@ -23,17 +23,16 @@ function ImageGallery(Props) { return ; } var timerId = setInterval((function (param) { - return Curry._1(setIndex, (function (prev) { - if (prev === (imgSrcs.length - 1 | 0)) { - return 0; - } else { - return prev + 1 | 0; - } - })); + Curry._1(setIndex, (function (prev) { + if (prev === (imgSrcs.length - 1 | 0)) { + return 0; + } else { + return prev + 1 | 0; + } + })); }), mode._0); return (function (param) { clearInterval(timerId); - }); }), []); var src = Belt_Array.getExn(imgSrcs, index); @@ -41,27 +40,27 @@ function ImageGallery(Props) { var bgColor = i === index ? "bg-gray-40" : "bg-gray-70"; var onClick = function (evt) { evt.preventDefault(); - return Curry._1(setIndex, (function (param) { - return i; - })); + Curry._1(setIndex, (function (param) { + return i; + })); }; return React.createElement("div", { key: src, className: "group flex items-center hover:cursor-pointer h-8 w-8", onClick: onClick }, React.createElement("div", { - className: "h-[1px] group-hover:bg-gray-40 w-full " + bgColor + className: "h-[1px] group-hover:bg-gray-40 w-full " + bgColor + "" })); })); var onClick = function (evt) { evt.preventDefault(); - return Curry._1(setIndex, (function (prev) { - if (prev === (imgSrcs.length - 1 | 0)) { - return 0; - } else { - return prev + 1 | 0; - } - })); + Curry._1(setIndex, (function (prev) { + if (prev === (imgSrcs.length - 1 | 0)) { + return 0; + } else { + return prev + 1 | 0; + } + })); }; return React.createElement("div", { className: className @@ -91,6 +90,5 @@ var make = ImageGallery; export { make , - } /* react Not a pure module */ diff --git a/src/components/Markdown.mjs b/src/components/Markdown.mjs index ce4224e3f..d9ae44aa0 100644 --- a/src/components/Markdown.mjs +++ b/src/components/Markdown.mjs @@ -649,6 +649,5 @@ export { Strong , $$default , $$default as default, - } /* imgEl Not a pure module */ diff --git a/src/components/Markdown.res b/src/components/Markdown.res index 04a21c9ee..da20981c4 100644 --- a/src/components/Markdown.res +++ b/src/components/Markdown.res @@ -3,7 +3,8 @@ module P = { @react.component - let make = (~children) => children + let make = (~children) => + children } // Used for hero like introduction text in @@ -31,8 +32,7 @@ module Cite = { module Info = { @react.component let make = (~children) => - children - + children } module Warn = { @@ -42,17 +42,24 @@ module Warn = { } module UrlBox = { - open Mdx.MdxChildren + open! Mdx.MdxChildren let imgEl = @react.component let make = (~text: string, ~href: string, ~children: Mdx.MdxChildren.t) => { let content = switch classify(children) { - | String(str) => imgEl {React.string(str)} + | String(str) => + + imgEl + {React.string(str)} + | Element(el) => let subChildren = el->getMdxChildren - imgEl {subChildren->toReactElement} + + imgEl + {subChildren->toReactElement} + | Array(arr) => // Scenario: Take the first element, rewrap its children with the hyperlink img let length = Belt.Array.length(arr) @@ -61,7 +68,10 @@ module UrlBox = { let headChildren = head->getMdxChildren <> - imgEl {headChildren->toReactElement} + + imgEl + {headChildren->toReactElement} + {if length > 1 { arr->Js.Array2.slice(~start=1, ~end_=length)->Mdx.arrToReactElement } else { @@ -80,17 +90,20 @@ module UrlBox = { // a plain component when there is an absolute href let link = if Util.Url.isAbsolute(href) { - {React.string(text)} + {React.string(text)} + } else { - {React.string(text)} + {React.string(text)} + } - content link + content + link } } @@ -118,19 +131,18 @@ module Anchor = { module H1 = { @react.component - let make = (~children) => - - children - + let make = (~children) => children } module H2 = { @react.component let make = (~id, ~children) => <> // Here we know that children is always a string (## headline) - - children + + children + + + > } @@ -138,9 +150,11 @@ module H2 = { module H3 = { @react.component let make = (~id, ~children) => - - children + + children + + + } @@ -148,7 +162,10 @@ module H4 = { @react.component let make = (~id, ~children) => - children + children + + + } @@ -157,7 +174,10 @@ module H5 = { let make = (~id, ~children) => - children + children + + + } @@ -230,7 +250,7 @@ module Code = { let codeElement = switch metastring { | None => | Some(metastring) => - let metaSplits = Js.String.split(" ", metastring)->Belt.List.fromArray + let metaSplits = Js.String2.split(metastring, " ")->Belt.List.fromArray let highlightedLines = parseNumericRangeMeta(metastring) @@ -251,7 +271,7 @@ module Code = { let lang = switch className { | None => "text" | Some(str) => - switch Js.String.split("-", str) { + switch Js.String2.split(str, "-") { | ["language", ""] => "text" | ["language", lang] => lang | _ => "text" @@ -325,9 +345,9 @@ module CodeTab = { let code = Js.String2.make(Mdx.MdxChildren.getMdxChildren(codeEl)) let label = Belt.Array.get(labels, i) let tab = { - CodeExample.Toggle.lang: lang, - code: code, - label: label, + CodeExample.Toggle.lang, + code, + label, highlightedLines: Some(Code.parseNumericRangeMeta(metastring)), } Js.Array2.push(acc, tab)->ignore @@ -339,14 +359,18 @@ module CodeTab = { acc }) - + + + } } module Blockquote = { @react.component let make = (~children) => - children + + children + } module Hr = { @@ -383,7 +407,7 @@ module A = { // Ideally one would check if this link is relative first, // but it's very unlikely we'd refer to an absolute URL ending // with .md - let regex = %re("/\\.md(x)?|\\.html$/") + let regex = %re("/\.md(x)?|\.html$/") let href = switch Js.String2.split(href, "#") { | [pathname, anchor] => Js.String2.replaceByRe(pathname, regex, "") ++ ("#" ++ anchor) | [pathname] => Js.String2.replaceByRe(pathname, regex, "") @@ -448,8 +472,16 @@ module Li = { open Mdx first->fromReactElement->getMdxType } { - | "p" => <> {React.array(head)} last > - | _ => <> {React.array(head)} last > + | "p" => + <> + {React.array(head)} + last + > + | _ => + <> + {React.array(head)} + last + > } | _ => children /* Scenario 3 */ diff --git a/src/components/Meta.mjs b/src/components/Meta.mjs index db792ce7a..756084680 100644 --- a/src/components/Meta.mjs +++ b/src/components/Meta.mjs @@ -115,6 +115,5 @@ var make = Meta; export { make , - } /* Next Not a pure module */ diff --git a/src/components/Navigation.mjs b/src/components/Navigation.mjs index 19b64cd53..69d6fd683 100644 --- a/src/components/Navigation.mjs +++ b/src/components/Navigation.mjs @@ -59,7 +59,7 @@ function Navigation$CollapsibleLink(Props) { var allowHover = allowHoverOpt !== undefined ? allowHoverOpt : true; var active = activeOpt !== undefined ? activeOpt : false; var onClick = function (_evt) { - return Curry._2(onStateChange, id, state >= 2 ? /* KeepOpen */0 : /* Closed */2); + Curry._2(onStateChange, id, state >= 2 ? /* KeepOpen */0 : /* Closed */2); }; var onMouseEnter = function (evt) { evt.preventDefault(); @@ -109,13 +109,13 @@ function Navigation$DocsSection$LinkCard(Props) { }, icon, React.createElement("div", undefined, React.createElement("div", { className: "flex items-center text-16 font-medium " + ( active ? "text-fire" : "text-gray-80" - ) + ) + "" }, React.createElement("span", undefined, title), isAbsolute ? React.createElement(Icon.ExternalLink.make, { className: "inline-block ml-2 w-4 h-4" }) : null), React.createElement("div", { className: "block text-14 text-gray-60 " + ( active ? "text-fire-50" : "text-gray-60" - ) + ) + "" }, description))); if (isAbsolute) { return React.createElement("a", { @@ -343,9 +343,9 @@ function Navigation$DocsSection(Props) { } } - return Curry._1(setVersion, (function (param) { - return version; - })); + Curry._1(setVersion, (function (param) { + return version; + })); }; var tmp = version === "latest" ? React.createElement("span", { className: "text-gray-40 text-12" @@ -480,17 +480,17 @@ function Navigation(Props) { var setOverlayOpen = overlayState[1]; var isOverlayOpen = overlayState[0]; var resetCollapsibles = function (param) { - return Curry._1(setCollapsibles, (function (prev) { - return Belt_Array.map(prev, (function (c) { - return { - title: c.title, - children: c.children, - isActiveRoute: c.isActiveRoute, - href: c.href, - state: /* Closed */2 - }; - })); - })); + Curry._1(setCollapsibles, (function (prev) { + return Belt_Array.map(prev, (function (c) { + return { + title: c.title, + children: c.children, + isActiveRoute: c.isActiveRoute, + href: c.href, + state: /* Closed */2 + }; + })); + })); }; var navRef = React.useRef(null); Hooks.useOutsideClick(navRef, resetCollapsibles); @@ -498,9 +498,9 @@ function Navigation(Props) { var events = router.events; var onChangeComplete = function (_url) { resetCollapsibles(undefined); - return Curry._1(setOverlayOpen, (function (param) { - return false; - })); + Curry._1(setOverlayOpen, (function (param) { + return false; + })); }; Curry._2(Next.Router.Events.on, events, { NAME: "routeChangeComplete", @@ -515,28 +515,28 @@ function Navigation(Props) { NAME: "routeChangeComplete", VAL: onChangeComplete }); - return Curry._2(Next.Router.Events.off, events, { - NAME: "hashChangeComplete", - VAL: onChangeComplete - }); + Curry._2(Next.Router.Events.off, events, { + NAME: "hashChangeComplete", + VAL: onChangeComplete + }); }); }), []); var fixedNav = fixed ? "fixed top-0" : "relative"; var onStateChange = function (id, state) { - return Curry._1(setCollapsibles, (function (prev) { - return Belt_Array.keepMap(prev, (function (next) { - if (next.title === id) { - return { - title: next.title, - children: next.children, - isActiveRoute: next.isActiveRoute, - href: next.href, - state: state - }; - } - - })); - })); + Curry._1(setCollapsibles, (function (prev) { + return Belt_Array.keepMap(prev, (function (next) { + if (next.title === id) { + return { + title: next.title, + children: next.children, + isActiveRoute: next.isActiveRoute, + href: next.href, + state: state + }; + } + + })); + })); }; var collapsibleElements = collapsibles.map(function (coll) { return React.createElement(Navigation$CollapsibleLink, { @@ -602,13 +602,13 @@ function Navigation(Props) { }, React.createElement("div", { className: "hidden sm:block mr-6" }, React.createElement(DocSearch.make, {})), React.createElement("a", { - className: "mr-5 no-underline block text-inherit hover:cursor-pointer hover:text-fire-30 text-gray-40 mb-px", + className: "mr-5 " + link, href: githubHref, rel: "noopener noreferrer" }, React.createElement(Icon.GitHub.make, { className: "w-6 h-6 opacity-50 hover:opacity-100" })), React.createElement("a", { - className: "mr-5 no-underline block text-inherit hover:cursor-pointer hover:text-fire-30 text-gray-40 mb-px", + className: "mr-5 " + link, href: "https://twitter.com/rescriptlang", rel: "noopener noreferrer" }, React.createElement(Icon.Twitter.make, { @@ -624,9 +624,9 @@ function Navigation(Props) { onClick: (function (evt) { evt.preventDefault(); resetCollapsibles(undefined); - return Curry._1(setOverlayOpen, (function (prev) { - return !prev; - })); + Curry._1(setOverlayOpen, (function (prev) { + return !prev; + })); }) }, React.createElement(Icon.DrawerDots.make, { className: "h-1 w-auto block " + ( @@ -654,6 +654,5 @@ var make = Navigation; export { make , - } /* Icon Not a pure module */ diff --git a/src/components/SearchBox.mjs b/src/components/SearchBox.mjs index a76f2edd6..cbee801f8 100644 --- a/src/components/SearchBox.mjs +++ b/src/components/SearchBox.mjs @@ -23,7 +23,7 @@ function SearchBox(Props) { var textInput = React.useRef(null); var onMouseDownClear = function (evt) { evt.preventDefault(); - return Curry._1(onClear, undefined); + Curry._1(onClear, undefined); }; var onAreaFocus = function (evt) { var el = evt.target; @@ -31,20 +31,19 @@ function SearchBox(Props) { if (isDiv && state === /* Inactive */1) { return Belt_Option.forEach(Caml_option.nullable_to_opt(textInput.current), (function (el) { el.focus(); - })); } }; var onFocus = function (param) { - return Curry._1(setState, (function (param) { - return /* Active */0; - })); + Curry._1(setState, (function (param) { + return /* Active */0; + })); }; var onBlur = function (param) { - return Curry._1(setState, (function (param) { - return /* Inactive */1; - })); + Curry._1(setState, (function (param) { + return /* Inactive */1; + })); }; var onKeyDown = function (evt) { var key = evt.key; @@ -72,7 +71,7 @@ function SearchBox(Props) { }; var onChange = function (evt) { evt.preventDefault(); - return Curry._1(onValueChange, evt.target.value); + Curry._1(onValueChange, evt.target.value); }; return React.createElement("div", { className: ( @@ -107,6 +106,5 @@ var make = SearchBox; export { make , - } /* Icon Not a pure module */ diff --git a/src/components/Tag.mjs b/src/components/Tag.mjs index abd6ba9fb..b14900245 100644 --- a/src/components/Tag.mjs +++ b/src/components/Tag.mjs @@ -13,6 +13,5 @@ var make = Tag; export { make , - } /* react Not a pure module */ diff --git a/src/components/Text.mjs b/src/components/Text.mjs index 2170a7dae..690ad7d56 100644 --- a/src/components/Text.mjs +++ b/src/components/Text.mjs @@ -8,6 +8,5 @@ var Link = { export { Link , - } /* No side effect */ diff --git a/src/components/VersionSelect.mjs b/src/components/VersionSelect.mjs index 616f35f1a..8cb24c4cb 100644 --- a/src/components/VersionSelect.mjs +++ b/src/components/VersionSelect.mjs @@ -27,6 +27,5 @@ var make = VersionSelect; export { make , - } /* react Not a pure module */ diff --git a/src/components/Video.mjs b/src/components/Video.mjs index b14b5b6ab..881140fd1 100644 --- a/src/components/Video.mjs +++ b/src/components/Video.mjs @@ -29,6 +29,5 @@ var $$default = Video$default; export { $$default , $$default as default, - } /* react Not a pure module */ diff --git a/src/components/WarningTable.mjs b/src/components/WarningTable.mjs index 4961ef893..cf4d24a17 100644 --- a/src/components/WarningTable.mjs +++ b/src/components/WarningTable.mjs @@ -30,6 +30,5 @@ var make = WarningTable; export { make , - } /* react Not a pure module */ diff --git a/src/layouts/ApiLayout.mjs b/src/layouts/ApiLayout.mjs index 29848f49e..ac248f5f0 100644 --- a/src/layouts/ApiLayout.mjs +++ b/src/layouts/ApiLayout.mjs @@ -89,16 +89,16 @@ function ApiLayout(Props) { var setSidebarOpen = match[1]; var isSidebarOpen = match[0]; var toggleSidebar = function (param) { - return Curry._1(setSidebarOpen, (function (prev) { - return !prev; - })); + Curry._1(setSidebarOpen, (function (prev) { + return !prev; + })); }; React.useEffect((function () { var events = router.events; var onChangeComplete = function (_url) { - return Curry._1(setSidebarOpen, (function (param) { - return false; - })); + Curry._1(setSidebarOpen, (function (param) { + return false; + })); }; Curry._2(Next.Router.Events.on, events, { NAME: "routeChangeComplete", @@ -113,10 +113,10 @@ function ApiLayout(Props) { NAME: "routeChangeComplete", VAL: onChangeComplete }); - return Curry._2(Next.Router.Events.off, events, { - NAME: "hashChangeComplete", - VAL: onChangeComplete - }); + Curry._2(Next.Router.Events.off, events, { + NAME: "hashChangeComplete", + VAL: onChangeComplete + }); }); }), []); var tmp; @@ -126,7 +126,7 @@ function ApiLayout(Props) { var version = evt.target.value; var url = Url.parse(route); var targetUrl = "/" + (url.base.join("/") + ("/" + (version + ("/" + url.pagepath.join("/"))))); - return Next.Router.push(router, targetUrl); + Next.Router.push(router, targetUrl); }; tmp = React.createElement(VersionSelect.make, { onChange: onChange, @@ -188,6 +188,5 @@ export { OldDocsWarning , makeBreadcrumbs , make , - } /* Next Not a pure module */ diff --git a/src/layouts/ApiOverviewLayout.mjs b/src/layouts/ApiOverviewLayout.mjs index 40d35fa2f..c8a6fc07d 100644 --- a/src/layouts/ApiOverviewLayout.mjs +++ b/src/layouts/ApiOverviewLayout.mjs @@ -51,6 +51,5 @@ var Docs = { export { Docs , - } /* react Not a pure module */ diff --git a/src/layouts/ApiOverviewLayout8_0_0.mjs b/src/layouts/ApiOverviewLayout8_0_0.mjs index 2f3a1aa7a..faa29c172 100644 --- a/src/layouts/ApiOverviewLayout8_0_0.mjs +++ b/src/layouts/ApiOverviewLayout8_0_0.mjs @@ -59,6 +59,5 @@ var Docs = { export { Docs , - } /* Next Not a pure module */ diff --git a/src/layouts/BeltDocsLayout.mjs b/src/layouts/BeltDocsLayout.mjs index 4d9d4947e..d63cd6c81 100644 --- a/src/layouts/BeltDocsLayout.mjs +++ b/src/layouts/BeltDocsLayout.mjs @@ -266,6 +266,5 @@ var Prose = { export { Docs , Prose , - } /* indexData Not a pure module */ diff --git a/src/layouts/BeltDocsLayout8_0_0.mjs b/src/layouts/BeltDocsLayout8_0_0.mjs index 08e02e6f2..abf2d705e 100644 --- a/src/layouts/BeltDocsLayout8_0_0.mjs +++ b/src/layouts/BeltDocsLayout8_0_0.mjs @@ -271,6 +271,5 @@ var Prose = { export { Docs , Prose , - } /* indexData Not a pure module */ diff --git a/src/layouts/CommunityLayout.mjs b/src/layouts/CommunityLayout.mjs index d102cb4a1..ef8a6a9d0 100644 --- a/src/layouts/CommunityLayout.mjs +++ b/src/layouts/CommunityLayout.mjs @@ -40,6 +40,5 @@ var make = CommunityLayout$1; export { make , - } /* CommunityLayout Not a pure module */ diff --git a/src/layouts/DocsLayout.mjs b/src/layouts/DocsLayout.mjs index f92bfe10c..27ada2c69 100644 --- a/src/layouts/DocsLayout.mjs +++ b/src/layouts/DocsLayout.mjs @@ -57,16 +57,16 @@ function DocsLayout(Props) { var setSidebarOpen = match[1]; var isSidebarOpen = match[0]; var toggleSidebar = function (param) { - return Curry._1(setSidebarOpen, (function (prev) { - return !prev; - })); + Curry._1(setSidebarOpen, (function (prev) { + return !prev; + })); }; React.useEffect((function () { var events = router.events; var onChangeComplete = function (_url) { - return Curry._1(setSidebarOpen, (function (param) { - return false; - })); + Curry._1(setSidebarOpen, (function (param) { + return false; + })); }; Curry._2(Next.Router.Events.on, events, { NAME: "routeChangeComplete", @@ -81,10 +81,10 @@ function DocsLayout(Props) { NAME: "routeChangeComplete", VAL: onChangeComplete }); - return Curry._2(Next.Router.Events.off, events, { - NAME: "hashChangeComplete", - VAL: onChangeComplete - }); + Curry._2(Next.Router.Events.off, events, { + NAME: "hashChangeComplete", + VAL: onChangeComplete + }); }); }), []); var tmp; @@ -95,7 +95,7 @@ function DocsLayout(Props) { var version = evt.target.value; var url = Url.parse(route); var targetUrl = "/" + (url.base.join("/") + ("/" + (version + ("/" + url.pagepath.join("/"))))); - return Next.Router.push(router, targetUrl); + Next.Router.push(router, targetUrl); }; tmp = React.createElement(VersionSelect.make, { onChange: onChange, @@ -278,6 +278,5 @@ export { makeBreadcrumbs , make , Make , - } /* Meta Not a pure module */ diff --git a/src/layouts/DomDocsLayout.mjs b/src/layouts/DomDocsLayout.mjs index 7f1aaafc8..fdee199f4 100644 --- a/src/layouts/DomDocsLayout.mjs +++ b/src/layouts/DomDocsLayout.mjs @@ -105,6 +105,5 @@ var Prose = { export { Docs , Prose , - } /* indexData Not a pure module */ diff --git a/src/layouts/DomDocsLayout8_0_0.mjs b/src/layouts/DomDocsLayout8_0_0.mjs index f6a754c7a..484e17174 100644 --- a/src/layouts/DomDocsLayout8_0_0.mjs +++ b/src/layouts/DomDocsLayout8_0_0.mjs @@ -110,6 +110,5 @@ var Prose = { export { Docs , Prose , - } /* indexData Not a pure module */ diff --git a/src/layouts/GenTypeDocsLayout.mjs b/src/layouts/GenTypeDocsLayout.mjs index bcf24f936..be2f1d2e1 100644 --- a/src/layouts/GenTypeDocsLayout.mjs +++ b/src/layouts/GenTypeDocsLayout.mjs @@ -57,6 +57,5 @@ var make = GenTypeDocsLayout; export { make , - } /* LatestLayout Not a pure module */ diff --git a/src/layouts/JsDocsLayout.mjs b/src/layouts/JsDocsLayout.mjs index 2ed5901d5..eac1aceed 100644 --- a/src/layouts/JsDocsLayout.mjs +++ b/src/layouts/JsDocsLayout.mjs @@ -297,6 +297,5 @@ var Prose = { export { Docs , Prose , - } /* indexData Not a pure module */ diff --git a/src/layouts/JsDocsLayout8_0_0.mjs b/src/layouts/JsDocsLayout8_0_0.mjs index 81c6b14f7..c53839d82 100644 --- a/src/layouts/JsDocsLayout8_0_0.mjs +++ b/src/layouts/JsDocsLayout8_0_0.mjs @@ -302,6 +302,5 @@ var Prose = { export { Docs , Prose , - } /* indexData Not a pure module */ diff --git a/src/layouts/LandingPageLayout.mjs b/src/layouts/LandingPageLayout.mjs index 886649339..d78b14d51 100644 --- a/src/layouts/LandingPageLayout.mjs +++ b/src/layouts/LandingPageLayout.mjs @@ -156,23 +156,21 @@ function LandingPageLayout$QuickInstall$CopyButton(Props) { var nextFrameId = window.requestAnimationFrame(function (param) { bannerEl.classList.toggle("opacity-0"); bannerEl.classList.toggle("opacity-100"); - }); var timeoutId = setTimeout((function (param) { buttonEl.removeChild(bannerEl); - return Curry._1(setState, (function (param) { - return /* Init */0; - })); + Curry._1(setState, (function (param) { + return /* Init */0; + })); }), 2000); return (function (param) { window.cancelAnimationFrame(nextFrameId); clearTimeout(timeoutId); - }); }), [state]); return React.createElement("button", { ref: buttonRef, - className: "relative h-10 w-10 flex justify-center\titems-center ", + className: "relative h-10 w-10 flex justify-center items-center ", disabled: state === /* Copied */1, onClick: onClick }, React.createElement(Icon.Copy.make, { @@ -213,7 +211,7 @@ function LandingPageLayout$QuickInstall(Props) { className: "relative z-1 space-y-12 text-gray-80 font-semibold text-24 md:text-32 leading-2" }, React.createElement("span", { className: "bg-fire-5 rounded-lg border border-fire-10 p-1 " - }, "Leverage the full power"), " of JavaScript in a robustly typed language without the fear of `any` types.")), React.createElement("div", { + }, "Leverage the full power"), " of JavaScript in a robustly typed language without the fear of \`any\` types.")), React.createElement("div", { className: "w-full mt-12 md:flex flex-col lg:flex-row md:justify-between " }, React.createElement("p", { className: "relative z-1 text-gray-80 font-semibold text-24 md:text-32 leading-2 max-w-[32rem]" @@ -265,14 +263,14 @@ function LandingPageLayout$MainUSP$Item(Props) { }, src: "/static/lp/grid2.svg" }))), React.createElement("svg", { - className: "md:hidden absolute z-1 w-full h-full bottom-0 left-0 " + polyColor, + className: "md:hidden absolute z-1 w-full h-full bottom-0 left-0 " + polyColor + "", preserveAspectRatio: "none", viewBox: "0 0 100 100" }, React.createElement("polygon", { className: "fill-current", points: polyPointsMobile })), React.createElement("svg", { - className: "hidden md:block absolute z-1 w-full h-full right-0 top-0 " + polyColor, + className: "hidden md:block absolute z-1 w-full h-full right-0 top-0 " + polyColor + "", preserveAspectRatio: "none", viewBox: "0 0 100 100" }, React.createElement("polygon", { @@ -319,7 +317,7 @@ var item2 = React.createElement(LandingPageLayout$MainUSP$Item, { type: "video/mp4" })), polygonDirection: /* Up */0, - paragraph: "Every ReScript app is fully typed and provides\n reliable type information for any given value in your program. We\n prioritize simpler types over complex types for the sake of\n clarity and easy debugability. No `any`, no magic types, no surprise\n `undefined`.\n " + paragraph: "Every ReScript app is fully typed and provides\n reliable type information for any given value in your program. We\n prioritize simpler types over complex types for the sake of\n clarity and easy debugability. No \`any\`, no magic types, no surprise\n \`undefined\`.\n " }); var item3 = React.createElement(LandingPageLayout$MainUSP$Item, { @@ -561,6 +559,5 @@ var make = LandingPageLayout; export { make , - } /* item1 Not a pure module */ diff --git a/src/layouts/LandingPageLayout.res b/src/layouts/LandingPageLayout.res index bf3a58f31..aad3af730 100644 --- a/src/layouts/LandingPageLayout.res +++ b/src/layouts/LandingPageLayout.res @@ -219,7 +219,7 @@ module QuickInstall = { diff --git a/src/layouts/MainLayout.mjs b/src/layouts/MainLayout.mjs index f15c53840..e9d16f25b 100644 --- a/src/layouts/MainLayout.mjs +++ b/src/layouts/MainLayout.mjs @@ -34,6 +34,5 @@ var make = MainLayout; export { make , - } /* Mdx Not a pure module */ diff --git a/src/layouts/ManualDocsLayout.mjs b/src/layouts/ManualDocsLayout.mjs index d106c452a..cecea8f30 100644 --- a/src/layouts/ManualDocsLayout.mjs +++ b/src/layouts/ManualDocsLayout.mjs @@ -147,7 +147,8 @@ function ManualDocsLayout$V800(Props) { return param[0] === version$2; }); var label = match !== undefined ? match[1] : version$2; - var additionalText = version$2 === "v8.0.0" ? "(These docs are equivalent to the old BuckleScript docs before the ReScript rebrand)" : ""; + var additionalText; + additionalText = "(These docs are equivalent to the old BuckleScript docs before the ReScript rebrand)"; var warnBanner = React.createElement("div", { className: "mb-10" }, React.createElement(Markdown.Info.make, { @@ -187,6 +188,5 @@ export { Latest , V900 , V800 , - } /* LatestLayout Not a pure module */ diff --git a/src/layouts/ReactDocsLayout.mjs b/src/layouts/ReactDocsLayout.mjs index f620457c8..e5c46d7e8 100644 --- a/src/layouts/ReactDocsLayout.mjs +++ b/src/layouts/ReactDocsLayout.mjs @@ -75,6 +75,5 @@ export { Toc , Latest , make , - } /* Latest Not a pure module */ diff --git a/src/layouts/ReasonCompilerDocsLayout.mjs b/src/layouts/ReasonCompilerDocsLayout.mjs index 813d12c2e..2d04cbfee 100644 --- a/src/layouts/ReasonCompilerDocsLayout.mjs +++ b/src/layouts/ReasonCompilerDocsLayout.mjs @@ -123,6 +123,5 @@ var make = ReasonCompilerDocsLayout; export { make , - } /* tocData Not a pure module */ diff --git a/src/layouts/SidebarLayout.mjs b/src/layouts/SidebarLayout.mjs index 5eb0f6713..908fab2ea 100644 --- a/src/layouts/SidebarLayout.mjs +++ b/src/layouts/SidebarLayout.mjs @@ -143,7 +143,7 @@ function SidebarLayout$Sidebar(Props) { className: "md:hidden h-16", onClick: (function (evt) { evt.preventDefault(); - return Curry._1(toggle, undefined); + Curry._1(toggle, undefined); }) }, React.createElement(Icon.Close.make, {}))), preludeSection, React.createElement("div", { className: "mb-56" @@ -219,9 +219,9 @@ function SidebarLayout(Props) { React.useEffect((function () { var events = router.events; var onChangeComplete = function (_url) { - return Curry._1(setSidebarOpen, (function (param) { - return false; - })); + Curry._1(setSidebarOpen, (function (param) { + return false; + })); }; Curry._2(Next.Router.Events.on, events, { NAME: "routeChangeComplete", @@ -236,10 +236,10 @@ function SidebarLayout(Props) { NAME: "routeChangeComplete", VAL: onChangeComplete }); - return Curry._2(Next.Router.Events.off, events, { - NAME: "hashChangeComplete", - VAL: onChangeComplete - }); + Curry._2(Next.Router.Events.off, events, { + NAME: "hashChangeComplete", + VAL: onChangeComplete + }); }); }), []); var editLinkEl = editHref !== undefined ? React.createElement("a", { @@ -270,9 +270,9 @@ function SidebarLayout(Props) { hidden: isNavOpen, onClick: (function (evt) { evt.preventDefault(); - return Curry._1(setSidebarOpen, (function (prev) { - return !prev; - })); + Curry._1(setSidebarOpen, (function (prev) { + return !prev; + })); }) }), React.createElement("div", { className: "truncate overflow-x-auto touch-scroll flex items-center space-x-4 md:justify-between mr-4 w-full" @@ -298,6 +298,5 @@ export { Toc , Sidebar , make , - } /* Mdx Not a pure module */ diff --git a/src/vendor/Json.mjs b/src/vendor/Json.mjs index 7da8eab95..8d88a322c 100644 --- a/src/vendor/Json.mjs +++ b/src/vendor/Json.mjs @@ -50,6 +50,5 @@ export { parse , parseOrRaise , stringify , - } /* No side effect */ diff --git a/src/vendor/Json_decode.mjs b/src/vendor/Json_decode.mjs index 4d2bf963d..9e519b51a 100644 --- a/src/vendor/Json_decode.mjs +++ b/src/vendor/Json_decode.mjs @@ -449,6 +449,5 @@ export { withDefault , map , andThen , - } /* No side effect */ diff --git a/src/vendor/Json_encode.mjs b/src/vendor/Json_encode.mjs index d0742a9e7..f36dc0505 100644 --- a/src/vendor/Json_encode.mjs +++ b/src/vendor/Json_encode.mjs @@ -88,6 +88,5 @@ export { object_ , array , list , - } /* No side effect */
children
imgEl {React.string(str)}
+ imgEl + {React.string(str)} +
imgEl {subChildren->toReactElement}
+ imgEl + {subChildren->toReactElement} +
imgEl {headChildren->toReactElement}
+ imgEl + {headChildren->toReactElement} +
+ children +
{React.array(head)}