From e90dd5002382326e271b64108ba40b5935d9f628 Mon Sep 17 00:00:00 2001 From: Patrick Stapfer Date: Wed, 30 Dec 2020 20:27:22 +0100 Subject: [PATCH 01/10] Upgrade to ReScript 8.4.2 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 32f467d7f..e210e7714 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ }, "devDependencies": { "autoprefixer": "^9.5.1", - "bs-platform": "8.3.3-dev.2", + "bs-platform": "8.4.2", "cssnano": "^4.1.10", "postcss-cli": "^7.1.1", "reanalyze": "^2.5.0", diff --git a/yarn.lock b/yarn.lock index 7eed3c216..aa337bb7f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2161,10 +2161,10 @@ bs-fetch@^0.3.1: resolved "https://registry.yarnpkg.com/bs-fetch/-/bs-fetch-0.3.1.tgz#9c7d074b27e6bb2b9f2ec985964f32bcac49f79e" integrity sha512-MxwnuuXPldXnoCtlpeN5JNbbmb1tVgsqpLfVunvuMLAIQNyP0TqoImHiQRTz38PBSN8/iX+2yVlm+PFJfnHHiA== -bs-platform@8.3.3-dev.2: - version "8.3.3-dev.2" - resolved "https://registry.yarnpkg.com/bs-platform/-/bs-platform-8.3.3-dev.2.tgz#af94cf48708899b02af76095d4197e20e6d12e97" - integrity sha512-2G2PPIFhUBoN1tzZW9PurjWgvCg+Lx/gIqkAjPaDIIA6S8GFPs/UcTyl4ZwJNvQdKv33Qgih2eYTiBp4hCM3MQ== +bs-platform@8.4.2: + version "8.4.2" + resolved "https://registry.yarnpkg.com/bs-platform/-/bs-platform-8.4.2.tgz#778dabd1dfb3bc95e0086c58dabae74e4ebdee8a" + integrity sha512-9q7S4/LLV/a68CweN382NJdCCr/lOSsJR3oQYnmPK98ChfO/AdiA3lYQkQTp6T+U0I5Z5RypUAUprNstwDtMDQ== buffer-from@^1.0.0, buffer-from@^1.1.1: version "1.1.1" From 174c9025c73f6a8ad841aa410383e80de9d9ca38 Mon Sep 17 00:00:00 2001 From: Patrick Stapfer Date: Wed, 30 Dec 2020 20:47:13 +0100 Subject: [PATCH 02/10] Remove re_pages, relocate all ReScript code into src/ --- _blogposts/2020-08-28-new-rescript-logo.mdx | 2 +- ...itor-support-custom-operators-and-more.mdx | 2 +- .../state-of-reasonml-org-2020-q2-pt1.mdx | 2 +- .../state-of-reasonml-org-2020-q2-pt3.mdx | 2 +- .../state-of-reasonml-org-2020-q2-pt4.mdx | 2 +- bsconfig.json | 19 +- pages/_app.js | 3 +- pages/blog.js | 4 +- pages/blog/[slug].js | 2 +- pages/docs/latest.js | 2 +- .../docs/manual/latest/build-performance.mdx | 2 +- .../docs/manual/v8.0.0/build-performance.mdx | 2 +- pages/docs/v8.0.0.js | 2 +- pages/packages.js | 4 +- pages/try.js | 2 +- scripts/generate_feed.js | 2 +- {re_pages => src}/Blog.js | 84 ++-- {re_pages => src}/Blog.res | 0 {re_pages => src}/Blog_Article.js | 36 +- {re_pages => src}/Blog_Article.res | 0 {re_pages => src}/DocsOverview.js | 8 +- {re_pages => src}/DocsOverview.res | 0 {re_pages => src}/Packages.js | 48 +- {re_pages => src}/Packages.res | 0 {re_pages => src}/Packages.resi | 0 {re_pages => src}/Playground.js | 378 ++++++++-------- {re_pages => src}/Playground.res | 0 {bindings => src/bindings}/Fuse.js | 0 {bindings => src/bindings}/Fuse.res | 0 .../bindings}/IntlDateTimeFormat.js | 0 .../bindings}/IntlDateTimeFormat.res | 0 {bindings => src/bindings}/Next.js | 0 {bindings => src/bindings}/Next.res | 0 {bindings => src/bindings}/NodeGlob.js | 0 {bindings => src/bindings}/NodeGlob.res | 0 .../bindings}/RescriptCompilerApi.js | 2 +- .../bindings}/RescriptCompilerApi.res | 0 {bindings => src/bindings}/Worker.js | 0 {bindings => src/bindings}/Worker.res | 0 {common => src/common}/Ansi.js | 412 +++++++++--------- {common => src/common}/Ansi.res | 0 {common => src/common}/App.js | 9 +- {common => src/common}/App.res | 6 +- {common => src/common}/App.resi | 0 {common => src/common}/BlogApi.js | 4 +- {common => src/common}/BlogApi.res | 2 +- {common => src/common}/BlogFrontmatter.js | 2 +- {common => src/common}/BlogFrontmatter.res | 2 +- {common => src/common}/ColorTheme.js | 0 {common => src/common}/ColorTheme.res | 0 {common => src/common}/CompilerManagerHook.js | 194 ++++----- .../common}/CompilerManagerHook.res | 0 {common => src/common}/DateStr.js | 0 {common => src/common}/DateStr.res | 0 {common => src/common}/DateStr.resi | 0 {common => src/common}/DocFrontmatter.js | 0 {common => src/common}/DocFrontmatter.res | 0 {common => src/common}/HighlightJs.js | 0 {common => src/common}/HighlightJs.res | 0 {common => src/common}/Mdx.js | 0 {common => src/common}/Mdx.res | 0 {common => src/common}/ProcessEnv.js | 0 {common => src/common}/ProcessEnv.res | 0 {common => src/common}/SimpleRequest.js | 0 {common => src/common}/SimpleRequest.res | 0 {common => src/common}/Url.js | 0 {common => src/common}/Url.res | 0 {common => src/common}/Util.js | 0 {common => src/common}/Util.res | 0 .../common}/WarningFlagDescription.js | 0 .../common}/WarningFlagDescription.res | 0 {common => src/common}/XmlHttpRequest.js | 0 {common => src/common}/XmlHttpRequest.res | 0 {components => src/components}/AnsiPre.js | 0 {components => src/components}/AnsiPre.res | 0 {components => src/components}/ApiIntro.js | 0 {components => src/components}/ApiIntro.res | 0 {components => src/components}/ApiMarkdown.js | 0 .../components}/ApiMarkdown.res | 0 {components => src/components}/Button.js | 0 {components => src/components}/Button.res | 0 {components => src/components}/CodeExample.js | 0 .../components}/CodeExample.res | 0 {components => src/components}/CodeMirror.js | 4 +- {components => src/components}/CodeMirror.res | 4 +- {components => src/components}/DocSearch.js | 0 {components => src/components}/DocSearch.res | 0 {components => src/components}/Docson.js | 0 {components => src/components}/Docson.res | 0 {components => src/components}/Footer.js | 0 {components => src/components}/Footer.res | 0 {components => src/components}/Footer.resi | 0 {components => src/components}/Icon.js | 0 {components => src/components}/Icon.res | 0 {components => src/components}/Image.js | 0 {components => src/components}/Image.res | 0 {components => src/components}/Markdown.js | 0 {components => src/components}/Markdown.res | 0 {components => src/components}/Meta.js | 0 {components => src/components}/Meta.res | 0 .../components}/NameInitialsAvatar.js | 0 .../components}/NameInitialsAvatar.res | 0 {components => src/components}/Navigation.js | 0 {components => src/components}/Navigation.res | 0 .../components}/Navigation.resi | 0 {components => src/components}/Tag.js | 0 {components => src/components}/Tag.res | 0 {components => src/components}/Text.js | 0 {components => src/components}/Text.res | 0 .../components}/VersionSelect.js | 0 .../components}/VersionSelect.res | 0 {components => src/components}/Video.js | 0 {components => src/components}/Video.res | 0 {ffi => src/ffi}/loadScript.js | 0 {ffi => src/ffi}/parse-numeric-range.js | 0 {ffi => src/ffi}/react-codemirror-hooks.js | 0 {layouts => src/layouts}/ApiLayout.js | 0 {layouts => src/layouts}/ApiLayout.res | 0 {layouts => src/layouts}/ApiOverviewLayout.js | 0 .../layouts}/ApiOverviewLayout.res | 0 .../layouts}/ApiOverviewLayout8_0_0.js | 0 .../layouts}/ApiOverviewLayout8_0_0.res | 0 {layouts => src/layouts}/BeltDocsLayout.js | 4 +- {layouts => src/layouts}/BeltDocsLayout.res | 4 +- .../layouts}/BeltDocsLayout8_0_0.js | 4 +- .../layouts}/BeltDocsLayout8_0_0.res | 4 +- {layouts => src/layouts}/CommunityLayout.js | 2 +- {layouts => src/layouts}/CommunityLayout.res | 2 +- {layouts => src/layouts}/DocsLayout.js | 12 +- {layouts => src/layouts}/DocsLayout.res | 0 {layouts => src/layouts}/DomDocsLayout.js | 2 +- {layouts => src/layouts}/DomDocsLayout.res | 2 +- .../layouts}/DomDocsLayout8_0_0.js | 2 +- .../layouts}/DomDocsLayout8_0_0.res | 2 +- {layouts => src/layouts}/GenTypeDocsLayout.js | 2 +- .../layouts}/GenTypeDocsLayout.res | 2 +- {layouts => src/layouts}/JsDocsLayout.js | 4 +- {layouts => src/layouts}/JsDocsLayout.res | 4 +- {layouts => src/layouts}/JsDocsLayout8_0_0.js | 4 +- .../layouts}/JsDocsLayout8_0_0.res | 4 +- {layouts => src/layouts}/LandingPageLayout.js | 0 .../layouts}/LandingPageLayout.res | 0 .../layouts}/LandingPageLayout.resi | 0 {layouts => src/layouts}/MainLayout.js | 0 {layouts => src/layouts}/MainLayout.res | 0 {layouts => src/layouts}/ManualDocsLayout.js | 2 +- {layouts => src/layouts}/ManualDocsLayout.res | 2 +- .../layouts}/ManualDocsLayout8_0_0.js | 2 +- .../layouts}/ManualDocsLayout8_0_0.res | 2 +- .../layouts}/ReasonCompilerDocsLayout.js | 2 +- .../layouts}/ReasonCompilerDocsLayout.res | 2 +- {layouts => src/layouts}/SidebarLayout.js | 0 {layouts => src/layouts}/SidebarLayout.res | 0 tailwind.config.js | 9 +- 154 files changed, 654 insertions(+), 676 deletions(-) rename {re_pages => src}/Blog.js (91%) rename {re_pages => src}/Blog.res (100%) rename {re_pages => src}/Blog_Article.js (95%) rename {re_pages => src}/Blog_Article.res (100%) rename {re_pages => src}/DocsOverview.js (94%) rename {re_pages => src}/DocsOverview.res (100%) rename {re_pages => src}/Packages.js (96%) rename {re_pages => src}/Packages.res (100%) rename {re_pages => src}/Packages.resi (100%) rename {re_pages => src}/Playground.js (96%) rename {re_pages => src}/Playground.res (100%) rename {bindings => src/bindings}/Fuse.js (100%) rename {bindings => src/bindings}/Fuse.res (100%) rename {bindings => src/bindings}/IntlDateTimeFormat.js (100%) rename {bindings => src/bindings}/IntlDateTimeFormat.res (100%) rename {bindings => src/bindings}/Next.js (100%) rename {bindings => src/bindings}/Next.res (100%) rename {bindings => src/bindings}/NodeGlob.js (100%) rename {bindings => src/bindings}/NodeGlob.res (100%) rename {bindings => src/bindings}/RescriptCompilerApi.js (99%) rename {bindings => src/bindings}/RescriptCompilerApi.res (100%) rename {bindings => src/bindings}/Worker.js (100%) rename {bindings => src/bindings}/Worker.res (100%) rename {common => src/common}/Ansi.js (56%) rename {common => src/common}/Ansi.res (100%) rename {common => src/common}/App.js (98%) rename {common => src/common}/App.res (96%) rename {common => src/common}/App.resi (100%) rename {common => src/common}/BlogApi.js (97%) rename {common => src/common}/BlogApi.res (98%) rename {common => src/common}/BlogFrontmatter.js (99%) rename {common => src/common}/BlogFrontmatter.res (98%) rename {common => src/common}/ColorTheme.js (100%) rename {common => src/common}/ColorTheme.res (100%) rename {common => src/common}/CompilerManagerHook.js (76%) rename {common => src/common}/CompilerManagerHook.res (100%) rename {common => src/common}/DateStr.js (100%) rename {common => src/common}/DateStr.res (100%) rename {common => src/common}/DateStr.resi (100%) rename {common => src/common}/DocFrontmatter.js (100%) rename {common => src/common}/DocFrontmatter.res (100%) rename {common => src/common}/HighlightJs.js (100%) rename {common => src/common}/HighlightJs.res (100%) rename {common => src/common}/Mdx.js (100%) rename {common => src/common}/Mdx.res (100%) rename {common => src/common}/ProcessEnv.js (100%) rename {common => src/common}/ProcessEnv.res (100%) rename {common => src/common}/SimpleRequest.js (100%) rename {common => src/common}/SimpleRequest.res (100%) rename {common => src/common}/Url.js (100%) rename {common => src/common}/Url.res (100%) rename {common => src/common}/Util.js (100%) rename {common => src/common}/Util.res (100%) rename {common => src/common}/WarningFlagDescription.js (100%) rename {common => src/common}/WarningFlagDescription.res (100%) rename {common => src/common}/XmlHttpRequest.js (100%) rename {common => src/common}/XmlHttpRequest.res (100%) rename {components => src/components}/AnsiPre.js (100%) rename {components => src/components}/AnsiPre.res (100%) rename {components => src/components}/ApiIntro.js (100%) rename {components => src/components}/ApiIntro.res (100%) rename {components => src/components}/ApiMarkdown.js (100%) rename {components => src/components}/ApiMarkdown.res (100%) rename {components => src/components}/Button.js (100%) rename {components => src/components}/Button.res (100%) rename {components => src/components}/CodeExample.js (100%) rename {components => src/components}/CodeExample.res (100%) rename {components => src/components}/CodeMirror.js (99%) rename {components => src/components}/CodeMirror.res (99%) rename {components => src/components}/DocSearch.js (100%) rename {components => src/components}/DocSearch.res (100%) rename {components => src/components}/Docson.js (100%) rename {components => src/components}/Docson.res (100%) rename {components => src/components}/Footer.js (100%) rename {components => src/components}/Footer.res (100%) rename {components => src/components}/Footer.resi (100%) rename {components => src/components}/Icon.js (100%) rename {components => src/components}/Icon.res (100%) rename {components => src/components}/Image.js (100%) rename {components => src/components}/Image.res (100%) rename {components => src/components}/Markdown.js (100%) rename {components => src/components}/Markdown.res (100%) rename {components => src/components}/Meta.js (100%) rename {components => src/components}/Meta.res (100%) rename {components => src/components}/NameInitialsAvatar.js (100%) rename {components => src/components}/NameInitialsAvatar.res (100%) rename {components => src/components}/Navigation.js (100%) rename {components => src/components}/Navigation.res (100%) rename {components => src/components}/Navigation.resi (100%) rename {components => src/components}/Tag.js (100%) rename {components => src/components}/Tag.res (100%) rename {components => src/components}/Text.js (100%) rename {components => src/components}/Text.res (100%) rename {components => src/components}/VersionSelect.js (100%) rename {components => src/components}/VersionSelect.res (100%) rename {components => src/components}/Video.js (100%) rename {components => src/components}/Video.res (100%) rename {ffi => src/ffi}/loadScript.js (100%) rename {ffi => src/ffi}/parse-numeric-range.js (100%) rename {ffi => src/ffi}/react-codemirror-hooks.js (100%) rename {layouts => src/layouts}/ApiLayout.js (100%) rename {layouts => src/layouts}/ApiLayout.res (100%) rename {layouts => src/layouts}/ApiOverviewLayout.js (100%) rename {layouts => src/layouts}/ApiOverviewLayout.res (100%) rename {layouts => src/layouts}/ApiOverviewLayout8_0_0.js (100%) rename {layouts => src/layouts}/ApiOverviewLayout8_0_0.res (100%) rename {layouts => src/layouts}/BeltDocsLayout.js (98%) rename {layouts => src/layouts}/BeltDocsLayout.res (98%) rename {layouts => src/layouts}/BeltDocsLayout8_0_0.js (98%) rename {layouts => src/layouts}/BeltDocsLayout8_0_0.res (98%) rename {layouts => src/layouts}/CommunityLayout.js (97%) rename {layouts => src/layouts}/CommunityLayout.res (96%) rename {layouts => src/layouts}/DocsLayout.js (99%) rename {layouts => src/layouts}/DocsLayout.res (100%) rename {layouts => src/layouts}/DomDocsLayout.js (97%) rename {layouts => src/layouts}/DomDocsLayout.res (97%) rename {layouts => src/layouts}/DomDocsLayout8_0_0.js (98%) rename {layouts => src/layouts}/DomDocsLayout8_0_0.res (97%) rename {layouts => src/layouts}/GenTypeDocsLayout.js (98%) rename {layouts => src/layouts}/GenTypeDocsLayout.res (97%) rename {layouts => src/layouts}/JsDocsLayout.js (98%) rename {layouts => src/layouts}/JsDocsLayout.res (98%) rename {layouts => src/layouts}/JsDocsLayout8_0_0.js (98%) rename {layouts => src/layouts}/JsDocsLayout8_0_0.res (98%) rename {layouts => src/layouts}/LandingPageLayout.js (100%) rename {layouts => src/layouts}/LandingPageLayout.res (100%) rename {layouts => src/layouts}/LandingPageLayout.resi (100%) rename {layouts => src/layouts}/MainLayout.js (100%) rename {layouts => src/layouts}/MainLayout.res (100%) rename {layouts => src/layouts}/ManualDocsLayout.js (99%) rename {layouts => src/layouts}/ManualDocsLayout.res (99%) rename {layouts => src/layouts}/ManualDocsLayout8_0_0.js (99%) rename {layouts => src/layouts}/ManualDocsLayout8_0_0.res (99%) rename {layouts => src/layouts}/ReasonCompilerDocsLayout.js (98%) rename {layouts => src/layouts}/ReasonCompilerDocsLayout.res (97%) rename {layouts => src/layouts}/SidebarLayout.js (100%) rename {layouts => src/layouts}/SidebarLayout.res (100%) diff --git a/_blogposts/2020-08-28-new-rescript-logo.mdx b/_blogposts/2020-08-28-new-rescript-logo.mdx index efdd71d31..12b084e51 100644 --- a/_blogposts/2020-08-28-new-rescript-logo.mdx +++ b/_blogposts/2020-08-28-new-rescript-logo.mdx @@ -8,7 +8,7 @@ description: | Today, our resident designer Bettina is unveiling to us the fresh new ReScript branding we've been long waiting for. We hope you're as excited about the result as us! --- -import Image from "components/Image"; +import Image from "src/components/Image"; ## Why the Rebranding? diff --git a/_blogposts/2020-11-17-editor-support-custom-operators-and-more.mdx b/_blogposts/2020-11-17-editor-support-custom-operators-and-more.mdx index 07b9e707f..e3de515bb 100644 --- a/_blogposts/2020-11-17-editor-support-custom-operators-and-more.mdx +++ b/_blogposts/2020-11-17-editor-support-custom-operators-and-more.mdx @@ -10,7 +10,7 @@ description: | canonical: https://rescript-lang.org/blog/rescript-the-road-ahead --- -import Video from "components/Video" +import Video from "src/components/Video" ## Upcoming Improvements diff --git a/_blogposts/archive/state-of-reasonml-org-2020-q2-pt1.mdx b/_blogposts/archive/state-of-reasonml-org-2020-q2-pt1.mdx index 17c8a6b5f..f02a3d069 100644 --- a/_blogposts/archive/state-of-reasonml-org-2020-q2-pt1.mdx +++ b/_blogposts/archive/state-of-reasonml-org-2020-q2-pt1.mdx @@ -10,7 +10,7 @@ description: | to expect in the future. The first part is an introduction to our project. --- -import Image from "components/Image"; +import Image from "src/components/Image"; ## Hello World! diff --git a/_blogposts/archive/state-of-reasonml-org-2020-q2-pt3.mdx b/_blogposts/archive/state-of-reasonml-org-2020-q2-pt3.mdx index 4fa82c786..944873d99 100644 --- a/_blogposts/archive/state-of-reasonml-org-2020-q2-pt3.mdx +++ b/_blogposts/archive/state-of-reasonml-org-2020-q2-pt3.mdx @@ -9,7 +9,7 @@ description: | talk about upcoming tools and features. --- -import Image from "components/Image"; +import Image from "src/components/Image"; ## Future Tools for the Community diff --git a/_blogposts/archive/state-of-reasonml-org-2020-q2-pt4.mdx b/_blogposts/archive/state-of-reasonml-org-2020-q2-pt4.mdx index c42715f6e..508d31402 100644 --- a/_blogposts/archive/state-of-reasonml-org-2020-q2-pt4.mdx +++ b/_blogposts/archive/state-of-reasonml-org-2020-q2-pt4.mdx @@ -10,7 +10,7 @@ description: | This is the final part of the series about our vision of a more accessible Reason platform. --- -import Image from "components/Image"; +import Image from "src/components/Image"; ## It's all Opinions diff --git a/bsconfig.json b/bsconfig.json index f428f1797..32fd02ac0 100644 --- a/bsconfig.json +++ b/bsconfig.json @@ -15,29 +15,14 @@ "ppx-flags": [], "sources": [ { - "dir": "common" - }, - { - "dir": "bindings" - }, - { - "dir": "pages", - "subdirs": true - }, - { - "dir": "re_pages", + "dir": "src", "subdirs": true }, { "dir": "scripts", "subdirs": true, "type": "dev" - }, - { - "dir": "components", - "subdirs": true - }, - "layouts" + } ], "package-specs": { "module": "es6", diff --git a/pages/_app.js b/pages/_app.js index ff519e77d..6cd1fd245 100644 --- a/pages/_app.js +++ b/pages/_app.js @@ -6,6 +6,7 @@ //return //} -import {make as App} from "common/App.js"; +import "styles/main.css"; +import {make as App} from "src/common/App.js"; export default App; diff --git a/pages/blog.js b/pages/blog.js index 00ca5dc59..8f85c37e2 100644 --- a/pages/blog.js +++ b/pages/blog.js @@ -1,6 +1,6 @@ -import BlogRes from "re_pages/Blog"; +import BlogRes from "src/Blog"; -export { getStaticProps } from "re_pages/Blog"; +export { getStaticProps } from "src/Blog"; export default function Blog(props) { return diff --git a/pages/blog/[slug].js b/pages/blog/[slug].js index 73249c3b0..9ad6d5883 100644 --- a/pages/blog/[slug].js +++ b/pages/blog/[slug].js @@ -2,4 +2,4 @@ export { default, getStaticPaths, getStaticProps -} from "re_pages/Blog_Article.js"; +} from "src/Blog_Article.js"; diff --git a/pages/docs/latest.js b/pages/docs/latest.js index 4d2ccbad4..f04b82d8a 100644 --- a/pages/docs/latest.js +++ b/pages/docs/latest.js @@ -1,3 +1,3 @@ -import make from "re_pages/DocsOverview.js"; +import make from "src/DocsOverview.js"; export default make; diff --git a/pages/docs/manual/latest/build-performance.mdx b/pages/docs/manual/latest/build-performance.mdx index d06af7dba..609e82078 100644 --- a/pages/docs/manual/latest/build-performance.mdx +++ b/pages/docs/manual/latest/build-performance.mdx @@ -18,7 +18,7 @@ Sometime your build can be slow due to some confused infra setups. We provide an Run the above command at your ReScript project's root; it'll spit out a JSON file you can drag and drop into `chrome://tracing`. -import Image from "components/Image"; +import Image from "src/components/Image"; diff --git a/pages/docs/manual/v8.0.0/build-performance.mdx b/pages/docs/manual/v8.0.0/build-performance.mdx index 4e7fa0682..dbeff034e 100644 --- a/pages/docs/manual/v8.0.0/build-performance.mdx +++ b/pages/docs/manual/v8.0.0/build-performance.mdx @@ -18,7 +18,7 @@ Sometime your build can be slow due to some confused infra setups. We provide an Run the above command at your ReScript project's root; it'll spit out a JSON file you can drag and drop into `chrome://tracing`. -import Image from "components/Image"; +import Image from "src/components/Image"; diff --git a/pages/docs/v8.0.0.js b/pages/docs/v8.0.0.js index 4d2ccbad4..f04b82d8a 100644 --- a/pages/docs/v8.0.0.js +++ b/pages/docs/v8.0.0.js @@ -1,3 +1,3 @@ -import make from "re_pages/DocsOverview.js"; +import make from "src/DocsOverview.js"; export default make; diff --git a/pages/packages.js b/pages/packages.js index 2f70cb021..42d9cc1ab 100644 --- a/pages/packages.js +++ b/pages/packages.js @@ -1,6 +1,6 @@ -import Comp from "re_pages/Packages" +import Comp from "src/Packages" -export { getStaticProps } from "re_pages/Packages" +export { getStaticProps } from "src/Packages" export default function PackagesPage(props) { return ; diff --git a/pages/try.js b/pages/try.js index fe9f9a46d..43e25a27c 100644 --- a/pages/try.js +++ b/pages/try.js @@ -1,6 +1,6 @@ import dynamic from "next/dynamic"; -const Playground = dynamic(() => import("re_pages/Playground.js"), { +const Playground = dynamic(() => import("src/Playground.js"), { ssr: false, //loading: () =>
Loading...
}); diff --git a/scripts/generate_feed.js b/scripts/generate_feed.js index 551f020d5..1f72ca6e2 100644 --- a/scripts/generate_feed.js +++ b/scripts/generate_feed.js @@ -1,6 +1,6 @@ // Generated by ReScript, PLEASE EDIT WITH CARE -import * as BlogApi from "../common/BlogApi.js"; +import * as BlogApi from "../src/common/BlogApi.js"; var content = BlogApi.RssFeed.toXmlString(undefined, undefined, BlogApi.RssFeed.getLatest(undefined, undefined, undefined)); diff --git a/re_pages/Blog.js b/src/Blog.js similarity index 91% rename from re_pages/Blog.js rename to src/Blog.js index 2e0107b4d..08a615bed 100644 --- a/re_pages/Blog.js +++ b/src/Blog.js @@ -1,23 +1,23 @@ // Generated by ReScript, PLEASE EDIT WITH CARE -import * as Meta from "../components/Meta.js"; -import * as Util from "../common/Util.js"; +import * as Meta from "./components/Meta.js"; +import * as Util from "./common/Util.js"; import * as Curry from "bs-platform/lib/es6/curry.js"; import * as React from "react"; -import * as Button from "../components/Button.js"; -import * as Footer from "../components/Footer.js"; -import * as BlogApi from "../common/BlogApi.js"; -import * as DateStr from "../common/DateStr.js"; +import * as Button from "./components/Button.js"; +import * as Footer from "./components/Footer.js"; +import * as BlogApi from "./common/BlogApi.js"; +import * as DateStr from "./common/DateStr.js"; import * as Caml_obj from "bs-platform/lib/es6/caml_obj.js"; -import * as Markdown from "../components/Markdown.js"; +import * as Markdown from "./components/Markdown.js"; import Link from "next/link"; import * as Belt_Array from "bs-platform/lib/es6/belt_Array.js"; -import * as Navigation from "../components/Navigation.js"; +import * as Navigation from "./components/Navigation.js"; import * as Belt_Option from "bs-platform/lib/es6/belt_Option.js"; import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; import * as React$1 from "@mdx-js/react"; -import * as BlogFrontmatter from "../common/BlogFrontmatter.js"; -import * as NameInitialsAvatar from "../components/NameInitialsAvatar.js"; +import * as BlogFrontmatter from "./common/BlogFrontmatter.js"; +import * as NameInitialsAvatar from "./components/NameInitialsAvatar.js"; var planetPreviewImg = "https://res.cloudinary.com/dmm9n7v9f/image/upload/v1587479463/Reason%20Association/reasonml.org/reasonml_art2_1280_vhzxnz.png"; @@ -393,46 +393,46 @@ function getStaticProps(_ctx) { var posts = acc[0]; var id = postData.slug; var decoded = BlogFrontmatter.decode(authors, postData.frontmatter); - if (decoded.TAG) { - var m_message = decoded._0; - var m = { - id: id, - message: m_message - }; - var malformed$1 = Belt_Array.concat(malformed, [m]); + if (decoded.TAG === /* Ok */0) { + var frontmatter = decoded._0; + if (postData.archived) { + archived.push({ + id: id, + frontmatter: frontmatter + }); + } else { + posts.push({ + id: id, + frontmatter: frontmatter + }); + } + var category = frontmatter.category; + var hasCategory = availableCategories.some(function (c) { + if (category !== null) { + return c === category; + } else { + return false; + } + }); + var newAvailableCat = true || postData.archived || !(category !== null && !hasCategory) ? availableCategories : Belt_Array.concat(availableCategories, [category]); return [ posts, - malformed$1, + malformed, archived, - availableCategories + newAvailableCat ]; } - var frontmatter = decoded._0; - if (postData.archived) { - archived.push({ - id: id, - frontmatter: frontmatter - }); - } else { - posts.push({ - id: id, - frontmatter: frontmatter - }); - } - var category = frontmatter.category; - var hasCategory = availableCategories.some(function (c) { - if (category !== null) { - return c === category; - } else { - return false; - } - }); - var newAvailableCat = true || postData.archived || !(category !== null && !hasCategory) ? availableCategories : Belt_Array.concat(availableCategories, [category]); + var m_message = decoded._0; + var m = { + id: id, + message: m_message + }; + var malformed$1 = Belt_Array.concat(malformed, [m]); return [ posts, - malformed, + malformed$1, archived, - newAvailableCat + availableCategories ]; })); var props_posts = orderByDate(match[0]); diff --git a/re_pages/Blog.res b/src/Blog.res similarity index 100% rename from re_pages/Blog.res rename to src/Blog.res diff --git a/re_pages/Blog_Article.js b/src/Blog_Article.js similarity index 95% rename from re_pages/Blog_Article.js rename to src/Blog_Article.js index e48bba722..4336c3bdd 100644 --- a/re_pages/Blog_Article.js +++ b/src/Blog_Article.js @@ -1,22 +1,22 @@ // Generated by ReScript, PLEASE EDIT WITH CARE import * as Blog from "./Blog.js"; -import * as Icon from "../components/Icon.js"; -import * as Meta from "../components/Meta.js"; -import * as Util from "../common/Util.js"; +import * as Icon from "./components/Icon.js"; +import * as Meta from "./components/Meta.js"; +import * as Util from "./common/Util.js"; import * as React from "react"; -import * as BlogApi from "../common/BlogApi.js"; -import * as DateStr from "../common/DateStr.js"; +import * as BlogApi from "./common/BlogApi.js"; +import * as DateStr from "./common/DateStr.js"; import * as $$Promise from "reason-promise/src/js/promise.js"; import * as Process from "process"; -import * as Markdown from "../components/Markdown.js"; +import * as Markdown from "./components/Markdown.js"; import Link from "next/link"; import * as Belt_Array from "bs-platform/lib/es6/belt_Array.js"; -import * as MainLayout from "../layouts/MainLayout.js"; +import * as MainLayout from "./layouts/MainLayout.js"; import * as Belt_Option from "bs-platform/lib/es6/belt_Option.js"; import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; -import * as BlogFrontmatter from "../common/BlogFrontmatter.js"; -import * as NameInitialsAvatar from "../components/NameInitialsAvatar.js"; +import * as BlogFrontmatter from "./common/BlogFrontmatter.js"; +import * as NameInitialsAvatar from "./components/NameInitialsAvatar.js"; var middleDotSpacer = " " + (String.fromCharCode(183) + " "); @@ -151,15 +151,7 @@ function $$default(props) { }, "Important: "), "This is an archived blog post, kept for historic reasons. Please note that this information might be terribly outdated.") })) : null; var content; - if (fm.TAG) { - content = React.createElement("div", undefined, React.createElement(Markdown.Warn.make, { - children: null - }, React.createElement("h2", { - className: "font-bold text-night-dark text-2xl mb-2" - }, "Could not parse file '_blogposts/" + (fullslug + ".mdx'")), React.createElement("p", undefined, "The content of this blog post will be displayed as soon as all\n required frontmatter data has been added."), React.createElement("p", { - className: "font-bold mt-4" - }, "Errors:"), fm._0)); - } else { + if (fm.TAG === /* Ok */0) { var match = fm._0; var canonical = match.canonical; var description = match.description; @@ -218,6 +210,14 @@ function $$default(props) { className: "ml-2 inline-block" })) })))))); + } else { + content = React.createElement("div", undefined, React.createElement(Markdown.Warn.make, { + children: null + }, React.createElement("h2", { + className: "font-bold text-night-dark text-2xl mb-2" + }, "Could not parse file '_blogposts/" + (fullslug + ".mdx'")), React.createElement("p", undefined, "The content of this blog post will be displayed as soon as all\n required frontmatter data has been added."), React.createElement("p", { + className: "font-bold mt-4" + }, "Errors:"), fm._0)); } return React.createElement(MainLayout.make, { children: content diff --git a/re_pages/Blog_Article.res b/src/Blog_Article.res similarity index 100% rename from re_pages/Blog_Article.res rename to src/Blog_Article.res diff --git a/re_pages/DocsOverview.js b/src/DocsOverview.js similarity index 94% rename from re_pages/DocsOverview.js rename to src/DocsOverview.js index 39799c814..5eb277190 100644 --- a/re_pages/DocsOverview.js +++ b/src/DocsOverview.js @@ -1,12 +1,12 @@ // Generated by ReScript, PLEASE EDIT WITH CARE -import * as Url from "../common/Url.js"; +import * as Url from "./common/Url.js"; import * as React from "react"; -import * as Markdown from "../components/Markdown.js"; +import * as Markdown from "./components/Markdown.js"; import * as Belt_Array from "bs-platform/lib/es6/belt_Array.js"; import * as Router from "next/router"; -import * as VersionSelect from "../components/VersionSelect.js"; -import * as ManualDocsLayout from "../layouts/ManualDocsLayout.js"; +import * as VersionSelect from "./components/VersionSelect.js"; +import * as ManualDocsLayout from "./layouts/ManualDocsLayout.js"; function DocsOverview$Card(Props) { var title = Props.title; diff --git a/re_pages/DocsOverview.res b/src/DocsOverview.res similarity index 100% rename from re_pages/DocsOverview.res rename to src/DocsOverview.res diff --git a/re_pages/Packages.js b/src/Packages.js similarity index 96% rename from re_pages/Packages.js rename to src/Packages.js index 920bb2b82..01e58846d 100644 --- a/re_pages/Packages.js +++ b/src/Packages.js @@ -1,30 +1,30 @@ // Generated by ReScript, PLEASE EDIT WITH CARE import * as Fs from "fs"; -import * as Icon from "../components/Icon.js"; -import * as Meta from "../components/Meta.js"; +import * as Icon from "./components/Icon.js"; +import * as Meta from "./components/Meta.js"; import * as Path from "path"; import * as Curry from "bs-platform/lib/es6/curry.js"; import * as React from "react"; -import * as Footer from "../components/Footer.js"; +import * as Footer from "./components/Footer.js"; import * as Js_dict from "bs-platform/lib/es6/js_dict.js"; import * as Js_null from "bs-platform/lib/es6/js_null.js"; import FuseJs from "fuse.js"; import * as Process from "process"; -import * as Markdown from "../components/Markdown.js"; +import * as Markdown from "./components/Markdown.js"; import Link from "next/link"; import * as Belt_Array from "bs-platform/lib/es6/belt_Array.js"; -import * as Navigation from "../components/Navigation.js"; +import * as Navigation from "./components/Navigation.js"; import * as Belt_Option from "bs-platform/lib/es6/belt_Option.js"; import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; import * as Router from "next/router"; import * as React$1 from "@mdx-js/react"; function shouldFilter(res) { - if (res.TAG || !res._0.name.startsWith("@elm-react")) { - return false; - } else { + if (res.TAG === /* Npm */0 && res._0.name.startsWith("@elm-react")) { return true; + } else { + return false; } } @@ -45,7 +45,7 @@ function filterKeywords(keywords) { } function isOfficial(res) { - if (res.TAG) { + if (res.TAG !== /* Npm */0) { return res._0.official; } var pkg = res._0; @@ -98,10 +98,10 @@ function applySearch(resources, pattern) { ], (function (acc, next) { var resources = acc[1]; var npms = acc[0]; - if (next.TAG) { - resources.push(next._0); - } else { + if (next.TAG === /* Npm */0) { npms.push(next._0); + } else { + resources.push(next._0); } return [ npms, @@ -225,15 +225,13 @@ function Packages$Card(Props) { var value = Props.value; var onKeywordSelect = Props.onKeywordSelect; var icon; - icon = value.TAG ? React.createElement("span", undefined, React.createElement(Icon.Hyperlink.make, { - className: "w-8 opacity-50" - })) : React.createElement(Icon.Npm.make, { + icon = value.TAG === /* Npm */0 ? React.createElement(Icon.Npm.make, { className: "w-8 opacity-50" - }); + }) : React.createElement("span", undefined, React.createElement(Icon.Hyperlink.make, { + className: "w-8 opacity-50" + })); var linkBox; - if (value.TAG) { - linkBox = null; - } else { + if (value.TAG === /* Npm */0) { var pkg = value._0; var repositoryHref = pkg.repositoryHref; var repoEl; @@ -257,16 +255,18 @@ function Packages$Card(Props) { href: pkg.npmHref, target: "_blank" }, "NPM"), repoEl); + } else { + linkBox = null; } var titleHref; - if (value.TAG) { - titleHref = value._0.urlHref; - } else { + if (value.TAG === /* Npm */0) { var pkg$1 = value._0; titleHref = Belt_Option.getWithDefault(Caml_option.null_to_opt(pkg$1.repositoryHref), pkg$1.npmHref); + } else { + titleHref = value._0.urlHref; } var match; - if (value.TAG) { + if (value.TAG === /* Npm */0) { var match$1 = value._0; match = [ match$1.name, @@ -477,7 +477,7 @@ function $$default(props) { var community = acc[1]; var official = acc[0]; var isResourceIncluded; - isResourceIncluded = next.TAG ? filter.includeUrlResource : filter.includeNpm; + isResourceIncluded = next.TAG === /* Npm */0 ? filter.includeNpm : filter.includeUrlResource; if (isResourceIncluded) { if (filter.includeOfficial && isOfficial(next)) { official.push(next); diff --git a/re_pages/Packages.res b/src/Packages.res similarity index 100% rename from re_pages/Packages.res rename to src/Packages.res diff --git a/re_pages/Packages.resi b/src/Packages.resi similarity index 100% rename from re_pages/Packages.resi rename to src/Packages.resi diff --git a/re_pages/Playground.js b/src/Playground.js similarity index 96% rename from re_pages/Playground.js rename to src/Playground.js index 3f92ac699..2770b47aa 100644 --- a/re_pages/Playground.js +++ b/src/Playground.js @@ -1,26 +1,26 @@ // Generated by ReScript, PLEASE EDIT WITH CARE -import * as Icon from "../components/Icon.js"; -import * as Meta from "../components/Meta.js"; -import * as $$Text from "../components/Text.js"; +import * as Icon from "./components/Icon.js"; +import * as Meta from "./components/Meta.js"; +import * as $$Text from "./components/Text.js"; import * as Curry from "bs-platform/lib/es6/curry.js"; import * as React from "react"; -import * as AnsiPre from "../components/AnsiPre.js"; +import * as AnsiPre from "./components/AnsiPre.js"; import * as Js_dict from "bs-platform/lib/es6/js_dict.js"; -import * as Markdown from "../components/Markdown.js"; +import * as Markdown from "./components/Markdown.js"; import * as LzString from "lz-string"; import Head from "next/head"; import * as Belt_Array from "bs-platform/lib/es6/belt_Array.js"; -import * as CodeMirror from "../components/CodeMirror.js"; -import * as Navigation from "../components/Navigation.js"; +import * as CodeMirror from "./components/CodeMirror.js"; +import * as Navigation from "./components/Navigation.js"; import * as Belt_Option from "bs-platform/lib/es6/belt_Option.js"; import * as Belt_Result from "bs-platform/lib/es6/belt_Result.js"; import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; -import * as HighlightJs from "../common/HighlightJs.js"; +import * as HighlightJs from "./common/HighlightJs.js"; import * as Router from "next/router"; -import * as CompilerManagerHook from "../common/CompilerManagerHook.js"; -import * as RescriptCompilerApi from "../bindings/RescriptCompilerApi.js"; -import * as WarningFlagDescription from "../common/WarningFlagDescription.js"; +import * as CompilerManagerHook from "./common/CompilerManagerHook.js"; +import * as RescriptCompilerApi from "./bindings/RescriptCompilerApi.js"; +import * as WarningFlagDescription from "./common/WarningFlagDescription.js"; require('../styles/main.css') ; @@ -197,7 +197,35 @@ function renderTitle(targetLang, result) { okClass, "Ready" ]; - } else if (result.TAG) { + } else if (result.TAG === /* Conv */0) { + switch (result._0.TAG | 0) { + case /* Success */0 : + match = [ + okClass, + "Format Successful" + ]; + break; + case /* Fail */1 : + match = [ + errClass, + "Syntax Errors" + ]; + break; + case /* UnexpectedError */2 : + match = [ + errClass, + "Unexpected Error" + ]; + break; + case /* Unknown */3 : + match = [ + errClass, + "Unknown Result" + ]; + break; + + } + } else { var result$1 = result._0; switch (result$1.TAG | 0) { case /* Fail */0 : @@ -258,34 +286,6 @@ function renderTitle(targetLang, result) { ]; break; - } - } else { - switch (result._0.TAG | 0) { - case /* Success */0 : - match = [ - okClass, - "Format Successful" - ]; - break; - case /* Fail */1 : - match = [ - errClass, - "Syntax Errors" - ]; - break; - case /* UnexpectedError */2 : - match = [ - errClass, - "Unexpected Error" - ]; - break; - case /* Unknown */3 : - match = [ - errClass, - "Unknown Result" - ]; - break; - } } return React.createElement("span", { @@ -311,13 +311,13 @@ function Playground$Statusbar(Props) { var activityIndicatorColor; if (typeof result === "number") { activityIndicatorColor = "bg-dark-code-3"; - } else if (result.TAG) { + } else if (result.TAG === /* Conv */0) { + activityIndicatorColor = result._0.TAG === /* Success */0 ? "bg-dark-code-3" : "bg-fire-80"; + } else { var match = result._0; activityIndicatorColor = match.TAG === /* Success */1 ? ( match._0.warnings.length === 0 ? "bg-dark-code-3" : "bg-code-5" ) : "bg-fire-80"; - } else { - activityIndicatorColor = result._0.TAG ? "bg-fire-80" : "bg-dark-code-3"; } return React.createElement("div", { className: "py-2 pb-3 flex items-center text-white " + activityIndicatorColor @@ -426,7 +426,52 @@ function renderResult(focusedRowCol, targetLang, compilerVersion, result) { children: "This playground is now running on compiler version " + compilerVersion + " with " + syntax + " syntax" }); } - if (result.TAG) { + if (result.TAG === /* Conv */0) { + var msg$1 = result._0; + switch (msg$1.TAG | 0) { + case /* Success */0 : + var match = msg$1._0; + var toLang = match.toLang; + var msg$2; + if (match.fromLang === toLang) { + msg$2 = "Formatting completed with 0 errors"; + } else { + var toStr = RescriptCompilerApi.Lang.toString(toLang); + msg$2 = "Switched to " + toStr + " with 0 errors"; + } + return React.createElement(Playground$ResultPane$PreWrap, { + children: msg$2 + }); + case /* Fail */1 : + var toLang$1 = msg$1.toLang; + var fromLang = msg$1.fromLang; + var errs = Belt_Array.mapWithIndex(filterHighlightedLocMsgs(focusedRowCol, msg$1.details), (function (i, locMsg) { + return React.createElement("div", { + key: String(i) + }, compactErrorLine(isHighlighted(focusedRowCol, locMsg), "E", locMsg)); + })); + var msg$3; + if (fromLang === toLang$1) { + var langStr = RescriptCompilerApi.Lang.toString(toLang$1); + msg$3 = "The code is not valid " + langStr + " syntax."; + } else { + var fromStr = RescriptCompilerApi.Lang.toString(fromLang); + var toStr$1 = RescriptCompilerApi.Lang.toString(toLang$1); + msg$3 = "Could not convert from \"" + fromStr + "\" to \"" + toStr$1 + "\" due to malformed syntax:"; + } + return React.createElement("div", undefined, React.createElement(Playground$ResultPane$PreWrap, { + className: "text-16 mb-4", + children: msg$3 + }), errs); + case /* UnexpectedError */2 : + return msg$1._0; + case /* Unknown */3 : + msg = msg$1._0; + json = msg$1._1; + break; + + } + } else { var result$1 = result._0; switch (result$1.TAG | 0) { case /* Fail */0 : @@ -435,11 +480,11 @@ function renderResult(focusedRowCol, targetLang, compilerVersion, result) { case /* WarningErr */2 : return Belt_Array.mapWithIndex(filterHighlightedLocWarnings(focusedRowCol, result$2._0), (function (i, warning) { var match; - match = warning.TAG ? [ - "E", + match = warning.TAG === /* Warn */0 ? [ + "W", warning.details ] : [ - "W", + "E", warning.details ]; var details = match[1]; @@ -465,11 +510,11 @@ function renderResult(focusedRowCol, targetLang, compilerVersion, result) { } else { return Belt_Array.mapWithIndex(filterHighlightedLocWarnings(focusedRowCol, warnings), (function (i, warning) { var match; - match = warning.TAG ? [ - "E", + match = warning.TAG === /* Warn */0 ? [ + "W", warning.details ] : [ - "W", + "E", warning.details ]; var details = match[1]; @@ -485,51 +530,6 @@ function renderResult(focusedRowCol, targetLang, compilerVersion, result) { json = result$1._1; break; - } - } else { - var msg$1 = result._0; - switch (msg$1.TAG | 0) { - case /* Success */0 : - var match = msg$1._0; - var toLang = match.toLang; - var msg$2; - if (match.fromLang === toLang) { - msg$2 = "Formatting completed with 0 errors"; - } else { - var toStr = RescriptCompilerApi.Lang.toString(toLang); - msg$2 = "Switched to " + toStr + " with 0 errors"; - } - return React.createElement(Playground$ResultPane$PreWrap, { - children: msg$2 - }); - case /* Fail */1 : - var toLang$1 = msg$1.toLang; - var fromLang = msg$1.fromLang; - var errs = Belt_Array.mapWithIndex(filterHighlightedLocMsgs(focusedRowCol, msg$1.details), (function (i, locMsg) { - return React.createElement("div", { - key: String(i) - }, compactErrorLine(isHighlighted(focusedRowCol, locMsg), "E", locMsg)); - })); - var msg$3; - if (fromLang === toLang$1) { - var langStr = RescriptCompilerApi.Lang.toString(toLang$1); - msg$3 = "The code is not valid " + langStr + " syntax."; - } else { - var fromStr = RescriptCompilerApi.Lang.toString(fromLang); - var toStr$1 = RescriptCompilerApi.Lang.toString(toLang$1); - msg$3 = "Could not convert from \"" + fromStr + "\" to \"" + toStr$1 + "\" due to malformed syntax:"; - } - return React.createElement("div", undefined, React.createElement(Playground$ResultPane$PreWrap, { - className: "text-16 mb-4", - children: msg$3 - }), errs); - case /* UnexpectedError */2 : - return msg$1._0; - case /* Unknown */3 : - msg = msg$1._0; - json = msg$1._1; - break; - } } var subheader = "font-bold text-night-light text-16"; @@ -564,7 +564,35 @@ function renderTitle$1(result) { okClass, "Ready" ]; - } else if (result.TAG) { + } else if (result.TAG === /* Conv */0) { + switch (result._0.TAG | 0) { + case /* Success */0 : + match = [ + okClass, + "Format Successful" + ]; + break; + case /* Fail */1 : + match = [ + errClass, + "Syntax Errors" + ]; + break; + case /* UnexpectedError */2 : + match = [ + errClass, + "Unexpected Error" + ]; + break; + case /* Unknown */3 : + match = [ + errClass, + "Unknown Result" + ]; + break; + + } + } else { var result$1 = result._0; switch (result$1.TAG | 0) { case /* Fail */0 : @@ -625,34 +653,6 @@ function renderTitle$1(result) { ]; break; - } - } else { - switch (result._0.TAG | 0) { - case /* Success */0 : - match = [ - okClass, - "Format Successful" - ]; - break; - case /* Fail */1 : - match = [ - errClass, - "Syntax Errors" - ]; - break; - case /* UnexpectedError */2 : - match = [ - errClass, - "Unexpected Error" - ]; - break; - case /* Unknown */3 : - match = [ - errClass, - "Unknown Result" - ]; - break; - } } return React.createElement("span", { @@ -753,7 +753,33 @@ function updateInput(prev, input) { break; default: var results = WarningFlagDescription.Parser.parse(input); - if (results.TAG) { + if (results.TAG === /* Ok */0) { + var tokens = results._0; + var last$1 = Belt_Array.get(tokens, tokens.length - 1 | 0); + if (last$1 !== undefined) { + var results$1 = WarningFlagDescription.fuzzyLookup(last$1.flag); + if (results$1.length === 0) { + suggestion = { + TAG: 1, + _0: "No results", + [Symbol.for("name")]: "ErrorSuggestion" + }; + } else { + var precedingTokens = Belt_Array.slice(tokens, 0, tokens.length - 1 | 0); + var modifier = last$1.enabled ? "+" : "-"; + suggestion = { + TAG: 0, + modifier: modifier, + precedingTokens: precedingTokens, + results: results$1, + selected: 0, + [Symbol.for("name")]: "FuzzySuggestions" + }; + } + } else { + suggestion = /* NoSuggestion */0; + } + } else { var exit$1 = 0; switch (input) { case "+" : @@ -768,43 +794,17 @@ function updateInput(prev, input) { }; } if (exit$1 === 2) { - var results$1 = WarningFlagDescription.lookupAll(undefined); + var results$2 = WarningFlagDescription.lookupAll(undefined); suggestion = { TAG: 0, modifier: input, precedingTokens: [], - results: results$1, + results: results$2, selected: 0, [Symbol.for("name")]: "FuzzySuggestions" }; } - } else { - var tokens = results._0; - var last$1 = Belt_Array.get(tokens, tokens.length - 1 | 0); - if (last$1 !== undefined) { - var results$2 = WarningFlagDescription.fuzzyLookup(last$1.flag); - if (results$2.length === 0) { - suggestion = { - TAG: 1, - _0: "No results", - [Symbol.for("name")]: "ErrorSuggestion" - }; - } else { - var precedingTokens = Belt_Array.slice(tokens, 0, tokens.length - 1 | 0); - var modifier = last$1.enabled ? "+" : "-"; - suggestion = { - TAG: 0, - modifier: modifier, - precedingTokens: precedingTokens, - results: results$2, - selected: 0, - [Symbol.for("name")]: "FuzzySuggestions" - }; - } - } else { - suggestion = /* NoSuggestion */0; - } } } if (exit === 1) { @@ -812,7 +812,7 @@ function updateInput(prev, input) { var partial = input.substring(0, last); var tokens$1 = WarningFlagDescription.Parser.parse(partial); var precedingTokens$1; - precedingTokens$1 = tokens$1.TAG ? [] : tokens$1._0; + precedingTokens$1 = tokens$1.TAG === /* Ok */0 ? tokens$1._0 : []; suggestion = { TAG: 0, modifier: match, @@ -848,7 +848,7 @@ function selectPrevious(prev) { if (typeof suggestion === "number") { return prev; } - if (suggestion.TAG) { + if (suggestion.TAG !== /* FuzzySuggestions */0) { return prev; } var selected = suggestion.selected; @@ -880,7 +880,7 @@ function selectNext(prev) { if (typeof suggestion === "number") { return prev; } - if (suggestion.TAG) { + if (suggestion.TAG !== /* FuzzySuggestions */0) { return prev; } var selected = suggestion.selected; @@ -1034,7 +1034,7 @@ function Playground$WarningFlagsWidget(Props) { break; case /* Typing */2 : var match = state.suggestion; - if (typeof match !== "number" && !match.TAG) { + if (typeof match !== "number" && match.TAG === /* FuzzySuggestions */0) { var match$1 = Belt_Array.get(match.results, match.selected); if (match$1 !== undefined) { var token_enabled = match.modifier === "+"; @@ -1072,7 +1072,7 @@ function Playground$WarningFlagsWidget(Props) { if (typeof match$2 === "number") { return ; } - if (match$2.TAG) { + if (match$2.TAG !== /* FuzzySuggestions */0) { return ; } var match$3 = Belt_Array.get(match$2.results, match$2.selected); @@ -1099,7 +1099,7 @@ function Playground$WarningFlagsWidget(Props) { console.log(full); return ; } - if (tmp.TAG) { + if (tmp.TAG !== /* FuzzySuggestions */0) { if (full !== "Backspace") { evt.preventDefault(); return ; @@ -1151,9 +1151,7 @@ function Playground$WarningFlagsWidget(Props) { var tmp; if (typeof msg === "number") { tmp = "Type + / - followed by a number or letter (e.g. +a+1)"; - } else if (msg.TAG) { - tmp = msg._0; - } else { + } else if (msg.TAG === /* FuzzySuggestions */0) { var selected = msg.selected; var precedingTokens = msg.precedingTokens; var modifier = msg.modifier; @@ -1176,7 +1174,7 @@ function Playground$WarningFlagsWidget(Props) { return prev; case /* Typing */2 : var fuzzySuggestion = prev.suggestion; - if (typeof fuzzySuggestion === "number" || fuzzySuggestion.TAG) { + if (typeof fuzzySuggestion === "number" || fuzzySuggestion.TAG !== /* FuzzySuggestions */0) { return prev; } else { return { @@ -1223,6 +1221,8 @@ function Playground$WarningFlagsWidget(Props) { } return React.createElement("div", tmp, modifier + (flag + (": " + param[1]))); })); + } else { + tmp = msg._0; } suggestions = Caml_option.some(tmp); break; @@ -1687,7 +1687,7 @@ function codeFromResult(result) { if (typeof result === "number") { return "/* No JS code generated */"; } - if (!result.TAG) { + if (result.TAG === /* Conv */0) { return "/* No JS code generated */"; } var comp = result._0; @@ -1735,9 +1735,9 @@ function Playground$OutputPanel(Props) { if (compilerState.TAG === /* Ready */2) { var ready = compilerState._0; var match = ready.result; - cmCode = typeof match === "number" || !(match.TAG && match._0.TAG === /* Success */1) ? undefined : codeFromResult(ready.result); + cmCode = typeof match === "number" || match.TAG === /* Conv */0 || match._0.TAG !== /* Success */1 ? undefined : codeFromResult(ready.result); } else { - cmCode = typeof result === "number" || !(result.TAG && result._0.TAG === /* Success */1) ? undefined : codeFromResult(result); + cmCode = typeof result === "number" || result.TAG === /* Conv */0 || result._0.TAG !== /* Success */1 ? undefined : codeFromResult(result); } } @@ -1747,7 +1747,7 @@ function Playground$OutputPanel(Props) { if (compilerState.TAG === /* Ready */2) { var result$1 = compilerState._0.result; if (typeof result$1 !== "number") { - cmCode = result$1.TAG && result$1._0.TAG === /* Success */1 ? codeFromResult(result$1) : undefined; + cmCode = result$1.TAG === /* Conv */0 || result$1._0.TAG !== /* Success */1 ? undefined : codeFromResult(result$1); } } else { @@ -1779,16 +1779,16 @@ function Playground$OutputPanel(Props) { var exit$3 = 0; if (typeof match$1 === "number") { exit$3 = 2; - } else if (match$1.TAG) { - if (match$1._0.TAG === /* Success */1) { + } else if (match$1.TAG === /* Conv */0) { + if (match$1._0.TAG === /* Success */0) { resultPane = null; } else { exit$3 = 2; } - } else if (match$1._0.TAG) { - exit$3 = 2; - } else { + } else if (match$1._0.TAG === /* Success */1) { resultPane = null; + } else { + exit$3 = 2; } if (exit$3 === 2) { resultPane = React.createElement(Playground$ResultPane, { @@ -1823,20 +1823,22 @@ function Playground$OutputPanel(Props) { var errorPane; if (typeof compilerState === "number") { errorPane = React.createElement("div", undefined, "Initalizing Playground..."); - } else if (compilerState.TAG) { + } else if (compilerState.TAG === /* SetupFailed */0) { + errorPane = React.createElement("div", undefined, "Setup failed: " + compilerState._0); + } else { var ready$2 = compilerState._0; errorPane = React.createElement(Playground$ResultPane, { targetLang: ready$2.targetLang, compilerVersion: ready$2.selected.compilerVersion, result: ready$2.result }); - } else { - errorPane = React.createElement("div", undefined, "Setup failed: " + compilerState._0); } var settingsPane; if (typeof compilerState === "number") { settingsPane = React.createElement("div", undefined, "Initalizing Playground..."); - } else if (compilerState.TAG) { + } else if (compilerState.TAG === /* SetupFailed */0) { + settingsPane = React.createElement("div", undefined, "Setup failed: " + compilerState._0); + } else { var ready$3 = compilerState._0; var config = ready$3.selected.config; var setConfig = function (config) { @@ -1853,8 +1855,6 @@ function Playground$OutputPanel(Props) { editorCode: editorCode, config: config }); - } else { - settingsPane = React.createElement("div", undefined, "Setup failed: " + compilerState._0); } var prevSelected = React.useRef(0); var selected; @@ -1865,10 +1865,10 @@ function Playground$OutputPanel(Props) { case /* Ready */2 : var match$3 = compilerState._0.result; selected = typeof match$3 === "number" ? 1 : ( - match$3.TAG ? ( - match$3._0.TAG === /* Success */1 ? 0 : 1 + match$3.TAG === /* Conv */0 ? ( + match$3._0.TAG === /* Success */0 ? 0 : 1 ) : ( - match$3._0.TAG ? 1 : 0 + match$3._0.TAG === /* Success */1 ? 0 : 1 ) ); break; @@ -1985,9 +1985,9 @@ function Playground$default(Props) { _1: editorCode.current, [Symbol.for("name")]: "CompileCode" }); - } else if (!match$5.TAG) { + } else if (match$5.TAG === /* Conv */0) { var match$6 = match$5._0; - if (!match$6.TAG) { + if (match$6.TAG === /* Success */0) { editorCode.current = match$6._0.code; } @@ -2020,7 +2020,12 @@ function Playground$default(Props) { var result = compilerState._0.result; if (typeof result === "number") { cmErrors = []; - } else if (result.TAG) { + } else if (result.TAG === /* Conv */0) { + var match$7 = result._0; + cmErrors = match$7.TAG === /* Fail */1 ? Belt_Array.map(match$7.details, (function (param) { + return locMsgToCmError("Error", param); + })) : []; + } else { var result$1 = result._0; switch (result$1.TAG | 0) { case /* Fail */0 : @@ -2055,11 +2060,6 @@ function Playground$default(Props) { break; } - } else { - var match$7 = result._0; - cmErrors = match$7.TAG === /* Fail */1 ? Belt_Array.map(match$7.details, (function (param) { - return locMsgToCmError("Error", param); - })) : []; } } else { cmErrors = []; diff --git a/re_pages/Playground.res b/src/Playground.res similarity index 100% rename from re_pages/Playground.res rename to src/Playground.res diff --git a/bindings/Fuse.js b/src/bindings/Fuse.js similarity index 100% rename from bindings/Fuse.js rename to src/bindings/Fuse.js diff --git a/bindings/Fuse.res b/src/bindings/Fuse.res similarity index 100% rename from bindings/Fuse.res rename to src/bindings/Fuse.res diff --git a/bindings/IntlDateTimeFormat.js b/src/bindings/IntlDateTimeFormat.js similarity index 100% rename from bindings/IntlDateTimeFormat.js rename to src/bindings/IntlDateTimeFormat.js diff --git a/bindings/IntlDateTimeFormat.res b/src/bindings/IntlDateTimeFormat.res similarity index 100% rename from bindings/IntlDateTimeFormat.res rename to src/bindings/IntlDateTimeFormat.res diff --git a/bindings/Next.js b/src/bindings/Next.js similarity index 100% rename from bindings/Next.js rename to src/bindings/Next.js diff --git a/bindings/Next.res b/src/bindings/Next.res similarity index 100% rename from bindings/Next.res rename to src/bindings/Next.res diff --git a/bindings/NodeGlob.js b/src/bindings/NodeGlob.js similarity index 100% rename from bindings/NodeGlob.js rename to src/bindings/NodeGlob.js diff --git a/bindings/NodeGlob.res b/src/bindings/NodeGlob.res similarity index 100% rename from bindings/NodeGlob.res rename to src/bindings/NodeGlob.res diff --git a/bindings/RescriptCompilerApi.js b/src/bindings/RescriptCompilerApi.js similarity index 99% rename from bindings/RescriptCompilerApi.js rename to src/bindings/RescriptCompilerApi.js index ac6d65d61..b16aa1b98 100644 --- a/bindings/RescriptCompilerApi.js +++ b/src/bindings/RescriptCompilerApi.js @@ -167,7 +167,7 @@ function decode$2(json) { function toCompactErrorLine$1(t) { var prefix; - prefix = t.TAG ? "E" : "W"; + prefix = t.TAG === /* Warn */0 ? "W" : "E"; var details = t.details; var msg = "(Warning number " + t.warnNumber + ") " + details.shortMsg; return "[" + prefix + "] Line " + details.row + ", " + details.column + ": " + msg; diff --git a/bindings/RescriptCompilerApi.res b/src/bindings/RescriptCompilerApi.res similarity index 100% rename from bindings/RescriptCompilerApi.res rename to src/bindings/RescriptCompilerApi.res diff --git a/bindings/Worker.js b/src/bindings/Worker.js similarity index 100% rename from bindings/Worker.js rename to src/bindings/Worker.js diff --git a/bindings/Worker.res b/src/bindings/Worker.res similarity index 100% rename from bindings/Worker.res rename to src/bindings/Worker.res diff --git a/common/Ansi.js b/src/common/Ansi.js similarity index 56% rename from common/Ansi.js rename to src/common/Ansi.js index 2f274f4b9..e74bceb07 100644 --- a/common/Ansi.js +++ b/src/common/Ansi.js @@ -128,236 +128,236 @@ function lex(_accOpt, _stateOpt, p) { _accOpt = acc; continue ; } - if (state.TAG) { + if (state.TAG === /* ReadSgr */0) { var content = state.content; var startPos = state.startPos; var c$1 = next(p); - var endPos = p.pos - 1 | 0; - if (c$1 === esc) { - var token_0 = { + if (c$1 !== "[" && isAscii(c$1)) { + var raw = content + c$1; + var loc_endPos = (startPos + raw.length | 0) - 1 | 0; + var loc = { startPos: startPos, - endPos: endPos - }; - var token = { - TAG: 0, - loc: token_0, - content: content, - [Symbol.for("name")]: "Text" + endPos: loc_endPos }; + var x = /\[([0-9;]+)([\x40-\x7F])/.exec(raw); + var token; + if (x !== null) { + var str = Caml_array.get(x, 1); + if (str == null) { + token = { + TAG: 1, + loc: loc, + raw: raw, + params: [], + [Symbol.for("name")]: "Sgr" + }; + } else { + var other = ( + (str == null) ? undefined : Caml_option.some(str) + ).split(";"); + var exit = 0; + if (other.length !== 1) { + exit = 1; + } else { + var match = other[0]; + if (match === "0") { + token = { + TAG: 2, + loc: loc, + raw: raw, + [Symbol.for("name")]: "ClearSgr" + }; + } else { + exit = 1; + } + } + if (exit === 1) { + var params = Belt_Array.map(other, (function (s) { + switch (s) { + case "1" : + return /* Bold */0; + case "30" : + return { + TAG: 0, + _0: /* Black */0, + [Symbol.for("name")]: "Fg" + }; + case "31" : + return { + TAG: 0, + _0: /* Red */1, + [Symbol.for("name")]: "Fg" + }; + case "32" : + return { + TAG: 0, + _0: /* Green */2, + [Symbol.for("name")]: "Fg" + }; + case "33" : + return { + TAG: 0, + _0: /* Yellow */3, + [Symbol.for("name")]: "Fg" + }; + case "34" : + return { + TAG: 0, + _0: /* Blue */4, + [Symbol.for("name")]: "Fg" + }; + case "35" : + return { + TAG: 0, + _0: /* Magenta */5, + [Symbol.for("name")]: "Fg" + }; + case "36" : + return { + TAG: 0, + _0: /* Cyan */6, + [Symbol.for("name")]: "Fg" + }; + case "37" : + return { + TAG: 0, + _0: /* White */7, + [Symbol.for("name")]: "Fg" + }; + case "40" : + return { + TAG: 1, + _0: /* Black */0, + [Symbol.for("name")]: "Bg" + }; + case "41" : + return { + TAG: 1, + _0: /* Red */1, + [Symbol.for("name")]: "Bg" + }; + case "42" : + return { + TAG: 1, + _0: /* Green */2, + [Symbol.for("name")]: "Bg" + }; + case "43" : + return { + TAG: 1, + _0: /* Yellow */3, + [Symbol.for("name")]: "Bg" + }; + case "44" : + return { + TAG: 1, + _0: /* Blue */4, + [Symbol.for("name")]: "Bg" + }; + case "45" : + return { + TAG: 1, + _0: /* Magenta */5, + [Symbol.for("name")]: "Bg" + }; + case "46" : + return { + TAG: 1, + _0: /* Cyan */6, + [Symbol.for("name")]: "Bg" + }; + case "47" : + return { + TAG: 1, + _0: /* White */7, + [Symbol.for("name")]: "Bg" + }; + default: + return { + TAG: 2, + _0: s, + [Symbol.for("name")]: "Unknown" + }; + } + })); + token = { + TAG: 1, + loc: loc, + raw: raw, + params: params, + [Symbol.for("name")]: "Sgr" + }; + } + + } + } else { + token = { + TAG: 1, + loc: loc, + raw: raw, + params: [], + [Symbol.for("name")]: "Sgr" + }; + } acc.push(token); - _stateOpt = { - TAG: 0, - startPos: p.pos, - content: c$1, - [Symbol.for("name")]: "ReadSgr" - }; + _stateOpt = /* Scan */0; _accOpt = acc; continue ; } - if (isDone(p)) { - var token_0$1 = { - startPos: startPos, - endPos: endPos - }; - var token$1 = { - TAG: 0, - loc: token_0$1, - content: content, - [Symbol.for("name")]: "Text" - }; - acc.push(token$1); - return acc; - } - var content$1 = content + c$1; _stateOpt = { - TAG: 1, + TAG: 0, startPos: startPos, - content: content$1, - [Symbol.for("name")]: "ReadText" + content: content + c$1, + [Symbol.for("name")]: "ReadSgr" }; _accOpt = acc; continue ; } - var content$2 = state.content; + var content$1 = state.content; var startPos$1 = state.startPos; var c$2 = next(p); - if (c$2 !== "[" && isAscii(c$2)) { - var raw = content$2 + c$2; - var loc_endPos = (startPos$1 + raw.length | 0) - 1 | 0; - var loc = { + var endPos = p.pos - 1 | 0; + if (c$2 === esc) { + var token_0 = { startPos: startPos$1, - endPos: loc_endPos + endPos: endPos + }; + var token$1 = { + TAG: 0, + loc: token_0, + content: content$1, + [Symbol.for("name")]: "Text" + }; + acc.push(token$1); + _stateOpt = { + TAG: 0, + startPos: p.pos, + content: c$2, + [Symbol.for("name")]: "ReadSgr" }; - var x = /\[([0-9;]+)([\x40-\x7F])/.exec(raw); - var token$2; - if (x !== null) { - var str = Caml_array.get(x, 1); - if (str == null) { - token$2 = { - TAG: 1, - loc: loc, - raw: raw, - params: [], - [Symbol.for("name")]: "Sgr" - }; - } else { - var other = ( - (str == null) ? undefined : Caml_option.some(str) - ).split(";"); - var exit = 0; - if (other.length !== 1) { - exit = 1; - } else { - var match = other[0]; - if (match === "0") { - token$2 = { - TAG: 2, - loc: loc, - raw: raw, - [Symbol.for("name")]: "ClearSgr" - }; - } else { - exit = 1; - } - } - if (exit === 1) { - var params = Belt_Array.map(other, (function (s) { - switch (s) { - case "1" : - return /* Bold */0; - case "30" : - return { - TAG: 0, - _0: /* Black */0, - [Symbol.for("name")]: "Fg" - }; - case "31" : - return { - TAG: 0, - _0: /* Red */1, - [Symbol.for("name")]: "Fg" - }; - case "32" : - return { - TAG: 0, - _0: /* Green */2, - [Symbol.for("name")]: "Fg" - }; - case "33" : - return { - TAG: 0, - _0: /* Yellow */3, - [Symbol.for("name")]: "Fg" - }; - case "34" : - return { - TAG: 0, - _0: /* Blue */4, - [Symbol.for("name")]: "Fg" - }; - case "35" : - return { - TAG: 0, - _0: /* Magenta */5, - [Symbol.for("name")]: "Fg" - }; - case "36" : - return { - TAG: 0, - _0: /* Cyan */6, - [Symbol.for("name")]: "Fg" - }; - case "37" : - return { - TAG: 0, - _0: /* White */7, - [Symbol.for("name")]: "Fg" - }; - case "40" : - return { - TAG: 1, - _0: /* Black */0, - [Symbol.for("name")]: "Bg" - }; - case "41" : - return { - TAG: 1, - _0: /* Red */1, - [Symbol.for("name")]: "Bg" - }; - case "42" : - return { - TAG: 1, - _0: /* Green */2, - [Symbol.for("name")]: "Bg" - }; - case "43" : - return { - TAG: 1, - _0: /* Yellow */3, - [Symbol.for("name")]: "Bg" - }; - case "44" : - return { - TAG: 1, - _0: /* Blue */4, - [Symbol.for("name")]: "Bg" - }; - case "45" : - return { - TAG: 1, - _0: /* Magenta */5, - [Symbol.for("name")]: "Bg" - }; - case "46" : - return { - TAG: 1, - _0: /* Cyan */6, - [Symbol.for("name")]: "Bg" - }; - case "47" : - return { - TAG: 1, - _0: /* White */7, - [Symbol.for("name")]: "Bg" - }; - default: - return { - TAG: 2, - _0: s, - [Symbol.for("name")]: "Unknown" - }; - } - })); - token$2 = { - TAG: 1, - loc: loc, - raw: raw, - params: params, - [Symbol.for("name")]: "Sgr" - }; - } - - } - } else { - token$2 = { - TAG: 1, - loc: loc, - raw: raw, - params: [], - [Symbol.for("name")]: "Sgr" - }; - } - acc.push(token$2); - _stateOpt = /* Scan */0; _accOpt = acc; continue ; } + if (isDone(p)) { + var token_0$1 = { + startPos: startPos$1, + endPos: endPos + }; + var token$2 = { + TAG: 0, + loc: token_0$1, + content: content$1, + [Symbol.for("name")]: "Text" + }; + acc.push(token$2); + return acc; + } + var content$2 = content$1 + c$2; _stateOpt = { - TAG: 0, + TAG: 1, startPos: startPos$1, - content: content$2 + c$2, - [Symbol.for("name")]: "ReadSgr" + content: content$2, + [Symbol.for("name")]: "ReadText" }; _accOpt = acc; continue ; diff --git a/common/Ansi.res b/src/common/Ansi.res similarity index 100% rename from common/Ansi.res rename to src/common/Ansi.res diff --git a/common/App.js b/src/common/App.js similarity index 98% rename from common/App.js rename to src/common/App.js index 925f65423..a3f995186 100644 --- a/common/App.js +++ b/src/common/App.js @@ -25,14 +25,11 @@ import * as ManualDocsLayout8_0_0 from "../layouts/ManualDocsLayout8_0_0.js"; import * as ApiOverviewLayout8_0_0 from "../layouts/ApiOverviewLayout8_0_0.js"; import * as ReasonCompilerDocsLayout from "../layouts/ReasonCompilerDocsLayout.js"; -require('../styles/main.css') -; - let hljs = require('highlight.js/lib/highlight'); let js = require('highlight.js/lib/languages/javascript'); let ocaml = require('highlight.js/lib/languages/ocaml'); - let reason = require('../plugins/reason-highlightjs'); - let res = require('../plugins/res-syntax-highlightjs'); + let reason = require('plugins/reason-highlightjs'); + let res = require('plugins/res-syntax-highlightjs'); let bash = require('highlight.js/lib/languages/bash'); let json = require('highlight.js/lib/languages/json'); let html = require('highlight.js/lib/languages/xml'); @@ -279,7 +276,7 @@ function make(props) { if (exit$4 === 2) { var fm = DocFrontmatter.decode(component.frontmatter); var fm$1; - fm$1 = fm.TAG ? undefined : fm._0; + fm$1 = fm.TAG === /* Ok */0 ? fm._0 : undefined; var match$10 = url.base; var title; var exit$5 = 0; diff --git a/common/App.res b/src/common/App.res similarity index 96% rename from common/App.res rename to src/common/App.res index 57ea47c68..3f792afa9 100644 --- a/common/App.res +++ b/src/common/App.res @@ -5,16 +5,14 @@ // Really good article on state persistence within layouts: // https://adamwathan.me/2019/10/17/persistent-layout-patterns-in-nextjs/ -%%raw("require('../styles/main.css')") - // Register all the highlightjs stuff for the whole application %%raw( ` let hljs = require('highlight.js/lib/highlight'); let js = require('highlight.js/lib/languages/javascript'); let ocaml = require('highlight.js/lib/languages/ocaml'); - let reason = require('../plugins/reason-highlightjs'); - let res = require('../plugins/res-syntax-highlightjs'); + let reason = require('plugins/reason-highlightjs'); + let res = require('plugins/res-syntax-highlightjs'); let bash = require('highlight.js/lib/languages/bash'); let json = require('highlight.js/lib/languages/json'); let html = require('highlight.js/lib/languages/xml'); diff --git a/common/App.resi b/src/common/App.resi similarity index 100% rename from common/App.resi rename to src/common/App.resi diff --git a/common/BlogApi.js b/src/common/BlogApi.js similarity index 97% rename from common/BlogApi.js rename to src/common/BlogApi.js index ceceeb44e..177b440dd 100644 --- a/common/BlogApi.js +++ b/src/common/BlogApi.js @@ -11,7 +11,7 @@ import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; import GrayMatter from "gray-matter"; import * as BlogFrontmatter from "./BlogFrontmatter.js"; -var index = (require('../index_data/blog_posts.json')); +var index = (require('../../index_data/blog_posts.json')); var GrayMatter$1 = {}; @@ -63,7 +63,7 @@ function getLatest(maxOpt, baseUrlOpt, param) { var authors = BlogFrontmatter.Author.getAllAuthors(undefined); return Belt_Array.reduce(getAllPosts(undefined), [], (function (acc, next) { var fm = BlogFrontmatter.decode(authors, next.frontmatter); - if (fm.TAG) { + if (fm.TAG !== /* Ok */0) { return acc; } var fm$1 = fm._0; diff --git a/common/BlogApi.res b/src/common/BlogApi.res similarity index 98% rename from common/BlogApi.res rename to src/common/BlogApi.res index 99a1fd4de..620e163d5 100644 --- a/common/BlogApi.res +++ b/src/common/BlogApi.res @@ -28,7 +28,7 @@ // Manual mapping between slugs and actual file // { [slug: string] : [filepath: string] } // The filepath is relative within _blogposts -let index: Js.Dict.t = %raw("require('../index_data/blog_posts.json')") +let index: Js.Dict.t = %raw("require('../../index_data/blog_posts.json')") module GrayMatter = { type output = { diff --git a/common/BlogFrontmatter.js b/src/common/BlogFrontmatter.js similarity index 99% rename from common/BlogFrontmatter.js rename to src/common/BlogFrontmatter.js index f0becaa10..bd0f2f07e 100644 --- a/common/BlogFrontmatter.js +++ b/src/common/BlogFrontmatter.js @@ -7,7 +7,7 @@ import * as Json_decode from "@glennsl/bs-json/src/Json_decode.js"; import * as Caml_exceptions from "bs-platform/lib/es6/caml_exceptions.js"; import * as Caml_js_exceptions from "bs-platform/lib/es6/caml_js_exceptions.js"; -var rawAuthors = (require('../index_data/blog_authors.json')); +var rawAuthors = (require('../../index_data/blog_authors.json')); function getDisplayName(author) { var fullname = author.fullname; diff --git a/common/BlogFrontmatter.res b/src/common/BlogFrontmatter.res similarity index 98% rename from common/BlogFrontmatter.res rename to src/common/BlogFrontmatter.res index 3f8cc8f3e..082cf8f3f 100644 --- a/common/BlogFrontmatter.res +++ b/src/common/BlogFrontmatter.res @@ -15,7 +15,7 @@ module Author = { // author data from different sources, like twitter // or github, but decided against it for simplicity // reasons for now - let rawAuthors: Js.Json.t = %raw("require('../index_data/blog_authors.json')") + let rawAuthors: Js.Json.t = %raw("require('../../index_data/blog_authors.json')") let getDisplayName = (author: t): string => switch author.fullname->Js.Null.toOption { diff --git a/common/ColorTheme.js b/src/common/ColorTheme.js similarity index 100% rename from common/ColorTheme.js rename to src/common/ColorTheme.js diff --git a/common/ColorTheme.res b/src/common/ColorTheme.res similarity index 100% rename from common/ColorTheme.res rename to src/common/ColorTheme.res diff --git a/common/CompilerManagerHook.js b/src/common/CompilerManagerHook.js similarity index 76% rename from common/CompilerManagerHook.js rename to src/common/CompilerManagerHook.js index aa5a592b0..b106f989d 100644 --- a/common/CompilerManagerHook.js +++ b/src/common/CompilerManagerHook.js @@ -71,26 +71,26 @@ function attachCompilerAndLibraries(version, libraries, param) { return $$Promise.map($$Promise.flatMap($$Promise.map($$Promise.mapError(loadScriptPromise(compilerUrl), (function (_msg) { return "Could not load compiler from url " + compilerUrl; })), (function (r) { - if (r.TAG) { - return [$$Promise.resolved({ - TAG: 1, - _0: r._0, - [Symbol.for("name")]: "Error" - })]; - } else { + if (r.TAG === /* Ok */0) { return Belt_Array.map(libraries, (function (lib) { var cmijUrl = getLibraryCmijUrl(version, lib); return $$Promise.mapError(loadScriptPromise(cmijUrl), (function (_msg) { return "Could not load cmij from url " + cmijUrl; })); })); + } else { + return [$$Promise.resolved({ + TAG: 1, + _0: r._0, + [Symbol.for("name")]: "Error" + })]; } })), $$Promise.allArray), (function (all) { var errors = Belt_Array.reduce(all, [], (function (acc, r) { - if (r.TAG) { - return acc.concat([r._0]); - } else { + if (r.TAG === /* Ok */0) { return acc; + } else { + return acc.concat([r._0]); } })); if (errors.length !== 0) { @@ -182,21 +182,21 @@ function useCompilerManager(initialLangOpt, onAction, param) { } if (convResult !== undefined) { - if (convResult.TAG) { - var secondTry = RescriptCompilerApi.Compiler.convertSyntax(instance, lang, lang, code); + if (convResult.TAG === /* Success */0) { match$1 = [ { TAG: 0, - _0: secondTry, + _0: convResult, [Symbol.for("name")]: "Conv" }, lang ]; } else { + var secondTry = RescriptCompilerApi.Compiler.convertSyntax(instance, lang, lang, code); match$1 = [ { TAG: 0, - _0: convResult, + _0: secondTry, [Symbol.for("name")]: "Conv" }, lang @@ -249,7 +249,7 @@ function useCompilerManager(initialLangOpt, onAction, param) { break; } - var result = convResult !== undefined && (convResult.TAG || code$1 !== convResult._0.code) ? ({ + var result = convResult !== undefined && !(convResult.TAG === /* Success */0 && code$1 === convResult._0.code) ? ({ TAG: 0, _0: convResult, [Symbol.for("name")]: "Conv" @@ -369,46 +369,46 @@ function useCompilerManager(initialLangOpt, onAction, param) { if (versions.length !== 0) { var latest = Caml_array.get(versions, 0); $$Promise.get(attachCompilerAndLibraries(latest, libraries, undefined), (function (result) { - if (result.TAG) { - var msg = result._0.join("; "); - return dispatchError({ - TAG: 1, - _0: msg, - [Symbol.for("name")]: "CompilerLoadingError" - }); + if (result.TAG === /* Ok */0) { + var instance = rescript_compiler.make(); + var apiVersion = RescriptCompilerApi.Version.fromString(rescript_compiler.api_version); + var config = instance.getConfig(); + var selected_compilerVersion = instance.version; + var selected_ocamlVersion = instance.ocaml.version; + var selected_reasonVersion = instance.reason.version; + var selected = { + id: latest, + apiVersion: apiVersion, + compilerVersion: selected_compilerVersion, + ocamlVersion: selected_ocamlVersion, + reasonVersion: selected_reasonVersion, + libraries: libraries, + config: config, + instance: instance + }; + var targetLang = Belt_Option.getWithDefault(Caml_option.undefined_to_opt(RescriptCompilerApi.Version.availableLanguages(apiVersion).find(function (l) { + return l === initialLang; + })), RescriptCompilerApi.Version.defaultTargetLang(apiVersion)); + return Curry._1(setState, (function (param) { + return { + TAG: 2, + _0: { + versions: versions, + selected: selected, + targetLang: targetLang, + errors: [], + result: /* Nothing */0 + }, + [Symbol.for("name")]: "Ready" + }; + })); } - var instance = rescript_compiler.make(); - var apiVersion = RescriptCompilerApi.Version.fromString(rescript_compiler.api_version); - var config = instance.getConfig(); - var selected_compilerVersion = instance.version; - var selected_ocamlVersion = instance.ocaml.version; - var selected_reasonVersion = instance.reason.version; - var selected = { - id: latest, - apiVersion: apiVersion, - compilerVersion: selected_compilerVersion, - ocamlVersion: selected_ocamlVersion, - reasonVersion: selected_reasonVersion, - libraries: libraries, - config: config, - instance: instance - }; - var targetLang = Belt_Option.getWithDefault(Caml_option.undefined_to_opt(RescriptCompilerApi.Version.availableLanguages(apiVersion).find(function (l) { - return l === initialLang; - })), RescriptCompilerApi.Version.defaultTargetLang(apiVersion)); - return Curry._1(setState, (function (param) { - return { - TAG: 2, - _0: { - versions: versions, - selected: selected, - targetLang: targetLang, - errors: [], - result: /* Nothing */0 - }, - [Symbol.for("name")]: "Ready" - }; - })); + var msg = result._0.join("; "); + return dispatchError({ + TAG: 1, + _0: msg, + [Symbol.for("name")]: "CompilerLoadingError" + }); })); } else { dispatchError({ @@ -424,50 +424,50 @@ function useCompilerManager(initialLangOpt, onAction, param) { var version = state._1; var ready = state._0; $$Promise.get(attachCompilerAndLibraries(version, libraries$1, undefined), (function (result) { - if (result.TAG) { - var msg = result._0.join("; "); - return dispatchError({ - TAG: 1, - _0: msg, - [Symbol.for("name")]: "CompilerLoadingError" - }); + if (result.TAG === /* Ok */0) { + var prim = getCompilerUrl(ready.selected.id); + LoadScript$1.removeScript(prim); + Belt_Array.forEach(ready.selected.libraries, (function (lib) { + var prim = getLibraryCmijUrl(ready.selected.id, lib); + LoadScript$1.removeScript(prim); + + })); + var instance = rescript_compiler.make(); + var apiVersion = RescriptCompilerApi.Version.fromString(rescript_compiler.api_version); + var config = instance.getConfig(); + var selected_compilerVersion = instance.version; + var selected_ocamlVersion = instance.ocaml.version; + var selected_reasonVersion = instance.reason.version; + var selected = { + id: version, + apiVersion: apiVersion, + compilerVersion: selected_compilerVersion, + ocamlVersion: selected_ocamlVersion, + reasonVersion: selected_reasonVersion, + libraries: libraries$1, + config: config, + instance: instance + }; + return Curry._1(setState, (function (param) { + return { + TAG: 2, + _0: { + versions: ready.versions, + selected: selected, + targetLang: RescriptCompilerApi.Version.defaultTargetLang(apiVersion), + errors: [], + result: /* Nothing */0 + }, + [Symbol.for("name")]: "Ready" + }; + })); } - var prim = getCompilerUrl(ready.selected.id); - LoadScript$1.removeScript(prim); - Belt_Array.forEach(ready.selected.libraries, (function (lib) { - var prim = getLibraryCmijUrl(ready.selected.id, lib); - LoadScript$1.removeScript(prim); - - })); - var instance = rescript_compiler.make(); - var apiVersion = RescriptCompilerApi.Version.fromString(rescript_compiler.api_version); - var config = instance.getConfig(); - var selected_compilerVersion = instance.version; - var selected_ocamlVersion = instance.ocaml.version; - var selected_reasonVersion = instance.reason.version; - var selected = { - id: version, - apiVersion: apiVersion, - compilerVersion: selected_compilerVersion, - ocamlVersion: selected_ocamlVersion, - reasonVersion: selected_reasonVersion, - libraries: libraries$1, - config: config, - instance: instance - }; - return Curry._1(setState, (function (param) { - return { - TAG: 2, - _0: { - versions: ready.versions, - selected: selected, - targetLang: RescriptCompilerApi.Version.defaultTargetLang(apiVersion), - errors: [], - result: /* Nothing */0 - }, - [Symbol.for("name")]: "Ready" - }; - })); + var msg = result._0.join("; "); + return dispatchError({ + TAG: 1, + _0: msg, + [Symbol.for("name")]: "CompilerLoadingError" + }); })); break; case /* SetupFailed */0 : diff --git a/common/CompilerManagerHook.res b/src/common/CompilerManagerHook.res similarity index 100% rename from common/CompilerManagerHook.res rename to src/common/CompilerManagerHook.res diff --git a/common/DateStr.js b/src/common/DateStr.js similarity index 100% rename from common/DateStr.js rename to src/common/DateStr.js diff --git a/common/DateStr.res b/src/common/DateStr.res similarity index 100% rename from common/DateStr.res rename to src/common/DateStr.res diff --git a/common/DateStr.resi b/src/common/DateStr.resi similarity index 100% rename from common/DateStr.resi rename to src/common/DateStr.resi diff --git a/common/DocFrontmatter.js b/src/common/DocFrontmatter.js similarity index 100% rename from common/DocFrontmatter.js rename to src/common/DocFrontmatter.js diff --git a/common/DocFrontmatter.res b/src/common/DocFrontmatter.res similarity index 100% rename from common/DocFrontmatter.res rename to src/common/DocFrontmatter.res diff --git a/common/HighlightJs.js b/src/common/HighlightJs.js similarity index 100% rename from common/HighlightJs.js rename to src/common/HighlightJs.js diff --git a/common/HighlightJs.res b/src/common/HighlightJs.res similarity index 100% rename from common/HighlightJs.res rename to src/common/HighlightJs.res diff --git a/common/Mdx.js b/src/common/Mdx.js similarity index 100% rename from common/Mdx.js rename to src/common/Mdx.js diff --git a/common/Mdx.res b/src/common/Mdx.res similarity index 100% rename from common/Mdx.res rename to src/common/Mdx.res diff --git a/common/ProcessEnv.js b/src/common/ProcessEnv.js similarity index 100% rename from common/ProcessEnv.js rename to src/common/ProcessEnv.js diff --git a/common/ProcessEnv.res b/src/common/ProcessEnv.res similarity index 100% rename from common/ProcessEnv.res rename to src/common/ProcessEnv.res diff --git a/common/SimpleRequest.js b/src/common/SimpleRequest.js similarity index 100% rename from common/SimpleRequest.js rename to src/common/SimpleRequest.js diff --git a/common/SimpleRequest.res b/src/common/SimpleRequest.res similarity index 100% rename from common/SimpleRequest.res rename to src/common/SimpleRequest.res diff --git a/common/Url.js b/src/common/Url.js similarity index 100% rename from common/Url.js rename to src/common/Url.js diff --git a/common/Url.res b/src/common/Url.res similarity index 100% rename from common/Url.res rename to src/common/Url.res diff --git a/common/Util.js b/src/common/Util.js similarity index 100% rename from common/Util.js rename to src/common/Util.js diff --git a/common/Util.res b/src/common/Util.res similarity index 100% rename from common/Util.res rename to src/common/Util.res diff --git a/common/WarningFlagDescription.js b/src/common/WarningFlagDescription.js similarity index 100% rename from common/WarningFlagDescription.js rename to src/common/WarningFlagDescription.js diff --git a/common/WarningFlagDescription.res b/src/common/WarningFlagDescription.res similarity index 100% rename from common/WarningFlagDescription.res rename to src/common/WarningFlagDescription.res diff --git a/common/XmlHttpRequest.js b/src/common/XmlHttpRequest.js similarity index 100% rename from common/XmlHttpRequest.js rename to src/common/XmlHttpRequest.js diff --git a/common/XmlHttpRequest.res b/src/common/XmlHttpRequest.res similarity index 100% rename from common/XmlHttpRequest.res rename to src/common/XmlHttpRequest.res diff --git a/components/AnsiPre.js b/src/components/AnsiPre.js similarity index 100% rename from components/AnsiPre.js rename to src/components/AnsiPre.js diff --git a/components/AnsiPre.res b/src/components/AnsiPre.res similarity index 100% rename from components/AnsiPre.res rename to src/components/AnsiPre.res diff --git a/components/ApiIntro.js b/src/components/ApiIntro.js similarity index 100% rename from components/ApiIntro.js rename to src/components/ApiIntro.js diff --git a/components/ApiIntro.res b/src/components/ApiIntro.res similarity index 100% rename from components/ApiIntro.res rename to src/components/ApiIntro.res diff --git a/components/ApiMarkdown.js b/src/components/ApiMarkdown.js similarity index 100% rename from components/ApiMarkdown.js rename to src/components/ApiMarkdown.js diff --git a/components/ApiMarkdown.res b/src/components/ApiMarkdown.res similarity index 100% rename from components/ApiMarkdown.res rename to src/components/ApiMarkdown.res diff --git a/components/Button.js b/src/components/Button.js similarity index 100% rename from components/Button.js rename to src/components/Button.js diff --git a/components/Button.res b/src/components/Button.res similarity index 100% rename from components/Button.res rename to src/components/Button.res diff --git a/components/CodeExample.js b/src/components/CodeExample.js similarity index 100% rename from components/CodeExample.js rename to src/components/CodeExample.js diff --git a/components/CodeExample.res b/src/components/CodeExample.res similarity index 100% rename from components/CodeExample.res rename to src/components/CodeExample.res diff --git a/components/CodeMirror.js b/src/components/CodeMirror.js similarity index 99% rename from components/CodeMirror.js rename to src/components/CodeMirror.js index 9b2e912c1..c6fa0d317 100644 --- a/components/CodeMirror.js +++ b/src/components/CodeMirror.js @@ -9,12 +9,12 @@ import * as Belt_Option from "bs-platform/lib/es6/belt_Option.js"; import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; import "codemirror/lib/codemirror.css"; -import "../styles/cm.css"; +import "styles/cm.css"; if (typeof window !== "undefined" && typeof window.navigator !== "undefined") { require("codemirror/mode/javascript/javascript"); require("codemirror/addon/scroll/simplescrollbars"); - require("../plugins/cm-reason-mode"); + require("plugins/cm-reason-mode"); } ; diff --git a/components/CodeMirror.res b/src/components/CodeMirror.res similarity index 99% rename from components/CodeMirror.res rename to src/components/CodeMirror.res index f013eee8c..47370fe94 100644 --- a/components/CodeMirror.res +++ b/src/components/CodeMirror.res @@ -11,12 +11,12 @@ %%raw( ` import "codemirror/lib/codemirror.css"; -import "../styles/cm.css"; +import "styles/cm.css"; if (typeof window !== "undefined" && typeof window.navigator !== "undefined") { require("codemirror/mode/javascript/javascript"); require("codemirror/addon/scroll/simplescrollbars"); - require("../plugins/cm-reason-mode"); + require("plugins/cm-reason-mode"); } ` ) diff --git a/components/DocSearch.js b/src/components/DocSearch.js similarity index 100% rename from components/DocSearch.js rename to src/components/DocSearch.js diff --git a/components/DocSearch.res b/src/components/DocSearch.res similarity index 100% rename from components/DocSearch.res rename to src/components/DocSearch.res diff --git a/components/Docson.js b/src/components/Docson.js similarity index 100% rename from components/Docson.js rename to src/components/Docson.js diff --git a/components/Docson.res b/src/components/Docson.res similarity index 100% rename from components/Docson.res rename to src/components/Docson.res diff --git a/components/Footer.js b/src/components/Footer.js similarity index 100% rename from components/Footer.js rename to src/components/Footer.js diff --git a/components/Footer.res b/src/components/Footer.res similarity index 100% rename from components/Footer.res rename to src/components/Footer.res diff --git a/components/Footer.resi b/src/components/Footer.resi similarity index 100% rename from components/Footer.resi rename to src/components/Footer.resi diff --git a/components/Icon.js b/src/components/Icon.js similarity index 100% rename from components/Icon.js rename to src/components/Icon.js diff --git a/components/Icon.res b/src/components/Icon.res similarity index 100% rename from components/Icon.res rename to src/components/Icon.res diff --git a/components/Image.js b/src/components/Image.js similarity index 100% rename from components/Image.js rename to src/components/Image.js diff --git a/components/Image.res b/src/components/Image.res similarity index 100% rename from components/Image.res rename to src/components/Image.res diff --git a/components/Markdown.js b/src/components/Markdown.js similarity index 100% rename from components/Markdown.js rename to src/components/Markdown.js diff --git a/components/Markdown.res b/src/components/Markdown.res similarity index 100% rename from components/Markdown.res rename to src/components/Markdown.res diff --git a/components/Meta.js b/src/components/Meta.js similarity index 100% rename from components/Meta.js rename to src/components/Meta.js diff --git a/components/Meta.res b/src/components/Meta.res similarity index 100% rename from components/Meta.res rename to src/components/Meta.res diff --git a/components/NameInitialsAvatar.js b/src/components/NameInitialsAvatar.js similarity index 100% rename from components/NameInitialsAvatar.js rename to src/components/NameInitialsAvatar.js diff --git a/components/NameInitialsAvatar.res b/src/components/NameInitialsAvatar.res similarity index 100% rename from components/NameInitialsAvatar.res rename to src/components/NameInitialsAvatar.res diff --git a/components/Navigation.js b/src/components/Navigation.js similarity index 100% rename from components/Navigation.js rename to src/components/Navigation.js diff --git a/components/Navigation.res b/src/components/Navigation.res similarity index 100% rename from components/Navigation.res rename to src/components/Navigation.res diff --git a/components/Navigation.resi b/src/components/Navigation.resi similarity index 100% rename from components/Navigation.resi rename to src/components/Navigation.resi diff --git a/components/Tag.js b/src/components/Tag.js similarity index 100% rename from components/Tag.js rename to src/components/Tag.js diff --git a/components/Tag.res b/src/components/Tag.res similarity index 100% rename from components/Tag.res rename to src/components/Tag.res diff --git a/components/Text.js b/src/components/Text.js similarity index 100% rename from components/Text.js rename to src/components/Text.js diff --git a/components/Text.res b/src/components/Text.res similarity index 100% rename from components/Text.res rename to src/components/Text.res diff --git a/components/VersionSelect.js b/src/components/VersionSelect.js similarity index 100% rename from components/VersionSelect.js rename to src/components/VersionSelect.js diff --git a/components/VersionSelect.res b/src/components/VersionSelect.res similarity index 100% rename from components/VersionSelect.res rename to src/components/VersionSelect.res diff --git a/components/Video.js b/src/components/Video.js similarity index 100% rename from components/Video.js rename to src/components/Video.js diff --git a/components/Video.res b/src/components/Video.res similarity index 100% rename from components/Video.res rename to src/components/Video.res diff --git a/ffi/loadScript.js b/src/ffi/loadScript.js similarity index 100% rename from ffi/loadScript.js rename to src/ffi/loadScript.js diff --git a/ffi/parse-numeric-range.js b/src/ffi/parse-numeric-range.js similarity index 100% rename from ffi/parse-numeric-range.js rename to src/ffi/parse-numeric-range.js diff --git a/ffi/react-codemirror-hooks.js b/src/ffi/react-codemirror-hooks.js similarity index 100% rename from ffi/react-codemirror-hooks.js rename to src/ffi/react-codemirror-hooks.js diff --git a/layouts/ApiLayout.js b/src/layouts/ApiLayout.js similarity index 100% rename from layouts/ApiLayout.js rename to src/layouts/ApiLayout.js diff --git a/layouts/ApiLayout.res b/src/layouts/ApiLayout.res similarity index 100% rename from layouts/ApiLayout.res rename to src/layouts/ApiLayout.res diff --git a/layouts/ApiOverviewLayout.js b/src/layouts/ApiOverviewLayout.js similarity index 100% rename from layouts/ApiOverviewLayout.js rename to src/layouts/ApiOverviewLayout.js diff --git a/layouts/ApiOverviewLayout.res b/src/layouts/ApiOverviewLayout.res similarity index 100% rename from layouts/ApiOverviewLayout.res rename to src/layouts/ApiOverviewLayout.res diff --git a/layouts/ApiOverviewLayout8_0_0.js b/src/layouts/ApiOverviewLayout8_0_0.js similarity index 100% rename from layouts/ApiOverviewLayout8_0_0.js rename to src/layouts/ApiOverviewLayout8_0_0.js diff --git a/layouts/ApiOverviewLayout8_0_0.res b/src/layouts/ApiOverviewLayout8_0_0.res similarity index 100% rename from layouts/ApiOverviewLayout8_0_0.res rename to src/layouts/ApiOverviewLayout8_0_0.res diff --git a/layouts/BeltDocsLayout.js b/src/layouts/BeltDocsLayout.js similarity index 98% rename from layouts/BeltDocsLayout.js rename to src/layouts/BeltDocsLayout.js index ef929bf8c..59fa94391 100644 --- a/layouts/BeltDocsLayout.js +++ b/src/layouts/BeltDocsLayout.js @@ -10,9 +10,9 @@ import * as Belt_Option from "bs-platform/lib/es6/belt_Option.js"; import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; import * as Router from "next/router"; -var indexData = (require('../index_data/latest_belt_api_index.json')); +var indexData = (require('index_data/latest_belt_api_index.json')); -var $$package = (require('../package.json')); +var $$package = (require('package.json')); var overviewNavs = [{ name: "Introduction", diff --git a/layouts/BeltDocsLayout.res b/src/layouts/BeltDocsLayout.res similarity index 98% rename from layouts/BeltDocsLayout.res rename to src/layouts/BeltDocsLayout.res index 5412c62e9..1c2a82a58 100644 --- a/layouts/BeltDocsLayout.res +++ b/src/layouts/BeltDocsLayout.res @@ -7,10 +7,10 @@ let indexData: Js.Dict.t<{ "name": string, "href": string, }>, -}> = %raw("require('../index_data/latest_belt_api_index.json')") +}> = %raw("require('index_data/latest_belt_api_index.json')") // Retrieve package.json to access the version of bs-platform. -let package: {"dependencies": {"bs-platform": string}} = %raw("require('../package.json')") +let package: {"dependencies": {"bs-platform": string}} = %raw("require('package.json')") module Category = SidebarLayout.Sidebar.Category module NavItem = SidebarLayout.Sidebar.NavItem diff --git a/layouts/BeltDocsLayout8_0_0.js b/src/layouts/BeltDocsLayout8_0_0.js similarity index 98% rename from layouts/BeltDocsLayout8_0_0.js rename to src/layouts/BeltDocsLayout8_0_0.js index b993d65a5..0d24be9fc 100644 --- a/layouts/BeltDocsLayout8_0_0.js +++ b/src/layouts/BeltDocsLayout8_0_0.js @@ -10,9 +10,9 @@ import * as Belt_Option from "bs-platform/lib/es6/belt_Option.js"; import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; import * as Router from "next/router"; -var indexData = (require('../index_data/v800_belt_api_index.json')); +var indexData = (require('index_data/v800_belt_api_index.json')); -var $$package = (require('../package.json')); +var $$package = (require('package.json')); var overviewNavs = [{ name: "Introduction", diff --git a/layouts/BeltDocsLayout8_0_0.res b/src/layouts/BeltDocsLayout8_0_0.res similarity index 98% rename from layouts/BeltDocsLayout8_0_0.res rename to src/layouts/BeltDocsLayout8_0_0.res index 8d2e7265f..14c0973b7 100644 --- a/layouts/BeltDocsLayout8_0_0.res +++ b/src/layouts/BeltDocsLayout8_0_0.res @@ -7,10 +7,10 @@ let indexData: Js.Dict.t<{ "name": string, "href": string, }>, -}> = %raw("require('../index_data/v800_belt_api_index.json')") +}> = %raw("require('index_data/v800_belt_api_index.json')") // Retrieve package.json to access the version of bs-platform. -let package: {"dependencies": {"bs-platform": string}} = %raw("require('../package.json')") +let package: {"dependencies": {"bs-platform": string}} = %raw("require('package.json')") module Category = ApiLayout.Sidebar.Category module NavItem = ApiLayout.Sidebar.NavItem diff --git a/layouts/CommunityLayout.js b/src/layouts/CommunityLayout.js similarity index 97% rename from layouts/CommunityLayout.js rename to src/layouts/CommunityLayout.js index 28fceda11..bb26972d8 100644 --- a/layouts/CommunityLayout.js +++ b/src/layouts/CommunityLayout.js @@ -10,7 +10,7 @@ import * as Belt_Option from "bs-platform/lib/es6/belt_Option.js"; import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; import * as Router from "next/router"; -var tocData = (require('../index_data/community_toc.json')); +var tocData = (require('index_data/community_toc.json')); var overviewNavs = [ { diff --git a/layouts/CommunityLayout.res b/src/layouts/CommunityLayout.res similarity index 96% rename from layouts/CommunityLayout.res rename to src/layouts/CommunityLayout.res index 405497f7c..0d26f2ab1 100644 --- a/layouts/CommunityLayout.res +++ b/src/layouts/CommunityLayout.res @@ -7,7 +7,7 @@ let tocData: Js.Dict.t<{ "name": string, "href": string, }>, -}> = %raw("require('../index_data/community_toc.json')") +}> = %raw("require('index_data/community_toc.json')") module NavItem = SidebarLayout.Sidebar.NavItem module Category = SidebarLayout.Sidebar.Category diff --git a/layouts/DocsLayout.js b/src/layouts/DocsLayout.js similarity index 99% rename from layouts/DocsLayout.js rename to src/layouts/DocsLayout.js index 88c5b3e15..a135df7e7 100644 --- a/layouts/DocsLayout.js +++ b/src/layouts/DocsLayout.js @@ -138,12 +138,7 @@ function DocsLayout(Props) { var match$1; if (frontmatter !== undefined) { var fm = DocFrontmatter.decode(Caml_option.valFromOption(frontmatter)); - if (fm.TAG) { - match$1 = [ - null, - undefined - ]; - } else { + if (fm.TAG === /* Ok */0) { var fm$1 = fm._0; var canonical = fm$1.canonical; var description = fm$1.description; @@ -164,6 +159,11 @@ function DocsLayout(Props) { meta, fm$1.ghEditHref ]; + } else { + match$1 = [ + null, + undefined + ]; } } else { match$1 = [ diff --git a/layouts/DocsLayout.res b/src/layouts/DocsLayout.res similarity index 100% rename from layouts/DocsLayout.res rename to src/layouts/DocsLayout.res diff --git a/layouts/DomDocsLayout.js b/src/layouts/DomDocsLayout.js similarity index 97% rename from layouts/DomDocsLayout.js rename to src/layouts/DomDocsLayout.js index 28a831c5b..52cd002c0 100644 --- a/layouts/DomDocsLayout.js +++ b/src/layouts/DomDocsLayout.js @@ -10,7 +10,7 @@ import * as Belt_Option from "bs-platform/lib/es6/belt_Option.js"; import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; import * as Router from "next/router"; -var indexData = (require('../index_data/latest_dom_api_index.json')); +var indexData = (require('index_data/latest_dom_api_index.json')); var overviewNavs = [{ name: "Dom", diff --git a/layouts/DomDocsLayout.res b/src/layouts/DomDocsLayout.res similarity index 97% rename from layouts/DomDocsLayout.res rename to src/layouts/DomDocsLayout.res index 332c64d4b..badd3aa9d 100644 --- a/layouts/DomDocsLayout.res +++ b/src/layouts/DomDocsLayout.res @@ -7,7 +7,7 @@ let indexData: Js.Dict.t<{ "name": string, "href": string, }>, -}> = %raw("require('../index_data/latest_dom_api_index.json')") +}> = %raw("require('index_data/latest_dom_api_index.json')") module Category = ApiLayout.Sidebar.Category module NavItem = ApiLayout.Sidebar.NavItem diff --git a/layouts/DomDocsLayout8_0_0.js b/src/layouts/DomDocsLayout8_0_0.js similarity index 98% rename from layouts/DomDocsLayout8_0_0.js rename to src/layouts/DomDocsLayout8_0_0.js index af6d36cd0..e8d47a48d 100644 --- a/layouts/DomDocsLayout8_0_0.js +++ b/src/layouts/DomDocsLayout8_0_0.js @@ -10,7 +10,7 @@ import * as Belt_Option from "bs-platform/lib/es6/belt_Option.js"; import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; import * as Router from "next/router"; -var indexData = (require('../index_data/v800_dom_api_index.json')); +var indexData = (require('index_data/v800_dom_api_index.json')); var overviewNavs = [{ name: "Dom", diff --git a/layouts/DomDocsLayout8_0_0.res b/src/layouts/DomDocsLayout8_0_0.res similarity index 97% rename from layouts/DomDocsLayout8_0_0.res rename to src/layouts/DomDocsLayout8_0_0.res index 151fad8eb..6ec597826 100644 --- a/layouts/DomDocsLayout8_0_0.res +++ b/src/layouts/DomDocsLayout8_0_0.res @@ -7,7 +7,7 @@ let indexData: Js.Dict.t<{ "name": string, "href": string, }>, -}> = %raw("require('../index_data/v800_dom_api_index.json')") +}> = %raw("require('index_data/v800_dom_api_index.json')") module Category = ApiLayout.Sidebar.Category module NavItem = ApiLayout.Sidebar.NavItem diff --git a/layouts/GenTypeDocsLayout.js b/src/layouts/GenTypeDocsLayout.js similarity index 98% rename from layouts/GenTypeDocsLayout.js rename to src/layouts/GenTypeDocsLayout.js index c35adf79f..005c642eb 100644 --- a/layouts/GenTypeDocsLayout.js +++ b/src/layouts/GenTypeDocsLayout.js @@ -11,7 +11,7 @@ import * as Belt_Option from "bs-platform/lib/es6/belt_Option.js"; import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; import * as Router from "next/router"; -var tocData = (require('../index_data/gentype_toc.json')); +var tocData = (require('index_data/gentype_toc.json')); var overviewNavs = [ { diff --git a/layouts/GenTypeDocsLayout.res b/src/layouts/GenTypeDocsLayout.res similarity index 97% rename from layouts/GenTypeDocsLayout.res rename to src/layouts/GenTypeDocsLayout.res index 1dd7af205..318911339 100644 --- a/layouts/GenTypeDocsLayout.res +++ b/src/layouts/GenTypeDocsLayout.res @@ -7,7 +7,7 @@ let tocData: Js.Dict.t<{ "name": string, "href": string, }>, -}> = %raw("require('../index_data/gentype_toc.json')") +}> = %raw("require('index_data/gentype_toc.json')") module NavItem = SidebarLayout.Sidebar.NavItem module Category = SidebarLayout.Sidebar.Category diff --git a/layouts/JsDocsLayout.js b/src/layouts/JsDocsLayout.js similarity index 98% rename from layouts/JsDocsLayout.js rename to src/layouts/JsDocsLayout.js index 10f3b0c1d..d91a75b91 100644 --- a/layouts/JsDocsLayout.js +++ b/src/layouts/JsDocsLayout.js @@ -10,9 +10,9 @@ import * as Belt_Option from "bs-platform/lib/es6/belt_Option.js"; import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; import * as Router from "next/router"; -var indexData = (require('../index_data/latest_js_api_index.json')); +var indexData = (require('index_data/latest_js_api_index.json')); -var $$package = (require('../package.json')); +var $$package = (require('package.json')); var overviewNavs = [{ name: "JS", diff --git a/layouts/JsDocsLayout.res b/src/layouts/JsDocsLayout.res similarity index 98% rename from layouts/JsDocsLayout.res rename to src/layouts/JsDocsLayout.res index d8bfa2a36..8df590366 100644 --- a/layouts/JsDocsLayout.res +++ b/src/layouts/JsDocsLayout.res @@ -7,10 +7,10 @@ let indexData: Js.Dict.t<{ "name": string, "href": string, }>, -}> = %raw("require('../index_data/latest_js_api_index.json')") +}> = %raw("require('index_data/latest_js_api_index.json')") // Retrieve package.json to access the version of bs-platform. -let package: {"dependencies": {"bs-platform": string}} = %raw("require('../package.json')") +let package: {"dependencies": {"bs-platform": string}} = %raw("require('package.json')") module Category = ApiLayout.Sidebar.Category module NavItem = ApiLayout.Sidebar.NavItem diff --git a/layouts/JsDocsLayout8_0_0.js b/src/layouts/JsDocsLayout8_0_0.js similarity index 98% rename from layouts/JsDocsLayout8_0_0.js rename to src/layouts/JsDocsLayout8_0_0.js index 1558255c4..29e79fa97 100644 --- a/layouts/JsDocsLayout8_0_0.js +++ b/src/layouts/JsDocsLayout8_0_0.js @@ -10,9 +10,9 @@ import * as Belt_Option from "bs-platform/lib/es6/belt_Option.js"; import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; import * as Router from "next/router"; -var indexData = (require('../index_data/v800_js_api_index.json')); +var indexData = (require('index_data/v800_js_api_index.json')); -var $$package = (require('../package.json')); +var $$package = (require('package.json')); var overviewNavs = [{ name: "JS", diff --git a/layouts/JsDocsLayout8_0_0.res b/src/layouts/JsDocsLayout8_0_0.res similarity index 98% rename from layouts/JsDocsLayout8_0_0.res rename to src/layouts/JsDocsLayout8_0_0.res index b971f3df8..b1516e6e8 100644 --- a/layouts/JsDocsLayout8_0_0.res +++ b/src/layouts/JsDocsLayout8_0_0.res @@ -7,10 +7,10 @@ let indexData: Js.Dict.t<{ "name": string, "href": string, }>, -}> = %raw("require('../index_data/v800_js_api_index.json')") +}> = %raw("require('index_data/v800_js_api_index.json')") // Retrieve package.json to access the version of bs-platform. -let package: {"dependencies": {"bs-platform": string}} = %raw("require('../package.json')") +let package: {"dependencies": {"bs-platform": string}} = %raw("require('package.json')") module Category = ApiLayout.Sidebar.Category module NavItem = ApiLayout.Sidebar.NavItem diff --git a/layouts/LandingPageLayout.js b/src/layouts/LandingPageLayout.js similarity index 100% rename from layouts/LandingPageLayout.js rename to src/layouts/LandingPageLayout.js diff --git a/layouts/LandingPageLayout.res b/src/layouts/LandingPageLayout.res similarity index 100% rename from layouts/LandingPageLayout.res rename to src/layouts/LandingPageLayout.res diff --git a/layouts/LandingPageLayout.resi b/src/layouts/LandingPageLayout.resi similarity index 100% rename from layouts/LandingPageLayout.resi rename to src/layouts/LandingPageLayout.resi diff --git a/layouts/MainLayout.js b/src/layouts/MainLayout.js similarity index 100% rename from layouts/MainLayout.js rename to src/layouts/MainLayout.js diff --git a/layouts/MainLayout.res b/src/layouts/MainLayout.res similarity index 100% rename from layouts/MainLayout.res rename to src/layouts/MainLayout.res diff --git a/layouts/ManualDocsLayout.js b/src/layouts/ManualDocsLayout.js similarity index 99% rename from layouts/ManualDocsLayout.js rename to src/layouts/ManualDocsLayout.js index 5bbf34ffd..6aff89a0c 100644 --- a/layouts/ManualDocsLayout.js +++ b/src/layouts/ManualDocsLayout.js @@ -22,7 +22,7 @@ var allManualVersions = [ ] ]; -var tocData = (require('../index_data/manual_toc.json')); +var tocData = (require('index_data/manual_toc.json')); var overviewNavs = [ { diff --git a/layouts/ManualDocsLayout.res b/src/layouts/ManualDocsLayout.res similarity index 99% rename from layouts/ManualDocsLayout.res rename to src/layouts/ManualDocsLayout.res index 2aae9ba3a..31069191a 100644 --- a/layouts/ManualDocsLayout.res +++ b/src/layouts/ManualDocsLayout.res @@ -10,7 +10,7 @@ let tocData: Js.Dict.t<{ "name": string, "href": string, }>, -}> = %raw("require('../index_data/manual_toc.json')") +}> = %raw("require('index_data/manual_toc.json')") module NavItem = SidebarLayout.Sidebar.NavItem module Category = SidebarLayout.Sidebar.Category diff --git a/layouts/ManualDocsLayout8_0_0.js b/src/layouts/ManualDocsLayout8_0_0.js similarity index 99% rename from layouts/ManualDocsLayout8_0_0.js rename to src/layouts/ManualDocsLayout8_0_0.js index 895dbd012..967204423 100644 --- a/layouts/ManualDocsLayout8_0_0.js +++ b/src/layouts/ManualDocsLayout8_0_0.js @@ -12,7 +12,7 @@ import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; import * as Router from "next/router"; import * as ManualDocsLayout from "./ManualDocsLayout.js"; -var tocData = (require('../index_data/manual_v800_toc.json')); +var tocData = (require('index_data/manual_v800_toc.json')); var overviewNavs = [ { diff --git a/layouts/ManualDocsLayout8_0_0.res b/src/layouts/ManualDocsLayout8_0_0.res similarity index 99% rename from layouts/ManualDocsLayout8_0_0.res rename to src/layouts/ManualDocsLayout8_0_0.res index a27e8f8e5..cdfc6f157 100644 --- a/layouts/ManualDocsLayout8_0_0.res +++ b/src/layouts/ManualDocsLayout8_0_0.res @@ -7,7 +7,7 @@ let tocData: Js.Dict.t<{ "name": string, "href": string, }>, -}> = %raw("require('../index_data/manual_v800_toc.json')") +}> = %raw("require('index_data/manual_v800_toc.json')") module NavItem = SidebarLayout.Sidebar.NavItem module Category = SidebarLayout.Sidebar.Category diff --git a/layouts/ReasonCompilerDocsLayout.js b/src/layouts/ReasonCompilerDocsLayout.js similarity index 98% rename from layouts/ReasonCompilerDocsLayout.js rename to src/layouts/ReasonCompilerDocsLayout.js index 2f25ef950..1b28b43a0 100644 --- a/layouts/ReasonCompilerDocsLayout.js +++ b/src/layouts/ReasonCompilerDocsLayout.js @@ -11,7 +11,7 @@ import * as Belt_Option from "bs-platform/lib/es6/belt_Option.js"; import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; import * as Router from "next/router"; -var tocData = (require('../index_data/reason_compiler_toc.json')); +var tocData = (require('index_data/reason_compiler_toc.json')); var interopNavs = [ { diff --git a/layouts/ReasonCompilerDocsLayout.res b/src/layouts/ReasonCompilerDocsLayout.res similarity index 97% rename from layouts/ReasonCompilerDocsLayout.res rename to src/layouts/ReasonCompilerDocsLayout.res index c262d2463..2d57931c9 100644 --- a/layouts/ReasonCompilerDocsLayout.res +++ b/src/layouts/ReasonCompilerDocsLayout.res @@ -7,7 +7,7 @@ let tocData: Js.Dict.t<{ "name": string, "href": string, }>, -}> = %raw("require('../index_data/reason_compiler_toc.json')") +}> = %raw("require('index_data/reason_compiler_toc.json')") module NavItem = SidebarLayout.Sidebar.NavItem module Category = SidebarLayout.Sidebar.Category diff --git a/layouts/SidebarLayout.js b/src/layouts/SidebarLayout.js similarity index 100% rename from layouts/SidebarLayout.js rename to src/layouts/SidebarLayout.js diff --git a/layouts/SidebarLayout.res b/src/layouts/SidebarLayout.res similarity index 100% rename from layouts/SidebarLayout.res rename to src/layouts/SidebarLayout.res diff --git a/tailwind.config.js b/tailwind.config.js index 40e10473f..1e9a2ecf7 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -37,13 +37,10 @@ module.exports = { purge: { // Specify the paths to all of the template files in your project content: [ - "./components/**/*.res", - "./common/**/*.res", - "./re_pages/**/*.res", - "./ffi/**/*.js", - "./pages/**/*.res", + "src/components/**/*.res", + "src/ffi/*.js", + "./pages/**/*.js", "./pages/**/*.mdx", - "./layouts/**/*.res" ], options: { whitelist: ["html", "body"] From ea67f5727c3bf40b32f9c726b14166b71dc846d9 Mon Sep 17 00:00:00 2001 From: Patrick Stapfer Date: Wed, 30 Dec 2020 21:00:28 +0100 Subject: [PATCH 03/10] Fix some paths --- pages/docs/manual/latest/build-configuration-schema.js | 2 +- src/components/Docson.js | 9 +++------ src/components/Docson.res | 4 ++-- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/pages/docs/manual/latest/build-configuration-schema.js b/pages/docs/manual/latest/build-configuration-schema.js index 858550fe8..596e05713 100644 --- a/pages/docs/manual/latest/build-configuration-schema.js +++ b/pages/docs/manual/latest/build-configuration-schema.js @@ -1,6 +1,6 @@ import dynamic from "next/dynamic"; -const Docson = dynamic(() => import("components/Docson").then((comp) => { +const Docson = dynamic(() => import("src/components/Docson").then((comp) => { return comp.make; }), { ssr: false, diff --git a/src/components/Docson.js b/src/components/Docson.js index 46c737612..a43fcf340 100644 --- a/src/components/Docson.js +++ b/src/components/Docson.js @@ -3,20 +3,18 @@ import * as React from "react"; import Docson from "docson"; import * as Docson$1 from "docson"; -import BuildSchemaJson from "../index_data/build-schema.json"; +import BuildSchemaJson from "index_data/build-schema.json"; -import "../styles/docson.css"; +import "styles/docson.css"; ; -var schema = BuildSchemaJson; - function Docson$2(Props) { var element = React.useRef(null); React.useEffect((function () { var _el = element.current; if (!(_el == null)) { Docson.templateBaseUrl = "/static/docson"; - Docson$1.default.doc("docson-root", schema, undefined, "https://raw.githubusercontent.com/rescript-lang/rescript-compiler/master/docs/docson/build-schema.json"); + Docson$1.default.doc("docson-root", BuildSchemaJson, undefined, "https://raw.githubusercontent.com/rescript-lang/rescript-compiler/master/docs/docson/build-schema.json"); } }), []); @@ -29,7 +27,6 @@ function Docson$2(Props) { var make = Docson$2; export { - schema , make , } diff --git a/src/components/Docson.res b/src/components/Docson.res index 03636825d..4c05f8871 100644 --- a/src/components/Docson.res +++ b/src/components/Docson.res @@ -11,7 +11,7 @@ Next's dynamic import mechanism. */ -%%raw(`import "../styles/docson.css";`) +%%raw(`import "styles/docson.css";`) type t @@ -22,7 +22,7 @@ type t @module("docson") @scope("default") external doc: (string, Js.Json.t, option, string) => unit = "doc" -@module("../index_data/build-schema.json") external schema: Js.Json.t = "default" +@module("index_data/build-schema.json") external schema: Js.Json.t = "default" @react.component let make = () => { From a23e5b7a5c8253d60ed3e163d4510909af135c41 Mon Sep 17 00:00:00 2001 From: Patrick Stapfer Date: Wed, 30 Dec 2020 21:05:15 +0100 Subject: [PATCH 04/10] Tweak tailwind purge config --- tailwind.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tailwind.config.js b/tailwind.config.js index 1e9a2ecf7..ce14dc6b5 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -37,7 +37,7 @@ module.exports = { purge: { // Specify the paths to all of the template files in your project content: [ - "src/components/**/*.res", + "src/**/*.res", "src/ffi/*.js", "./pages/**/*.js", "./pages/**/*.mdx", From 2725e39df704b4c7a01ab08e1a426ac014009440 Mon Sep 17 00:00:00 2001 From: Patrick Stapfer Date: Wed, 30 Dec 2020 21:12:32 +0100 Subject: [PATCH 05/10] remove unnecessary mockup file --- search_index_mockup.json | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100644 search_index_mockup.json diff --git a/search_index_mockup.json b/search_index_mockup.json deleted file mode 100644 index dc2b51239..000000000 --- a/search_index_mockup.json +++ /dev/null @@ -1,21 +0,0 @@ -[{ - "module": "Array", - "href": "belt_docs/array", - "content": [ - { - "reason": "map", - "signature": "let map: (array('a), 'a => 'b) => array('b);", - "js": ["[].map"] - }, - { - "reason": "keep", - "signature": "let keep: (array('a), 'a => bool) => array('a);", - "js": ["[].filter"] - }, - { - "reason": "copy", - "signature": "let copy: array('a) => array('a);", - "js": ["[].splice"] - } - ] -}] From 3eca2b1f6bbfbbcbac5f6b60cfea752da40b3780 Mon Sep 17 00:00:00 2001 From: Patrick Stapfer Date: Wed, 30 Dec 2020 21:14:49 +0100 Subject: [PATCH 06/10] Rename Blog_Article to BlogArticle --- pages/blog/[slug].js | 2 +- src/{Blog_Article.js => BlogArticle.js} | 20 ++++++++++---------- src/{Blog_Article.res => BlogArticle.res} | 0 3 files changed, 11 insertions(+), 11 deletions(-) rename src/{Blog_Article.js => BlogArticle.js} (95%) rename src/{Blog_Article.res => BlogArticle.res} (100%) diff --git a/pages/blog/[slug].js b/pages/blog/[slug].js index 9ad6d5883..8c23a20b4 100644 --- a/pages/blog/[slug].js +++ b/pages/blog/[slug].js @@ -2,4 +2,4 @@ export { default, getStaticPaths, getStaticProps -} from "src/Blog_Article.js"; +} from "src/BlogArticle.js"; diff --git a/src/Blog_Article.js b/src/BlogArticle.js similarity index 95% rename from src/Blog_Article.js rename to src/BlogArticle.js index 4336c3bdd..3f3b8461b 100644 --- a/src/Blog_Article.js +++ b/src/BlogArticle.js @@ -31,17 +31,17 @@ var BlogComponent = { frontmatter: frontmatter }; -function Blog_Article$Line(Props) { +function BlogArticle$Line(Props) { return React.createElement("div", { className: "block border-t border-snow-darker" }); } var Line = { - make: Blog_Article$Line + make: BlogArticle$Line }; -function Blog_Article$AuthorBox(Props) { +function BlogArticle$AuthorBox(Props) { var author = Props.author; var displayName = BlogFrontmatter.Author.getDisplayName(author); var src = author.imgUrl; @@ -69,10 +69,10 @@ function Blog_Article$AuthorBox(Props) { } var AuthorBox = { - make: Blog_Article$AuthorBox + make: BlogArticle$AuthorBox }; -function Blog_Article$BlogHeader(Props) { +function BlogArticle$BlogHeader(Props) { var date = Props.date; var author = Props.author; var co_authors = Props.co_authors; @@ -111,7 +111,7 @@ function Blog_Article$BlogHeader(Props) { style: { minWidth: "8.1875rem" } - }, React.createElement(Blog_Article$AuthorBox, { + }, React.createElement(BlogArticle$AuthorBox, { author: author })); })))), articleImg !== undefined ? React.createElement("div", { @@ -124,11 +124,11 @@ function Blog_Article$BlogHeader(Props) { src: articleImg })) : React.createElement("div", { className: "max-w-705 w-full" - }, React.createElement(Blog_Article$Line, {}))); + }, React.createElement(BlogArticle$Line, {}))); } var BlogHeader = { - make: Blog_Article$BlogHeader + make: BlogArticle$BlogHeader }; var cwd = Process.cwd(); @@ -186,7 +186,7 @@ function $$default(props) { className: "w-full" }, React.createElement(Meta.make, tmp), React.createElement("div", { className: "mb-10 md:mb-20" - }, React.createElement(Blog_Article$BlogHeader, tmp$3)), React.createElement("div", { + }, React.createElement(BlogArticle$BlogHeader, tmp$3)), React.createElement("div", { className: "flex justify-center" }, React.createElement("div", { className: "max-w-705 w-full" @@ -198,7 +198,7 @@ function $$default(props) { target: "_blank" }, canonical)) : null, React.createElement("div", { className: "mt-12" - }, React.createElement(Blog_Article$Line, {}), React.createElement("div", { + }, React.createElement(BlogArticle$Line, {}), React.createElement("div", { className: "pt-20 flex flex-col items-center" }, React.createElement("div", { className: "text-3xl sm:text-4xl text-center text-night-dark font-medium" diff --git a/src/Blog_Article.res b/src/BlogArticle.res similarity index 100% rename from src/Blog_Article.res rename to src/BlogArticle.res From 02a781522f3787ce4fbc50dfec8f0b21c4b05076 Mon Sep 17 00:00:00 2001 From: Patrick Stapfer Date: Thu, 31 Dec 2020 15:05:06 +0100 Subject: [PATCH 07/10] Add interface files for every relevant .res file Also remove some dead code / restructure some references that were unweild by the warning system. --- src/Blog.js | 74 ++-- src/Blog.res | 25 +- src/Blog.resi | 27 ++ src/BlogArticle.js | 32 +- src/BlogArticle.res | 2 - src/BlogArticle.resi | 11 + src/DocsOverview.js | 17 +- src/DocsOverview.res | 2 - src/DocsOverview.resi | 2 + src/Packages.js | 36 +- src/Playground.js | 391 +++++++--------------- src/Playground.res | 66 +--- src/Playground.resi | 2 + src/bindings/Fuse.js | 13 +- src/bindings/Fuse.resi | 27 ++ src/bindings/IntlDateTimeFormat.js | 32 ++ src/bindings/IntlDateTimeFormat.resi | 78 +++++ src/bindings/Next.js | 105 +++++- src/bindings/Next.resi | 134 ++++++++ src/bindings/NodeGlob.js | 13 +- src/bindings/NodeGlob.resi | 1 + src/bindings/RescriptCompilerApi.js | 42 ++- src/bindings/RescriptCompilerApi.res | 2 +- src/bindings/RescriptCompilerApi.resi | 183 ++++++++++ src/bindings/Worker.js | 46 ++- src/bindings/Worker.resi | 29 ++ src/common/Ansi.resi | 92 +++++ src/common/App.js | 4 +- src/common/BlogApi.js | 9 +- src/common/BlogApi.resi | 21 ++ src/common/BlogFrontmatter.js | 123 +++---- src/common/BlogFrontmatter.resi | 50 +++ src/common/ColorTheme.js | 14 +- src/common/ColorTheme.resi | 3 + src/common/CompilerManagerHook.js | 46 +-- src/common/CompilerManagerHook.resi | 48 +++ src/common/DocFrontmatter.resi | 8 + src/common/HighlightJs.resi | 7 + src/common/Mdx.js | 103 +++++- src/common/Mdx.res | 15 +- src/common/Mdx.resi | 76 +++++ src/common/ProcessEnv.js | 16 +- src/common/ProcessEnv.resi | 5 + src/common/SimpleRequest.js | 70 ---- src/common/SimpleRequest.res | 55 --- src/common/Url.js | 3 +- src/common/Url.res | 1 - src/common/Url.resi | 21 ++ src/common/Util.js | 79 +---- src/common/Util.res | 4 +- src/common/Util.resi | 20 ++ src/common/WarningFlagDescription.js | 84 +---- src/common/WarningFlagDescription.res | 2 +- src/common/WarningFlagDescription.resi | 15 + src/components/AnsiPre.js | 42 +-- src/components/AnsiPre.resi | 2 + src/components/ApiIntro.resi | 2 + src/components/ApiMarkdown.js | 53 +-- src/components/ApiMarkdown.res | 12 - src/components/ApiMarkdown.resi | 1 + src/components/Button.resi | 2 + src/components/CodeExample.js | 1 - src/components/CodeExample.resi | 19 ++ src/components/CodeMirror.js | 75 ++--- src/components/CodeMirror.res | 12 +- src/components/CodeMirror.resi | 52 +++ src/components/DocSearch.js | 2 +- src/components/DocSearch.res | 2 - src/components/DocSearch.resi | 7 + src/components/Docson.res | 13 - src/components/Docson.resi | 14 + src/components/Footer.js | 4 +- src/components/Icon.resi | 65 ++++ src/components/Image.resi | 4 + src/components/Markdown.js | 172 ++++------ src/components/Markdown.res | 5 +- src/components/Markdown.resi | 162 +++++++++ src/components/Meta.js | 9 +- src/components/Meta.resi | 13 + src/components/NameInitialsAvatar.resi | 2 + src/components/Navigation.js | 40 ++- src/components/Tag.resi | 4 + src/components/Text.js | 12 +- src/components/Text.resi | 17 + src/components/VersionSelect.resi | 2 + src/components/Video.resi | 2 + src/layouts/ApiLayout.js | 40 +-- src/layouts/ApiLayout.res | 2 - src/layouts/ApiLayout.resi | 17 + src/layouts/ApiOverviewLayout.js | 21 -- src/layouts/ApiOverviewLayout.res | 12 +- src/layouts/ApiOverviewLayout.resi | 4 + src/layouts/ApiOverviewLayout8_0_0.js | 27 +- src/layouts/ApiOverviewLayout8_0_0.res | 12 +- src/layouts/ApiOverviewLayout8_0_0.resi | 4 + src/layouts/BeltDocsLayout.js | 25 +- src/layouts/BeltDocsLayout.res | 7 +- src/layouts/BeltDocsLayout.resi | 9 + src/layouts/BeltDocsLayout8_0_0.js | 25 +- src/layouts/BeltDocsLayout8_0_0.res | 11 +- src/layouts/BeltDocsLayout8_0_0.resi | 9 + src/layouts/CommunityLayout.js | 19 +- src/layouts/CommunityLayout.res | 2 - src/layouts/CommunityLayout.resi | 2 + src/layouts/DocsLayout.js | 42 ++- src/layouts/DocsLayout.res | 2 - src/layouts/DocsLayout.resi | 39 +++ src/layouts/DomDocsLayout.js | 17 +- src/layouts/DomDocsLayout.res | 8 +- src/layouts/DomDocsLayout.resi | 9 + src/layouts/DomDocsLayout8_0_0.js | 17 +- src/layouts/DomDocsLayout8_0_0.res | 8 +- src/layouts/DomDocsLayout8_0_0.resi | 9 + src/layouts/GenTypeDocsLayout.js | 20 +- src/layouts/GenTypeDocsLayout.res | 2 - src/layouts/GenTypeDocsLayout.resi | 2 + src/layouts/JsDocsLayout.js | 20 +- src/layouts/JsDocsLayout.res | 11 +- src/layouts/JsDocsLayout.resi | 9 + src/layouts/JsDocsLayout8_0_0.js | 20 +- src/layouts/JsDocsLayout8_0_0.res | 11 +- src/layouts/JsDocsLayout8_0_0.resi | 9 + src/layouts/LandingPageLayout.js | 14 +- src/layouts/MainLayout.js | 11 +- src/layouts/MainLayout.res | 6 +- src/layouts/MainLayout.resi | 2 + src/layouts/ManualDocsLayout.js | 24 +- src/layouts/ManualDocsLayout.res | 2 - src/layouts/ManualDocsLayout.resi | 16 + src/layouts/ManualDocsLayout8_0_0.js | 24 +- src/layouts/ManualDocsLayout8_0_0.res | 2 - src/layouts/ManualDocsLayout8_0_0.resi | 13 + src/layouts/ReasonCompilerDocsLayout.js | 20 +- src/layouts/ReasonCompilerDocsLayout.res | 2 - src/layouts/ReasonCompilerDocsLayout.resi | 2 + src/layouts/SidebarLayout.js | 72 ++-- src/layouts/SidebarLayout.resi | 75 +++++ 137 files changed, 2388 insertions(+), 1610 deletions(-) create mode 100644 src/Blog.resi create mode 100644 src/BlogArticle.resi create mode 100644 src/DocsOverview.resi create mode 100644 src/Playground.resi create mode 100644 src/bindings/Fuse.resi create mode 100644 src/bindings/IntlDateTimeFormat.resi create mode 100644 src/bindings/Next.resi create mode 100644 src/bindings/NodeGlob.resi create mode 100644 src/bindings/RescriptCompilerApi.resi create mode 100644 src/bindings/Worker.resi create mode 100644 src/common/Ansi.resi create mode 100644 src/common/BlogApi.resi create mode 100644 src/common/BlogFrontmatter.resi create mode 100644 src/common/ColorTheme.resi create mode 100644 src/common/CompilerManagerHook.resi create mode 100644 src/common/DocFrontmatter.resi create mode 100644 src/common/HighlightJs.resi create mode 100644 src/common/Mdx.resi create mode 100644 src/common/ProcessEnv.resi delete mode 100644 src/common/SimpleRequest.js delete mode 100644 src/common/SimpleRequest.res create mode 100644 src/common/Url.resi create mode 100644 src/common/Util.resi create mode 100644 src/common/WarningFlagDescription.resi create mode 100644 src/components/AnsiPre.resi create mode 100644 src/components/ApiIntro.resi create mode 100644 src/components/ApiMarkdown.resi create mode 100644 src/components/Button.resi create mode 100644 src/components/CodeExample.resi create mode 100644 src/components/CodeMirror.resi create mode 100644 src/components/DocSearch.resi create mode 100644 src/components/Docson.resi create mode 100644 src/components/Icon.resi create mode 100644 src/components/Image.resi create mode 100644 src/components/Markdown.resi create mode 100644 src/components/Meta.resi create mode 100644 src/components/NameInitialsAvatar.resi create mode 100644 src/components/Tag.resi create mode 100644 src/components/Text.resi create mode 100644 src/components/VersionSelect.resi create mode 100644 src/components/Video.resi create mode 100644 src/layouts/ApiLayout.resi create mode 100644 src/layouts/ApiOverviewLayout.resi create mode 100644 src/layouts/ApiOverviewLayout8_0_0.resi create mode 100644 src/layouts/BeltDocsLayout.resi create mode 100644 src/layouts/BeltDocsLayout8_0_0.resi create mode 100644 src/layouts/CommunityLayout.resi create mode 100644 src/layouts/DocsLayout.resi create mode 100644 src/layouts/DomDocsLayout.resi create mode 100644 src/layouts/DomDocsLayout8_0_0.resi create mode 100644 src/layouts/GenTypeDocsLayout.resi create mode 100644 src/layouts/JsDocsLayout.resi create mode 100644 src/layouts/JsDocsLayout8_0_0.resi create mode 100644 src/layouts/MainLayout.resi create mode 100644 src/layouts/ManualDocsLayout.resi create mode 100644 src/layouts/ManualDocsLayout8_0_0.resi create mode 100644 src/layouts/ReasonCompilerDocsLayout.resi create mode 100644 src/layouts/SidebarLayout.resi diff --git a/src/Blog.js b/src/Blog.js index 08a615bed..d91ef478f 100644 --- a/src/Blog.js +++ b/src/Blog.js @@ -1,6 +1,9 @@ // Generated by ReScript, PLEASE EDIT WITH CARE +import * as Mdx from "./common/Mdx.js"; import * as Meta from "./components/Meta.js"; +import * as Next from "./bindings/Next.js"; +import * as $$Text from "./components/Text.js"; import * as Util from "./common/Util.js"; import * as Curry from "bs-platform/lib/es6/curry.js"; import * as React from "react"; @@ -10,12 +13,11 @@ import * as BlogApi from "./common/BlogApi.js"; import * as DateStr from "./common/DateStr.js"; import * as Caml_obj from "bs-platform/lib/es6/caml_obj.js"; import * as Markdown from "./components/Markdown.js"; -import Link from "next/link"; import * as Belt_Array from "bs-platform/lib/es6/belt_Array.js"; import * as Navigation from "./components/Navigation.js"; +import * as ProcessEnv from "./common/ProcessEnv.js"; import * as Belt_Option from "bs-platform/lib/es6/belt_Option.js"; import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; -import * as React$1 from "@mdx-js/react"; import * as BlogFrontmatter from "./common/BlogFrontmatter.js"; import * as NameInitialsAvatar from "./components/NameInitialsAvatar.js"; @@ -35,20 +37,6 @@ function Blog$Badge(Props) { })), React.createElement("div", undefined, text)); } -var Badge = { - make: Blog$Badge -}; - -function renderTab(text, isActive, onClick) { - return React.createElement("div", { - key: text, - className: ( - isActive ? "bg-snow-dark text-onyx rounded py-1" : "hover:cursor-pointer hover:text-onyx" - ) + " px-4 inline-block", - onClick: onClick - }, text); -} - function Blog$CategorySelector(Props) { var categories = Props.categories; var selected = Props.selected; @@ -73,15 +61,16 @@ function Blog$CategorySelector(Props) { var text = typeof tab === "number" ? ( tab !== 0 ? "Archived" : "All" ) : BlogFrontmatter.Category.toString(tab._0); - return renderTab(text, isActive, onClick); + return React.createElement("div", { + key: text, + className: ( + isActive ? "bg-snow-dark text-onyx rounded py-1" : "hover:cursor-pointer hover:text-onyx" + ) + " px-4 inline-block", + onClick: onClick + }, text); }))); } -var CategorySelector = { - renderTab: renderTab, - make: Blog$CategorySelector -}; - function Blog$BlogCard(Props) { var previewImg = Props.previewImg; var titleOpt = Props.title; @@ -99,7 +88,7 @@ function Blog$BlogCard(Props) { className: "absolute z-10 bottom-0 mb-4 -ml-2" }, React.createElement(Blog$Badge, { badge: badge - })) : null, React.createElement(Link, { + })) : null, React.createElement(Next.Link.make, { href: "/blog/[slug]", as: "/blog/" + slug, children: React.createElement("a", { @@ -113,21 +102,17 @@ function Blog$BlogCard(Props) { })) })), React.createElement("div", { className: "px-2" - }, React.createElement(Link, { + }, React.createElement(Next.Link.make, { href: "/blog/[slug]", as: "/blog/" + slug, children: React.createElement("a", undefined, React.createElement("h2", { - className: "text-onyx font-semibold text-21 leading-2" + className: $$Text.H3.$$default }, title)) }), React.createElement("div", { className: "text-night-light text-sm" }, category !== undefined ? React.createElement(React.Fragment, undefined, category, " · ") : null, Util.$$Date.toDayMonthYear(date)))); } -var BlogCard = { - make: Blog$BlogCard -}; - function Blog$FeatureCard(Props) { var previewImg = Props.previewImg; var titleOpt = Props.title; @@ -156,7 +141,7 @@ function Blog$FeatureCard(Props) { style: { maxHeight: "25.4375rem" } - }, React.createElement(Link, { + }, React.createElement(Next.Link.make, { href: "/blog/[slug]", as: "/blog/" + slug, children: React.createElement("a", { @@ -177,7 +162,7 @@ function Blog$FeatureCard(Props) { }, React.createElement("div", { className: "max-w-400 " }, React.createElement("h2", { - className: "text-onyx font-semibold text-42 leading-2" + className: $$Text.H2.$$default }, title), React.createElement("div", { className: "mb-6" }, React.createElement("div", { @@ -191,7 +176,7 @@ function Blog$FeatureCard(Props) { target: "_blank" }, displayName) : displayName, category !== undefined ? React.createElement(React.Fragment, undefined, middleDotSpacer, category, middleDotSpacer) : middleDotSpacer, Util.$$Date.toDayMonthYear(date))), React.createElement("p", { className: "text-night-dark text-16" - }, firstParagraph))), React.createElement(Link, { + }, firstParagraph))), React.createElement(Next.Link.make, { href: "/blog/[slug]", as: "/blog/" + slug, children: React.createElement("a", undefined, React.createElement(Button.make, { @@ -200,10 +185,6 @@ function Blog$FeatureCard(Props) { }))); } -var FeatureCard = { - make: Blog$FeatureCard -}; - function orderByDate(posts) { return posts.slice().sort(function (a, b) { var aV = DateStr.toDate(a.frontmatter.date).valueOf(); @@ -218,10 +199,6 @@ function orderByDate(posts) { }); } -var Post = { - orderByDate: orderByDate -}; - var Malformed = {}; function $$default(props) { @@ -232,7 +209,7 @@ function $$default(props) { }); var setSelection = match[1]; var currentSelection = match[0]; - var errorBox = process.env.ENV === "development" && malformed.length !== 0 ? React.createElement("div", { + var errorBox = ProcessEnv.env === ProcessEnv.development && malformed.length !== 0 ? React.createElement("div", { className: "mb-12" }, React.createElement(Markdown.Warn.make, { children: null @@ -366,7 +343,7 @@ function $$default(props) { className: "flex justify-center overflow-hidden" }, React.createElement("main", { className: "min-w-320 lg:align-center w-full lg:px-0 max-w-1280 pb-48" - }, React.createElement(React$1.MDXProvider, { + }, React.createElement(Mdx.Provider.make, { components: Markdown.$$default, children: React.createElement("div", { className: "flex justify-center" @@ -450,21 +427,12 @@ function getStaticProps(_ctx) { }); } -var Link$1; - -var rescriptDefaultImg = "https://res.cloudinary.com/dmm9n7v9f/image/upload/v1598616442/reason%20association/rescript-lang.org/art-3-rescript-launch_ovoibg.jpg"; +var Post = {}; export { - Link$1 as Link, - rescriptDefaultImg , - planetPreviewImg , - middleDotSpacer , - Badge , - CategorySelector , - BlogCard , - FeatureCard , Post , Malformed , + planetPreviewImg , $$default , $$default as default, getStaticProps , diff --git a/src/Blog.res b/src/Blog.res index 0e5c95d59..0107fb11b 100644 --- a/src/Blog.res +++ b/src/Blog.res @@ -15,17 +15,13 @@ module Link = Next.Link -let rescriptDefaultImg = "https://res.cloudinary.com/dmm9n7v9f/image/upload/v1598616442/reason%20association/rescript-lang.org/art-3-rescript-launch_ovoibg.jpg" +let _rescriptDefaultImg = "https://res.cloudinary.com/dmm9n7v9f/image/upload/v1598616442/reason%20association/rescript-lang.org/art-3-rescript-launch_ovoibg.jpg" let planetPreviewImg = "https://res.cloudinary.com/dmm9n7v9f/image/upload/v1587479463/Reason%20Association/reasonml.org/reasonml_art2_1280_vhzxnz.png" // For encoding reasons, see https://shripadk.github.io/react/docs/jsx-gotchas.html let middleDotSpacer = " " ++ (Js.String.fromCharCode(183) ++ " ") module Badge = { - type color = - | Turtle - | Orange - @react.component let make = (~badge: BlogFrontmatter.Badge.t) => { let bgColor = switch badge { @@ -229,7 +225,9 @@ module Post = { } let orderByDate = (posts: array): array => - posts->Js.Array.copy->Js.Array2.sortInPlaceWith((a, b) => { + posts + ->Js.Array.copy + ->Js.Array2.sortInPlaceWith((a, b) => { let aV = a.frontmatter.date->DateStr.toDate->Js.Date.valueOf let bV = b.frontmatter.date->DateStr.toDate->Js.Date.valueOf if aV === bV { @@ -267,7 +265,9 @@ let default = (props: props): React.element => {

{React.string("Some Blog Posts are Malformed!")}

-

{React.string("Any blog post with invalid data will not be displayed in production.")}

+

+ {React.string("Any blog post with invalid data will not be displayed in production.")} +

{React.string("Errors:")}

diff --git a/src/layouts/MainLayout.resi b/src/layouts/MainLayout.resi new file mode 100644 index 000000000..f9cf82e1a --- /dev/null +++ b/src/layouts/MainLayout.resi @@ -0,0 +1,2 @@ +@react.component +let make: (~components: Mdx.Components.t=?, ~children: React.element) => React.element diff --git a/src/layouts/ManualDocsLayout.js b/src/layouts/ManualDocsLayout.js index 6aff89a0c..18921364d 100644 --- a/src/layouts/ManualDocsLayout.js +++ b/src/layouts/ManualDocsLayout.js @@ -1,6 +1,7 @@ // Generated by ReScript, PLEASE EDIT WITH CARE import * as Url from "../common/Url.js"; +import * as Next from "../bindings/Next.js"; import * as React from "react"; import * as Js_dict from "bs-platform/lib/es6/js_dict.js"; import * as Markdown from "../components/Markdown.js"; @@ -9,7 +10,6 @@ import * as Belt_Array from "bs-platform/lib/es6/belt_Array.js"; import * as DocsLayout from "./DocsLayout.js"; import * as Belt_Option from "bs-platform/lib/es6/belt_Option.js"; import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; -import * as Router from "next/router"; var allManualVersions = [ [ @@ -282,7 +282,7 @@ function ManualDocsLayout$Docs(Props) { var componentsOpt = Props.components; var children = Props.children; var components = componentsOpt !== undefined ? Caml_option.valFromOption(componentsOpt) : Markdown.$$default; - var router = Router.useRouter(); + var router = Next.Router.useRouter(undefined); var route = router.route; var activeToc = Belt_Option.map(Js_dict.get(tocData, route), (function (data) { var title = data.title; @@ -357,28 +357,8 @@ var Prose = { make: ManualDocsLayout$Prose }; -var Link; - -var NavItem; - -var Category; - -var Toc; - export { - Link , allManualVersions , - tocData , - NavItem , - Category , - Toc , - overviewNavs , - basicNavs , - buildsystemNavs , - jsInteropNavs , - guidesNavs , - extraNavs , - categories , Docs , Prose , diff --git a/src/layouts/ManualDocsLayout.res b/src/layouts/ManualDocsLayout.res index 31069191a..d9ca06c18 100644 --- a/src/layouts/ManualDocsLayout.res +++ b/src/layouts/ManualDocsLayout.res @@ -1,5 +1,3 @@ -module Link = Next.Link - // This is used for the version dropdown in the manual layouts let allManualVersions = [("latest", "v8.2.0"), ("v8.0.0", "< v8.2.0")] diff --git a/src/layouts/ManualDocsLayout.resi b/src/layouts/ManualDocsLayout.resi new file mode 100644 index 000000000..1e902891d --- /dev/null +++ b/src/layouts/ManualDocsLayout.resi @@ -0,0 +1,16 @@ +// array<(label, version)> +let allManualVersions: array<(string, string)> + +module Docs: { + @react.component + let make: ( + ~frontmatter: Js.Json.t=?, + ~components: Mdx.Components.t=?, + ~children: React.element, + ) => React.element +} + +module Prose: { + @react.component + let make: (~frontmatter: Js.Json.t=?, ~children: React.element) => React.element +} diff --git a/src/layouts/ManualDocsLayout8_0_0.js b/src/layouts/ManualDocsLayout8_0_0.js index 967204423..c6dffec75 100644 --- a/src/layouts/ManualDocsLayout8_0_0.js +++ b/src/layouts/ManualDocsLayout8_0_0.js @@ -1,6 +1,7 @@ // Generated by ReScript, PLEASE EDIT WITH CARE import * as Url from "../common/Url.js"; +import * as Next from "../bindings/Next.js"; import * as React from "react"; import * as Js_dict from "bs-platform/lib/es6/js_dict.js"; import * as Markdown from "../components/Markdown.js"; @@ -9,7 +10,6 @@ import * as Belt_Array from "bs-platform/lib/es6/belt_Array.js"; import * as DocsLayout from "./DocsLayout.js"; import * as Belt_Option from "bs-platform/lib/es6/belt_Option.js"; import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; -import * as Router from "next/router"; import * as ManualDocsLayout from "./ManualDocsLayout.js"; var tocData = (require('index_data/manual_v800_toc.json')); @@ -256,7 +256,7 @@ function ManualDocsLayout8_0_0$Docs(Props) { var componentsOpt = Props.components; var children = Props.children; var components = componentsOpt !== undefined ? Caml_option.valFromOption(componentsOpt) : Markdown.$$default; - var router = Router.useRouter(); + var router = Next.Router.useRouter(undefined); var route = router.route; var activeToc = Belt_Option.map(Js_dict.get(tocData, route), (function (data) { var title = data.title; @@ -351,27 +351,7 @@ var Prose = { make: ManualDocsLayout8_0_0$Prose }; -var Link; - -var NavItem; - -var Category; - -var Toc; - export { - Link , - tocData , - NavItem , - Category , - Toc , - overviewNavs , - basicNavs , - buildsystemNavs , - jsInteropNavs , - guidesNavs , - extraNavs , - categories , Docs , Prose , diff --git a/src/layouts/ManualDocsLayout8_0_0.res b/src/layouts/ManualDocsLayout8_0_0.res index cdfc6f157..71249878e 100644 --- a/src/layouts/ManualDocsLayout8_0_0.res +++ b/src/layouts/ManualDocsLayout8_0_0.res @@ -1,5 +1,3 @@ -module Link = Next.Link - // Structure defined by `scripts/extract-tocs.js` let tocData: Js.Dict.t<{ "title": string, diff --git a/src/layouts/ManualDocsLayout8_0_0.resi b/src/layouts/ManualDocsLayout8_0_0.resi new file mode 100644 index 000000000..ef04bc997 --- /dev/null +++ b/src/layouts/ManualDocsLayout8_0_0.resi @@ -0,0 +1,13 @@ +module Docs: { + @react.component + let make: ( + ~frontmatter: Js.Json.t=?, + ~components: Mdx.Components.t=?, + ~children: React.element, + ) => React.element +} + +module Prose: { + @react.component + let make: (~frontmatter: Js.Json.t=?, ~children: React.element) => React.element +} diff --git a/src/layouts/ReasonCompilerDocsLayout.js b/src/layouts/ReasonCompilerDocsLayout.js index 1b28b43a0..a21918a26 100644 --- a/src/layouts/ReasonCompilerDocsLayout.js +++ b/src/layouts/ReasonCompilerDocsLayout.js @@ -1,6 +1,7 @@ // Generated by ReScript, PLEASE EDIT WITH CARE import * as Url from "../common/Url.js"; +import * as Next from "../bindings/Next.js"; import * as React from "react"; import * as Js_dict from "bs-platform/lib/es6/js_dict.js"; import * as Markdown from "../components/Markdown.js"; @@ -9,7 +10,6 @@ import * as Belt_Array from "bs-platform/lib/es6/belt_Array.js"; import * as DocsLayout from "./DocsLayout.js"; import * as Belt_Option from "bs-platform/lib/es6/belt_Option.js"; import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; -import * as Router from "next/router"; var tocData = (require('index_data/reason_compiler_toc.json')); @@ -66,7 +66,7 @@ function ReasonCompilerDocsLayout(Props) { var componentsOpt = Props.components; var children = Props.children; var components = componentsOpt !== undefined ? Caml_option.valFromOption(componentsOpt) : Markdown.$$default; - var router = Router.useRouter(); + var router = Next.Router.useRouter(undefined); var route = router.route; var activeToc = Belt_Option.map(Js_dict.get(tocData, route), (function (data) { var title = data.title; @@ -119,25 +119,9 @@ function ReasonCompilerDocsLayout(Props) { }, "IMPORTANT!"), "This section is still\n about ReasonML & BuckleScript.\nIt will be rewritten to ReScript very soon."), children); } -var Link; - -var NavItem; - -var Category; - -var Toc; - var make = ReasonCompilerDocsLayout; export { - Link , - tocData , - NavItem , - Category , - Toc , - interopNavs , - advancedNavs , - categories , make , } diff --git a/src/layouts/ReasonCompilerDocsLayout.res b/src/layouts/ReasonCompilerDocsLayout.res index 2d57931c9..e0fd9a9a2 100644 --- a/src/layouts/ReasonCompilerDocsLayout.res +++ b/src/layouts/ReasonCompilerDocsLayout.res @@ -1,5 +1,3 @@ -module Link = Next.Link - // Structure defined by `scripts/extract-tocs.js` let tocData: Js.Dict.t<{ "title": string, diff --git a/src/layouts/ReasonCompilerDocsLayout.resi b/src/layouts/ReasonCompilerDocsLayout.resi new file mode 100644 index 000000000..f9cf82e1a --- /dev/null +++ b/src/layouts/ReasonCompilerDocsLayout.resi @@ -0,0 +1,2 @@ +@react.component +let make: (~components: Mdx.Components.t=?, ~children: React.element) => React.element diff --git a/src/layouts/SidebarLayout.js b/src/layouts/SidebarLayout.js index 5ab3eaeb4..bb68c68ab 100644 --- a/src/layouts/SidebarLayout.js +++ b/src/layouts/SidebarLayout.js @@ -1,20 +1,19 @@ // Generated by ReScript, PLEASE EDIT WITH CARE +import * as Mdx from "../common/Mdx.js"; import * as Icon from "../components/Icon.js"; import * as List from "bs-platform/lib/es6/list.js"; import * as Meta from "../components/Meta.js"; +import * as Next from "../bindings/Next.js"; import * as Curry from "bs-platform/lib/es6/curry.js"; import * as React from "react"; import * as Footer from "../components/Footer.js"; import * as Belt_List from "bs-platform/lib/es6/belt_List.js"; -import Link from "next/link"; import * as Belt_Array from "bs-platform/lib/es6/belt_Array.js"; import * as ColorTheme from "../common/ColorTheme.js"; import * as Navigation from "../components/Navigation.js"; import * as Belt_Option from "bs-platform/lib/es6/belt_Option.js"; import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; -import * as Router from "next/router"; -import * as React$1 from "@mdx-js/react"; function SidebarLayout$Toc(Props) { var entries = Props.entries; @@ -25,7 +24,7 @@ function SidebarLayout$Toc(Props) { return React.createElement("li", { key: header, className: "pl-2 mt-3 first:mt-1" - }, React.createElement(Link, { + }, React.createElement(Next.Link.make, { href: param.href, children: React.createElement("a", { className: "font-medium block text-sm text-night-light leading-tight tracking-tight hover:text-primary" @@ -34,10 +33,6 @@ function SidebarLayout$Toc(Props) { }))); } -var Toc = { - make: SidebarLayout$Toc -}; - function SidebarLayout$Sidebar$Title(Props) { var children = Props.children; return React.createElement("div", { @@ -45,10 +40,6 @@ function SidebarLayout$Sidebar$Title(Props) { }, children); } -var Title = { - make: SidebarLayout$Sidebar$Title -}; - function SidebarLayout$Sidebar$NavItem(Props) { var getActiveToc = Props.getActiveToc; var isItemActiveOpt = Props.isItemActive; @@ -76,7 +67,7 @@ function SidebarLayout$Sidebar$NavItem(Props) { return React.createElement("li", { key: m.name, className: hidden + " mt-1 leading-4" - }, React.createElement(Link, { + }, React.createElement(Next.Link.make, { href: m.href, children: React.createElement("a", { className: "truncate block py-1 md:h-auto tracking-tight text-night-darker rounded-sm hover:bg-gray-5 hover:-ml-2 hover:py-1 hover:pl-2 " + active @@ -170,13 +161,6 @@ function SidebarLayout$Sidebar(Props) { })))))); } -var Sidebar = { - Title: Title, - NavItem: NavItem, - Category: Category, - make: SidebarLayout$Sidebar -}; - function SidebarLayout$BreadCrumbs(Props) { var crumbs = Props.crumbs; return React.createElement("div", { @@ -184,7 +168,7 @@ function SidebarLayout$BreadCrumbs(Props) { }, Belt_List.toArray(Belt_List.mapWithIndex(crumbs, (function (i, crumb) { var item = i === (Belt_List.length(crumbs) - 1 | 0) ? React.createElement("span", { key: String(i) - }, crumb.name) : React.createElement(Link, { + }, crumb.name) : React.createElement(Next.Link.make, { href: crumb.href, children: React.createElement("a", undefined, crumb.name), key: String(i) @@ -199,10 +183,6 @@ function SidebarLayout$BreadCrumbs(Props) { })))); } -var BreadCrumbs = { - make: SidebarLayout$BreadCrumbs -}; - function SidebarLayout$MobileDrawerButton(Props) { var hidden = Props.hidden; var onClick = Props.onClick; @@ -217,10 +197,6 @@ function SidebarLayout$MobileDrawerButton(Props) { })); } -var MobileDrawerButton = { - make: SidebarLayout$MobileDrawerButton -}; - function SidebarLayout(Props) { var metaTitle = Props.metaTitle; var theme = Props.theme; @@ -234,7 +210,7 @@ function SidebarLayout(Props) { return false; }); var isNavOpen = match[0]; - var router = Router.useRouter(); + var router = Next.Router.useRouter(undefined); var theme$1 = ColorTheme.toCN(theme); var hasBreadcrumbs = breadcrumbs !== undefined ? List.length(breadcrumbs) > 0 : false; var breadcrumbs$1 = Belt_Option.mapWithDefault(breadcrumbs, null, (function (crumbs) { @@ -250,12 +226,23 @@ function SidebarLayout(Props) { return false; })); }; - events.on("routeChangeComplete", onChangeComplete); - events.on("hashChangeComplete", onChangeComplete); + Curry._2(Next.Router.Events.on, events, { + NAME: "routeChangeComplete", + VAL: onChangeComplete + }); + Curry._2(Next.Router.Events.on, events, { + NAME: "hashChangeComplete", + VAL: onChangeComplete + }); return (function (param) { - events.off("routeChangeComplete", onChangeComplete); - events.off("hashChangeComplete", onChangeComplete); - + Curry._2(Next.Router.Events.off, events, { + NAME: "routeChangeComplete", + VAL: onChangeComplete + }); + return Curry._2(Next.Router.Events.off, events, { + NAME: "hashChangeComplete", + VAL: onChangeComplete + }); }); }), []); var editLinkEl = editHref !== undefined ? React.createElement("a", { @@ -297,23 +284,26 @@ function SidebarLayout(Props) { className: "truncate overflow-x-auto touch-scroll flex items-center space-x-4 md:justify-between mr-4 w-full" }, breadcrumbs$1, editLinkEl)), React.createElement("div", { className: hasBreadcrumbs ? "mt-10" : "-mt-4" - }, React.createElement(React$1.MDXProvider, { + }, React.createElement(Mdx.Provider.make, { components: components, children: children }))))))), React.createElement(Footer.make, {}))); } -var Link$1; +var Toc = {}; + +var Sidebar = { + NavItem: NavItem, + Category: Category, + make: SidebarLayout$Sidebar +}; var make = SidebarLayout; export { - Link$1 as Link, Toc , Sidebar , - BreadCrumbs , - MobileDrawerButton , make , } -/* Icon Not a pure module */ +/* Mdx Not a pure module */ diff --git a/src/layouts/SidebarLayout.resi b/src/layouts/SidebarLayout.resi new file mode 100644 index 000000000..cc3f24a6b --- /dev/null +++ b/src/layouts/SidebarLayout.resi @@ -0,0 +1,75 @@ +module Toc: { + // the plain data coming from the toc file + type raw = Js.Dict.t<{ + "title": string, + "category": Js.Nullable.t, + "headers": array<{ + "name": string, + "href": string, + }>, + }> + + type entry = { + header: string, + href: string, + } + + type t = { + title: string, + entries: array, + } +} + +module Sidebar: { + module NavItem: { + type t = { + name: string, + href: string, + } + @react.component + let make: ( + ~getActiveToc: t => option=?, + ~isItemActive: t => bool=?, + ~isHidden: bool=?, + ~items: array, + ) => React.element + } + module Category: { + type t = { + name: string, + items: array, + } + + @react.component + let make: ( + ~getActiveToc: NavItem.t => option=?, + ~isItemActive: NavItem.t => bool=?, + ~category: t, + ) => React.element + } + + @react.component + let make: ( + ~categories: array, + ~route: string, + ~toplevelNav: React.element=?, + ~title: string=?, + ~preludeSection: React.element=?, + ~activeToc: Toc.t=?, + ~isOpen: bool, + ~toggle: unit => unit, + ) => React.element +} + +@react.component +let make: ( + ~metaTitle: string, + ~theme: ColorTheme.t, + ~components: Mdx.Components.t, + ~editHref: string=?, + // (Sidebar, toggleSidebar) ... for toggling sidebar in mobile view + ~sidebarState: (bool, (bool => bool) => unit), + ~sidebar: React.element, + ~breadcrumbs: list=?, + ~children: React.element, +) => React.element From 82d3609628d88a0cad7edbfb0ba75bd53dee02b2 Mon Sep 17 00:00:00 2001 From: Patrick Stapfer Date: Sat, 2 Jan 2021 11:22:33 +0100 Subject: [PATCH 08/10] Remove unnecessary bindings, inline Util.Date functionality --- src/Packages.js | 10 +- src/bindings/Fuse.js | 13 +- src/bindings/Fuse.resi | 27 ---- src/bindings/IntlDateTimeFormat.js | 175 -------------------------- src/bindings/IntlDateTimeFormat.res | 71 ----------- src/bindings/IntlDateTimeFormat.resi | 78 ------------ src/bindings/NodeGlob.js | 13 -- src/bindings/NodeGlob.res | 1 - src/bindings/NodeGlob.resi | 1 - src/bindings/RescriptCompilerApi.res | 17 --- src/bindings/RescriptCompilerApi.resi | 28 ++--- src/common/DateStr.res | 1 - src/common/DateStr.resi | 3 + src/common/Util.js | 9 +- src/common/Util.res | 70 ++--------- 15 files changed, 40 insertions(+), 477 deletions(-) delete mode 100644 src/bindings/Fuse.resi delete mode 100644 src/bindings/IntlDateTimeFormat.js delete mode 100644 src/bindings/IntlDateTimeFormat.res delete mode 100644 src/bindings/IntlDateTimeFormat.resi delete mode 100644 src/bindings/NodeGlob.js delete mode 100644 src/bindings/NodeGlob.res delete mode 100644 src/bindings/NodeGlob.resi diff --git a/src/Packages.js b/src/Packages.js index a77ceba6b..38709ae7d 100644 --- a/src/Packages.js +++ b/src/Packages.js @@ -2,7 +2,6 @@ import * as Fs from "fs"; import * as Mdx from "./common/Mdx.js"; -import * as Fuse from "./bindings/Fuse.js"; import * as Icon from "./components/Icon.js"; import * as Meta from "./components/Meta.js"; import * as Next from "./bindings/Next.js"; @@ -12,6 +11,7 @@ import * as React from "react"; import * as Footer from "./components/Footer.js"; import * as Js_dict from "bs-platform/lib/es6/js_dict.js"; import * as Js_null from "bs-platform/lib/es6/js_null.js"; +import FuseJs from "fuse.js"; import * as Process from "process"; import * as Markdown from "./components/Markdown.js"; import * as Belt_Array from "bs-platform/lib/es6/belt_Array.js"; @@ -69,8 +69,8 @@ function applyNpmSearch(packages, pattern) { "keywords" ] }; - var fuser = Fuse.make(packages, fuseOpts); - return Fuse.search(fuser, pattern); + var fuser = new FuseJs(packages, fuseOpts); + return fuser.search(pattern); } function applyUrlResourceSearch(urls, pattern) { @@ -86,8 +86,8 @@ function applyUrlResourceSearch(urls, pattern) { "keywords" ] }; - var fuser = Fuse.make(urls, fuseOpts); - return Fuse.search(fuser, pattern); + var fuser = new FuseJs(urls, fuseOpts); + return fuser.search(pattern); } function applySearch(resources, pattern) { diff --git a/src/bindings/Fuse.js b/src/bindings/Fuse.js index d654ac67a..067710619 100644 --- a/src/bindings/Fuse.js +++ b/src/bindings/Fuse.js @@ -1,21 +1,10 @@ // Generated by ReScript, PLEASE EDIT WITH CARE -import FuseJs from "fuse.js"; var Options = {}; -function make(prim, prim$1) { - return new FuseJs(prim, prim$1); -} - -function search(prim, prim$1) { - return prim.search(prim$1); -} - export { Options , - make , - search , } -/* fuse.js Not a pure module */ +/* No side effect */ diff --git a/src/bindings/Fuse.resi b/src/bindings/Fuse.resi deleted file mode 100644 index c5f8827a3..000000000 --- a/src/bindings/Fuse.resi +++ /dev/null @@ -1,27 +0,0 @@ -module Options: { - @bs.deriving(abstract) - type t = { - @bs.optional - shouldSort: bool, - @bs.optional - includeScore: bool, - @bs.optional - threshold: float, - @bs.optional - location: int, - @bs.optional - distance: int, - @bs.optional - minMatchCharLength: int, - @bs.optional - keys: array, - } -} - -type t<'data> - -type match<'data> = {"item": 'data, "score": float} - -let make: (array<'data>, Options.t) => t<'a> - -let search: (t<'data>, string) => array> diff --git a/src/bindings/IntlDateTimeFormat.js b/src/bindings/IntlDateTimeFormat.js deleted file mode 100644 index 518301ff2..000000000 --- a/src/bindings/IntlDateTimeFormat.js +++ /dev/null @@ -1,175 +0,0 @@ -// Generated by ReScript, PLEASE EDIT WITH CARE - -import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; -import * as Js_mapperRt from "bs-platform/lib/es6/js_mapperRt.js"; - -var _map = {"CH":"zh","RUS":"ru-RU","SWE":"sv-SE","US":"en-US"}; - -var _revMap = {"zh":"CH","ru-RU":"RUS","sv-SE":"SWE","en-US":"US"}; - -function localeToJs(param) { - return _map[param]; -} - -function localeFromJs(param) { - return Js_mapperRt.raiseWhenNotFound(_revMap[param]); -} - -var _map$1 = {"long":"long","short":"short","narrow":"narrow"}; - -function tToJs(param) { - return param; -} - -function tFromJs(param) { - return Js_mapperRt.raiseWhenNotFound(_map$1[param]); -} - -function make(value) { - return value; -} - -var Weekday = { - tToJs: tToJs, - tFromJs: tFromJs, - make: make -}; - -var _map$2 = {"long":"long","short":"short","narrow":"narrow"}; - -function tToJs$1(param) { - return param; -} - -function tFromJs$1(param) { - return Js_mapperRt.raiseWhenNotFound(_map$2[param]); -} - -function make$1(value) { - return value; -} - -var Era = { - tToJs: tToJs$1, - tFromJs: tFromJs$1, - make: make$1 -}; - -var _map$3 = {"numeric":"numeric","twoDigit":"2-digit"}; - -var _revMap$1 = {"numeric":"numeric","2-digit":"twoDigit"}; - -function tToJs$2(param) { - return _map$3[param]; -} - -function tFromJs$2(param) { - return Js_mapperRt.raiseWhenNotFound(_revMap$1[param]); -} - -function make$2(value) { - return _map$3[value]; -} - -var Year = { - tToJs: tToJs$2, - tFromJs: tFromJs$2, - make: make$2 -}; - -var _map$4 = {"numeric":"numeric","twoDigit":"2-digit"}; - -var _revMap$2 = {"numeric":"numeric","2-digit":"twoDigit"}; - -function tToJs$3(param) { - return _map$4[param]; -} - -function tFromJs$3(param) { - return Js_mapperRt.raiseWhenNotFound(_revMap$2[param]); -} - -function make$3(value) { - return _map$4[value]; -} - -var Day = { - tToJs: tToJs$3, - tFromJs: tFromJs$3, - make: make$3 -}; - -var _map$5 = {"long":"long","short":"short","narrow":"narrow","numeric":"numeric","twoDigit":"2-digit"}; - -var _revMap$3 = {"long":"long","short":"short","narrow":"narrow","numeric":"numeric","2-digit":"twoDigit"}; - -function tToJs$4(param) { - return _map$5[param]; -} - -function tFromJs$4(param) { - return Js_mapperRt.raiseWhenNotFound(_revMap$3[param]); -} - -function make$4(value) { - return _map$5[value]; -} - -var Month = { - tToJs: tToJs$4, - tFromJs: tFromJs$4, - make: make$4 -}; - -function make$5(localeOpt, options, date) { - var locale = localeOpt !== undefined ? localeOpt : "US"; - return new (Intl.DateTimeFormat)(localeToJs(locale), options).format(date); -} - -function Date_options(prim, prim$1, prim$2, prim$3, prim$4, prim$5) { - var tmp = {}; - if (prim !== undefined) { - tmp.weekday = Caml_option.valFromOption(prim); - } - if (prim$1 !== undefined) { - tmp.era = Caml_option.valFromOption(prim$1); - } - if (prim$2 !== undefined) { - tmp.year = Caml_option.valFromOption(prim$2); - } - if (prim$3 !== undefined) { - tmp.day = Caml_option.valFromOption(prim$3); - } - if (prim$4 !== undefined) { - tmp.month = Caml_option.valFromOption(prim$4); - } - return tmp; -} - -function Date_dateTimeFormat(prim, prim$1) { - return new (Intl.DateTimeFormat)(prim, prim$1); -} - -function Date_format(prim, prim$1) { - return prim.format(prim$1); -} - -var $$Date = { - Weekday: Weekday, - Era: Era, - Year: Year, - Day: Day, - Month: Month, - options: Date_options, - dateTimeFormat: Date_dateTimeFormat, - format: Date_format, - make: make$5 -}; - -export { - localeToJs , - localeFromJs , - $$Date , - -} -/* No side effect */ diff --git a/src/bindings/IntlDateTimeFormat.res b/src/bindings/IntlDateTimeFormat.res deleted file mode 100644 index 6048132fa..000000000 --- a/src/bindings/IntlDateTimeFormat.res +++ /dev/null @@ -1,71 +0,0 @@ -type intl - -/* Supported locales */ -@bs.deriving({jsConverter: newType}) -type locale = [@bs.as("zh") #CH | @bs.as("ru-RU") #RUS | @bs.as("sv-SE") #SWE | @bs.as("en-US") #US] - -module Date = { - module Weekday = { - @bs.deriving({jsConverter: newType}) - type t = [#long | #short | #narrow] - - let make = value => tToJs(value) - } - - module Era = { - @bs.deriving({jsConverter: newType}) - type t = [#long | #short | #narrow] - - let make = value => tToJs(value) - } - - module Year = { - @bs.deriving({jsConverter: newType}) - type t = [#numeric | @bs.as("2-digit") #twoDigit] - - let make = value => tToJs(value) - } - - module Day = { - @bs.deriving({jsConverter: newType}) - type t = [#numeric | @bs.as("2-digit") #twoDigit] - - let make = value => tToJs(value) - } - - module Month = { - /* Helper for month option */ - @bs.deriving({jsConverter: newType}) - type t = [#long | #short | #narrow | #numeric | @bs.as("2-digit") #twoDigit] - - let make = value => tToJs(value) - } - - /* Options for Intl.DateTimeFormat */ - @bs.deriving(abstract) - type options = { - @bs.optional - weekday: Weekday.abs_t, - @bs.optional - era: Era.abs_t, - @bs.optional - year: Year.abs_t, - @bs.optional - day: Day.abs_t, - @bs.optional - month: Month.abs_t, - } - - /* - Intl.DateTimeFormat - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat - */ - @bs.new @bs.scope("Intl") - external dateTimeFormat: (abs_locale, option) => intl = "DateTimeFormat" - - /* Intl.DateTimeFormat.prototype.format() */ - @bs.send external format: (intl, Js.Date.t) => string = "format" - - let make = (~locale=#US, ~options=?, date) => - dateTimeFormat(localeToJs(locale), options)->format(date) -} diff --git a/src/bindings/IntlDateTimeFormat.resi b/src/bindings/IntlDateTimeFormat.resi deleted file mode 100644 index 3948ae828..000000000 --- a/src/bindings/IntlDateTimeFormat.resi +++ /dev/null @@ -1,78 +0,0 @@ -type intl - -/* Supported locales */ -type locale = [#CH | #RUS | #SWE | #US] -type abs_locale - -let localeToJs: locale => abs_locale -let localeFromJs: abs_locale => locale - -module Date: { - module Weekday: { - type t = [#long | #short | #narrow] - type abs_t - - let tToJs: t => abs_t - let tFromJs: abs_t => t - - let make: t => abs_t - } - - module Era: { - type t = [#long | #short | #narrow] - type abs_t - - let tToJs: t => abs_t - let tFromJs: abs_t => t - - let make: t => abs_t - } - - module Year: { - type t = [#numeric | #twoDigit] - type abs_t - - let tToJs: t => abs_t - let tFromJs: abs_t => t - - let make: t => abs_t - } - - module Day: { - type t = [#numeric | #twoDigit] - type abs_t - - let tToJs: t => abs_t - let tFromJs: abs_t => t - - let make: t => abs_t - } - - module Month: { - /* Helper for month option */ - type t = [#long | #short | #narrow | #numeric | #twoDigit] - type abs_t - - let tToJs: t => abs_t - let tFromJs: abs_t => t - - let make: t => abs_t - } - - type options - let options: ( - ~weekday: Weekday.abs_t=?, - ~era: Era.abs_t=?, - ~year: Year.abs_t=?, - ~day: Day.abs_t=?, - ~month: Month.abs_t=?, - unit, - ) => options - - let dateTimeFormat: (abs_locale, option) => intl - - /* Intl.DateTimeFormat.prototype.format() */ - let format: (intl, Js.Date.t) => string - - let make: (~locale: locale=?, ~options: options=?, Js.Date.t) => string -} diff --git a/src/bindings/NodeGlob.js b/src/bindings/NodeGlob.js deleted file mode 100644 index b82cb4ded..000000000 --- a/src/bindings/NodeGlob.js +++ /dev/null @@ -1,13 +0,0 @@ -// Generated by ReScript, PLEASE EDIT WITH CARE - -import * as Glob from "glob"; - -function sync(prim) { - return Glob.sync(prim); -} - -export { - sync , - -} -/* glob Not a pure module */ diff --git a/src/bindings/NodeGlob.res b/src/bindings/NodeGlob.res deleted file mode 100644 index a24d83e78..000000000 --- a/src/bindings/NodeGlob.res +++ /dev/null @@ -1 +0,0 @@ -@bs.module("glob") external sync: string => array = "sync" diff --git a/src/bindings/NodeGlob.resi b/src/bindings/NodeGlob.resi deleted file mode 100644 index 48f828811..000000000 --- a/src/bindings/NodeGlob.resi +++ /dev/null @@ -1 +0,0 @@ -let sync: string => array diff --git a/src/bindings/RescriptCompilerApi.res b/src/bindings/RescriptCompilerApi.res index f368d4a19..270502b02 100644 --- a/src/bindings/RescriptCompilerApi.res +++ b/src/bindings/RescriptCompilerApi.res @@ -1,11 +1,3 @@ -// This module establishes the communication to the -// loaded bucklescript API exposed by the bs-platform-js -// bundle - -// It is only safe to call these functions when a bundle -// has been loaded, so we'd prefer to protect this -// API with the playground compiler manager state - @bs.val @bs.scope("performance") external now: unit => float = "now" module Lang = { @@ -337,9 +329,6 @@ module Compiler = { ConversionResult.decode(~fromLang=Res, ~toLang=Res, json) } - /* - Reason compiler actions - */ @bs.get @bs.scope("reason") external reasonVersion: t => string = "version" @@ -361,9 +350,6 @@ module Compiler = { ConversionResult.decode(~fromLang=Reason, ~toLang=Reason, json) } - /* - OCaml compiler actions (Note: no pretty print available for OCaml) - */ @bs.get @bs.scope("ocaml") external ocamlVersion: t => string = "version" @bs.send @bs.scope("ocaml") @@ -377,9 +363,6 @@ module Compiler = { CompilationResult.decode(~time=stopTime -. startTime, json) } - /* - Config setter / getters - */ @bs.send external getConfig: t => Config.t = "getConfig" @bs.send external setFilename: (t, string) => bool = "setFilename" diff --git a/src/bindings/RescriptCompilerApi.resi b/src/bindings/RescriptCompilerApi.resi index e2500637d..92b1b570b 100644 --- a/src/bindings/RescriptCompilerApi.resi +++ b/src/bindings/RescriptCompilerApi.resi @@ -42,17 +42,17 @@ module LocMsg: { endColumn: int, } - let decode: Js.Json.t => t + let decode: Js.Json.t => t type prefix = [#W | #E] // Useful for showing errors in a more compact format - let toCompactErrorLine: (~prefix: prefix, t) => string + let toCompactErrorLine: (~prefix: prefix, t) => string // Creates a somewhat unique id based on the rows / cols of the locMsg let makeId: t => string - /*let dedupe: (array) => array */ + /* let dedupe: (array) => array */ } module Warning: { @@ -63,7 +63,7 @@ module Warning: { let decode: Js.Json.t => t // Useful for showing errors in a more compact format - let toCompactErrorLine: (t) => string + let toCompactErrorLine: t => string } module WarningFlag: { @@ -144,28 +144,28 @@ module Compiler: { let version: t => string /* - * Res compiler actions - */ + * Res compiler actions + */ let resVersion: t => string - let resCompile: (t, string) => CompilationResult.t + let resCompile: (t, string) => CompilationResult.t let resFormat: (t, string) => ConversionResult.t /* - * Reason compiler actions - */ + * Reason compiler actions + */ let reasonVersion: t => string let reasonCompile: (t, string) => CompilationResult.t - let reasonFormat: (t, string) => ConversionResult.t + let reasonFormat: (t, string) => ConversionResult.t /* - * OCaml compiler actions (Note: no pretty print available for OCaml) - */ + * OCaml compiler actions (Note: no pretty print available for OCaml) + */ let ocamlVersion: t => string let ocamlCompile: (t, string) => CompilationResult.t /* - * Config setter / getters - */ + * Config setter / getters + */ let getConfig: t => Config.t let setFilename: (t, string) => bool let setModuleSystem: (t, [#es6 | #nodejs]) => bool diff --git a/src/common/DateStr.res b/src/common/DateStr.res index 15d80e65c..93415e99f 100644 --- a/src/common/DateStr.res +++ b/src/common/DateStr.res @@ -1,4 +1,3 @@ -/* JSON doesn't support a native date type, so we need to codify dates as strings */ type t = string // Used to prevent issues with webkit based date representations diff --git a/src/common/DateStr.resi b/src/common/DateStr.resi index bda58400a..cd2284a4a 100644 --- a/src/common/DateStr.resi +++ b/src/common/DateStr.resi @@ -1,4 +1,7 @@ +/* JSON doesn't support a native date type, so we need to codify dates as strings */ type t + external fromString: string => t = "%identity" + let fromDate: Js.Date.t => t let toDate: t => Js.Date.t diff --git a/src/common/Util.js b/src/common/Util.js index bd0de7851..8bec3df26 100644 --- a/src/common/Util.js +++ b/src/common/Util.js @@ -1,8 +1,5 @@ // Generated by ReScript, PLEASE EDIT WITH CARE -import * as Curry from "bs-platform/lib/es6/curry.js"; -import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; -import * as IntlDateTimeFormat from "../bindings/IntlDateTimeFormat.js"; var camelCase = (str => { return str.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); }); @@ -31,7 +28,11 @@ var Url = { }; function toDayMonthYear(date) { - return IntlDateTimeFormat.$$Date.make("US", Caml_option.some(IntlDateTimeFormat.$$Date.options(undefined, undefined, Caml_option.some(Curry._1(IntlDateTimeFormat.$$Date.Year.make, "numeric")), Caml_option.some(Curry._1(IntlDateTimeFormat.$$Date.Day.make, "numeric")), Caml_option.some(Curry._1(IntlDateTimeFormat.$$Date.Month.make, "short")), undefined)), date); + return new (Intl.DateTimeFormat)("en-US", { + month: "short", + day: "numeric", + year: "numeric" + }).format(date); } var $$Date = { diff --git a/src/common/Util.res b/src/common/Util.res index cdd584dc0..369327814 100644 --- a/src/common/Util.res +++ b/src/common/Util.res @@ -45,17 +45,13 @@ module Unsafe = { } module String = { - let camelCase: string => string = %raw( - "str => { + let camelCase: string => string = %raw("str => { return str.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); }); - }" - ) + }") - let capitalize: string => string = %raw( - "str => { + let capitalize: string => string = %raw("str => { return str && str.charAt(0).toUpperCase() + str.substring(1); - }" - ) + }") } module Json = { @@ -64,8 +60,7 @@ module Json = { } module Url = { - let isAbsolute: string => bool = %raw( - ` + let isAbsolute: string => bool = %raw(` function(str) { var r = new RegExp('^(?:[a-z]+:)?//', 'i'); if (r.test(str)) @@ -74,60 +69,19 @@ module Url = { } return false; } - ` //', 'i'); - ) + `) //', 'i'); } module Date = { - /* - let toMonthStr = (date: Js.Date.t) => - Js.Date.getUTCMonth(date) - ->Belt.Float.toInt - ->( - fun - | 0 => "Jan" - | 1 => "Feb" - | 2 => "Mar" - | 3 => "Apr" - | 4 => "May" - | 5 => "Jun" - | 6 => "Jul" - | 7 => "Aug" - | 8 => "Sep" - | 9 => "Oct" - | 10 => "Nov" - | 11 => "Dec" - | _ => "???" - ); + type intl - // Pads a number smaller 10 with "0" - let pad = (n: int) => - if (n < 10) { - "0" ++ Js.Int.toString(n); - } else { - Js.Int.toString(n); - }; + @new @scope("Intl") + external dateTimeFormat: (string, {"month": string, "day": string, "year": string}) => intl = + "DateTimeFormat" - let toDayMonthYear = (date: Js.Date.t) => { - let month = toMonthStr(date); - let day = Js.Date.getDate(date)->int_of_float->pad; - let year = Js.Date.getFullYear(date)->int_of_float; + @bs.send external format: (intl, Js.Date.t) => string = "format" - {j|$month $day, $year|j}; - }; - */ let toDayMonthYear = (date: Js.Date.t) => { - open IntlDateTimeFormat - open Date - make( - ~locale=#US, - ~options=options( - ~month=Month.make(#short), - ~day=Day.make(#numeric), - ~year=Year.make(#numeric), - (), - ), - date, - ) + dateTimeFormat("en-US", {"month": "short", "day": "numeric", "year": "numeric"})->format(date) } } From 85be5852f2139019140f647f43572174f5c6e89c Mon Sep 17 00:00:00 2001 From: Patrick Stapfer Date: Sat, 2 Jan 2021 11:31:10 +0100 Subject: [PATCH 09/10] Add project structure overview to README --- README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/README.md b/README.md index 6779102da..7b432d12d 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,20 @@ All the index data is stored in `index_data`, but will not be tracked by git. Make sure to build the index after a fresh clone, otherwise Next might not build specific pages (file `index_data/x.json` not found). +## Project Structure Overview + +- `pages`: All Next pages. Those are written in JS / MDX, some pages are re-exporting ReScript based pages from `src/MyPage.res` +- `styles`: Contains all extra CSS that cannot be expressed with Tailwind +- `src`: Contains all ReScript related code for the UI + - `/`: Within `src`, you will find all ReScript based Next pages that are re-exported in the `pages` directory + - `/bindings`: (Zero-cost) bindings to JS libraries / apis + - `/common`: ReScript modules that are neither `bindings`, nor `components` + - `/components`: ReScript / React components used by multiple pages + - `/ffi`: (to be deprecated) Plain JS that some ReScript code binds to (use `raw` statements for that) + - `/layouts`: All Next layouts used in our pages. Check out `src/common/App.res` for mapping layouts to routes +- `scripts`: Contains a mix of JS / ReScript based scripts that do all kind of code generation / code introspection logic +- `tailwind.config.js`: Contains our Tailwind configuration for all the low level design tokens + ## Run Tests ### Markdown Codeblock Tests From cfd445b2cb269e814d508af05d3d8a6e1ea8aeb2 Mon Sep 17 00:00:00 2001 From: Patrick Stapfer Date: Sat, 2 Jan 2021 11:45:57 +0100 Subject: [PATCH 10/10] Remove Js.log --- src/Playground.js | 1 - src/Playground.res | 1 - 2 files changed, 2 deletions(-) diff --git a/src/Playground.js b/src/Playground.js index de7bcd888..7d22f5c84 100644 --- a/src/Playground.js +++ b/src/Playground.js @@ -1821,7 +1821,6 @@ function Playground$default(Props) { } }), [router.route]); - console.log("test"); var match$2 = React.useState(function () { return 0; }); diff --git a/src/Playground.res b/src/Playground.res index b0fcde0d6..357bd08af 100644 --- a/src/Playground.res +++ b/src/Playground.res @@ -1452,7 +1452,6 @@ let default = () => { None }, [router.route]) - Js.log("test") // We don't count to infinity. This value is only required to trigger // rerenders for specific components (ActivityIndicator) let (actionCount, setActionCount) = React.useState(_ => 0)