Skip to content

Commit be5398a

Browse files
committed
Merge branch 'master' of github.com:rescript-lang/rescript-lang.org into v11
2 parents 5edfe22 + e109191 commit be5398a

26 files changed

+1295
-1384
lines changed

data/api/v12.0.0/belt.json

Lines changed: 439 additions & 252 deletions
Large diffs are not rendered by default.

data/api/v12.0.0/js.json

Lines changed: 36 additions & 36 deletions
Large diffs are not rendered by default.

data/api/v12.0.0/stdlib.json

Lines changed: 500 additions & 430 deletions
Large diffs are not rendered by default.

src/ApiDocs.res

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ module SidebarTree = {
170170
open Url
171171
ReactEvent.Form.preventDefault(evt)
172172
let version = (evt->ReactEvent.Form.target)["value"]
173+
WebAPI.Storage.setItem(localStorage, ~key=(Manual :> string), ~value=version)
173174
let url = Url.parse(router.asPath)
174175
switch url.pagepath[1] {
175176
| Some("core") | Some("stdlib") =>
@@ -369,14 +370,15 @@ let default = (props: props) => {
369370
| Error(_) => React.null
370371
}
371372

372-
let prefix = {
373-
{Url.name: "API", href: "/docs/manual/" ++ (version ++ "/api")}
374-
}
373+
let prefix = {Url.name: "API", href: "/docs/manual/" ++ (version ++ "/api")}
375374

376375
let breadcrumbs = ApiLayout.makeBreadcrumbs(~prefix, router.asPath)
377376

378377
<SidebarLayout
379-
breadcrumbs
378+
breadcrumbs={list{
379+
{Url.name: "Docs", href: "/docs/manual/" ++ version ++ "/introduction"},
380+
...breadcrumbs,
381+
}}
380382
metaTitle={title ++ " | ReScript API"}
381383
theme=#Reason
382384
components=ApiMarkdown.default

src/DocsOverview.res

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -30,35 +30,8 @@ let default = (~showVersionSelect=true) => {
3030
("Reanalyze", "https://github.com/rescript-lang/reanalyze"),
3131
]
3232

33-
let versionSelect = if showVersionSelect {
34-
let onChange = evt => {
35-
open Url
36-
ReactEvent.Form.preventDefault(evt)
37-
let version = (evt->ReactEvent.Form.target)["value"]
38-
let url = Url.parse(router.route)
39-
40-
let targetUrl =
41-
"/" ++
42-
(Array.join(url.base, "/") ++
43-
("/" ++ (version ++ ("/" ++ Array.join(url.pagepath, "/")))))
44-
router->Next.Router.push(targetUrl)
45-
}
46-
47-
<div className="text-fire">
48-
<VersionSelect
49-
availableVersions=Constants.allManualVersions
50-
nextVersion=?Constants.nextVersion
51-
onChange
52-
version
53-
/>
54-
</div>
55-
} else {
56-
React.null
57-
}
58-
5933
<>
6034
<div>
61-
versionSelect
6235
<div className="mb-6" />
6336
<Markdown.H1> {React.string("Docs")} </Markdown.H1>
6437
</div>

src/Playground.res

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -886,7 +886,9 @@ module Settings = {
886886
ReactEvent.Form.preventDefault(evt)
887887
let id: string = (evt->ReactEvent.Form.target)["value"]
888888
switch id->Semver.parse {
889-
| Some(v) => onCompilerSelect(v)
889+
| Some(v) =>
890+
onCompilerSelect(v)
891+
WebAPI.Storage.setItem(localStorage, ~key=(Url.Playground :> string), ~value=id)
890892
| None => ()
891893
}
892894
}}>
@@ -908,28 +910,30 @@ module Settings = {
908910
{switch experimentalVersions {
909911
| [] => React.null
910912
| experimentalVersions =>
911-
let versionByOrder = experimentalVersions->Belt.SortArray.stableSortBy((a, b) => {
912-
let cmp = ({Semver.major: major, minor, patch, preRelease}) => {
913-
let preRelease = switch preRelease {
914-
| Some(preRelease) =>
915-
switch preRelease {
916-
| Dev(id) => 0 + id
917-
| Alpha(id) => 10 + id
918-
| Beta(id) => 20 + id
919-
| Rc(id) => 30 + id
913+
let versionByOrder = experimentalVersions->Array.toSorted((b, a) => {
914+
if a.major != b.major {
915+
a.major - b.major
916+
} else if a.minor != b.minor {
917+
a.minor - b.minor
918+
} else if a.patch != b.patch {
919+
a.patch - b.patch
920+
} else {
921+
switch (a.preRelease, b.preRelease)->Option.all2 {
922+
| Some((prereleaseA, prereleaseB)) =>
923+
switch (prereleaseA, prereleaseB) {
924+
| (Rc(rcA), Rc(rcB)) => rcA - rcB
925+
| (Rc(rcA), _) => rcA
926+
| (Beta(betaA), Beta(betaB)) => betaA - betaB
927+
| (Beta(betaA), _) => betaA
928+
| (Alpha(alphaA), Alpha(alphaB)) => alphaA - alphaB
929+
| (Alpha(alphaA), _) => alphaA
930+
| (Dev(devA), Dev(devB)) => devA - devB
931+
| (Dev(devA), _) => devA
920932
}
933+
921934
| None => 0
922935
}
923-
let number =
924-
[major, minor, patch]
925-
->Array.map(v => v->Int.toString)
926-
->Array.join("")
927-
->Int.fromString
928-
->Option.getOr(0)
929-
930-
number + preRelease
931-
}
932-
cmp(b) - cmp(a)
936+
}->Float.fromInt
933937
})
934938
<>
935939
<VersionSelect.SectionHeader value=Constants.dropdownLabelNext />
@@ -1417,7 +1421,11 @@ let make = (~versions: array<string>) => {
14171421

14181422
let initialVersion = switch Dict.get(router.query, "version") {
14191423
| Some(version) => version->Semver.parse
1420-
| None => lastStableVersion
1424+
| None =>
1425+
switch Url.getVersionFromStorage(Playground) {
1426+
| Some(v) => v->Semver.parse
1427+
| None => lastStableVersion
1428+
}
14211429
}
14221430

14231431
let initialLang = switch Dict.get(router.query, "ext") {

src/SyntaxLookup.res

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -147,24 +147,32 @@ type props = {mdxSources: array<MdxRemote.output>}
147147
type params = {slug: string}
148148

149149
let decode = (json: JSON.t) => {
150-
open Json.Decode
151-
let id = json->field("id", string, _)
152-
let keywords = json->field("keywords", array(string, ...), _)
153-
let name = json->field("name", string, _)
154-
let summary = json->field("summary", string, _)
155-
let category = json->field("category", string, _)->Category.fromString
156-
let status =
157-
json
158-
->optional(field("status", string, _), _)
159-
->Option.mapOr(Status.Active, Status.fromString)
160-
161-
{
162-
id,
163-
keywords,
164-
name,
165-
summary,
166-
category,
167-
status,
150+
open JSON
151+
switch json {
152+
| Object(dict{
153+
"id": String(id),
154+
"keywords": Array(keywords),
155+
"name": String(name),
156+
"summary": String(summary),
157+
"category": String(category),
158+
"status": ?status,
159+
}) => {
160+
id,
161+
name,
162+
summary,
163+
category: Category.fromString(category),
164+
keywords: keywords->Array.filterMap(k =>
165+
switch k {
166+
| String(k) => Some(k)
167+
| _ => None
168+
}
169+
),
170+
status: switch status {
171+
| Some(String(status)) => status->Status.fromString
172+
| _ => Status.Active
173+
},
174+
}
175+
| _ => throw(Failure(`Failed to decode SyntaxLookup. ${__LOC__}`))
168176
}
169177
}
170178

src/Try.res

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,15 @@ let default = props => {
44
let (isOverlayOpen, setOverlayOpen) = React.useState(() => false)
55

66
let lazyPlayground = Next.Dynamic.dynamic(
7-
async () => await import(Playground.make),
7+
async () => {
8+
try {
9+
await import(Playground.make)
10+
} catch {
11+
| JsExn(e) =>
12+
Console.error2("Error loading Playground:", e)
13+
JsExn.throw(e)
14+
}
15+
},
816
{
917
ssr: false,
1018
loading: () => <span> {React.string("Loading...")} </span>,

src/bindings/Node.res

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ module Process = {
1616
@scope("process") external env: Dict.t<string> = "env"
1717
@scope("process") @val external argv: array<string> = "argv"
1818
@scope("process") external exit: int => unit = "exit"
19+
module Env = {
20+
@scope(("process", "env")) external nodeEnv: string = "NODE_ENV"
21+
}
1922
}
2023

2124
module Fs = {

0 commit comments

Comments
 (0)