From 8daf29d3b78ae168e95fd0bc36f4a7fcbc4be0e3 Mon Sep 17 00:00:00 2001 From: Wenderson Pires Date: Tue, 2 Apr 2024 18:07:27 -0300 Subject: [PATCH 1/3] docs update --- src/components/ContentView/styles.ts | 2 ++ src/components/Footer/Footer.tsx | 9 +++------ src/md/BosOverview.tsx | 2 +- src/md/Cli.tsx | 2 +- src/md/ConfigFile.tsx | 2 +- src/md/DeployingWithGithubActions.tsx | 2 +- src/md/FeatureOverview.tsx | 2 +- src/md/Installation.tsx | 2 +- src/md/api/CreateDebounce.tsx | 2 +- src/md/api/IsDevelopment.tsx | 2 +- src/md/api/LoadExternalStyles.tsx | 2 +- src/md/api/create-debounce.md | 2 +- src/md/api/is-development.md | 2 +- src/md/api/load-external-styles.md | 2 +- src/md/bos-overview.md | 2 +- src/md/cli.md | 2 +- src/md/config-file.md | 4 ++-- src/md/context/CreateContext.tsx | 2 +- src/md/context/create-context.md | 4 +++- src/md/deploying-with-github-actions.md | 2 +- src/md/installation.md | 2 +- src/md/router/GetLocation.tsx | 2 +- src/md/router/Navigate.tsx | 2 +- src/md/router/RouteLinkDocs.tsx | 2 +- src/md/router/RoutesDocs.tsx | 2 +- src/md/router/UseParams.tsx | 2 +- src/md/router/UseRoutes.tsx | 2 +- src/md/router/get-location.md | 2 +- src/md/router/navigate.md | 2 +- src/md/router/route-link-docs.md | 4 +++- src/md/router/routes-docs.md | 8 ++++---- src/md/router/use-params.md | 2 +- src/md/router/use-routes.md | 2 +- src/pages/About/About.tsx | 9 ++++----- src/pages/About/styles.ts | 9 +++++++++ 35 files changed, 57 insertions(+), 46 deletions(-) diff --git a/src/components/ContentView/styles.ts b/src/components/ContentView/styles.ts index 73996e6..2347cb0 100644 --- a/src/components/ContentView/styles.ts +++ b/src/components/ContentView/styles.ts @@ -29,6 +29,8 @@ export const Container = styled.div` h1 { font-size: 28px; + border-bottom: rgb(224 226 229) solid 1px; + padding-bottom: 12px; } h4 { diff --git a/src/components/Footer/Footer.tsx b/src/components/Footer/Footer.tsx index c2d0607..bd76de6 100644 --- a/src/components/Footer/Footer.tsx +++ b/src/components/Footer/Footer.tsx @@ -16,12 +16,9 @@ const Footer = () => { - This library is still under development. - - wendersonpires.near + Want to support? Buy me a coffee 😃
+
+ alem-lib.near
diff --git a/src/md/BosOverview.tsx b/src/md/BosOverview.tsx index 463e615..ce9fd3e 100644 --- a/src/md/BosOverview.tsx +++ b/src/md/BosOverview.tsx @@ -1,7 +1,7 @@ import { Markdown } from 'alem'; const BosOverview = () => { - const mdContent = Buffer.from(`IyMgTkVBUiBBUElzIGFuZCBDb21wb25lbnRzCgpUaGUgbmF0aXZlIE5FQVIgVk0gKEJPUykgcmVzb3VyY2VzIGNvbnRpbnVlIHRvIGZ1bmN0aW9uLgoKR2V0IHRvIGtub3cgbW9yZSBhYm91dCB0aGUgQk9TIGJ1aWx0IGluIHJlc291cmNlcyBoZXJlOiBbaHR0cHM6Ly9kb2NzLm5lYXIub3JnL2Jvcy9hcGkvc3RhdGVdKGh0dHBzOi8vZG9jcy5uZWFyLm9yZy9ib3MvYXBpL3N0YXRlKQoKYGBgdHN4Ci8vIE5PVEU6IFRoZXNlIGFyZSBqdXN0IHRoZSBCT1MgZmVhdHVyZSByZWZlcmVuY2VzIHR5cGVzCmltcG9ydCB7CiAgRmlsZXMsCiAgSW5maW5pdGVTY3JvbGwsCiAgSXBmc0ltYWdlVXBsb2FkLAogIE1hcmtkb3duLAogIE5lYXIsCiAgT3ZlcmxheVRyaWdnZXIsCiAgU29jaWFsLAogIFN0YXRlLAogIFN0b3JhZ2UsCiAgVG9vbHRpcCwKICBUeXBlQWhlYWQsCiAgVk0sCiAgV2lkZ2V0LAogIGFzeW5jRmV0Y2gsCiAgY2xpcGJvYXJkLAogIGNvbnRleHQsCiAgZmV0Y2gsCiAgcHJvcHMsCiAgc3RhdGUsCiAgdXNlQ2FjaGUsCiAgdXNlRWZmZWN0LAogIHVzZVN0YXRlLAogIHVzZU1lbW8sCiAgQmlnLAp9IGZyb20gImFsZW0iOwoKZXhwb3J0IGNvbnN0IENvbXBvbmVudEMgPSAoKSA9PiB7CiAgY29uc29sZS5sb2cocHJvcHMpOyAvLyB3aWxsIHByaW50IHRoZSB3aWRnZXQgcHJvcHMKCiAgcmV0dXJuIDxDb21wb25lbnRBIG5hbWU9IldlbmR6IiAvPjsKfTsKYGBgCg==`, "base64").toString("utf-8"); + const mdContent = Buffer.from(`IyBORUFSIEFQSXMgYW5kIENvbXBvbmVudHMKClRoZSBuYXRpdmUgTkVBUiBWTSAoQk9TKSByZXNvdXJjZXMgY29udGludWUgdG8gZnVuY3Rpb24uCgpHZXQgdG8ga25vdyBtb3JlIGFib3V0IHRoZSBCT1MgYnVpbHQgaW4gcmVzb3VyY2VzIGhlcmU6IFtodHRwczovL2RvY3MubmVhci5vcmcvYm9zL2FwaS9zdGF0ZV0oaHR0cHM6Ly9kb2NzLm5lYXIub3JnL2Jvcy9hcGkvc3RhdGUpCgpgYGB0c3gKLy8gTk9URTogVGhlc2UgYXJlIGp1c3QgdGhlIEJPUyBmZWF0dXJlIHJlZmVyZW5jZXMgdHlwZXMKaW1wb3J0IHsKICBGaWxlcywKICBJbmZpbml0ZVNjcm9sbCwKICBJcGZzSW1hZ2VVcGxvYWQsCiAgTWFya2Rvd24sCiAgTmVhciwKICBPdmVybGF5VHJpZ2dlciwKICBTb2NpYWwsCiAgU3RhdGUsCiAgU3RvcmFnZSwKICBUb29sdGlwLAogIFR5cGVBaGVhZCwKICBWTSwKICBXaWRnZXQsCiAgYXN5bmNGZXRjaCwKICBjbGlwYm9hcmQsCiAgY29udGV4dCwKICBmZXRjaCwKICBwcm9wcywKICBzdGF0ZSwKICB1c2VDYWNoZSwKICB1c2VFZmZlY3QsCiAgdXNlU3RhdGUsCiAgdXNlTWVtbywKICBCaWcsCn0gZnJvbSAiYWxlbSI7CgpleHBvcnQgY29uc3QgQ29tcG9uZW50QyA9ICgpID0+IHsKICBjb25zb2xlLmxvZyhwcm9wcyk7IC8vIHdpbGwgcHJpbnQgdGhlIHdpZGdldCBwcm9wcwoKICByZXR1cm4gPENvbXBvbmVudEEgbmFtZT0iV2VuZHoiIC8+Owp9OwpgYGAK`, "base64").toString("utf-8"); return } diff --git a/src/md/Cli.tsx b/src/md/Cli.tsx index 3ebf2bc..8076b0c 100644 --- a/src/md/Cli.tsx +++ b/src/md/Cli.tsx @@ -1,7 +1,7 @@ import { Markdown } from 'alem'; const Cli = () => { - const mdContent = Buffer.from(`IyMgQWzDqW0gQ0xJCgpBbMOpbSBoYXMgaXRzIG93biBjb21tYW5kIHN5c3RlbS4KCiMjIyBDb21tYW5kcwoKYGBgYmFzaApVc2FnZTogYWxlbSBbb3B0aW9uc10gW2NvbW1hbmRdCgpPcHRpb25zOgogIC1WLCAtLXZlcnNpb24gICBvdXRwdXQgdGhlIHZlcnNpb24gbnVtYmVyCiAgLWgsIC0taGVscCAgICAgIGRpc3BsYXkgaGVscCBmb3IgY29tbWFuZAoKQ29tbWFuZHM6CiAgZGV2IFtvcHRpb25zXSAgICAgICAgICAgICAgUnVuIHRoZSBkZXZlbG9wbWVudCBzZXJ2ZXIKICBidWlsZCAgICAgICAgICAgICAgICAgICAgICBCdWlsZCB0aGUgcHJvamVjdAogIGRlcGxveSBbb3B0aW9uc10gICAgICAgICAgIERlcGxveSB0aGUgcHJvamVjdAogIHVwbG9hZC1tZXRhZGF0YSBbb3B0aW9uc10gIFVwbG9hZCBtZXRhZGF0YSB0byBTb2NpYWxEQiAoYXBwIG5hbWUsIGRlc2NyaXB0aW9uLCBpY29uLCB0YWdzLCBldGMpCmBgYAoKIyMjIyBDb21tYW5kOiBgZGV2YAoKUnVuIHRoZSBkZXZlbG9wbWVudCBzZXJ2ZXIgd2l0aCB2YXJpb3VzIG9wdGlvbnM6CgpgYGBiYXNoClVzYWdlOiBhbGVtIGRldiBbb3B0aW9uc10KCk9wdGlvbnM6CiAgLW4sIC0tbmV0d29yayA8bmV0d29yaz4gIE5ldHdvcmsgd2hlcmUgdGhlIGFwcCB3aWxsIGJlIHJ1bm5pbmcgKGRlZmF1bHQ6ICJtYWlubmV0IikKICAtcCwgLS1wb3J0IDxwb3J0PiAgICAgICAgUG9ydCB0byBydW4gdGhlIHNlcnZlciBvbiAoZGVmYXVsdDogODA4MCkKICAtbm8tb3BlbiAgICAgICAgICAgICAgICAgRGlzYWJsZSBvcGVuaW5nIHRoZSBicm93c2VyIChkZWZhdWx0OiBmYWxzZSkKYGBgCgojIyMjIENvbW1hbmQ6IGBidWlsZGAKCkJ1aWxkIHRoZSBwcm9qZWN0OgoKYGBgYmFzaApVc2FnZTogYWxlbSBidWlsZApgYGAKClRoaXMgd2lsbCBvdXRwdXQgdmFsaWQgd2lkZ2V0IGNvZGUgdG8gdGhlIGAvYnVpbGRgIGRpcmVjdG9yeS4KCiMjIyMgQ29tbWFuZDogYGRlcGxveWAKCkRlcGxveSB0aGUgcHJvamVjdCB0byBOZWFyIEJPUzoKCmBgYGJhc2gKVXNhZ2U6IGFsZW0gZGVwbG95IFtvcHRpb25zXQoKT3B0aW9uczoKICAtbiwgLS1uZXR3b3JrIDxuZXR3b3JrPiAgTmV0d29yayB3aGVyZSB0aGUgYXBwIHNob3VsZCBiZSBkZXBsb3llZCAoZGVmYXVsdDogIm1haW5uZXQiKQogIC1oLCAtLWhlbHAgICAgICAgICAgICAgICBkaXNwbGF5IGhlbHAgZm9yIGNvbW1hbmQKYGBgCgojIyMjIENvbW1hbmQ6IGB1cGxvYWQtbWV0YWRhdGFgCgpVcGxvYWQgbWV0YWRhdGEgdG8gU29jaWFsREIuIFRoaXMgaXMgZ29pbmcgdG8gdXNlIHRoZSBkYXRhIHByb3ZpZGVkIGJ5IGBib3MuY29uZmlnLmpzb25gIGZpbGUuIFRoZSBjb250ZW50IHJlcHJlc2VudHMgdGhlIGFwcCdzIGRldGFpbHMgbGlrZSBgbmFtZSwgZGVzY3JpcHRpb24sIGljb24sIHRhZ3MsIGV0Y2AuIFlvdSBjYW4gdXBkYXRlIHRoaXMgaW5mb3JtYXRpb24gbWFudWFsbHkgYnkgZ29pbmcgdG8gdGhlIHdpZGdldCBtZXRhZGF0YSB0YWIgdXNpbmcgdGhlIFtOZWFyIFNhbmRib3hdKGh0dHBzOi8vbmVhci5vcmcvc2FuZGJveCkuCgpgYGBiYXNoClVzYWdlOiBhbGVtIHVwbG9hZC1tZXRhZGF0YSBbb3B0aW9uc10KCk9wdGlvbnM6CiAgLW4sIC0tbmV0d29yayA8bmV0d29yaz4gIE5ldHdvcmsgd2hlcmUgdGhlIG1ldGFkYXRhIHNob3VsZCBiZSBkZXBsb3llZCAoZGVmYXVsdDogIm1haW5uZXQiKQogIC1oLCAtLWhlbHAgICAgICAgICAgICAgICBkaXNwbGF5IGhlbHAgZm9yIGNvbW1hbmQKYGBgCg==`, "base64").toString("utf-8"); + const mdContent = Buffer.from(`IyBBbMOpbSBDTEkKCkFsw6ltIGhhcyBpdHMgb3duIGNvbW1hbmQgc3lzdGVtLgoKIyMjIENvbW1hbmRzCgpgYGBiYXNoClVzYWdlOiBhbGVtIFtvcHRpb25zXSBbY29tbWFuZF0KCk9wdGlvbnM6CiAgLVYsIC0tdmVyc2lvbiAgIG91dHB1dCB0aGUgdmVyc2lvbiBudW1iZXIKICAtaCwgLS1oZWxwICAgICAgZGlzcGxheSBoZWxwIGZvciBjb21tYW5kCgpDb21tYW5kczoKICBkZXYgW29wdGlvbnNdICAgICAgICAgICAgICBSdW4gdGhlIGRldmVsb3BtZW50IHNlcnZlcgogIGJ1aWxkICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkIHRoZSBwcm9qZWN0CiAgZGVwbG95IFtvcHRpb25zXSAgICAgICAgICAgRGVwbG95IHRoZSBwcm9qZWN0CiAgdXBsb2FkLW1ldGFkYXRhIFtvcHRpb25zXSAgVXBsb2FkIG1ldGFkYXRhIHRvIFNvY2lhbERCIChhcHAgbmFtZSwgZGVzY3JpcHRpb24sIGljb24sIHRhZ3MsIGV0YykKYGBgCgojIyMjIENvbW1hbmQ6IGBkZXZgCgpSdW4gdGhlIGRldmVsb3BtZW50IHNlcnZlciB3aXRoIHZhcmlvdXMgb3B0aW9uczoKCmBgYGJhc2gKVXNhZ2U6IGFsZW0gZGV2IFtvcHRpb25zXQoKT3B0aW9uczoKICAtbiwgLS1uZXR3b3JrIDxuZXR3b3JrPiAgTmV0d29yayB3aGVyZSB0aGUgYXBwIHdpbGwgYmUgcnVubmluZyAoZGVmYXVsdDogIm1haW5uZXQiKQogIC1wLCAtLXBvcnQgPHBvcnQ+ICAgICAgICBQb3J0IHRvIHJ1biB0aGUgc2VydmVyIG9uIChkZWZhdWx0OiA4MDgwKQogIC1uby1vcGVuICAgICAgICAgICAgICAgICBEaXNhYmxlIG9wZW5pbmcgdGhlIGJyb3dzZXIgKGRlZmF1bHQ6IGZhbHNlKQpgYGAKCiMjIyMgQ29tbWFuZDogYGJ1aWxkYAoKQnVpbGQgdGhlIHByb2plY3Q6CgpgYGBiYXNoClVzYWdlOiBhbGVtIGJ1aWxkCmBgYAoKVGhpcyB3aWxsIG91dHB1dCB2YWxpZCB3aWRnZXQgY29kZSB0byB0aGUgYC9idWlsZGAgZGlyZWN0b3J5LgoKIyMjIyBDb21tYW5kOiBgZGVwbG95YAoKRGVwbG95IHRoZSBwcm9qZWN0IHRvIE5lYXIgQk9TOgoKYGBgYmFzaApVc2FnZTogYWxlbSBkZXBsb3kgW29wdGlvbnNdCgpPcHRpb25zOgogIC1uLCAtLW5ldHdvcmsgPG5ldHdvcms+ICBOZXR3b3JrIHdoZXJlIHRoZSBhcHAgc2hvdWxkIGJlIGRlcGxveWVkIChkZWZhdWx0OiAibWFpbm5ldCIpCiAgLWgsIC0taGVscCAgICAgICAgICAgICAgIGRpc3BsYXkgaGVscCBmb3IgY29tbWFuZApgYGAKCiMjIyMgQ29tbWFuZDogYHVwbG9hZC1tZXRhZGF0YWAKClVwbG9hZCBtZXRhZGF0YSB0byBTb2NpYWxEQi4gVGhpcyBpcyBnb2luZyB0byB1c2UgdGhlIGRhdGEgcHJvdmlkZWQgYnkgYGJvcy5jb25maWcuanNvbmAgZmlsZS4gVGhlIGNvbnRlbnQgcmVwcmVzZW50cyB0aGUgYXBwJ3MgZGV0YWlscyBsaWtlIGBuYW1lLCBkZXNjcmlwdGlvbiwgaWNvbiwgdGFncywgZXRjYC4gWW91IGNhbiB1cGRhdGUgdGhpcyBpbmZvcm1hdGlvbiBtYW51YWxseSBieSBnb2luZyB0byB0aGUgd2lkZ2V0IG1ldGFkYXRhIHRhYiB1c2luZyB0aGUgW05lYXIgU2FuZGJveF0oaHR0cHM6Ly9uZWFyLm9yZy9zYW5kYm94KS4KCmBgYGJhc2gKVXNhZ2U6IGFsZW0gdXBsb2FkLW1ldGFkYXRhIFtvcHRpb25zXQoKT3B0aW9uczoKICAtbiwgLS1uZXR3b3JrIDxuZXR3b3JrPiAgTmV0d29yayB3aGVyZSB0aGUgbWV0YWRhdGEgc2hvdWxkIGJlIGRlcGxveWVkIChkZWZhdWx0OiAibWFpbm5ldCIpCiAgLWgsIC0taGVscCAgICAgICAgICAgICAgIGRpc3BsYXkgaGVscCBmb3IgY29tbWFuZApgYGAK`, "base64").toString("utf-8"); return } diff --git a/src/md/ConfigFile.tsx b/src/md/ConfigFile.tsx index 6c5d40c..2b6d7eb 100644 --- a/src/md/ConfigFile.tsx +++ b/src/md/ConfigFile.tsx @@ -1,7 +1,7 @@ import { Markdown } from 'alem'; const ConfigFile = () => { - const mdContent = Buffer.from(`IyMgQ29uZmlnIEZpbGUKCkNyZWF0ZSBhIGBib3MuY29uZmlnLmpzb25gIGZpbGUgYXQgdGhlIHJvb3Qgb2YgdGhlIHByb2plY3Qgd2l0aCB0aGUgZm9sbG93aW5nIGNvbnRlbnQ6CgpgYGBqc29uCnsKICAvLyBUaGlzIGlzIHRoZSByb290IHBhdGggb2YgdGhlIGFwcC4KICAvLyBpZiB0cnVlOiBhbGVtLWxpYi5uZWFyL3dpZGdldC9JbmRleAogIC8vIGlmIGZhbHNlOiBhbGVtLWxpYi5uZWFyL3dpZGdldC9hbGVtLWRvY3MgKGl0J3MgZ29pbmcgdG8gdXNlIHRoZSBzbHVnaWZpZWQgIm5hbWUiKQogICJpc0luZGV4IjogdHJ1ZSwKICAvLyBUaGUgbWFpbm5ldCBhY2NvdW50IElEIHVuZGVyIHdoaWNoIHRoZSBhcHAgd2lsbCBiZSBkZXBsb3llZC4KICAibWFpbm5ldEFjY291bnQiOiAiYWxlbS1saWIubmVhciIsCiAgLy8gVGhlIHRlc3RuZXQgYWNjb3VudCBJRCB1bmRlciB3aGljaCB0aGUgYXBwIHdpbGwgYmUgZGVwbG95ZWQuCiAgInRlc3RuZXRBY2NvdW50IjogImFsZW0tbGliLnRlc3RuZXQiLAogIC8vIEFwcCBuYW1lCiAgIm5hbWUiOiAiQWxlbSBEb2NzIiwKICAvLyBBcHAgRGVzY3JpcHRpb24KICAiZGVzY3JpcHRpb24iOiAiQ3JlYXRlIHdlYjMgYXBwbGljYXRpb25zIGZvciBORUFSIEJPUyB3aXRoIGEgZm9jdXMgb24gcGVyZm9ybWFuY2Ugd2hpbGUgdXNpbmcgY29uY2VwdHMgdGhhdCBhcmUgYmFzZWQgb24gUmVhY3RKUy4iLAogIC8vIFNvY2lhbCBsaW5rcy4gQ2hlY2sgb3V0IE5FQVIgU29jaWFsIEJvcyBkb2NzIHRvIGdldCB0byBrbm93IHRoZSBvcHRpb25zCiAgLy8gaHR0cHM6Ly9kb2NzLm5lYXIub3JnL3NvY2lhbC9jb250cmFjdAogICJsaW5rdHJlZSI6IHsKICAgICJ3ZWJzaXRlIjogImdpdGh1Yi5jb20vd3BkYXMvYWxlbSIKICB9LAogICJpbWFnZSI6IHsKICAgICJpcGZzX2NpZCI6ICJiYWZrcmVpY2pkZ2F0NXhzdzd2eGJvc295eWdlcm1hd2hrZmkyYnkzb3ZnN2M2dHVtcmF5bjRyaW10eSIKICB9LAogIC8vIFRhZ3Mgb2YgdGhpcyBwcm9qZWN0CiAgInRhZ3MiOiBbInRoZSIsICJwcm9qZWN0IiwgInRhZ3MiLCAiaGVyZSJdCn0KYGBgCgojIyBQYXRoIEFsaWFzZXMKCllvdSBjYW4gb3B0aW9uYWxseSBjb25maWd1cmUgeW91ciBhcHBsaWNhdGlvbidzIHBhdGggYWxpYXNlcyBzbyB0aGF0IGl0IHdvcmtzIHRvZ2V0aGVyIHdpdGggdHNjb25maWcuanNvbiwgZm9yIGV4YW1wbGUuIEFzc3VtaW5nIHlvdXIgcHJvamVjdCdzIGB0c2NvbmZpZy5qc29uYCBmaWxlIGhhcyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gZm9yIHBhdGhzOgoKYGBganNvbgp7CiAgImNvbXBpbGVyT3B0aW9ucyI6IHsKICAgIC8vIC4uLgogICAgImJhc2VVcmwiOiAiLiIsCiAgICAicGF0aHMiOiB7CiAgICAgICJAYXBwLyoiOiBbInNyYy8qIl0sCiAgICAgICJAY29tcG9uZW50cy8qIjogWyJzcmMvY29tcG9uZW50cy8qIl0KICAgIH0KICB9Cn0KYGBgCgpZb3Ugd2lsbCB3YW50IHRvIGNvbmZpZ3VyZSB0aGUgc2FtZSBiZWhhdmlvciB1c2luZyB0aGUgYGJvcy5jb25maWcuanNvbmAgZmlsZSBhcyBmb2xsb3dzOgoKYGBganNvbgp7CiAgLy8gLi4uCiAgImNvbXBpbGVyT3B0aW9ucyI6IHsKICAgICJiYXNlVXJsIjogIi4iLAogICAgInBhdGhzIjogewogICAgICAiQGFwcC8iOiAic3JjLyIsCiAgICAgICJAY29tcG9uZW50cy8iOiAic3JjL2NvbXBvbmVudHMvIgogICAgfQogIH0KfQpgYGAKCk5vdyBpbiBhbGwgb2YgeW91ciBzb3VyY2UgZmlsZXMsIHlvdSBjYW4gaW1wb3J0IGNvbXBvbmVudHMgbGlrZSB0aGlzOgoKYGBgdHN4Ci8vIFdpdGhvdXQgcGF0aCBhbGlhc2VzCmltcG9ydCBIZXJvIGZyb20gIi4uLy4uLy4uL2NvbXBvbmVudHMvSGVybyI7CmltcG9ydCBGb290ZXIgZnJvbSAiLi4vLi4vLi4vY29tcG9uZW50cy9Gb290ZXIiOwoKLy8gV2l0aCBwYXRoIGFsaWFzZXMKaW1wb3J0IEhlcm8gZnJvbSAiQGNvbXBvbmVudHMvSGVybyI7CmltcG9ydCBGb290ZXIgZnJvbSAiQGNvbXBvbmVudHMvRm9vdGVyIjsKYGBgCg==`, "base64").toString("utf-8"); + const mdContent = Buffer.from(`IyBDb25maWcgRmlsZQoKQ3JlYXRlIGEgYGJvcy5jb25maWcuanNvbmAgZmlsZSBhdCB0aGUgcm9vdCBvZiB0aGUgcHJvamVjdCB3aXRoIHRoZSBmb2xsb3dpbmcgY29udGVudDoKCmBgYGpzb24KewogIC8vIFRoaXMgaXMgdGhlIHJvb3QgcGF0aCBvZiB0aGUgYXBwLgogIC8vIGlmIHRydWU6IGFsZW0tbGliLm5lYXIvd2lkZ2V0L0luZGV4CiAgLy8gaWYgZmFsc2U6IGFsZW0tbGliLm5lYXIvd2lkZ2V0L2FsZW0tZG9jcyAoaXQncyBnb2luZyB0byB1c2UgdGhlIHNsdWdpZmllZCAibmFtZSIpCiAgImlzSW5kZXgiOiB0cnVlLAogIC8vIFRoZSBtYWlubmV0IGFjY291bnQgSUQgdW5kZXIgd2hpY2ggdGhlIGFwcCB3aWxsIGJlIGRlcGxveWVkLgogICJtYWlubmV0QWNjb3VudCI6ICJhbGVtLWxpYi5uZWFyIiwKICAvLyBUaGUgdGVzdG5ldCBhY2NvdW50IElEIHVuZGVyIHdoaWNoIHRoZSBhcHAgd2lsbCBiZSBkZXBsb3llZC4KICAidGVzdG5ldEFjY291bnQiOiAiYWxlbS1saWIudGVzdG5ldCIsCiAgLy8gQXBwIG5hbWUKICAibmFtZSI6ICJBbGVtIERvY3MiLAogIC8vIEFwcCBEZXNjcmlwdGlvbgogICJkZXNjcmlwdGlvbiI6ICJDcmVhdGUgd2ViMyBhcHBsaWNhdGlvbnMgZm9yIE5FQVIgQk9TIHdpdGggYSBmb2N1cyBvbiBwZXJmb3JtYW5jZSB3aGlsZSB1c2luZyBjb25jZXB0cyB0aGF0IGFyZSBiYXNlZCBvbiBSZWFjdEpTLiIsCiAgLy8gU29jaWFsIGxpbmtzLiBDaGVjayBvdXQgTkVBUiBTb2NpYWwgQm9zIGRvY3MgdG8gZ2V0IHRvIGtub3cgdGhlIG9wdGlvbnMKICAvLyBodHRwczovL2RvY3MubmVhci5vcmcvc29jaWFsL2NvbnRyYWN0CiAgImxpbmt0cmVlIjogewogICAgIndlYnNpdGUiOiAiZ2l0aHViLmNvbS93cGRhcy9hbGVtIgogIH0sCiAgImltYWdlIjogewogICAgImlwZnNfY2lkIjogImJhZmtyZWljamRnYXQ1eHN3N3Z4Ym9zb3l5Z2VybWF3aGtmaTJieTNvdmc3YzZ0dW1yYXluNHJpbXR5IgogIH0sCiAgLy8gVGFncyBvZiB0aGlzIHByb2plY3QKICAidGFncyI6IFsidGhlIiwgInByb2plY3QiLCAidGFncyIsICJoZXJlIl0KfQpgYGAKCiMgUGF0aCBBbGlhc2VzCgpZb3UgY2FuIG9wdGlvbmFsbHkgY29uZmlndXJlIHlvdXIgYXBwbGljYXRpb24ncyBwYXRoIGFsaWFzZXMgc28gdGhhdCBpdCB3b3JrcyB0b2dldGhlciB3aXRoIHRzY29uZmlnLmpzb24sIGZvciBleGFtcGxlLiBBc3N1bWluZyB5b3VyIHByb2plY3QncyBgdHNjb25maWcuanNvbmAgZmlsZSBoYXMgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGZvciBwYXRoczoKCmBgYGpzb24KewogICJjb21waWxlck9wdGlvbnMiOiB7CiAgICAvLyAuLi4KICAgICJiYXNlVXJsIjogIi4iLAogICAgInBhdGhzIjogewogICAgICAiQGFwcC8qIjogWyJzcmMvKiJdLAogICAgICAiQGNvbXBvbmVudHMvKiI6IFsic3JjL2NvbXBvbmVudHMvKiJdCiAgICB9CiAgfQp9CmBgYAoKWW91IHdpbGwgd2FudCB0byBjb25maWd1cmUgdGhlIHNhbWUgYmVoYXZpb3IgdXNpbmcgdGhlIGBib3MuY29uZmlnLmpzb25gIGZpbGUgYXMgZm9sbG93czoKCmBgYGpzb24KewogIC8vIC4uLgogICJjb21waWxlck9wdGlvbnMiOiB7CiAgICAiYmFzZVVybCI6ICIuIiwKICAgICJwYXRocyI6IHsKICAgICAgIkBhcHAvIjogInNyYy8iLAogICAgICAiQGNvbXBvbmVudHMvIjogInNyYy9jb21wb25lbnRzLyIKICAgIH0KICB9Cn0KYGBgCgpOb3cgaW4gYWxsIG9mIHlvdXIgc291cmNlIGZpbGVzLCB5b3UgY2FuIGltcG9ydCBjb21wb25lbnRzIGxpa2UgdGhpczoKCmBgYHRzeAovLyBXaXRob3V0IHBhdGggYWxpYXNlcwppbXBvcnQgSGVybyBmcm9tICIuLi8uLi8uLi9jb21wb25lbnRzL0hlcm8iOwppbXBvcnQgRm9vdGVyIGZyb20gIi4uLy4uLy4uL2NvbXBvbmVudHMvRm9vdGVyIjsKCi8vIFdpdGggcGF0aCBhbGlhc2VzCmltcG9ydCBIZXJvIGZyb20gIkBjb21wb25lbnRzL0hlcm8iOwppbXBvcnQgRm9vdGVyIGZyb20gIkBjb21wb25lbnRzL0Zvb3RlciI7CmBgYAo=`, "base64").toString("utf-8"); return } diff --git a/src/md/DeployingWithGithubActions.tsx b/src/md/DeployingWithGithubActions.tsx index 858f05b..59f1781 100644 --- a/src/md/DeployingWithGithubActions.tsx +++ b/src/md/DeployingWithGithubActions.tsx @@ -1,7 +1,7 @@ import { Markdown } from 'alem'; const DeployingWithGithubActions = () => { - const mdContent = Buffer.from(`IyMgRGVwbG95aW5nIEFwcCBXaXRoIEdpdEh1YiBBY3Rpb25zCgpUbyBkZXBsb3kgd2lkZ2V0cyBvbiBwdXNoIHRvIGJyYW5jaCwgY3JlYXRlIGEgR2l0SHViIEFjdGlvbnMgd29ya2Zsb3cgZmlsZSBpbiB5b3VyIHJlcG9zaXRvcnkuCgoqKk1haW5uZXQ6KioKCkZvciBtYWlubmV0IHlvdSBjYW4gZG8gbGlrZSBzbzogYC5naXRodWIvd29ya2Zsb3dzL2RlcGxveS1tYWlubmV0LnltbGAsIGFuZCBjb25maWd1cmUgaXQgYXMgZm9sbG93czoKCmBgYHlhbWwKbmFtZTogRGVwbG95IERBcHAgdG8gTWFpbm5ldAoKb246CiAgcHVzaDoKICAgIGJyYW5jaGVzOiBbbWFpbl0gIyBicmFuY2ggZm9yIHRyaWdnZXIKCmpvYnM6CiAgZGVwbG95LW1haW5uZXQ6CiAgICB1c2VzOiB3cGRhcy9hbGVtLy5naXRodWIvd29ya2Zsb3dzL2RlcGxveS55bWxAbWFpbgogICAgd2l0aDoKICAgICAgc2lnbmVyLWFjY291bnQtYWRkcmVzczogPFNJR05FUl9BQ0NPVU5UX0lEPiAjIGFjY291bnQgdG8gc2lnbiB3aXRoIChzaG91bGQgbWF0Y2ggYm9zLmNvbmZpZy5qc29uID4gYWNjb3VudCkKICAgICAgc2lnbmVyLXB1YmxpYy1rZXk6IDxTSUdORVJfUFVCTElDX0tFWT4KICAgIHNlY3JldHM6CiAgICAgIFNJR05FUl9QUklWQVRFX0tFWTogJHt7IHNlY3JldHMuU0lHTkVSX1BSSVZBVEVfS0VZIH19ICMgbXVzdCBiZSBpbnNpZGUgdGhlIGdpdGh1YiByZXBvIHNlY3JldHMKYGBgCgoqKlRlc3RuZXQ6KioKCkZvciB0ZXN0bmV0IHlvdSBjYW4gZG8gbGlrZSBzbzogYC5naXRodWIvd29ya2Zsb3dzL2RlcGxveS10ZXN0bmV0LnltbGAsIGFuZCBjb25maWd1cmUgaXQgYXMgZm9sbG93czoKCmBgYHlhbWwKbmFtZTogRGVwbG95IERBcHAgdG8gVGVzdG5ldAoKb246CiAgcHVzaDoKICAgIGJyYW5jaGVzOiBbc3RhZ2luZ10gIyBicmFuY2ggZm9yIHRyaWdnZXIKCmpvYnM6CiAgZGVwbG95LXRlc3RuZXQ6CiAgICB1c2VzOiB3cGRhcy9hbGVtLy5naXRodWIvd29ya2Zsb3dzL2RlcGxveS10ZXN0bmV0LnltbEBtYWluCiAgICB3aXRoOgogICAgICBzaWduZXItYWNjb3VudC1hZGRyZXNzOiA8U0lHTkVSX0FDQ09VTlRfSUQ+ICMgYWNjb3VudCB0byBzaWduIHdpdGggKHNob3VsZCBtYXRjaCBib3MuY29uZmlnLmpzb24gPiBhY2NvdW50KQogICAgICBzaWduZXItcHVibGljLWtleTogPFNJR05FUl9QVUJMSUNfS0VZPgogICAgc2VjcmV0czoKICAgICAgU0lHTkVSX1BSSVZBVEVfS0VZOiAke3sgc2VjcmV0cy5URVNUTkVUX1NJR05FUl9QUklWQVRFX0tFWSB9fSAjIG11c3QgYmUgaW5zaWRlIHRoZSBnaXRodWIgcmVwbyBzZWNyZXRzCmBgYAoKQWRqdXN0IHRoZSB3b3JrZmxvdyBhcyBuZWVkZWQsIHRoZW4gY29uZmlndXJlIHlvdXIgdmFyaWFibGVzICsgc2VjcmV0cyBvbiBHaXRIdWIgU2V0dGluZ3MgLT4gQWN0aW9ucyAtPiBzZWNyZXRzICYgdmFyaWFibGVzLiBVc2UgW25lYXItY2xpLXJzXShodHRwczovL2dpdGh1Yi5jb20vbmVhci9uZWFyLWNsaS1ycykgZm9yIGdlbmVyYXRpbmcga2V5cGFpcnMuIFlvdSBjYW4gYWxzbyBsb2dpbiB1c2luZyBOZWFyIENMSSBhbmQgY2hlY2sgdGhlIGtleXBhaXJzIGxvY2FsbHkuCgojIyMgV29ya2Zsb3cgSW5wdXRzCgpUaGUgd29ya2Zsb3cgYWNjZXB0cyB0aGUgZm9sbG93aW5nIGlucHV0czoKCi0gYGNsaS12ZXJzaW9uYCAob3B0aW9uYWwpOiBWZXJzaW9uIG9mIEJPUyBDTEkgdG8gdXNlIGZvciBkZXBsb3ltZW50IChlLmcuLCAwLjMuMCkuIERlZmF1bHQ6ICIwLjMuNiIKCi0gYGRlcGxveS1lbnZgIChvcHRpb25hbCk6IEVudmlyb25tZW50IHRvIGRlcGxveSBjb21wb25lbnQgY29kZSB0byAoZS5nLiwgbWFpbm5ldCwgdGVzdG5ldCkuIERlZmF1bHQ6ICJtYWlubmV0IgoKLSBgc2lnbmVyLWFjY291bnQtYWRkcmVzc2AgKHJlcXVpcmVkKTogQWNjb3VudCB1bmRlciB3aGljaCBjb21wb25lbnQgY29kZSBzaG91bGQgYmUgZGVwbG95ZWQgYW5kIHVzZWQgZm9yIHNpZ25pbmcgdGhlIGRlcGxveSB0cmFuc2FjdGlvbi4KCi0gYHNpZ25lci1wdWJsaWMta2V5YCAocmVxdWlyZWQpOiBQdWJsaWMga2V5IGZvciBzaWduaW5nIHRyYW5zYWN0aW9ucyBpbiB0aGUgZm9ybWF0OiBgZWQyNTUxOTo8cHVibGljX2tleT5gLgoKLSBgc2lnbmVyLXByaXZhdGUta2V5YCAocmVxdWlyZWQpOiBQcml2YXRlIGtleSBmb3Igc2lnbmluZyB0cmFuc2FjdGlvbnMgaW4gdGhlIGZvcm1hdDogYGVkMjU1MTk6PHByaXZhdGVfa2V5PmAuCg==`, "base64").toString("utf-8"); + const mdContent = Buffer.from(`IyBEZXBsb3lpbmcgQXBwIFdpdGggR2l0SHViIEFjdGlvbnMKClRvIGRlcGxveSB3aWRnZXRzIG9uIHB1c2ggdG8gYnJhbmNoLCBjcmVhdGUgYSBHaXRIdWIgQWN0aW9ucyB3b3JrZmxvdyBmaWxlIGluIHlvdXIgcmVwb3NpdG9yeS4KCioqTWFpbm5ldDoqKgoKRm9yIG1haW5uZXQgeW91IGNhbiBkbyBsaWtlIHNvOiBgLmdpdGh1Yi93b3JrZmxvd3MvZGVwbG95LW1haW5uZXQueW1sYCwgYW5kIGNvbmZpZ3VyZSBpdCBhcyBmb2xsb3dzOgoKYGBgeWFtbApuYW1lOiBEZXBsb3kgREFwcCB0byBNYWlubmV0CgpvbjoKICBwdXNoOgogICAgYnJhbmNoZXM6IFttYWluXSAjIGJyYW5jaCBmb3IgdHJpZ2dlcgoKam9iczoKICBkZXBsb3ktbWFpbm5ldDoKICAgIHVzZXM6IHdwZGFzL2FsZW0vLmdpdGh1Yi93b3JrZmxvd3MvZGVwbG95LnltbEBtYWluCiAgICB3aXRoOgogICAgICBzaWduZXItYWNjb3VudC1hZGRyZXNzOiA8U0lHTkVSX0FDQ09VTlRfSUQ+ICMgYWNjb3VudCB0byBzaWduIHdpdGggKHNob3VsZCBtYXRjaCBib3MuY29uZmlnLmpzb24gPiBhY2NvdW50KQogICAgICBzaWduZXItcHVibGljLWtleTogPFNJR05FUl9QVUJMSUNfS0VZPgogICAgc2VjcmV0czoKICAgICAgU0lHTkVSX1BSSVZBVEVfS0VZOiAke3sgc2VjcmV0cy5TSUdORVJfUFJJVkFURV9LRVkgfX0gIyBtdXN0IGJlIGluc2lkZSB0aGUgZ2l0aHViIHJlcG8gc2VjcmV0cwpgYGAKCioqVGVzdG5ldDoqKgoKRm9yIHRlc3RuZXQgeW91IGNhbiBkbyBsaWtlIHNvOiBgLmdpdGh1Yi93b3JrZmxvd3MvZGVwbG95LXRlc3RuZXQueW1sYCwgYW5kIGNvbmZpZ3VyZSBpdCBhcyBmb2xsb3dzOgoKYGBgeWFtbApuYW1lOiBEZXBsb3kgREFwcCB0byBUZXN0bmV0CgpvbjoKICBwdXNoOgogICAgYnJhbmNoZXM6IFtzdGFnaW5nXSAjIGJyYW5jaCBmb3IgdHJpZ2dlcgoKam9iczoKICBkZXBsb3ktdGVzdG5ldDoKICAgIHVzZXM6IHdwZGFzL2FsZW0vLmdpdGh1Yi93b3JrZmxvd3MvZGVwbG95LXRlc3RuZXQueW1sQG1haW4KICAgIHdpdGg6CiAgICAgIHNpZ25lci1hY2NvdW50LWFkZHJlc3M6IDxTSUdORVJfQUNDT1VOVF9JRD4gIyBhY2NvdW50IHRvIHNpZ24gd2l0aCAoc2hvdWxkIG1hdGNoIGJvcy5jb25maWcuanNvbiA+IGFjY291bnQpCiAgICAgIHNpZ25lci1wdWJsaWMta2V5OiA8U0lHTkVSX1BVQkxJQ19LRVk+CiAgICBzZWNyZXRzOgogICAgICBTSUdORVJfUFJJVkFURV9LRVk6ICR7eyBzZWNyZXRzLlRFU1RORVRfU0lHTkVSX1BSSVZBVEVfS0VZIH19ICMgbXVzdCBiZSBpbnNpZGUgdGhlIGdpdGh1YiByZXBvIHNlY3JldHMKYGBgCgpBZGp1c3QgdGhlIHdvcmtmbG93IGFzIG5lZWRlZCwgdGhlbiBjb25maWd1cmUgeW91ciB2YXJpYWJsZXMgKyBzZWNyZXRzIG9uIEdpdEh1YiBTZXR0aW5ncyAtPiBBY3Rpb25zIC0+IHNlY3JldHMgJiB2YXJpYWJsZXMuIFVzZSBbbmVhci1jbGktcnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9uZWFyL25lYXItY2xpLXJzKSBmb3IgZ2VuZXJhdGluZyBrZXlwYWlycy4gWW91IGNhbiBhbHNvIGxvZ2luIHVzaW5nIE5lYXIgQ0xJIGFuZCBjaGVjayB0aGUga2V5cGFpcnMgbG9jYWxseS4KCiMjIyBXb3JrZmxvdyBJbnB1dHMKClRoZSB3b3JrZmxvdyBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgaW5wdXRzOgoKLSBgY2xpLXZlcnNpb25gIChvcHRpb25hbCk6IFZlcnNpb24gb2YgQk9TIENMSSB0byB1c2UgZm9yIGRlcGxveW1lbnQgKGUuZy4sIDAuMy4wKS4gRGVmYXVsdDogIjAuMy42IgoKLSBgZGVwbG95LWVudmAgKG9wdGlvbmFsKTogRW52aXJvbm1lbnQgdG8gZGVwbG95IGNvbXBvbmVudCBjb2RlIHRvIChlLmcuLCBtYWlubmV0LCB0ZXN0bmV0KS4gRGVmYXVsdDogIm1haW5uZXQiCgotIGBzaWduZXItYWNjb3VudC1hZGRyZXNzYCAocmVxdWlyZWQpOiBBY2NvdW50IHVuZGVyIHdoaWNoIGNvbXBvbmVudCBjb2RlIHNob3VsZCBiZSBkZXBsb3llZCBhbmQgdXNlZCBmb3Igc2lnbmluZyB0aGUgZGVwbG95IHRyYW5zYWN0aW9uLgoKLSBgc2lnbmVyLXB1YmxpYy1rZXlgIChyZXF1aXJlZCk6IFB1YmxpYyBrZXkgZm9yIHNpZ25pbmcgdHJhbnNhY3Rpb25zIGluIHRoZSBmb3JtYXQ6IGBlZDI1NTE5OjxwdWJsaWNfa2V5PmAuCgotIGBzaWduZXItcHJpdmF0ZS1rZXlgIChyZXF1aXJlZCk6IFByaXZhdGUga2V5IGZvciBzaWduaW5nIHRyYW5zYWN0aW9ucyBpbiB0aGUgZm9ybWF0OiBgZWQyNTUxOTo8cHJpdmF0ZV9rZXk+YC4K`, "base64").toString("utf-8"); return } diff --git a/src/md/FeatureOverview.tsx b/src/md/FeatureOverview.tsx index 9cea97a..cebe080 100644 --- a/src/md/FeatureOverview.tsx +++ b/src/md/FeatureOverview.tsx @@ -1,7 +1,7 @@ import { Markdown } from 'alem'; const FeatureOverview = () => { - const mdContent = Buffer.from(`IyBGZWF0dXJlIE92ZXJ2aWV3CgpBbGVtIGlzIGEgd2ViMyAqKkphdmFTY3JpcHQqKiAvICoqVHlwZVNjcmlwdCoqIGxpYnJhcnkgdG8gY3JlYXRlIHdlYjMgYXBwcyBmb3IgTmVhciBCT1MuIFlvdSBjYW4gY3JlYXRlIHlvdXIgYXBwbGljYXRpb25zIGluIGEgc2ltaWxhciB3YXkgdG8gUmVhY3QuIEFsbCBjb21wb25lbnRzIGFuZCBvdGhlciByZXNvdXJjZXMgd2lsbCBiZSB0cmFuc2Zvcm1lZCBpbnRvIGEgZmlsZSB1bmRlcnN0YW5kYWJsZSBieSBOZWFyIFZNLgoKPGltZyBzcmM9J2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC93cGRhcy9hbGVtLWRvY3Mtd2ViL3NyYy9tZC9hc3NldHMvZGlhZ3JhbS5qcGcnIGhlaWdodD0nMzgwJyBhbHQ9J0RpYWdyYW0nIC8+CgojIyBDb21wb25lbnQKCllvdSBjYW4gY3JlYXRlIGFueSBjb21wb25lbnQgZmlsZSB1c2luZyAqKkphdmFTY3JpcHQqKiBvciAqKlR5cGVTY3JpcHQqKi4gVGhlIGVudHJ5cG9pbnQgbXVzdCBiZSBhbiBBcHAgY29tcG9uZW50IGxpa2Ugc286CgpgYGB0c3gKY29uc3QgQXBwID0gKCkgPT4gewogIHJldHVybiAoCiAgICA8PgogICAgICA8aDE+SGVsbG8gV29ybGQ8L2gxPgogICAgPC8+CiAgKTsKfTsKCmV4cG9ydCBkZWZhdWx0IEFwcDsKYGBgCgojIyBDb21wb25lbnQgUHJvcHMKClBhc3NpbmcgcHJvcGVydGllcyB0byBhIGNvbXBvbmVudCBpcyB2ZXJ5IHNpbXBsZS4gSnVzdCB1c2UgcmVhY3QncyBkZWZhdWx0czoKCmBgYHRzeApleHBvcnQgY29uc3QgQ29tcG9uZW50QSA9ICh7IG5hbWUgfTogeyBuYW1lOiBzdHJpbmcgfSkgPT4gewogIHJldHVybiA8cD57bmFtZX08L3A+Owp9OwoKZXhwb3J0IGNvbnN0IENvbXBvbmVudEIgPSAoKSA9PiB7CiAgcmV0dXJuIDxDb21wb25lbnRBIG5hbWU9IldlbmR6IiAvPjsKfTsKCmV4cG9ydCBjb25zdCBDb21wb25lbnRDID0gKGNvbXBvbmVudFByb3BzOiB7IG5hbWU6IHN0cmluZyB9KSA9PiB7CiAgcmV0dXJuIDxwPntjb21wb25lbnRQcm9wcy5uYW1lfTwvcD47Cn07CmBgYAoKIyBHb29kIHRvIEtub3cKCiMjIFN0YXRlZnVsICYgU3RhdGVsZXNzIENvbXBvbmVudHMKClN0YXRlZnVsIGNvbXBvbmVudHMgYXJlIGludGVycHJldGVkIGFzIFdpZGdldHMgYnkgQWzDqW0sIHdoaWxlIFN0YXRlbGVzcyBjb21wb25lbnRzIGFyZSBzZWVuIGFzIGF1eGlsaWFyeSByZXNvdXJjZXMgaW5qZWN0ZWQgaW50byB0aGUgV2lkZ2V0cyB0aGF0IGltcG9ydCB0aGVtLgoKVXNpbmcgYW55IG9mIHRoZXNlIGZlYXR1cmVzIHdpbGwgY2F1c2UgYSBjb21wb25lbnQgdG8gYmUgY29uc2lkZXJlZCBTdGF0ZWZ1bDoKCmBgYHRzCmNvbnN0IFtmb28sIHNldEZvb10gPSB1c2VTdGF0ZShiYXIpOwp1c2VFZmZlY3QoKCkgPT4ge30sIFtdKTsKdXNlTWVtbygoKSA9PiB7fSwgW10pOwpTdGF0ZS5pbml0KHt9KTsKYGBgCgpFeGFtcGxlIG9mIHN0YXRlbGVzcyBhbmQgc3RhdGVmdWwgY29tcG9uZW50czoKCmBgYHRzeAovLyBTdGF0ZWxlc3MgY29tcG9uZW50CmNvbnN0IEhlcm8gPSAoeyBsYWJlbCB9OiB7IGxhYmVsOiBzdHJpbmcgfSkgPT4gewogIHJldHVybiA8cD5IZXJvIEJhciAtIHtsYWJlbH08L3A+Owp9OwpgYGAKCmBgYHRzeAovLyBTdGF0ZWZ1bCBjb21wb25lbnQKaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gImFsZW0iOwoKY29uc3QgRm9vdGVyID0gKCkgPT4gewogIGNvbnN0IFtmb290ZXJMYWJlbF0gPSB1c2VTdGF0ZSgiVGhpcyBpcyBmb290ZXIiKTsKCiAgcmV0dXJuIDxwPntmb290ZXJMYWJlbH08L3A+Owp9OwpgYGAKCk5vdywgbGV0J3MgaW1wbGVtZW50IHRoZSBjb21wb25lbnQgdGhhdCBpcyBnb2luZyB0byBpbXBvcnQgYm90aCBjb21wb25lbnRzIGFib3ZlOgoKYGBgdHN4Ci8vIFN0YXRlZnVsIGNvbXBvbmVudAppbXBvcnQgeyBTdGF0ZSwgc3RhdGUgfSBmcm9tICJhbGVtIjsKaW1wb3J0IEhlcm8gZnJvbSAiLi9IZXJvIjsKaW1wb3J0IEZvb3RlciBmcm9tICIuL0Zvb3RlciI7Cgpjb25zdCBNeVN0YXRlZnVsQ29tcG9uZW50ID0gKCkgPT4gewogIFN0YXRlLmluaXQoeyB2ZXJzaW9uOiAxIH0pOyAvLyBBbnkgcmFuZG9tIGluZm9ybWF0aW9uCgogIHJldHVybiAoCiAgICA8PgogICAgICA8cD5WZXJzaW9uOiB7c3RhdGUudmVyc2lvbn08L3A+CiAgICAgIDxIZXJvIGxhYmVsPXtzdGF0ZS52ZXJzaW9ufSAvPgogICAgICA8Rm9vdGVyIC8+CiAgICA8Lz4KICApOwp9OwpgYGAKCiMjIFRTWCAmIEpTWAoKQSAudHN4Ly5qc3ggZmlsZSBjYW4gaGF2ZSBvbmx5IG9uZSBzdGF0ZWZ1bCBjb21wb25lbnQuIFlvdSBjYW4gY3JlYXRlIG90aGVyIGludGVybmFsIGNvbXBvbmVudHMgd2l0aGluIHRoZSBjb21wb25lbnQncyBmdW5jdGlvbi4KCuKchSAqKi0gUmlnaHQqKgoKYGBgdHN4CmltcG9ydCB7IFN0YXRlLCBzdGF0ZSB9IGZyb20gImFsZW0iOwoKY29uc3QgTXlTdGF0ZWZ1bENvbXBvbmVudCA9ICgpID0+IHsKICBTdGF0ZS5pbml0KHsgbmFtZTogIldlbmR6IiB9KTsKCiAgcmV0dXJuIDxwPm9pIHtzdGF0ZS5uYW1lfTwvcD47Cn07CgpleHBvcnQgZGVmYXVsdCBNeVN0YXRlZnVsQ29tcG9uZW50OwpgYGAKCuKdjCAqKi0gV3JvbmcqKgoKYGBgdHN4CmltcG9ydCB7IFN0YXRlLCBzdGF0ZSB9IGZyb20gImFsZW0iOwoKY29uc3QgTXlTdGF0ZWZ1bENvbXBvbmVudCA9ICgpID0+IHsKICBTdGF0ZS5pbml0KHsgbmFtZTogIldlbmR6IiB9KTsKCiAgcmV0dXJuIDxwPm9pIHtzdGF0ZS5uYW1lfTwvcD47Cn07CgpleHBvcnQgZGVmYXVsdCBNeVN0YXRlZnVsQ29tcG9uZW50OwoKLy8gU2Vjb25kIHN0YXRlZnVsIGNvbXBvbmVudCBhdCB0aGUgc2FtZSBmaWxlLiBUaGlzIGlzIGdvaW5nIHRvIGZhaWwhCmV4cG9ydCBjb25zdCBPdGhlclN0YXRlZnVsQ29tcG9uZW50ID0gKCkgPT4gewogIFN0YXRlLmluaXQoeyBhZ2U6IDIyIH0pOwoKICByZXR1cm4gPHA+QWdlOiB7c3RhdGUuYWdlfTwvcD47Cn07CmBgYAoKU3RhdGVsZXNzIGNvbXBvbmVudHMgY2FuIGhhdmUgYXMgbWFueSBjb21wb25lbnRzIGFzIHlvdSB3YW50IGluIG9uZSBmaWxlLgoK4pyFICoqLSBSaWdodCoqCgpgYGB0c3gKLy8gR3JvdXAgb2Ygc3RhdGVsZXNzIGNvbXBvbmVudHMKZXhwb3J0IGNvbnN0IENvbXBvbmVudEEgPSAoY29tcG9uZW50UHJvcHMpID0+IHsKICAvLyAuLi4KICByZXR1cm4gPHA+b2kge2NvbXBvbmVudFByb3BzLm5hbWV9PC9wPjsKfTsKCmV4cG9ydCBjb25zdCBDb21wb25lbnRCID0gKGNvbXBvbmVudFByb3BzKSA9PiB7CiAgLy8gLi4uCiAgcmV0dXJuIDxwPkhvbGEge2NvbXBvbmVudFByb3BzLm5hbWV9PC9wPjsKfTsKCmV4cG9ydCBjb25zdCBDb21wb25lbnRDID0gKGNvbXBvbmVudFByb3BzKSA9PiB7CiAgLy8gLi4uCiAgcmV0dXJuICgKICAgIDw+CiAgICAgIDxwPkhpIHtjb21wb25lbnRQcm9wcy5uYW1lfTwvcD4KICAgICAgPENvbXBvbmVudEIgLz4KICAgICAgPENvbXBvbmVudEEgLz4KICAgIDwvPgogICk7Cn07CmBgYAoKIyMgUHJlcGFyaW5nIHRoZSBSZXNvdXJjZXMKClByZWZlciB0byBjcmVhdGUgb25lIGZpbGUgcGVyIHJlc291cmNlLCBhcyBpbXBvcnRpbmcgYSByZXNvdXJjZSBmcm9tIGEgYC50cy8uanNgIGZpbGUgd2lsbCBpbmplY3QgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGF0IGZpbGUgaW50byB0aGUgV2lkZ2V0LiBUaGUgc2FtZSBnb2VzIGZvciBzdGF0ZWxlc3MgY29tcG9uZW50cy4KCiMjIENvbW1lbnRzCgpUaGlzIG1heSBiZSBvYnZpb3VzIGJ1dCB1c2UgdGhlIGNvcnJlY3QgZm9ybSBvZiBjb21tZW50cyBkdXJpbmcgZGV2ZWxvcG1lbnQgZm9yICoqQ1NTKiogYW5kICoqc3R5bGVkLWNvbXBvbmVudHMqKi4KCmBgYGNzcwovKiBjc3MgZmlsZSAqLwoKLm15LWNsYXNzIHsKICAvKiBDb3JyZWN0ICovCiAgZGlzcGxheTogZmxleDsKICAvLyBJbmNvcnJlY3QKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KYGBgCgpgYGB0c3gKLy8gdHN4IG9yIGpzeCBmaWxlIHVzaW5nIHN0eWxlZCBjb21wb25lbnRzCmltcG9ydCBzdHlsZWQgZnJvbSAic3R5bGVkLWNvbXBvbmVudHMiOwoKZXhwb3J0IGNvbnN0IEFwcENvbnRhaW5lciA9IHN0eWxlZC5kaXZgCiAgZGlzcGxheTogZmxleDsKICAvKiBDb3JyZWN0ICovCiAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAvLyBJbmNvcnJlY3QKICBmb250LWZhbWlseTogIldpeCBNYWRlZm9yIERpc3BsYXkiLCBzYW5zLXNlcmlmOwoKICBAbWVkaWEgKG1heC13aWR0aDogODAwcHgpIHsKICAgIGZsZXgtd3JhcDogd3JhcDsKICB9CmA7CmBgYAoKIyMgQXN5bmMgLyBBd2FpdAoKVGhlIHVzZSBvZiBgYXN5bmMvYXdhaXRgIGlzIHN1cHBvcnRlZCBhbmQgZXhwZXJpbWVudGFsLiBJdCBzaG91bGQgYmUgdXNlZCBvbmx5IGluIHRoZSBtYWluIHNjb3BlIG9mIHRoZSBjb21wb25lbnQuIEl0IHdpbGwgbWFrZSBjaGFuZ2VzIHRvIHRoZSBzdGF0ZSBvZiB0aGUgbWFpbiBXaWRnZXQuIERvIG5vdCB1c2UgaW4gaG9va3MuIEJlbG93IGlzIGFuIGV4YW1wbGUgb2YgdXNhZ2U6CgpgYGB0c3gKaW1wb3J0IHsgZmV0Y2gsIHVzZUVmZmVjdCB9IGZyb20gImFsZW0iOwoKY29uc3QgU29tZUNvbXBvbmVudCA9ICgpID0+IHsKICBjb25zdCBmZXRjaEl0ZW1zID0gYXN5bmMgKCkgPT4gewogICAgY29uc3QgaXRlbXMgPSBhd2FpdCBmZXRjaCgiaHR0cHM6Ly9hcGkuY29tL2l0ZW1zIik7CiAgfTsKCiAgdXNlRWZmZWN0KCgpID0+IHsKICAgIGZldGNoSXRlbXMoKTsKICB9LCBbXSk7CgogIGNvbnNvbGUubG9nKGl0ZW1zKTsKCiAgcmV0dXJuIDw+PC8+Owp9OwpgYGAKCiMjIExpbWl0YXRpb25zCgotIFRoZSB1c2Ugb2YgdGhlIGBpbXBvcnQgKiBmb28gZnJvbSAnLi9mb28nYCBzaWduYXR1cmUgaXMgbm90IHN1cHBvcnRlZC4gVGhpcyBpcyBpbnRlbnRpb25hbCwgYXMgdGhlIGlkZWEgaXMgdG8gaW1wb3J0IG9ubHkgdGhlIG5lY2Vzc2FyeSBmcmFnbWVudHMgaW50byB0aGUgV2lkZ2V0LgotIEFsw6ltIGZpeGVzIGR1cGxpY2F0ZSBpdGVtIG5hbWVzIGJlaW5nIGV4cG9ydGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBhdXRvbWF0aWNhbGx5LCBidXQgeW91IHNob3VsZCBhdm9pZCBpbXBvcnRpbmcgYSByZXNvdXJjZSB0aGF0IGhhcyB0aGUgc2FtZSBuYW1lIGFzIGFueSB2YXJpYWJsZSB3aXRoaW4geW91ciBjb21wb25lbnQuIEUuZy46CgrinIUgKiotIFJpZ2h0KioKCmBgYHRzCi8vIGFDb250cmFjdC50cwpleHBvcnQgY29uc3QgY29udHJhY3RJZCA9ICJjb250cmFjdC1pZC1hLm5lYXIiOwovLyAuLi4KYGBgCgpgYGB0cwovLyBIb21lUGFnZS50c3gKaW1wb3J0IHsgY29udHJhY3RJZCB9IGZyb20gJy4vY29udHJhY3RJZCc7Cgpjb25zdCBIb21lUGFnZSA9ICgpID0+IHsKICBjb25zdCBjb250cmFjdElkX0IgPSAiY29udHJhY3QtaWQtYi5uZWFyIgoKICByZXR1cm4gKAogICAgLy8gLi4uCiAgKQp9CgpleHBvcnQgZGVmYXVsdCBIb21lUGFnZTsKYGBgCgrinYwgKiotIFdyb25nKioKCmBgYHRzCi8vIGFDb250cmFjdC50cwpleHBvcnQgY29uc3QgY29udHJhY3RJZCA9ICJjb250cmFjdC1pZC1hLm5lYXIiOwpleHBvcnQgY29uc3QgY29udHJhY3RJZF9DID0gImNvbnRyYWN0LWlkLWMubmVhciI7Ci8vIC4uLgpgYGAKCmBgYHRzCi8vIEhvbWVQYWdlLnRzeAppbXBvcnQgeyBjb250cmFjdElkX0MgfSBmcm9tICcuL2NvbnRyYWN0SWQnOwoKY29uc3QgSG9tZVBhZ2UgPSAoKSA9PiB7CiAgLy8gRVJST1I6IHRoaXMgd2lsbCBicmVhayB0aGUgYXBwbGljYXRpb24gYmVjYXVzZSB0aGUgImNvbnRyYWN0SWQiIGZyb20gYUNvbnRyYWN0LnRzIGlzIGFsc28gZ29pbmcgdG8gYmUKICAvLyBpbmplY3RlZCB0byB0aGUgZmluYWwgZmlsZSBhZnRlciBjb21waWxhdGlvbi4KICBjb25zdCBjb250cmFjdElkID0gImNvbnRyYWN0LWlkLWIubmVhciI7CgogIHJldHVybiAoCiAgICAvLyAuLi4KICApCn0KCmV4cG9ydCBkZWZhdWx0IEhvbWVQYWdlOwpgYGAK`, "base64").toString("utf-8"); + const mdContent = Buffer.from(`IyBGZWF0dXJlIE92ZXJ2aWV3CgpBbGVtIGlzIGEgd2ViMyAqKkphdmFTY3JpcHQqKiAvICoqVHlwZVNjcmlwdCoqIGxpYnJhcnkgdG8gY3JlYXRlIHdlYjMgYXBwcyBmb3IgTmVhciBCT1MuIFlvdSBjYW4gY3JlYXRlIHlvdXIgYXBwbGljYXRpb25zIGluIGEgc2ltaWxhciB3YXkgdG8gUmVhY3QuIEFsbCBjb21wb25lbnRzIGFuZCBvdGhlciByZXNvdXJjZXMgd2lsbCBiZSB0cmFuc2Zvcm1lZCBpbnRvIGEgZmlsZSB1bmRlcnN0YW5kYWJsZSBieSBOZWFyIFZNLgoKIyMgQ29tcG9uZW50CgpZb3UgY2FuIGNyZWF0ZSBhbnkgY29tcG9uZW50IGZpbGUgdXNpbmcgKipKYXZhU2NyaXB0Kiogb3IgKipUeXBlU2NyaXB0KiouIFRoZSBlbnRyeXBvaW50IG11c3QgYmUgYW4gQXBwIGNvbXBvbmVudCBsaWtlIHNvOgoKYGBgdHN4CmNvbnN0IEFwcCA9ICgpID0+IHsKICByZXR1cm4gKAogICAgPD4KICAgICAgPGgxPkhlbGxvIFdvcmxkPC9oMT4KICAgIDwvPgogICk7Cn07CgpleHBvcnQgZGVmYXVsdCBBcHA7CmBgYAoKIyMgQ29tcG9uZW50IFByb3BzCgpQYXNzaW5nIHByb3BlcnRpZXMgdG8gYSBjb21wb25lbnQgaXMgdmVyeSBzaW1wbGUuIEp1c3QgdXNlIHJlYWN0J3MgZGVmYXVsdHM6CgpgYGB0c3gKZXhwb3J0IGNvbnN0IENvbXBvbmVudEEgPSAoeyBuYW1lIH06IHsgbmFtZTogc3RyaW5nIH0pID0+IHsKICByZXR1cm4gPHA+e25hbWV9PC9wPjsKfTsKCmV4cG9ydCBjb25zdCBDb21wb25lbnRCID0gKCkgPT4gewogIHJldHVybiA8Q29tcG9uZW50QSBuYW1lPSJXZW5keiIgLz47Cn07CgpleHBvcnQgY29uc3QgQ29tcG9uZW50QyA9IChjb21wb25lbnRQcm9wczogeyBuYW1lOiBzdHJpbmcgfSkgPT4gewogIHJldHVybiA8cD57Y29tcG9uZW50UHJvcHMubmFtZX08L3A+Owp9OwpgYGAKCiMgR29vZCB0byBLbm93CgojIyBTdGF0ZWZ1bCAmIFN0YXRlbGVzcyBDb21wb25lbnRzCgpTdGF0ZWZ1bCBjb21wb25lbnRzIGFyZSBpbnRlcnByZXRlZCBhcyBXaWRnZXRzIGJ5IEFsw6ltLCB3aGlsZSBTdGF0ZWxlc3MgY29tcG9uZW50cyBhcmUgc2VlbiBhcyBhdXhpbGlhcnkgcmVzb3VyY2VzIGluamVjdGVkIGludG8gdGhlIFdpZGdldHMgdGhhdCBpbXBvcnQgdGhlbS4KClVzaW5nIGFueSBvZiB0aGVzZSBmZWF0dXJlcyB3aWxsIGNhdXNlIGEgY29tcG9uZW50IHRvIGJlIGNvbnNpZGVyZWQgU3RhdGVmdWw6CgpgYGB0cwpjb25zdCBbZm9vLCBzZXRGb29dID0gdXNlU3RhdGUoYmFyKTsKdXNlRWZmZWN0KCgpID0+IHt9LCBbXSk7CnVzZU1lbW8oKCkgPT4ge30sIFtdKTsKU3RhdGUuaW5pdCh7fSk7CmBgYAoKRXhhbXBsZSBvZiBzdGF0ZWxlc3MgYW5kIHN0YXRlZnVsIGNvbXBvbmVudHM6CgpgYGB0c3gKLy8gU3RhdGVsZXNzIGNvbXBvbmVudApjb25zdCBIZXJvID0gKHsgbGFiZWwgfTogeyBsYWJlbDogc3RyaW5nIH0pID0+IHsKICByZXR1cm4gPHA+SGVybyBCYXIgLSB7bGFiZWx9PC9wPjsKfTsKYGBgCgpgYGB0c3gKLy8gU3RhdGVmdWwgY29tcG9uZW50CmltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICJhbGVtIjsKCmNvbnN0IEZvb3RlciA9ICgpID0+IHsKICBjb25zdCBbZm9vdGVyTGFiZWxdID0gdXNlU3RhdGUoIlRoaXMgaXMgZm9vdGVyIik7CgogIHJldHVybiA8cD57Zm9vdGVyTGFiZWx9PC9wPjsKfTsKYGBgCgpOb3csIGxldCdzIGltcGxlbWVudCB0aGUgY29tcG9uZW50IHRoYXQgaXMgZ29pbmcgdG8gaW1wb3J0IGJvdGggY29tcG9uZW50cyBhYm92ZToKCmBgYHRzeAovLyBTdGF0ZWZ1bCBjb21wb25lbnQKaW1wb3J0IHsgU3RhdGUsIHN0YXRlIH0gZnJvbSAiYWxlbSI7CmltcG9ydCBIZXJvIGZyb20gIi4vSGVybyI7CmltcG9ydCBGb290ZXIgZnJvbSAiLi9Gb290ZXIiOwoKY29uc3QgTXlTdGF0ZWZ1bENvbXBvbmVudCA9ICgpID0+IHsKICBTdGF0ZS5pbml0KHsgdmVyc2lvbjogMSB9KTsgLy8gQW55IHJhbmRvbSBpbmZvcm1hdGlvbgoKICByZXR1cm4gKAogICAgPD4KICAgICAgPHA+VmVyc2lvbjoge3N0YXRlLnZlcnNpb259PC9wPgogICAgICA8SGVybyBsYWJlbD17c3RhdGUudmVyc2lvbn0gLz4KICAgICAgPEZvb3RlciAvPgogICAgPC8+CiAgKTsKfTsKYGBgCgojIyBUU1ggJiBKU1gKCkEgLnRzeC8uanN4IGZpbGUgY2FuIGhhdmUgb25seSBvbmUgc3RhdGVmdWwgY29tcG9uZW50LiBZb3UgY2FuIGNyZWF0ZSBvdGhlciBpbnRlcm5hbCBjb21wb25lbnRzIHdpdGhpbiB0aGUgY29tcG9uZW50J3MgZnVuY3Rpb24uCgrinIUgKiotIFJpZ2h0KioKCmBgYHRzeAppbXBvcnQgeyBTdGF0ZSwgc3RhdGUgfSBmcm9tICJhbGVtIjsKCmNvbnN0IE15U3RhdGVmdWxDb21wb25lbnQgPSAoKSA9PiB7CiAgU3RhdGUuaW5pdCh7IG5hbWU6ICJXZW5keiIgfSk7CgogIHJldHVybiA8cD5vaSB7c3RhdGUubmFtZX08L3A+Owp9OwoKZXhwb3J0IGRlZmF1bHQgTXlTdGF0ZWZ1bENvbXBvbmVudDsKYGBgCgrinYwgKiotIFdyb25nKioKCmBgYHRzeAppbXBvcnQgeyBTdGF0ZSwgc3RhdGUgfSBmcm9tICJhbGVtIjsKCmNvbnN0IE15U3RhdGVmdWxDb21wb25lbnQgPSAoKSA9PiB7CiAgU3RhdGUuaW5pdCh7IG5hbWU6ICJXZW5keiIgfSk7CgogIHJldHVybiA8cD5vaSB7c3RhdGUubmFtZX08L3A+Owp9OwoKZXhwb3J0IGRlZmF1bHQgTXlTdGF0ZWZ1bENvbXBvbmVudDsKCi8vIFNlY29uZCBzdGF0ZWZ1bCBjb21wb25lbnQgYXQgdGhlIHNhbWUgZmlsZS4gVGhpcyBpcyBnb2luZyB0byBmYWlsIQpleHBvcnQgY29uc3QgT3RoZXJTdGF0ZWZ1bENvbXBvbmVudCA9ICgpID0+IHsKICBTdGF0ZS5pbml0KHsgYWdlOiAyMiB9KTsKCiAgcmV0dXJuIDxwPkFnZToge3N0YXRlLmFnZX08L3A+Owp9OwpgYGAKClN0YXRlbGVzcyBjb21wb25lbnRzIGNhbiBoYXZlIGFzIG1hbnkgY29tcG9uZW50cyBhcyB5b3Ugd2FudCBpbiBvbmUgZmlsZS4KCuKchSAqKi0gUmlnaHQqKgoKYGBgdHN4Ci8vIEdyb3VwIG9mIHN0YXRlbGVzcyBjb21wb25lbnRzCmV4cG9ydCBjb25zdCBDb21wb25lbnRBID0gKGNvbXBvbmVudFByb3BzKSA9PiB7CiAgLy8gLi4uCiAgcmV0dXJuIDxwPm9pIHtjb21wb25lbnRQcm9wcy5uYW1lfTwvcD47Cn07CgpleHBvcnQgY29uc3QgQ29tcG9uZW50QiA9IChjb21wb25lbnRQcm9wcykgPT4gewogIC8vIC4uLgogIHJldHVybiA8cD5Ib2xhIHtjb21wb25lbnRQcm9wcy5uYW1lfTwvcD47Cn07CgpleHBvcnQgY29uc3QgQ29tcG9uZW50QyA9IChjb21wb25lbnRQcm9wcykgPT4gewogIC8vIC4uLgogIHJldHVybiAoCiAgICA8PgogICAgICA8cD5IaSB7Y29tcG9uZW50UHJvcHMubmFtZX08L3A+CiAgICAgIDxDb21wb25lbnRCIC8+CiAgICAgIDxDb21wb25lbnRBIC8+CiAgICA8Lz4KICApOwp9OwpgYGAKCiMjIFByZXBhcmluZyB0aGUgUmVzb3VyY2VzCgpQcmVmZXIgdG8gY3JlYXRlIG9uZSBmaWxlIHBlciByZXNvdXJjZSwgYXMgaW1wb3J0aW5nIGEgcmVzb3VyY2UgZnJvbSBhIGAudHMvLmpzYCBmaWxlIHdpbGwgaW5qZWN0IHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhhdCBmaWxlIGludG8gdGhlIFdpZGdldC4gVGhlIHNhbWUgZ29lcyBmb3Igc3RhdGVsZXNzIGNvbXBvbmVudHMuCgojIyBDb21tZW50cwoKVGhpcyBtYXkgYmUgb2J2aW91cyBidXQgdXNlIHRoZSBjb3JyZWN0IGZvcm0gb2YgY29tbWVudHMgZHVyaW5nIGRldmVsb3BtZW50IGZvciAqKkNTUyoqIGFuZCAqKnN0eWxlZC1jb21wb25lbnRzKiouCgpgYGBjc3MKLyogY3NzIGZpbGUgKi8KCi5teS1jbGFzcyB7CiAgLyogQ29ycmVjdCAqLwogIGRpc3BsYXk6IGZsZXg7CiAgLy8gSW5jb3JyZWN0CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CmBgYAoKYGBgdHN4Ci8vIHRzeCBvciBqc3ggZmlsZSB1c2luZyBzdHlsZWQgY29tcG9uZW50cwppbXBvcnQgc3R5bGVkIGZyb20gInN0eWxlZC1jb21wb25lbnRzIjsKCmV4cG9ydCBjb25zdCBBcHBDb250YWluZXIgPSBzdHlsZWQuZGl2YAogIGRpc3BsYXk6IGZsZXg7CiAgLyogQ29ycmVjdCAqLwogIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgLy8gSW5jb3JyZWN0CiAgZm9udC1mYW1pbHk6ICJXaXggTWFkZWZvciBEaXNwbGF5Iiwgc2Fucy1zZXJpZjsKCiAgQG1lZGlhIChtYXgtd2lkdGg6IDgwMHB4KSB7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgfQpgOwpgYGAKCiMjIEFzeW5jIC8gQXdhaXQKClRoZSB1c2Ugb2YgYGFzeW5jL2F3YWl0YCBpcyBzdXBwb3J0ZWQgYW5kIGV4cGVyaW1lbnRhbC4gSXQgc2hvdWxkIGJlIHVzZWQgb25seSBpbiB0aGUgbWFpbiBzY29wZSBvZiB0aGUgY29tcG9uZW50LiBJdCB3aWxsIG1ha2UgY2hhbmdlcyB0byB0aGUgc3RhdGUgb2YgdGhlIG1haW4gV2lkZ2V0LiBEbyBub3QgdXNlIGluIGhvb2tzLiBCZWxvdyBpcyBhbiBleGFtcGxlIG9mIHVzYWdlOgoKYGBgdHN4CmltcG9ydCB7IGZldGNoLCB1c2VFZmZlY3QgfSBmcm9tICJhbGVtIjsKCmNvbnN0IFNvbWVDb21wb25lbnQgPSAoKSA9PiB7CiAgY29uc3QgZmV0Y2hJdGVtcyA9IGFzeW5jICgpID0+IHsKICAgIGNvbnN0IGl0ZW1zID0gYXdhaXQgZmV0Y2goImh0dHBzOi8vYXBpLmNvbS9pdGVtcyIpOwogIH07CgogIHVzZUVmZmVjdCgoKSA9PiB7CiAgICBmZXRjaEl0ZW1zKCk7CiAgfSwgW10pOwoKICBjb25zb2xlLmxvZyhpdGVtcyk7CgogIHJldHVybiA8PjwvPjsKfTsKYGBgCgojIyBMaW1pdGF0aW9ucwoKLSBUaGUgdXNlIG9mIHRoZSBgaW1wb3J0ICogZm9vIGZyb20gJy4vZm9vJ2Agc2lnbmF0dXJlIGlzIG5vdCBzdXBwb3J0ZWQuIFRoaXMgaXMgaW50ZW50aW9uYWwsIGFzIHRoZSBpZGVhIGlzIHRvIGltcG9ydCBvbmx5IHRoZSBuZWNlc3NhcnkgZnJhZ21lbnRzIGludG8gdGhlIFdpZGdldC4KLSBBbMOpbSBmaXhlcyBkdXBsaWNhdGUgaXRlbSBuYW1lcyBiZWluZyBleHBvcnRlZCBieSB0aGUgYXBwbGljYXRpb24gYXV0b21hdGljYWxseSwgYnV0IHlvdSBzaG91bGQgYXZvaWQgaW1wb3J0aW5nIGEgcmVzb3VyY2UgdGhhdCBoYXMgdGhlIHNhbWUgbmFtZSBhcyBhbnkgdmFyaWFibGUgd2l0aGluIHlvdXIgY29tcG9uZW50LiBFLmcuOgoK4pyFICoqLSBSaWdodCoqCgpgYGB0cwovLyBhQ29udHJhY3QudHMKZXhwb3J0IGNvbnN0IGNvbnRyYWN0SWQgPSAiY29udHJhY3QtaWQtYS5uZWFyIjsKLy8gLi4uCmBgYAoKYGBgdHMKLy8gSG9tZVBhZ2UudHN4CmltcG9ydCB7IGNvbnRyYWN0SWQgfSBmcm9tICcuL2NvbnRyYWN0SWQnOwoKY29uc3QgSG9tZVBhZ2UgPSAoKSA9PiB7CiAgY29uc3QgY29udHJhY3RJZF9CID0gImNvbnRyYWN0LWlkLWIubmVhciIKCiAgcmV0dXJuICgKICAgIC8vIC4uLgogICkKfQoKZXhwb3J0IGRlZmF1bHQgSG9tZVBhZ2U7CmBgYAoK4p2MICoqLSBXcm9uZyoqCgpgYGB0cwovLyBhQ29udHJhY3QudHMKZXhwb3J0IGNvbnN0IGNvbnRyYWN0SWQgPSAiY29udHJhY3QtaWQtYS5uZWFyIjsKZXhwb3J0IGNvbnN0IGNvbnRyYWN0SWRfQyA9ICJjb250cmFjdC1pZC1jLm5lYXIiOwovLyAuLi4KYGBgCgpgYGB0cwovLyBIb21lUGFnZS50c3gKaW1wb3J0IHsgY29udHJhY3RJZF9DIH0gZnJvbSAnLi9jb250cmFjdElkJzsKCmNvbnN0IEhvbWVQYWdlID0gKCkgPT4gewogIC8vIEVSUk9SOiB0aGlzIHdpbGwgYnJlYWsgdGhlIGFwcGxpY2F0aW9uIGJlY2F1c2UgdGhlICJjb250cmFjdElkIiBmcm9tIGFDb250cmFjdC50cyBpcyBhbHNvIGdvaW5nIHRvIGJlCiAgLy8gaW5qZWN0ZWQgdG8gdGhlIGZpbmFsIGZpbGUgYWZ0ZXIgY29tcGlsYXRpb24uCiAgY29uc3QgY29udHJhY3RJZCA9ICJjb250cmFjdC1pZC1iLm5lYXIiOwoKICByZXR1cm4gKAogICAgLy8gLi4uCiAgKQp9CgpleHBvcnQgZGVmYXVsdCBIb21lUGFnZTsKYGBgCg==`, "base64").toString("utf-8"); return } diff --git a/src/md/Installation.tsx b/src/md/Installation.tsx index 873979c..0f10a8f 100644 --- a/src/md/Installation.tsx +++ b/src/md/Installation.tsx @@ -1,7 +1,7 @@ import { Markdown } from 'alem'; const Installation = () => { - const mdContent = Buffer.from(`IyMgSW5zdGFsbGF0aW9uCgoqKllvdeKAmWxsIG5lZWQgdG8gaGF2ZSBOb2RlIDE4LjAuMCBvciBsYXRlciB2ZXJzaW9uIG9uIHlvdXIgbG9jYWwgZGV2ZWxvcG1lbnQgbWFjaGluZSoqLiBZb3UgY2FuIHVzZSBbbnZtXShodHRwczovL2dpdGh1Yi5jb20vY3JlYXRpb25peC9udm0jaW5zdGFsbGF0aW9uKSAobWFjT1MvTGludXgpIG9yIFtudm0td2luZG93c10oaHR0cHM6Ly9naXRodWIuY29tL2NvcmV5YnV0bGVyL252bS13aW5kb3dzI25vZGUtdmVyc2lvbi1tYW5hZ2VyLW52bS1mb3Itd2luZG93cykgdG8gc3dpdGNoIE5vZGUgdmVyc2lvbnMgYmV0d2VlbiBkaWZmZXJlbnQgcHJvamVjdHMuCgpVc2UgdGhlIGNvbW1hbmQgYmVsb3cgdG8gc3RhcnQgYW4gaW5pdGlhbCBib2lsZXJwbGF0ZS4KCiMjIyBKYXZhU2NyaXB0CgpgYGBzaAojIE5weApucHggY3JlYXRlLWFsZW0tZGFwcCBteS1hcHAKY2QgbXktYXBwCm5wbSBzdGFydApgYGAKCmBgYHNoCiMgWWFybgp5YXJuIGNyZWF0ZSBhbGVtLWRhcHAgbXktYXBwCmNkIG15LWFwcAp5YXJuIHN0YXJ0CmBgYAoKIyMjIFR5cGVTY3JpcHQKCmBgYHNoCiMgTnB4Cm5weCBjcmVhdGUtYWxlbS1kYXBwIG15LWFwcCAtLXRlbXBsYXRlIHR5cGVzY3JpcHQKY2QgbXktYXBwCm5wbSBzdGFydApgYGAKCmBgYHNoCiMgWWFybgp5YXJuIGNyZWF0ZSBhbGVtLWRhcHAgbXktYXBwIC0tdGVtcGxhdGUgdHlwZXNjcmlwdApjZCBteS1hcHAKeWFybiBzdGFydApgYGAK`, "base64").toString("utf-8"); + const mdContent = Buffer.from(`IyBJbnN0YWxsYXRpb24KCioqWW914oCZbGwgbmVlZCB0byBoYXZlIE5vZGUgMTguMC4wIG9yIGxhdGVyIHZlcnNpb24gb24geW91ciBsb2NhbCBkZXZlbG9wbWVudCBtYWNoaW5lKiouIFlvdSBjYW4gdXNlIFtudm1dKGh0dHBzOi8vZ2l0aHViLmNvbS9jcmVhdGlvbml4L252bSNpbnN0YWxsYXRpb24pIChtYWNPUy9MaW51eCkgb3IgW252bS13aW5kb3dzXShodHRwczovL2dpdGh1Yi5jb20vY29yZXlidXRsZXIvbnZtLXdpbmRvd3Mjbm9kZS12ZXJzaW9uLW1hbmFnZXItbnZtLWZvci13aW5kb3dzKSB0byBzd2l0Y2ggTm9kZSB2ZXJzaW9ucyBiZXR3ZWVuIGRpZmZlcmVudCBwcm9qZWN0cy4KClVzZSB0aGUgY29tbWFuZCBiZWxvdyB0byBzdGFydCBhbiBpbml0aWFsIGJvaWxlcnBsYXRlLgoKIyMjIEphdmFTY3JpcHQKCmBgYHNoCiMgTnB4Cm5weCBjcmVhdGUtYWxlbS1kYXBwIG15LWFwcApjZCBteS1hcHAKbnBtIHN0YXJ0CmBgYAoKYGBgc2gKIyBZYXJuCnlhcm4gY3JlYXRlIGFsZW0tZGFwcCBteS1hcHAKY2QgbXktYXBwCnlhcm4gc3RhcnQKYGBgCgojIyMgVHlwZVNjcmlwdAoKYGBgc2gKIyBOcHgKbnB4IGNyZWF0ZS1hbGVtLWRhcHAgbXktYXBwIC0tdGVtcGxhdGUgdHlwZXNjcmlwdApjZCBteS1hcHAKbnBtIHN0YXJ0CmBgYAoKYGBgc2gKIyBZYXJuCnlhcm4gY3JlYXRlIGFsZW0tZGFwcCBteS1hcHAgLS10ZW1wbGF0ZSB0eXBlc2NyaXB0CmNkIG15LWFwcAp5YXJuIHN0YXJ0CmBgYAo=`, "base64").toString("utf-8"); return } diff --git a/src/md/api/CreateDebounce.tsx b/src/md/api/CreateDebounce.tsx index fd7f0b4..d03a4fe 100644 --- a/src/md/api/CreateDebounce.tsx +++ b/src/md/api/CreateDebounce.tsx @@ -1,7 +1,7 @@ import { Markdown } from 'alem'; const CreateDebounce = () => { - const mdContent = Buffer.from(`IyMgQ3JlYXRlIERlYm91bmNlCgpDcmVhdGUgYSBkZWJvdW5jZWQgbWV0aG9kIHRvIG9idGFpbiB0aGUgZGF0YSBhZnRlciB0aGUgZGVzaXJlZCBpbnRlcnZhbC4KCmBgYHRzeAppbXBvcnQgeyBjcmVhdGVEZWJvdW5jZSB9IGZyb20gImFsZW0iOwoKY29uc3QgTXlDb21wb25lbnQgPSAoKSA9PiB7CiAgY29uc3QgW3dvcmRzLCBzZXRXb3Jkc10gPSB1c2VTdGF0ZSgiIik7CiAgY29uc3Qgb25JbnB1dENoYW5nZSA9IGNyZWF0ZURlYm91bmNlKChldmVudCkgPT4gc2V0V29yZHMoZXZlbnQudGFyZ2V0LnZhbHVlKSwgMTAwMCk7CgogIC8vIFRoaXMgd2lsbCBiZSBjaGFuZ2VkIDEgc2VjIGFmdGVyIHRoZSB1c2VyIHN0b3BzIHR5cGluZy4KICBjb25zb2xlLmxvZyh3b3Jkcyk7CiAgcmV0dXJuIDxpbnB1dCBvbkNoYW5nZT17b25JbnB1dENoYW5nZX0gdHlwZT0idGV4dCIgLz47Cn07CmBgYAoKVGhpcyBmZWF0dXJlIGlzIGFsc28gYXZhaWxhYmxlIHNlcGFyYXRlbHkgaGVyZTogKipbY3JlYXRlRGVib3VuY2VdKGh0dHBzOi8vbmVhci5vcmcvbmVhci93aWRnZXQvQ29tcG9uZW50RGV0YWlsc1BhZ2U/c3JjPWFsZW0tbGliLm5lYXIvd2lkZ2V0L2NyZWF0ZURlYm91bmNlKSoqIGFuZCBjYW4gYmUgaW5qZWN0ZWQgbGlrZSB0aGlzOgoKYGBganN4Ci8vIFNvbWVXaWRnZXQKY29uc3QgeyBjcmVhdGVEZWJvdW5jZSB9ID0gVk0ucmVxdWlyZSgiYWxlbS1saWIubmVhci93aWRnZXQvY3JlYXRlRGVib3VuY2UiKTsKaWYgKCFjcmVhdGVEZWJvdW5jZSkgcmV0dXJuICIiOwoKY29uc3QgW3dvcmRzLCBzZXRXb3Jkc10gPSB1c2VTdGF0ZSgiIik7CmNvbnN0IG9uSW5wdXRDaGFuZ2UgPSBjcmVhdGVEZWJvdW5jZSgoZXZlbnQpID0+IHNldFdvcmRzKGV2ZW50LnRhcmdldC52YWx1ZSksIDEwMDApOwoKLy8gVGhpcyB3aWxsIGJlIGNoYW5nZWQgMSBzZWMgYWZ0ZXIgdGhlIHVzZXIgc3RvcHMgdHlwaW5nLgpjb25zb2xlLmxvZyh3b3Jkcyk7CgpyZXR1cm4gPGlucHV0IG9uQ2hhbmdlPXtvbklucHV0Q2hhbmdlfSB0eXBlPSJ0ZXh0IiAvPjsKYGBgCg==`, "base64").toString("utf-8"); + const mdContent = Buffer.from(`IyBDcmVhdGUgRGVib3VuY2UKCkNyZWF0ZSBhIGRlYm91bmNlZCBtZXRob2QgdG8gb2J0YWluIHRoZSBkYXRhIGFmdGVyIHRoZSBkZXNpcmVkIGludGVydmFsLgoKYGBgdHN4CmltcG9ydCB7IGNyZWF0ZURlYm91bmNlIH0gZnJvbSAiYWxlbSI7Cgpjb25zdCBNeUNvbXBvbmVudCA9ICgpID0+IHsKICBjb25zdCBbd29yZHMsIHNldFdvcmRzXSA9IHVzZVN0YXRlKCIiKTsKICBjb25zdCBvbklucHV0Q2hhbmdlID0gY3JlYXRlRGVib3VuY2UoKGV2ZW50KSA9PiBzZXRXb3JkcyhldmVudC50YXJnZXQudmFsdWUpLCAxMDAwKTsKCiAgLy8gVGhpcyB3aWxsIGJlIGNoYW5nZWQgMSBzZWMgYWZ0ZXIgdGhlIHVzZXIgc3RvcHMgdHlwaW5nLgogIGNvbnNvbGUubG9nKHdvcmRzKTsKICByZXR1cm4gPGlucHV0IG9uQ2hhbmdlPXtvbklucHV0Q2hhbmdlfSB0eXBlPSJ0ZXh0IiAvPjsKfTsKYGBgCgpUaGlzIGZlYXR1cmUgaXMgYWxzbyBhdmFpbGFibGUgc2VwYXJhdGVseSBoZXJlOiAqKltjcmVhdGVEZWJvdW5jZV0oaHR0cHM6Ly9uZWFyLm9yZy9uZWFyL3dpZGdldC9Db21wb25lbnREZXRhaWxzUGFnZT9zcmM9YWxlbS1saWIubmVhci93aWRnZXQvY3JlYXRlRGVib3VuY2UpKiogYW5kIGNhbiBiZSBpbmplY3RlZCBsaWtlIHRoaXM6CgpgYGBqc3gKLy8gU29tZVdpZGdldApjb25zdCB7IGNyZWF0ZURlYm91bmNlIH0gPSBWTS5yZXF1aXJlKCJhbGVtLWxpYi5uZWFyL3dpZGdldC9jcmVhdGVEZWJvdW5jZSIpOwppZiAoIWNyZWF0ZURlYm91bmNlKSByZXR1cm4gIiI7Cgpjb25zdCBbd29yZHMsIHNldFdvcmRzXSA9IHVzZVN0YXRlKCIiKTsKY29uc3Qgb25JbnB1dENoYW5nZSA9IGNyZWF0ZURlYm91bmNlKChldmVudCkgPT4gc2V0V29yZHMoZXZlbnQudGFyZ2V0LnZhbHVlKSwgMTAwMCk7CgovLyBUaGlzIHdpbGwgYmUgY2hhbmdlZCAxIHNlYyBhZnRlciB0aGUgdXNlciBzdG9wcyB0eXBpbmcuCmNvbnNvbGUubG9nKHdvcmRzKTsKCnJldHVybiA8aW5wdXQgb25DaGFuZ2U9e29uSW5wdXRDaGFuZ2V9IHR5cGU9InRleHQiIC8+OwpgYGAK`, "base64").toString("utf-8"); return } diff --git a/src/md/api/IsDevelopment.tsx b/src/md/api/IsDevelopment.tsx index 79ccfe4..d16cac8 100644 --- a/src/md/api/IsDevelopment.tsx +++ b/src/md/api/IsDevelopment.tsx @@ -1,7 +1,7 @@ import { Markdown } from 'alem'; const IsDevelopment = () => { - const mdContent = Buffer.from(`IyMgaXNEZXZlbG9wbWVudAoKVXNlZnVsIGZlYXR1cmUgdG8ga25vdyBpZiB0aGUgZW52aXJvbm1lbnQgaXMgZGV2ZWxvcG1lbnQgb3IgcHJvZHVjdGlvbi4KCmBgYHRzeAppbXBvcnQgeyBpc0RldmVsb3BtZW50IH0gZnJvbSAiYWxlbSI7Cgpjb25zdCBhbnN3ZXIgPSBpc0RldmVsb3BtZW50ID8gIlllcCIgOiAiTm9wZSI7CmBgYAo=`, "base64").toString("utf-8"); + const mdContent = Buffer.from(`IyBpc0RldmVsb3BtZW50CgpVc2VmdWwgZmVhdHVyZSB0byBrbm93IGlmIHRoZSBlbnZpcm9ubWVudCBpcyBkZXZlbG9wbWVudCBvciBwcm9kdWN0aW9uLgoKYGBgdHN4CmltcG9ydCB7IGlzRGV2ZWxvcG1lbnQgfSBmcm9tICJhbGVtIjsKCmNvbnN0IGFuc3dlciA9IGlzRGV2ZWxvcG1lbnQgPyAiWWVwIiA6ICJOb3BlIjsKYGBgCg==`, "base64").toString("utf-8"); return } diff --git a/src/md/api/LoadExternalStyles.tsx b/src/md/api/LoadExternalStyles.tsx index efdd638..f915225 100644 --- a/src/md/api/LoadExternalStyles.tsx +++ b/src/md/api/LoadExternalStyles.tsx @@ -1,7 +1,7 @@ import { Markdown } from 'alem'; const LoadExternalStyles = () => { - const mdContent = Buffer.from(`IyMgTG9hZCBFeHRlcm5hbCBTdHlsZXMgLSBGb250cyAmIENTUwoKVXNlIHRoaXMgZmVhdHVyZSB0byBsb2FkIGV4dGVybmFsIGZvbnRzIGFuZCBjc3MgZmlsZXMgaW50byB5b3VyIGFwcGxpY2F0aW9uLiAoQWxlbSBzdXBwb3J0cyBsb2NhbCAuY3NzIGZpbGVzIHRvbywgc28geW91IGNhbiBqdXN0IGNyZWF0ZSB0aGVtIGZyb20gdGhlIHByb2plY3QncyByb290IGZvbGRlci4pCgpgbG9hZEV4dGVybmFsU3R5bGVzYCByZXR1cm5zIGEgYGJvb2xlYW5gIGluZm9ybWluZyB3aGV0aGVyIGFsbCBjc3MgZmlsZXMgaGF2ZSBhbHJlYWR5IGJlZW4gbG9hZGVkLgoKWW91IGNhbiB1c2UgYW55IGZvbnRzIGxpa2UgR29vZ2xlIEZvbnRzIG9yIENETiBGb250cy4KCllvdSBtdXN0IHNwZWNpZnkgYGZvbnQtZmFtaWx5YCBpbiB0aGUgYXBwbGljYXRpb24ncyBzdHlsZXMuCgpgYGB0c3gKaW1wb3J0IHsgbG9hZEV4dGVybmFsU3R5bGVzIH0gZnJvbSAiYWxlbSI7Cgpjb25zdCBBcHAgPSAoKSA9PiB7CiAgY29uc3Qgc3R5bGVzTG9hZGVkID0gbG9hZEV4dGVybmFsU3R5bGVzKFsKICAgICJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PU9wZW4rU2FuczppdGFsLHdnaHRAMCwzMDAuLjgwMDsxLDMwMC4uODAwJmRpc3BsYXk9c3dhcCIsCiAgICAiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL2NvZGVtaXJyb3IvY29kZW1pcnJvcjUvbGliL2NvZGVtaXJyb3IuY3NzIiwKICBdKTsKCiAgaWYgKCFzdHlsZXNMb2FkZWQpIHsKICAgIHJldHVybiA8cD5Mb2FkaW5nLi4uPC9wPjsKICB9CgogIHJldHVybiA8cD5NeSBOaWNlIENvbnRlbnQ8L3A+Owp9OwoKZXhwb3J0IGRlZmF1bHQgQXBwOwpgYGAK`, "base64").toString("utf-8"); + const mdContent = Buffer.from(`IyBMb2FkIEV4dGVybmFsIFN0eWxlcyAtIEZvbnRzICYgQ1NTCgpVc2UgdGhpcyBmZWF0dXJlIHRvIGxvYWQgZXh0ZXJuYWwgZm9udHMgYW5kIGNzcyBmaWxlcyBpbnRvIHlvdXIgYXBwbGljYXRpb24uIChBbGVtIHN1cHBvcnRzIGxvY2FsIC5jc3MgZmlsZXMgdG9vLCBzbyB5b3UgY2FuIGp1c3QgY3JlYXRlIHRoZW0gZnJvbSB0aGUgcHJvamVjdCdzIHJvb3QgZm9sZGVyLikKCmBsb2FkRXh0ZXJuYWxTdHlsZXNgIHJldHVybnMgYSBgYm9vbGVhbmAgaW5mb3JtaW5nIHdoZXRoZXIgYWxsIGNzcyBmaWxlcyBoYXZlIGFscmVhZHkgYmVlbiBsb2FkZWQuCgpZb3UgY2FuIHVzZSBhbnkgZm9udHMgbGlrZSBHb29nbGUgRm9udHMgb3IgQ0ROIEZvbnRzLgoKWW91IG11c3Qgc3BlY2lmeSBgZm9udC1mYW1pbHlgIGluIHRoZSBhcHBsaWNhdGlvbidzIHN0eWxlcy4KCmBgYHRzeAppbXBvcnQgeyBsb2FkRXh0ZXJuYWxTdHlsZXMgfSBmcm9tICJhbGVtIjsKCmNvbnN0IEFwcCA9ICgpID0+IHsKICBjb25zdCBzdHlsZXNMb2FkZWQgPSBsb2FkRXh0ZXJuYWxTdHlsZXMoWwogICAgImh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9T3BlbitTYW5zOml0YWwsd2dodEAwLDMwMC4uODAwOzEsMzAwLi44MDAmZGlzcGxheT1zd2FwIiwKICAgICJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvZ2gvY29kZW1pcnJvci9jb2RlbWlycm9yNS9saWIvY29kZW1pcnJvci5jc3MiLAogIF0pOwoKICBpZiAoIXN0eWxlc0xvYWRlZCkgewogICAgcmV0dXJuIDxwPkxvYWRpbmcuLi48L3A+OwogIH0KCiAgcmV0dXJuIDxwPk15IE5pY2UgQ29udGVudDwvcD47Cn07CgpleHBvcnQgZGVmYXVsdCBBcHA7CmBgYAo=`, "base64").toString("utf-8"); return } diff --git a/src/md/api/create-debounce.md b/src/md/api/create-debounce.md index 59b84b1..c59421c 100644 --- a/src/md/api/create-debounce.md +++ b/src/md/api/create-debounce.md @@ -1,4 +1,4 @@ -## Create Debounce +# Create Debounce Create a debounced method to obtain the data after the desired interval. diff --git a/src/md/api/is-development.md b/src/md/api/is-development.md index 58c095a..1dc9ce5 100644 --- a/src/md/api/is-development.md +++ b/src/md/api/is-development.md @@ -1,4 +1,4 @@ -## isDevelopment +# isDevelopment Useful feature to know if the environment is development or production. diff --git a/src/md/api/load-external-styles.md b/src/md/api/load-external-styles.md index d275fc7..5e423a6 100644 --- a/src/md/api/load-external-styles.md +++ b/src/md/api/load-external-styles.md @@ -1,4 +1,4 @@ -## Load External Styles - Fonts & CSS +# Load External Styles - Fonts & CSS Use this feature to load external fonts and css files into your application. (Alem supports local .css files too, so you can just create them from the project's root folder.) diff --git a/src/md/bos-overview.md b/src/md/bos-overview.md index 00b165e..7f4fe9d 100644 --- a/src/md/bos-overview.md +++ b/src/md/bos-overview.md @@ -1,4 +1,4 @@ -## NEAR APIs and Components +# NEAR APIs and Components The native NEAR VM (BOS) resources continue to function. diff --git a/src/md/cli.md b/src/md/cli.md index 9256f6f..ae42462 100644 --- a/src/md/cli.md +++ b/src/md/cli.md @@ -1,4 +1,4 @@ -## Além CLI +# Além CLI Além has its own command system. diff --git a/src/md/config-file.md b/src/md/config-file.md index 19e56a7..3176343 100644 --- a/src/md/config-file.md +++ b/src/md/config-file.md @@ -1,4 +1,4 @@ -## Config File +# Config File Create a `bos.config.json` file at the root of the project with the following content: @@ -29,7 +29,7 @@ Create a `bos.config.json` file at the root of the project with the following co } ``` -## Path Aliases +# Path Aliases You can optionally configure your application's path aliases so that it works together with tsconfig.json, for example. Assuming your project's `tsconfig.json` file has the following configuration for paths: diff --git a/src/md/context/CreateContext.tsx b/src/md/context/CreateContext.tsx index 9fefb06..0f74099 100644 --- a/src/md/context/CreateContext.tsx +++ b/src/md/context/CreateContext.tsx @@ -1,7 +1,7 @@ import { Markdown } from 'alem'; const CreateContext = () => { - const mdContent = Buffer.from(`IyMgQ3JlYXRlIENvbnRleHQKClNpbWlsYXIgdG8gUmVhY3QncyBDb250ZXh0IEFQSSwgQWzDqW0gYWxzbyBwcm92aWRlcyBhIHdheSB0byBjcmVhdGUgY29udGV4dHMuIENvbnRleHRzIGFyZSB2ZXJ5IGhlbHBmdWwgd2hlbiB5b3Ugd2FudCB0byBjcmVhdGUgYSBzcGVjaWZpYyBkYXRhIHN0cnVjdHVyZSBhbmQgcGFzcyBpdCB0byBjaGlsZCBjb21wb25lbnRzLgoKQnkgbmF0dXJlLCBpdCBpcyBub3QgcG9zc2libGUgdG8gbWFuaXB1bGF0ZSBwcm92aWRlciBvYmplY3RzIGF0IHRoZSBzYW1lIGxheWVyIGluIHdoaWNoIHRoZXkgYXJlIHVzZWQsIHNpbWlsYXIgdG8gUmVhY3QuCgoqKlNpbXBsZSBFeGFtcGxlOioqCgpgYGB0c3gKLy8gVXNlclByb3ZpZGVyLnRzeAoKaW1wb3J0IHsgY3JlYXRlQ29udGV4dCB9IGZyb20gImFsZW0iOwoKLy8gSW50ZXJmYWNlCmludGVyZmFjZSBVc2VyQ29udGV4dFByb3BzIHsKICBpc0F1dGhlbnRpY2F0ZWQ6IGJvb2xlYW47CiAgbmFtZTogc3RyaW5nOwp9Cgpjb25zdCBVc2VyUHJvdmlkZXIgPSAoKSA9PiB7CiAgLy8gQ3JlYXRlIGEgcHJvdmlkZXIgdXNpbmcgYSByZWZlcmVuY2Uga2V5CiAgLy8gc2V0RGVmYXVsdERhdGE6IHVzZWQgdG8gc2V0IGluaXRpYWwgZGF0YQogIC8vIHVwZGF0ZURhdGE6IHVzZWQgdG8gdXBkYXRlIGRhdGEKICBjb25zdCB7IHNldERlZmF1bHREYXRhLCB1cGRhdGVEYXRhIH0gPSBjcmVhdGVDb250ZXh0PFVzZXJDb250ZXh0UHJvcHM+KCJ1c2VyLXByb3ZpZGVyIik7CgogIC8vIEluaXRpYWwgLyBkZWZhdWx0IGRhdGEKICBzZXREZWZhdWx0RGF0YSh7CiAgICBpc0F1dGhlbnRpY2F0ZWQ6ICEhY29udGV4dC5hY2NvdW50SWQsCiAgICBhY2NvdW50SWQ6IGNvbnRleHQuYWNjb3VudElkLAogIH0pOwp9OwpgYGAKClVzaW5nIGNvbnRleHQgd2l0aCBgdXNlQ29udGV4dGA6CgpgYGB0c3gKaW1wb3J0IFVzZXJQcm92aWRlciBmcm9tICIuL2NvbnRleHRzL1VzZXJQcm92aWRlciI7Cgpjb25zdCBBcHAgPSAoKSA9PiB7CiAgVXNlclByb3ZpZGVyKCk7CgogIHJldHVybiA8Q2hpbGRDb21wb25lbnQgLz47Cn07CmBgYAoKYGBgdHN4CmltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tICJhbGVtIjsKCmludGVyZmFjZSBVc2VyQ29udGV4dFByb3BzIHsKICBpc0F1dGhlbnRpY2F0ZWQ6IGJvb2xlYW47CiAgbmFtZTogc3RyaW5nOwp9Cgpjb25zdCBDaGlsZENvbXBvbmVudCA9ICgpID0+IHsKICBjb25zdCB1c2VyID0gdXNlQ29udGV4dDxQcm9qZWN0c0NvbnRleHRQcm9wcz4oInVzZXItY29udGV4dCIpOwoKICBjb25zb2xlLmxvZyh1c2VyKTsKICAvLyB7IGlzQXV0aGVudGljYXRlZDogdHJ1ZSwgYWNjb3VudElkOiAid2VuZGVyc29ucGlyZXMubmVhciIgfQoKICByZXR1cm4gIiI7Cn07CmBgYAoKKipIYW5kbGluZyBhc3luYyBkYXRhOioqCgpgYGB0c3gKLy8gQ2FydFByb3ZpZGVyLnRzeAoKaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgYXN5bmNGZXRjaCB9IGZyb20gImFsZW0iOwoKLy8gSW50ZXJmYWNlCmludGVyZmFjZSBDYXJ0Q29udGV4dFByb3BzIHsKICBpdGVtczogc3RyaW5nW107CiAgcmVhZHk6IGJvb2xlYW47CgogIC8vIGFjdGlvbnMKICBmZXRjaENhcnRJdGVtczogKCkgPT4gdm9pZDsKfQoKY29uc3QgQ2FydFByb3ZpZGVyID0gKCkgPT4gewogIGNvbnN0IHsgc2V0RGVmYXVsdERhdGEsIHVwZGF0ZURhdGEgfSA9IGNyZWF0ZUNvbnRleHQ8Q2FydENvbnRleHRQcm9wcz4oImNhcnQtcHJvdmlkZXIiKTsKCiAgLy8gSW5pdGlhbCAvIGRlZmF1bHQgZGF0YQogIHNldERlZmF1bHREYXRhKHsKICAgIGl0ZW1zOiBbXSwKICAgIHJlYWR5OiBmYWxzZSwKCiAgICBmZXRjaENhcnRJdGVtczogKCkgPT4gewogICAgICBjb25zdCBzZWxmID0gdXNlQ29udGV4dDxDYXJ0Q29udGV4dFByb3BzPigiY2FydC1jb250ZXh0Iik7CgogICAgICBpZiAoIXNlbGYucmVhZHkpIHsKICAgICAgICBhc3luY0ZldGNoKCJodHRwczovL2FwaS5jb20vY2FydC9pdGVtcyIpLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAvLyBVcGRhdGUgaXRlbXMKICAgICAgICAgIHVwZGF0ZURhdGEoewogICAgICAgICAgICBpdGVtczogcmVzcG9uc2UuYm9keSwKICAgICAgICAgICAgcmVhZHk6IHRydWUsCiAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgICAgfQogICAgfSwKICB9KTsKCiAgLy8gKE9wdGlvbmFsKTogQXV0byBmZXRjaCBjYXJ0IGl0ZW1zCiAgY29uc3Qgc2VsZiA9IHVzZUNvbnRleHQ8Q2FydENvbnRleHRQcm9wcz4oImNhcnQtY29udGV4dCIpOwogIGlmICghc2VsZi5yZWFkeSkgewogICAgc2VsZi5mZXRjaENhcnRJdGVtcygpOwogIH0KfTsKYGBgCgpUaGVuIHlvdSBjYW4gdXNlIHRoZSBkYXRhOgoKYGBgdHN4CmltcG9ydCBDYXJ0UHJvdmlkZXIgZnJvbSAiLi9jb250ZXh0cy9DYXJ0UHJvdmlkZXIiOwoKY29uc3QgQXBwID0gKCkgPT4gewogIENhcnRQcm92aWRlcigpOwoKICByZXR1cm4gPENoaWxkQ29tcG9uZW50IC8+Owp9OwpgYGAKCmBgYHRzeAppbXBvcnQgeyB1c2VDb250ZXh0LCB1c2VFZmZlY3QgfSBmcm9tICJhbGVtIjsKCmludGVyZmFjZSBDYXJ0Q29udGV4dFByb3BzIHsKICBpdGVtczogc3RyaW5nW107CiAgcmVhZHk6IGJvb2xlYW47CiAgZmV0Y2hDYXJ0SXRlbXM6ICgpID0+IHZvaWQ7Cn0KCmNvbnN0IENoaWxkQ29tcG9uZW50ID0gKCkgPT4gewogIGNvbnN0IGNhcnQgPSB1c2VDb250ZXh0PENhcnRDb250ZXh0UHJvcHM+KCJjYXJ0LWNvbnRleHQiKTsKCiAgdXNlRWZmZWN0KCgpID0+IHsKICAgIC8vIEZldGNoIGNhcnQgaXRlbXMgKGluIGNhc2UgeW91IGFyZSBub3QgdXNpbmcgdGhlIGF1dG8gZmV0Y2gpCiAgICBjYXJ0LmZldGNoQ2FydEl0ZW1zKCk7CiAgfSwgW10pOwoKICBjb25zb2xlLmxvZyhjYXJ0Lml0ZW1zKTsKICAvLyBbaXRlbTEsIGl0ZW0yLCBpdGVtMywgLi4uXQoKICByZXR1cm4gIiI7Cn07CmBgYAo=`, "base64").toString("utf-8"); + const mdContent = Buffer.from(`IyBDcmVhdGUgQ29udGV4dAoKU2ltaWxhciB0byBSZWFjdCdzIENvbnRleHQgQVBJLCBBbMOpbSBhbHNvIHByb3ZpZGVzIGEgd2F5IHRvIGNyZWF0ZSBjb250ZXh0cy4gQ29udGV4dHMgYXJlIHZlcnkgaGVscGZ1bCB3aGVuIHlvdSB3YW50IHRvIGNyZWF0ZSBhIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlIGFuZCBwYXNzIGl0IHRvIGNoaWxkIGNvbXBvbmVudHMuCgpCeSBuYXR1cmUsIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBtYW5pcHVsYXRlIHByb3ZpZGVyIG9iamVjdHMgYXQgdGhlIHNhbWUgbGF5ZXIgaW4gd2hpY2ggdGhleSBhcmUgdXNlZCwgc2ltaWxhciB0byBSZWFjdC4KCioqU2ltcGxlIEV4YW1wbGU6KioKCmBgYHRzeAovLyBVc2VyUHJvdmlkZXIudHN4CgppbXBvcnQgeyBjcmVhdGVDb250ZXh0IH0gZnJvbSAiYWxlbSI7CgovLyBJbnRlcmZhY2UKaW50ZXJmYWNlIFVzZXJDb250ZXh0UHJvcHMgewogIGlzQXV0aGVudGljYXRlZDogYm9vbGVhbjsKICBuYW1lOiBzdHJpbmc7Cn0KCmNvbnN0IFVzZXJQcm92aWRlciA9ICgpID0+IHsKICAvLyBDcmVhdGUgYSBwcm92aWRlciB1c2luZyBhIHJlZmVyZW5jZSBrZXkKICAvLyBzZXREZWZhdWx0RGF0YTogdXNlZCB0byBzZXQgaW5pdGlhbCBkYXRhCiAgLy8gdXBkYXRlRGF0YTogdXNlZCB0byB1cGRhdGUgZGF0YQogIGNvbnN0IHsgc2V0RGVmYXVsdERhdGEsIHVwZGF0ZURhdGEgfSA9IGNyZWF0ZUNvbnRleHQ8VXNlckNvbnRleHRQcm9wcz4oInVzZXItcHJvdmlkZXIiKTsKCiAgLy8gSW5pdGlhbCAvIGRlZmF1bHQgZGF0YQogIHNldERlZmF1bHREYXRhKHsKICAgIGlzQXV0aGVudGljYXRlZDogISFjb250ZXh0LmFjY291bnRJZCwKICAgIGFjY291bnRJZDogY29udGV4dC5hY2NvdW50SWQsCiAgfSk7Cn07CmBgYAoKIyBVc2UgQ29udGV4dAoKVXNpbmcgY29udGV4dCB3aXRoIGB1c2VDb250ZXh0YDoKCmBgYHRzeAppbXBvcnQgVXNlclByb3ZpZGVyIGZyb20gIi4vY29udGV4dHMvVXNlclByb3ZpZGVyIjsKCmNvbnN0IEFwcCA9ICgpID0+IHsKICBVc2VyUHJvdmlkZXIoKTsKCiAgcmV0dXJuIDxDaGlsZENvbXBvbmVudCAvPjsKfTsKYGBgCgpgYGB0c3gKaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gImFsZW0iOwoKaW50ZXJmYWNlIFVzZXJDb250ZXh0UHJvcHMgewogIGlzQXV0aGVudGljYXRlZDogYm9vbGVhbjsKICBuYW1lOiBzdHJpbmc7Cn0KCmNvbnN0IENoaWxkQ29tcG9uZW50ID0gKCkgPT4gewogIGNvbnN0IHVzZXIgPSB1c2VDb250ZXh0PFByb2plY3RzQ29udGV4dFByb3BzPigidXNlci1jb250ZXh0Iik7CgogIGNvbnNvbGUubG9nKHVzZXIpOwogIC8vIHsgaXNBdXRoZW50aWNhdGVkOiB0cnVlLCBhY2NvdW50SWQ6ICJ3ZW5kZXJzb25waXJlcy5uZWFyIiB9CgogIHJldHVybiAiIjsKfTsKYGBgCgoqKkhhbmRsaW5nIGFzeW5jIGRhdGE6KioKCmBgYHRzeAovLyBDYXJ0UHJvdmlkZXIudHN4CgppbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0LCBhc3luY0ZldGNoIH0gZnJvbSAiYWxlbSI7CgovLyBJbnRlcmZhY2UKaW50ZXJmYWNlIENhcnRDb250ZXh0UHJvcHMgewogIGl0ZW1zOiBzdHJpbmdbXTsKICByZWFkeTogYm9vbGVhbjsKCiAgLy8gYWN0aW9ucwogIGZldGNoQ2FydEl0ZW1zOiAoKSA9PiB2b2lkOwp9Cgpjb25zdCBDYXJ0UHJvdmlkZXIgPSAoKSA9PiB7CiAgY29uc3QgeyBzZXREZWZhdWx0RGF0YSwgdXBkYXRlRGF0YSB9ID0gY3JlYXRlQ29udGV4dDxDYXJ0Q29udGV4dFByb3BzPigiY2FydC1wcm92aWRlciIpOwoKICAvLyBJbml0aWFsIC8gZGVmYXVsdCBkYXRhCiAgc2V0RGVmYXVsdERhdGEoewogICAgaXRlbXM6IFtdLAogICAgcmVhZHk6IGZhbHNlLAoKICAgIGZldGNoQ2FydEl0ZW1zOiAoKSA9PiB7CiAgICAgIGNvbnN0IHNlbGYgPSB1c2VDb250ZXh0PENhcnRDb250ZXh0UHJvcHM+KCJjYXJ0LWNvbnRleHQiKTsKCiAgICAgIGlmICghc2VsZi5yZWFkeSkgewogICAgICAgIGFzeW5jRmV0Y2goImh0dHBzOi8vYXBpLmNvbS9jYXJ0L2l0ZW1zIikudGhlbigocmVzcG9uc2UpID0+IHsKICAgICAgICAgIC8vIFVwZGF0ZSBpdGVtcwogICAgICAgICAgdXBkYXRlRGF0YSh7CiAgICAgICAgICAgIGl0ZW1zOiByZXNwb25zZS5ib2R5LAogICAgICAgICAgICByZWFkeTogdHJ1ZSwKICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgICB9CiAgICB9LAogIH0pOwoKICAvLyAoT3B0aW9uYWwpOiBBdXRvIGZldGNoIGNhcnQgaXRlbXMKICBjb25zdCBzZWxmID0gdXNlQ29udGV4dDxDYXJ0Q29udGV4dFByb3BzPigiY2FydC1jb250ZXh0Iik7CiAgaWYgKCFzZWxmLnJlYWR5KSB7CiAgICBzZWxmLmZldGNoQ2FydEl0ZW1zKCk7CiAgfQp9OwpgYGAKClRoZW4geW91IGNhbiB1c2UgdGhlIGRhdGE6CgpgYGB0c3gKaW1wb3J0IENhcnRQcm92aWRlciBmcm9tICIuL2NvbnRleHRzL0NhcnRQcm92aWRlciI7Cgpjb25zdCBBcHAgPSAoKSA9PiB7CiAgQ2FydFByb3ZpZGVyKCk7CgogIHJldHVybiA8Q2hpbGRDb21wb25lbnQgLz47Cn07CmBgYAoKYGBgdHN4CmltcG9ydCB7IHVzZUNvbnRleHQsIHVzZUVmZmVjdCB9IGZyb20gImFsZW0iOwoKaW50ZXJmYWNlIENhcnRDb250ZXh0UHJvcHMgewogIGl0ZW1zOiBzdHJpbmdbXTsKICByZWFkeTogYm9vbGVhbjsKICBmZXRjaENhcnRJdGVtczogKCkgPT4gdm9pZDsKfQoKY29uc3QgQ2hpbGRDb21wb25lbnQgPSAoKSA9PiB7CiAgY29uc3QgY2FydCA9IHVzZUNvbnRleHQ8Q2FydENvbnRleHRQcm9wcz4oImNhcnQtY29udGV4dCIpOwoKICB1c2VFZmZlY3QoKCkgPT4gewogICAgLy8gRmV0Y2ggY2FydCBpdGVtcyAoaW4gY2FzZSB5b3UgYXJlIG5vdCB1c2luZyB0aGUgYXV0byBmZXRjaCkKICAgIGNhcnQuZmV0Y2hDYXJ0SXRlbXMoKTsKICB9LCBbXSk7CgogIGNvbnNvbGUubG9nKGNhcnQuaXRlbXMpOwogIC8vIFtpdGVtMSwgaXRlbTIsIGl0ZW0zLCAuLi5dCgogIHJldHVybiAiIjsKfTsKYGBgCg==`, "base64").toString("utf-8"); return } diff --git a/src/md/context/create-context.md b/src/md/context/create-context.md index c919908..3e19bff 100644 --- a/src/md/context/create-context.md +++ b/src/md/context/create-context.md @@ -1,4 +1,4 @@ -## Create Context +# Create Context Similar to React's Context API, Além also provides a way to create contexts. Contexts are very helpful when you want to create a specific data structure and pass it to child components. @@ -31,6 +31,8 @@ const UserProvider = () => { }; ``` +# Use Context + Using context with `useContext`: ```tsx diff --git a/src/md/deploying-with-github-actions.md b/src/md/deploying-with-github-actions.md index b05740e..c38075a 100644 --- a/src/md/deploying-with-github-actions.md +++ b/src/md/deploying-with-github-actions.md @@ -1,4 +1,4 @@ -## Deploying App With GitHub Actions +# Deploying App With GitHub Actions To deploy widgets on push to branch, create a GitHub Actions workflow file in your repository. diff --git a/src/md/installation.md b/src/md/installation.md index 58f94ad..40e4ab3 100644 --- a/src/md/installation.md +++ b/src/md/installation.md @@ -1,4 +1,4 @@ -## Installation +# Installation **You’ll need to have Node 18.0.0 or later version on your local development machine**. You can use [nvm](https://github.com/creationix/nvm#installation) (macOS/Linux) or [nvm-windows](https://github.com/coreybutler/nvm-windows#node-version-manager-nvm-for-windows) to switch Node versions between different projects. diff --git a/src/md/router/GetLocation.tsx b/src/md/router/GetLocation.tsx index 02cbf2e..d9c7368 100644 --- a/src/md/router/GetLocation.tsx +++ b/src/md/router/GetLocation.tsx @@ -1,7 +1,7 @@ import { Markdown } from 'alem'; const GetLocation = () => { - const mdContent = Buffer.from(`IyMgR2V0IExvY2F0aW9uCgpUaGlzIGhvb2sgcmV0dXJucyB0aGUgY3VycmVudCBsb2NhdGlvbiBvYmplY3QuIEl0IGNhbiBiZSB1c2VmdWwgaWYgeW91J2QgbGlrZSB0byBwZXJmb3JtIHNvbWUgc2lkZSBlZmZlY3Qgd2hlbmV2ZXIgdGhlIGN1cnJlbnQgbG9jYXRpb24gY2hhbmdlcy4KClVzZSBgZ2V0TG9jYXRpb24oKS5pc1JvdXRlc1JlYWR5YCB0byBnZXQgdG8ga25vdyB3aGVuIHRoZSByb3V0ZXMgYXJlIHJlYWR5IHRvIGJlIGFjY2Vzc2VkLgoKSXQgc2hvdWxkIGJlIHVzZWQgd2l0aCBgUm91dGVyYC4KCmBgYHRzCi8vIGh0dHA6Ly8xMjcuMC4wLjE6ODA4MC9hbGVtLWxpYi5uZWFyL3dpZGdldC9JbmRleD9wYXRoPXByb2ZpbGUKaW1wb3J0IHsgZ2V0TG9jYXRpb24gfSBmcm9tICJhbGVtIjsKCmV4cG9ydCBjb25zdCBTb21lQ29tcG9uZW50ID0gKCkgPT4gewogIGNvbnN0IGxvY2F0aW9uID0gZ2V0TG9jYXRpb24oKTsKICBjb25zb2xlLmxvZyhsb2NhdGlvbik7CiAgLy8geyBpc1JvdXRlc1JlYWR5OiB0cnVlLCBwYXRobmFtZTogInByb2ZpbGUiLCByb3V0ZXM6IFsiaG9tZSIsICJwcm9maWxlIl0gfQoKICByZXR1cm4gIiI7Cn07CmBgYAo=`, "base64").toString("utf-8"); + const mdContent = Buffer.from(`IyBHZXQgTG9jYXRpb24KClRoaXMgaG9vayByZXR1cm5zIHRoZSBjdXJyZW50IGxvY2F0aW9uIG9iamVjdC4gSXQgY2FuIGJlIHVzZWZ1bCBpZiB5b3UnZCBsaWtlIHRvIHBlcmZvcm0gc29tZSBzaWRlIGVmZmVjdCB3aGVuZXZlciB0aGUgY3VycmVudCBsb2NhdGlvbiBjaGFuZ2VzLgoKVXNlIGBnZXRMb2NhdGlvbigpLmlzUm91dGVzUmVhZHlgIHRvIGdldCB0byBrbm93IHdoZW4gdGhlIHJvdXRlcyBhcmUgcmVhZHkgdG8gYmUgYWNjZXNzZWQuCgpJdCBzaG91bGQgYmUgdXNlZCB3aXRoIGBSb3V0ZXJgLgoKYGBgdHMKLy8gaHR0cDovLzEyNy4wLjAuMTo4MDgwL2FsZW0tbGliLm5lYXIvd2lkZ2V0L0luZGV4P3BhdGg9cHJvZmlsZQppbXBvcnQgeyBnZXRMb2NhdGlvbiB9IGZyb20gImFsZW0iOwoKZXhwb3J0IGNvbnN0IFNvbWVDb21wb25lbnQgPSAoKSA9PiB7CiAgY29uc3QgbG9jYXRpb24gPSBnZXRMb2NhdGlvbigpOwogIGNvbnNvbGUubG9nKGxvY2F0aW9uKTsKICAvLyB7IGlzUm91dGVzUmVhZHk6IHRydWUsIHBhdGhuYW1lOiAicHJvZmlsZSIsIHJvdXRlczogWyJob21lIiwgInByb2ZpbGUiXSB9CgogIHJldHVybiAiIjsKfTsKYGBgCg==`, "base64").toString("utf-8"); return } diff --git a/src/md/router/Navigate.tsx b/src/md/router/Navigate.tsx index c2f5330..0cb4d97 100644 --- a/src/md/router/Navigate.tsx +++ b/src/md/router/Navigate.tsx @@ -1,7 +1,7 @@ import { Markdown } from 'alem'; const Navigate = () => { - const mdContent = Buffer.from(`IyMgTmF2aWdhdGUKClRoaXMgZmVhdHVyZSBtYWtlcyBpdCBwb3NzaWJsZSB0byBwcm9ncmFtbWF0aWNhbGx5IG5hdmlnYXRlIHRvIGF2YWlsYWJsZSByb3V0ZXMuIFRoZSBVUkwgd2lsbCBub3QgYmUgYWZmZWN0ZWQhCgpJdCBzaG91bGQgYmUgdXNlZCB3aXRoIGBSb3V0ZXJgLgoKYGBgdHN4CmltcG9ydCB7IG5hdmlnYXRlIH0gZnJvbSAiYWxlbSI7CgpleHBvcnQgY29uc3QgU29tZUNvbXBvbmVudCA9ICgpID0+IHsKICBjb25zdCBvbkNsaWNrSGFuZGxlciA9ICgpID0+IHsKICAgIG5hdmlnYXRlKCJwcm9maWxlIik7CiAgfTsKCiAgcmV0dXJuIDxidXR0b24gb25DbGljaz17b25DbGlja0hhbmRsZXJ9PkdvIHRvIFByb2ZpbGU8L2J1dHRvbj47Cn07CmBgYAo=`, "base64").toString("utf-8"); + const mdContent = Buffer.from(`IyBOYXZpZ2F0ZQoKVGhpcyBmZWF0dXJlIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHByb2dyYW1tYXRpY2FsbHkgbmF2aWdhdGUgdG8gYXZhaWxhYmxlIHJvdXRlcy4gVGhlIFVSTCB3aWxsIG5vdCBiZSBhZmZlY3RlZCEKCkl0IHNob3VsZCBiZSB1c2VkIHdpdGggYFJvdXRlcmAuCgpgYGB0c3gKaW1wb3J0IHsgbmF2aWdhdGUgfSBmcm9tICJhbGVtIjsKCmV4cG9ydCBjb25zdCBTb21lQ29tcG9uZW50ID0gKCkgPT4gewogIGNvbnN0IG9uQ2xpY2tIYW5kbGVyID0gKCkgPT4gewogICAgbmF2aWdhdGUoInByb2ZpbGUiKTsKICB9OwoKICByZXR1cm4gPGJ1dHRvbiBvbkNsaWNrPXtvbkNsaWNrSGFuZGxlcn0+R28gdG8gUHJvZmlsZTwvYnV0dG9uPjsKfTsKYGBgCg==`, "base64").toString("utf-8"); return } diff --git a/src/md/router/RouteLinkDocs.tsx b/src/md/router/RouteLinkDocs.tsx index 49bd49c..100540e 100644 --- a/src/md/router/RouteLinkDocs.tsx +++ b/src/md/router/RouteLinkDocs.tsx @@ -1,7 +1,7 @@ import { Markdown } from 'alem'; const RouteLinkDocs = () => { - const mdContent = Buffer.from(`IyMgUm91dGUgTGluawoKVGhpcyBjb21wb25lbnQgY3JlYXRlcyBhIGA8YSAvPmAgZWxlbWVudCBhbmQgaXMgdXNlZCB0byBhbGxvdyB1c2VycyB0byBuYXZpZ2F0ZSBiZXR3ZWVuIHJvdXRlcy4gWW91IG11c3QgaW5mb3JtIHRoZSBkZXN0aW5hdGlvbiBwYXRoIHVzaW5nIHRoZSBgdG9gIHByb3BlcnR5LiBJdCBhbHNvIHN1cHBvcnQgYGNsYXNzTmFtZWAsIGBzdHlsZWAgYW5kIGBvbkNsaWNrYCBwcm9wZXJ0aWVzLgoKSXQgc2hvdWxkIGJlIHVzZWQgd2l0aCBgUm91dGVyYC4KCmBgYHRzeAppbXBvcnQgeyBSb3V0ZUxpbmsgfSBmcm9tICJhbGVtIjsKCmV4cG9ydCBjb25zdCBTb21lQ29tcG9uZW50ID0gKCkgPT4gewogIHJldHVybiAoCiAgICA8Um91dGVMaW5rIHRvPSJwcm9maWxlIj4KICAgICAgPHA+R28gdG8gUHJvZmlsZTwvcD4KICAgIDwvUm91dGVMaW5rPgogICk7Cn07CmBgYAo=`, "base64").toString("utf-8"); + const mdContent = Buffer.from(`IyBSb3V0ZSBMaW5rCgpUaGlzIGNvbXBvbmVudCBjcmVhdGVzIGEgYDxhIC8+YCBlbGVtZW50IGFuZCBpcyB1c2VkIHRvIGFsbG93IHVzZXJzIHRvIG5hdmlnYXRlIGJldHdlZW4gcm91dGVzLiBZb3UgbXVzdCBpbmZvcm0gdGhlIGRlc3RpbmF0aW9uIHBhdGggdXNpbmcgdGhlIGB0b2AgcHJvcGVydHkuIEl0IGFsc28gc3VwcG9ydCBgY2xhc3NOYW1lYCwgYHN0eWxlYCBhbmQgYG9uQ2xpY2tgIHByb3BlcnRpZXMuCgpgUm91dGVMaW5rYCBhY3RzIGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiB0aGUgYFJvdXRlcmAgY29uZmlndXJhdGlvbi4gSWYgdGhlIFJvdXRlciB0eXBlIGlzIGAiVVJMQmFzZWQiYCwgaXQgd2lsbCBzaW1wbHkgdXNlIHRoZSBuYXRpdmUgYW5jaG9yIGZ1bmN0aW9uIHRvIGdvIHRvIHRoZSBuZXcgVVJMLiBJZiB0aGUgdHlwZSBpcyBgIkNvbnRlbnRCYXNlZCJgIGl0IHdpbGwgY2FsbCB0aGUgUm91dGVyJ3MgYG5hdmlnYXRlYCBmdW5jdGlvbiBhbmQgd2lsbCBkaXNwbGF5IHRoZSBuZXcgcGFnZSB3aXRob3V0IGNhdXNpbmcgYSByZWZyZXNoLCBob3dldmVyLCB0aGUgVVJMIGlzIG5vdCBjaGFuZ2VkLgoKSXQgc2hvdWxkIGJlIHVzZWQgd2l0aCBgUm91dGVyYC4KCmBgYHRzeAppbXBvcnQgeyBSb3V0ZUxpbmsgfSBmcm9tICJhbGVtIjsKCmV4cG9ydCBjb25zdCBTb21lQ29tcG9uZW50ID0gKCkgPT4gewogIHJldHVybiAoCiAgICA8Um91dGVMaW5rIHRvPSJwcm9maWxlIj4KICAgICAgPHA+R28gdG8gUHJvZmlsZTwvcD4KICAgIDwvUm91dGVMaW5rPgogICk7Cn07CmBgYAo=`, "base64").toString("utf-8"); return } diff --git a/src/md/router/RoutesDocs.tsx b/src/md/router/RoutesDocs.tsx index 0bdb38e..093ba17 100644 --- a/src/md/router/RoutesDocs.tsx +++ b/src/md/router/RoutesDocs.tsx @@ -1,7 +1,7 @@ import { Markdown } from 'alem'; const RoutesDocs = () => { - const mdContent = Buffer.from(`IyMgUm91dGVzCgpUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIHJvdXRlIG1hbmFnZXJzIHByb3ZpZGVkIGJ5IEFsw6ltOiBgUm91dGVyYCBhbmQgYFNpbXBsZVJvdXRlcmAuCgojIyBSb3V0ZXIKClRoaXMgY29tcG9uZW50IGlzIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgY29udGVudCB0byBiZSBkaXNwbGF5ZWQgb24gdGhlIHNjcmVlbiBhY2NvcmRpbmcgdG8gdGhlIGFjdGl2ZSByb3V0ZS4gWW91IGNhbiB1c2UgdGhlIGBjcmVhdGVSb3V0ZWAgcmVzb3VyY2UgdG8gY3JlYXRlIGFwcGxpY2F0aW9uIHJvdXRlcyBhbmQgcGFzcyB0aGVtIHRvIHRoZSBSb3V0ZXIuCgpgYGB0c3gKaW1wb3J0IHsgUm91dGVyUHJvdmlkZXIsIFJvdXRlciwgY3JlYXRlUm91dGUgfSBmcm9tICJhbGVtIjsKCmltcG9ydCBIb21lUGFnZSBmcm9tICIuL0hvbWVQYWdlIjsKaW1wb3J0IFByb2ZpbGVQYWdlIGZyb20gIi4vUHJvZmlsZVBhZ2UiOwoKY29uc3QgQXBwUm91dGVzID0gKCkgPT4gewoKICAvLyBJdCBtdXN0IGJlIHBsYWNlZCBhYm92ZSBhbGwgcmVzb3VyY2VzIHRoYXQgd2lsbCB1c2UgdGhlIFJvdXRlciB0b29scy4KICBSb3V0ZXJQcm92aWRlcigpOwoKICAvLyBDcmVhdGluZyByb3V0ZXMKICBjb25zdCBIb21lUGFnZVJvdXRlID0gY3JlYXRlUm91dGUoImhvbWUiLCBIb21lUGFnZSk7CiAgY29uc3QgUHJvZmlsZVBhZ2VSb3V0ZSA9IGNyZWF0ZVJvdXRlKCJwcm9maWxlIiwgUHJvZmlsZVBhZ2UpOwoKICBjb25zdCByb3V0ZXMgPSBbCiAgICBIb21lUGFnZVJvdXRlLAogICAgUHJvZmlsZVBhZ2VSb3V0ZSwKICBdCgogIC8vIEluaXRpYWxpemluZyBSb3V0ZXMKICByZXR1cm4gKAogICAgPFJvdXRlcgogICAgICBwYXJhbWV0ZXJOYW1lPSJ0YWIiIHsvKiBPcHRpb25hbDogZGVmYXVsdCBpcyAicGF0aCIgKi99CiAgICAgIHR5cGU9IkNvbnRlbnRCYXNlZCIgey8qIE9wdGlvbmFsOiBkZWZhdWx0IGlzICJVUkxCYXNlZCIgKi99CiAgICAgIHJvdXRlcz17cm91dGVzfQogICAgLz4KICApOwp9OwoKZXhwb3J0IGRlZmF1bHQgQXBwUm91dGVzOwpgYGAKCiMjIFR5cGVzIG9mIEJlaGF2aW9yCgpgUm91dGVyYCBjYW4gaGFuZGxlIGxpbmtzIGluIHR3byB3YXlzOgoKLSAqKlVSTEJhc2VkOioqIFRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IuIEV2ZXJ5IGxpbmsgd2lsbCByZWxvYWQgdGhlIHBhZ2UgYnkgY2hhbmdpbmcgdGhlIFVSTCBzdHJ1Y3R1cmUgaW4gdGhlIGJyb3dzZXI7Ci0gKipDb250ZW50QmFzZWQ6KiogVGhpcyBiZWhhdmlvciBkb2VzIG5vdCBjaGFuZ2UgdGhlIFVSTCBpbiB0aGUgYnJvd3NlciBhbmQgZG9lcyBub3QgcmVsb2FkIHRoZSBwYWdlLiBUaGVyZWZvcmUsIGl0IGlzIGZhc3RlciB0byBkaXNwbGF5IGNvbnRlbnQgb24gdGhlIHNjcmVlbi4KCllvdSBjYW4gcGFzcyB0aGUgdHlwZSBvZiBiZWhhdmlvciB1c2luZyB0aGUgYHR5cGVgIHByb3BlcnR5IG9mIFJvdXRlcy4KCmBgYHRzeAovKiBVUkwgQmFzZWQgKi8KPFJvdXRlcgogIHJvdXRlcz17W0ZlYXR1cmVPdmVydmlld1JvdXRlLCBTdGF0ZU1hbmFnZW1lbnRSb3V0ZV19CiAgdHlwZT0iVVJMQmFzZWQiCi8+CgovKiBDb250ZW50IEJhc2VkICovCjxSb3V0ZXIKICByb3V0ZXM9e1tGZWF0dXJlT3ZlcnZpZXdSb3V0ZSwgU3RhdGVNYW5hZ2VtZW50Um91dGVdfQogIHR5cGU9IkNvbnRlbnRCYXNlZCIKLz4KYGBgCgojIyBTaW1wbGVSb3V0ZXIKClRoaXMgcm91dGVyIHVzZXMgdGhlIFVSTCB0byBkZXRlcm1pbmUgd2hpY2ggY29udGVudCB0byBkaXNwbGF5IG9uIHRoZSBzY3JlZW4uIEl0IHdvcmtzIHNpbWlsYXJseSB0byB0aGUgYFVSTEJhc2VkYCBhcHByb2FjaCBvZiB0aGUgYFJvdXRlcmAuCgpgYGB0c3gKaW1wb3J0IHsgU2ltcGxlUm91dGVyLCBjcmVhdGVSb3V0ZSB9IGZyb20gImFsZW0iOwoKaW1wb3J0IEhvbWVQYWdlIGZyb20gIi4vSG9tZVBhZ2UiOwppbXBvcnQgUHJvZmlsZVBhZ2UgZnJvbSAiLi9Qcm9maWxlUGFnZSI7Cgpjb25zdCBBcHBSb3V0ZXMgPSAoKSA9PiB7CiAgLy8gQ3JlYXRpbmcgcm91dGVzCiAgY29uc3QgSG9tZVBhZ2VSb3V0ZSA9IGNyZWF0ZVJvdXRlKCJob21lIiwgSG9tZVBhZ2UpOwogIGNvbnN0IFByb2ZpbGVQYWdlUm91dGUgPSBjcmVhdGVSb3V0ZSgicHJvZmlsZSIsIFByb2ZpbGVQYWdlKTsKICBjb25zdCByb3V0ZXMgPSBbSG9tZVBhZ2VSb3V0ZSwgUHJvZmlsZVBhZ2VSb3V0ZV07CgogIC8vIHBhcmFtZXRlck5hbWUgPT4gT3B0aW9uYWw6IGRlZmF1bHQgaXMgInBhdGgiCiAgcmV0dXJuIDxTaW1wbGVSb3V0ZXIgcm91dGVzPXtyb3V0ZXN9IHBhcmFtZXRlck5hbWU9InRhYiIgLz47Cn07CgpleHBvcnQgZGVmYXVsdCBBcHBSb3V0ZXM7CmBgYAoKVXNpbmcgYFNpbXBsZVJvdXRlcmAsIHlvdSBjYW4gdXNlIGFueSBhbmNob3IgZWxlbWVudCBgPGE+PC9hPmAgdG8gbmF2aWdhdGUgdG8gYW5vdGhlciBwYWdlLCBmb3IgZXhhbXBsZToKCmBgYHRzeAo8YSBocmVmPSJ0YWI9cHJvZmlsZSI+R28gVG8gUHJvZmlsZTwvcD4KYGBgCg==`, "base64").toString("utf-8"); + const mdContent = Buffer.from(`IyBSb3V0ZXMKClRoZXJlIGFyZSB0d28gdHlwZXMgb2Ygcm91dGUgbWFuYWdlcnMgcHJvdmlkZWQgYnkgQWzDqW06IGBSb3V0ZXJgIGFuZCBgU2ltcGxlUm91dGVyYC4KCiMgUm91dGVyCgpUaGlzIGNvbXBvbmVudCBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIGNvbnRlbnQgdG8gYmUgZGlzcGxheWVkIG9uIHRoZSBzY3JlZW4gYWNjb3JkaW5nIHRvIHRoZSBhY3RpdmUgcm91dGUuIFlvdSBjYW4gdXNlIHRoZSBgY3JlYXRlUm91dGVgIHJlc291cmNlIHRvIGNyZWF0ZSBhcHBsaWNhdGlvbiByb3V0ZXMgYW5kIHBhc3MgdGhlbSB0byB0aGUgUm91dGVyLgoKYGBgdHN4CmltcG9ydCB7IFJvdXRlclByb3ZpZGVyLCBSb3V0ZXIsIGNyZWF0ZVJvdXRlIH0gZnJvbSAiYWxlbSI7CgppbXBvcnQgSG9tZVBhZ2UgZnJvbSAiLi9Ib21lUGFnZSI7CmltcG9ydCBQcm9maWxlUGFnZSBmcm9tICIuL1Byb2ZpbGVQYWdlIjsKCmNvbnN0IEFwcFJvdXRlcyA9ICgpID0+IHsKCiAgLy8gSXQgbXVzdCBiZSBwbGFjZWQgYWJvdmUgYWxsIHJlc291cmNlcyB0aGF0IHdpbGwgdXNlIHRoZSBSb3V0ZXIgdG9vbHMuCiAgUm91dGVyUHJvdmlkZXIoKTsKCiAgLy8gQ3JlYXRpbmcgcm91dGVzCiAgY29uc3QgSG9tZVBhZ2VSb3V0ZSA9IGNyZWF0ZVJvdXRlKCJob21lIiwgSG9tZVBhZ2UpOwogIGNvbnN0IFByb2ZpbGVQYWdlUm91dGUgPSBjcmVhdGVSb3V0ZSgicHJvZmlsZSIsIFByb2ZpbGVQYWdlKTsKCiAgY29uc3Qgcm91dGVzID0gWwogICAgSG9tZVBhZ2VSb3V0ZSwKICAgIFByb2ZpbGVQYWdlUm91dGUsCiAgXQoKICAvLyBJbml0aWFsaXppbmcgUm91dGVzCiAgcmV0dXJuICgKICAgIDxSb3V0ZXIKICAgICAgcGFyYW1ldGVyTmFtZT0idGFiIiB7LyogT3B0aW9uYWw6IGRlZmF1bHQgaXMgInBhdGgiICovfQogICAgICB0eXBlPSJDb250ZW50QmFzZWQiIHsvKiBPcHRpb25hbDogZGVmYXVsdCBpcyAiVVJMQmFzZWQiICovfQogICAgICByb3V0ZXM9e3JvdXRlc30KICAgIC8+CiAgKTsKfTsKCmV4cG9ydCBkZWZhdWx0IEFwcFJvdXRlczsKYGBgCgoqKlR5cGVzIG9mIEJlaGF2aW9yKioKCmBSb3V0ZXJgIGNhbiBoYW5kbGUgbGlua3MgaW4gdHdvIHdheXM6CgotICoqVVJMQmFzZWQ6KiogVGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvci4gRXZlcnkgbGluayB3aWxsIHJlbG9hZCB0aGUgcGFnZSBieSBjaGFuZ2luZyB0aGUgVVJMIHN0cnVjdHVyZSBpbiB0aGUgYnJvd3NlcjsKLSAqKkNvbnRlbnRCYXNlZDoqKiBUaGlzIGJlaGF2aW9yIGRvZXMgbm90IGNoYW5nZSB0aGUgVVJMIGluIHRoZSBicm93c2VyIGFuZCBkb2VzIG5vdCByZWxvYWQgdGhlIHBhZ2UuIFRoZXJlZm9yZSwgaXQgaXMgZmFzdGVyIHRvIGRpc3BsYXkgY29udGVudCBvbiB0aGUgc2NyZWVuLgoKWW91IGNhbiBwYXNzIHRoZSB0eXBlIG9mIGJlaGF2aW9yIHVzaW5nIHRoZSBgdHlwZWAgcHJvcGVydHkgb2YgUm91dGVzLgoKYGBgdHN4Ci8qIFVSTCBCYXNlZCAqLwo8Um91dGVyCiAgcm91dGVzPXtbRmVhdHVyZU92ZXJ2aWV3Um91dGUsIFN0YXRlTWFuYWdlbWVudFJvdXRlXX0KICB0eXBlPSJVUkxCYXNlZCIKLz4KCi8qIENvbnRlbnQgQmFzZWQgKi8KPFJvdXRlcgogIHJvdXRlcz17W0ZlYXR1cmVPdmVydmlld1JvdXRlLCBTdGF0ZU1hbmFnZW1lbnRSb3V0ZV19CiAgdHlwZT0iQ29udGVudEJhc2VkIgovPgpgYGAKCiMgU2ltcGxlUm91dGVyCgpUaGlzIHJvdXRlciB1c2VzIHRoZSBVUkwgdG8gZGV0ZXJtaW5lIHdoaWNoIGNvbnRlbnQgdG8gZGlzcGxheSBvbiB0aGUgc2NyZWVuLiBJdCB3b3JrcyBzaW1pbGFybHkgdG8gdGhlIGBVUkxCYXNlZGAgYXBwcm9hY2ggb2YgdGhlIGBSb3V0ZXJgLgoKYGBgdHN4CmltcG9ydCB7IFNpbXBsZVJvdXRlciwgY3JlYXRlUm91dGUgfSBmcm9tICJhbGVtIjsKCmltcG9ydCBIb21lUGFnZSBmcm9tICIuL0hvbWVQYWdlIjsKaW1wb3J0IFByb2ZpbGVQYWdlIGZyb20gIi4vUHJvZmlsZVBhZ2UiOwoKY29uc3QgQXBwUm91dGVzID0gKCkgPT4gewogIC8vIENyZWF0aW5nIHJvdXRlcwogIGNvbnN0IEhvbWVQYWdlUm91dGUgPSBjcmVhdGVSb3V0ZSgiaG9tZSIsIEhvbWVQYWdlKTsKICBjb25zdCBQcm9maWxlUGFnZVJvdXRlID0gY3JlYXRlUm91dGUoInByb2ZpbGUiLCBQcm9maWxlUGFnZSk7CiAgY29uc3Qgcm91dGVzID0gW0hvbWVQYWdlUm91dGUsIFByb2ZpbGVQYWdlUm91dGVdOwoKICAvLyBwYXJhbWV0ZXJOYW1lID0+IE9wdGlvbmFsOiBkZWZhdWx0IGlzICJwYXRoIgogIHJldHVybiA8U2ltcGxlUm91dGVyIHJvdXRlcz17cm91dGVzfSBwYXJhbWV0ZXJOYW1lPSJ0YWIiIC8+Owp9OwoKZXhwb3J0IGRlZmF1bHQgQXBwUm91dGVzOwpgYGAKClVzaW5nIGBTaW1wbGVSb3V0ZXJgLCB5b3UgY2FuIHVzZSBhbnkgYW5jaG9yIGVsZW1lbnQgYDxhPjwvYT5gIHRvIG5hdmlnYXRlIHRvIGFub3RoZXIgcGFnZSwgZm9yIGV4YW1wbGU6CgpgYGB0c3gKPGEgaHJlZj0idGFiPXByb2ZpbGUiPkdvIFRvIFByb2ZpbGU8L3A+CmBgYAo=`, "base64").toString("utf-8"); return } diff --git a/src/md/router/UseParams.tsx b/src/md/router/UseParams.tsx index 06deb07..517adf0 100644 --- a/src/md/router/UseParams.tsx +++ b/src/md/router/UseParams.tsx @@ -1,7 +1,7 @@ import { Markdown } from 'alem'; const UseParams = () => { - const mdContent = Buffer.from(`IyMgVXNlIFBhcmFtcwoKVGhpcyBob29rIHJldHVybnMgYWxsIHBhcmFtZXRlcnMgcHJvdmlkZWQgYnkgdGhlIFVSTC4KCmBgYHRzCi8vIGh0dHA6Ly8xMjcuMC4wLjE6ODA4MC9hbGVtLWxpYi5uZWFyL3dpZGdldC9JbmRleD9wcm9qZWN0SWQ9MTIzCmltcG9ydCB7IHVzZVBhcmFtcyB9IGZyb20gImFsZW0iOwoKZXhwb3J0IGNvbnN0IFNvbWVDb21wb25lbnQgPSAoKSA9PiB7CiAgY29uc3QgcGFyYW1zID0gdXNlUGFyYW1zKCk7CiAgY29uc29sZS5sb2cocGFyYW1zKTsgLy8geyBwcm9qZWN0SWQ6ICIxMjMiIH0KCiAgcmV0dXJuICIiOwp9OwpgYGAK`, "base64").toString("utf-8"); + const mdContent = Buffer.from(`IyBVc2UgUGFyYW1zCgpUaGlzIGhvb2sgcmV0dXJucyBhbGwgcGFyYW1ldGVycyBwcm92aWRlZCBieSB0aGUgVVJMLgoKYGBgdHMKLy8gaHR0cDovLzEyNy4wLjAuMTo4MDgwL2FsZW0tbGliLm5lYXIvd2lkZ2V0L0luZGV4P3Byb2plY3RJZD0xMjMKaW1wb3J0IHsgdXNlUGFyYW1zIH0gZnJvbSAiYWxlbSI7CgpleHBvcnQgY29uc3QgU29tZUNvbXBvbmVudCA9ICgpID0+IHsKICBjb25zdCBwYXJhbXMgPSB1c2VQYXJhbXMoKTsKICBjb25zb2xlLmxvZyhwYXJhbXMpOyAvLyB7IHByb2plY3RJZDogIjEyMyIgfQoKICByZXR1cm4gIiI7Cn07CmBgYAo=`, "base64").toString("utf-8"); return } diff --git a/src/md/router/UseRoutes.tsx b/src/md/router/UseRoutes.tsx index 888911c..5d30f4c 100644 --- a/src/md/router/UseRoutes.tsx +++ b/src/md/router/UseRoutes.tsx @@ -1,7 +1,7 @@ import { Markdown } from 'alem'; const UseRoutes = () => { - const mdContent = Buffer.from(`IyMgVXNlIFJvdXRlcwoKSG9vayB1c2VkIHRvIHJldHVybiB0aGUgY3VycmVudCBkYXRhIHV0aWxpemVkIGJ5IHRoZSBgUm91dGVyYCBjb21wb25lbnQuCgpgYGB0cwppbXBvcnQgeyB1c2VSb3V0ZXMgfSBmcm9tICJhbGVtIjsKCmV4cG9ydCBjb25zdCBTb21lQ29tcG9uZW50ID0gKCkgPT4gewogIGNvbnN0IHJvdXRlc1Byb3BzID0gdXNlUm91dGVzKCk7CiAgY29uc29sZS5sb2cocm91dGVzUHJvcHMpOwogIC8vIHsgcm91dGVzSW5pdGlhbGl6ZWQ6IHRydWUsIGFjdGl2ZVJvdXRlOiAnaG9tZScsIHJvdXRlUGFyYW1ldGVyTmFtZTogJ3BhdGgnLCByb3V0ZXM6IFsnaG9tZScsICdwcm9maWxlJ10sIHJvdXRlVHlwZTogJ0NvbnRlbnRCYXNlZCcgfQoKICByZXR1cm4gIiI7Cn07CmBgYAo=`, "base64").toString("utf-8"); + const mdContent = Buffer.from(`IyBVc2UgUm91dGVzCgpIb29rIHVzZWQgdG8gcmV0dXJuIHRoZSBjdXJyZW50IGRhdGEgdXRpbGl6ZWQgYnkgdGhlIGBSb3V0ZXJgIGNvbXBvbmVudC4KCmBgYHRzCmltcG9ydCB7IHVzZVJvdXRlcyB9IGZyb20gImFsZW0iOwoKZXhwb3J0IGNvbnN0IFNvbWVDb21wb25lbnQgPSAoKSA9PiB7CiAgY29uc3Qgcm91dGVzUHJvcHMgPSB1c2VSb3V0ZXMoKTsKICBjb25zb2xlLmxvZyhyb3V0ZXNQcm9wcyk7CiAgLy8geyByb3V0ZXNJbml0aWFsaXplZDogdHJ1ZSwgYWN0aXZlUm91dGU6ICdob21lJywgcm91dGVQYXJhbWV0ZXJOYW1lOiAncGF0aCcsIHJvdXRlczogWydob21lJywgJ3Byb2ZpbGUnXSwgcm91dGVUeXBlOiAnQ29udGVudEJhc2VkJyB9CgogIHJldHVybiAiIjsKfTsKYGBgCg==`, "base64").toString("utf-8"); return } diff --git a/src/md/router/get-location.md b/src/md/router/get-location.md index b9c8120..9ce7c1b 100644 --- a/src/md/router/get-location.md +++ b/src/md/router/get-location.md @@ -1,4 +1,4 @@ -## Get Location +# Get Location This hook returns the current location object. It can be useful if you'd like to perform some side effect whenever the current location changes. diff --git a/src/md/router/navigate.md b/src/md/router/navigate.md index b0089de..df70432 100644 --- a/src/md/router/navigate.md +++ b/src/md/router/navigate.md @@ -1,4 +1,4 @@ -## Navigate +# Navigate This feature makes it possible to programmatically navigate to available routes. The URL will not be affected! diff --git a/src/md/router/route-link-docs.md b/src/md/router/route-link-docs.md index 4ef5ea1..aa308a2 100644 --- a/src/md/router/route-link-docs.md +++ b/src/md/router/route-link-docs.md @@ -1,7 +1,9 @@ -## Route Link +# Route Link This component creates a `` element and is used to allow users to navigate between routes. You must inform the destination path using the `to` property. It also support `className`, `style` and `onClick` properties. +`RouteLink` acts differently depending on the `Router` configuration. If the Router type is `"URLBased"`, it will simply use the native anchor function to go to the new URL. If the type is `"ContentBased"` it will call the Router's `navigate` function and will display the new page without causing a refresh, however, the URL is not changed. + It should be used with `Router`. ```tsx diff --git a/src/md/router/routes-docs.md b/src/md/router/routes-docs.md index 35b89ae..9d38b8d 100644 --- a/src/md/router/routes-docs.md +++ b/src/md/router/routes-docs.md @@ -1,8 +1,8 @@ -## Routes +# Routes There are two types of route managers provided by Além: `Router` and `SimpleRouter`. -## Router +# Router This component is responsible for managing the content to be displayed on the screen according to the active route. You can use the `createRoute` resource to create application routes and pass them to the Router. @@ -39,7 +39,7 @@ const AppRoutes = () => { export default AppRoutes; ``` -## Types of Behavior +**Types of Behavior** `Router` can handle links in two ways: @@ -62,7 +62,7 @@ You can pass the type of behavior using the `type` property of Routes. /> ``` -## SimpleRouter +# SimpleRouter This router uses the URL to determine which content to display on the screen. It works similarly to the `URLBased` approach of the `Router`. diff --git a/src/md/router/use-params.md b/src/md/router/use-params.md index 04ac9fc..1f573b7 100644 --- a/src/md/router/use-params.md +++ b/src/md/router/use-params.md @@ -1,4 +1,4 @@ -## Use Params +# Use Params This hook returns all parameters provided by the URL. diff --git a/src/md/router/use-routes.md b/src/md/router/use-routes.md index 3d04851..80c311b 100644 --- a/src/md/router/use-routes.md +++ b/src/md/router/use-routes.md @@ -1,4 +1,4 @@ -## Use Routes +# Use Routes Hook used to return the current data utilized by the `Router` component. diff --git a/src/pages/About/About.tsx b/src/pages/About/About.tsx index 2470399..dd76697 100644 --- a/src/pages/About/About.tsx +++ b/src/pages/About/About.tsx @@ -17,7 +17,7 @@ import { RoutesPath } from "../../routeProps"; export const AboutPage = () => { return (
- + { -
+
Diagram diff --git a/src/pages/About/styles.ts b/src/pages/About/styles.ts index 020ece3..7680032 100644 --- a/src/pages/About/styles.ts +++ b/src/pages/About/styles.ts @@ -5,6 +5,10 @@ export const Container = styled.div` flex-direction: column; align-items: center; margin-bottom: 90px; + + h1 { + border-bottom: none; + } `; export const Logo = styled.img` @@ -70,6 +74,11 @@ export const Section = styled.div` align-items: center; text-align: center; + h1 { + border-bottom: none; + padding-bottom: 0; + } + ul { list-style-type: none; } From 36b8dfda403768e74ea8c125f60678568c55dda3 Mon Sep 17 00:00:00 2001 From: Wenderson Pires Date: Tue, 2 Apr 2024 19:11:28 -0300 Subject: [PATCH 2/3] docs update; added prev and next buttons on the footer of each page --- src/components/ContentView/index.tsx | 2 +- src/md/FeatureOverview.tsx | 2 +- src/md/feature-overview.md | 10 ++++ src/pages/About/About.tsx | 2 +- src/{ => routes}/Routes.tsx | 38 +++++++++++-- src/routes/getRouteTitleByPath.ts | 14 +++++ src/routes/nextPrevRoutes.ts | 85 ++++++++++++++++++++++++++++ src/{ => routes}/routeProps.ts | 0 src/routes/styles.ts | 45 +++++++++++++++ src/utils/getLinksByCategory.tsx | 2 +- 10 files changed, 190 insertions(+), 10 deletions(-) rename src/{ => routes}/Routes.tsx (64%) create mode 100644 src/routes/getRouteTitleByPath.ts create mode 100644 src/routes/nextPrevRoutes.ts rename src/{ => routes}/routeProps.ts (100%) create mode 100644 src/routes/styles.ts diff --git a/src/components/ContentView/index.tsx b/src/components/ContentView/index.tsx index ba0de45..9a8b9fa 100644 --- a/src/components/ContentView/index.tsx +++ b/src/components/ContentView/index.tsx @@ -1,5 +1,5 @@ import { clipboard, getLocation, isDevelopment } from "alem"; -import Routes from "../../Routes"; +import Routes from "../../routes/Routes"; import { Container, Margin, ShareButton, TopSection } from "./styles"; import ShareIcon from "../../assets/svgs/share-icon"; diff --git a/src/md/FeatureOverview.tsx b/src/md/FeatureOverview.tsx index cebe080..cfe8867 100644 --- a/src/md/FeatureOverview.tsx +++ b/src/md/FeatureOverview.tsx @@ -1,7 +1,7 @@ import { Markdown } from 'alem'; const FeatureOverview = () => { - const mdContent = Buffer.from(`IyBGZWF0dXJlIE92ZXJ2aWV3CgpBbGVtIGlzIGEgd2ViMyAqKkphdmFTY3JpcHQqKiAvICoqVHlwZVNjcmlwdCoqIGxpYnJhcnkgdG8gY3JlYXRlIHdlYjMgYXBwcyBmb3IgTmVhciBCT1MuIFlvdSBjYW4gY3JlYXRlIHlvdXIgYXBwbGljYXRpb25zIGluIGEgc2ltaWxhciB3YXkgdG8gUmVhY3QuIEFsbCBjb21wb25lbnRzIGFuZCBvdGhlciByZXNvdXJjZXMgd2lsbCBiZSB0cmFuc2Zvcm1lZCBpbnRvIGEgZmlsZSB1bmRlcnN0YW5kYWJsZSBieSBOZWFyIFZNLgoKIyMgQ29tcG9uZW50CgpZb3UgY2FuIGNyZWF0ZSBhbnkgY29tcG9uZW50IGZpbGUgdXNpbmcgKipKYXZhU2NyaXB0Kiogb3IgKipUeXBlU2NyaXB0KiouIFRoZSBlbnRyeXBvaW50IG11c3QgYmUgYW4gQXBwIGNvbXBvbmVudCBsaWtlIHNvOgoKYGBgdHN4CmNvbnN0IEFwcCA9ICgpID0+IHsKICByZXR1cm4gKAogICAgPD4KICAgICAgPGgxPkhlbGxvIFdvcmxkPC9oMT4KICAgIDwvPgogICk7Cn07CgpleHBvcnQgZGVmYXVsdCBBcHA7CmBgYAoKIyMgQ29tcG9uZW50IFByb3BzCgpQYXNzaW5nIHByb3BlcnRpZXMgdG8gYSBjb21wb25lbnQgaXMgdmVyeSBzaW1wbGUuIEp1c3QgdXNlIHJlYWN0J3MgZGVmYXVsdHM6CgpgYGB0c3gKZXhwb3J0IGNvbnN0IENvbXBvbmVudEEgPSAoeyBuYW1lIH06IHsgbmFtZTogc3RyaW5nIH0pID0+IHsKICByZXR1cm4gPHA+e25hbWV9PC9wPjsKfTsKCmV4cG9ydCBjb25zdCBDb21wb25lbnRCID0gKCkgPT4gewogIHJldHVybiA8Q29tcG9uZW50QSBuYW1lPSJXZW5keiIgLz47Cn07CgpleHBvcnQgY29uc3QgQ29tcG9uZW50QyA9IChjb21wb25lbnRQcm9wczogeyBuYW1lOiBzdHJpbmcgfSkgPT4gewogIHJldHVybiA8cD57Y29tcG9uZW50UHJvcHMubmFtZX08L3A+Owp9OwpgYGAKCiMgR29vZCB0byBLbm93CgojIyBTdGF0ZWZ1bCAmIFN0YXRlbGVzcyBDb21wb25lbnRzCgpTdGF0ZWZ1bCBjb21wb25lbnRzIGFyZSBpbnRlcnByZXRlZCBhcyBXaWRnZXRzIGJ5IEFsw6ltLCB3aGlsZSBTdGF0ZWxlc3MgY29tcG9uZW50cyBhcmUgc2VlbiBhcyBhdXhpbGlhcnkgcmVzb3VyY2VzIGluamVjdGVkIGludG8gdGhlIFdpZGdldHMgdGhhdCBpbXBvcnQgdGhlbS4KClVzaW5nIGFueSBvZiB0aGVzZSBmZWF0dXJlcyB3aWxsIGNhdXNlIGEgY29tcG9uZW50IHRvIGJlIGNvbnNpZGVyZWQgU3RhdGVmdWw6CgpgYGB0cwpjb25zdCBbZm9vLCBzZXRGb29dID0gdXNlU3RhdGUoYmFyKTsKdXNlRWZmZWN0KCgpID0+IHt9LCBbXSk7CnVzZU1lbW8oKCkgPT4ge30sIFtdKTsKU3RhdGUuaW5pdCh7fSk7CmBgYAoKRXhhbXBsZSBvZiBzdGF0ZWxlc3MgYW5kIHN0YXRlZnVsIGNvbXBvbmVudHM6CgpgYGB0c3gKLy8gU3RhdGVsZXNzIGNvbXBvbmVudApjb25zdCBIZXJvID0gKHsgbGFiZWwgfTogeyBsYWJlbDogc3RyaW5nIH0pID0+IHsKICByZXR1cm4gPHA+SGVybyBCYXIgLSB7bGFiZWx9PC9wPjsKfTsKYGBgCgpgYGB0c3gKLy8gU3RhdGVmdWwgY29tcG9uZW50CmltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICJhbGVtIjsKCmNvbnN0IEZvb3RlciA9ICgpID0+IHsKICBjb25zdCBbZm9vdGVyTGFiZWxdID0gdXNlU3RhdGUoIlRoaXMgaXMgZm9vdGVyIik7CgogIHJldHVybiA8cD57Zm9vdGVyTGFiZWx9PC9wPjsKfTsKYGBgCgpOb3csIGxldCdzIGltcGxlbWVudCB0aGUgY29tcG9uZW50IHRoYXQgaXMgZ29pbmcgdG8gaW1wb3J0IGJvdGggY29tcG9uZW50cyBhYm92ZToKCmBgYHRzeAovLyBTdGF0ZWZ1bCBjb21wb25lbnQKaW1wb3J0IHsgU3RhdGUsIHN0YXRlIH0gZnJvbSAiYWxlbSI7CmltcG9ydCBIZXJvIGZyb20gIi4vSGVybyI7CmltcG9ydCBGb290ZXIgZnJvbSAiLi9Gb290ZXIiOwoKY29uc3QgTXlTdGF0ZWZ1bENvbXBvbmVudCA9ICgpID0+IHsKICBTdGF0ZS5pbml0KHsgdmVyc2lvbjogMSB9KTsgLy8gQW55IHJhbmRvbSBpbmZvcm1hdGlvbgoKICByZXR1cm4gKAogICAgPD4KICAgICAgPHA+VmVyc2lvbjoge3N0YXRlLnZlcnNpb259PC9wPgogICAgICA8SGVybyBsYWJlbD17c3RhdGUudmVyc2lvbn0gLz4KICAgICAgPEZvb3RlciAvPgogICAgPC8+CiAgKTsKfTsKYGBgCgojIyBUU1ggJiBKU1gKCkEgLnRzeC8uanN4IGZpbGUgY2FuIGhhdmUgb25seSBvbmUgc3RhdGVmdWwgY29tcG9uZW50LiBZb3UgY2FuIGNyZWF0ZSBvdGhlciBpbnRlcm5hbCBjb21wb25lbnRzIHdpdGhpbiB0aGUgY29tcG9uZW50J3MgZnVuY3Rpb24uCgrinIUgKiotIFJpZ2h0KioKCmBgYHRzeAppbXBvcnQgeyBTdGF0ZSwgc3RhdGUgfSBmcm9tICJhbGVtIjsKCmNvbnN0IE15U3RhdGVmdWxDb21wb25lbnQgPSAoKSA9PiB7CiAgU3RhdGUuaW5pdCh7IG5hbWU6ICJXZW5keiIgfSk7CgogIHJldHVybiA8cD5vaSB7c3RhdGUubmFtZX08L3A+Owp9OwoKZXhwb3J0IGRlZmF1bHQgTXlTdGF0ZWZ1bENvbXBvbmVudDsKYGBgCgrinYwgKiotIFdyb25nKioKCmBgYHRzeAppbXBvcnQgeyBTdGF0ZSwgc3RhdGUgfSBmcm9tICJhbGVtIjsKCmNvbnN0IE15U3RhdGVmdWxDb21wb25lbnQgPSAoKSA9PiB7CiAgU3RhdGUuaW5pdCh7IG5hbWU6ICJXZW5keiIgfSk7CgogIHJldHVybiA8cD5vaSB7c3RhdGUubmFtZX08L3A+Owp9OwoKZXhwb3J0IGRlZmF1bHQgTXlTdGF0ZWZ1bENvbXBvbmVudDsKCi8vIFNlY29uZCBzdGF0ZWZ1bCBjb21wb25lbnQgYXQgdGhlIHNhbWUgZmlsZS4gVGhpcyBpcyBnb2luZyB0byBmYWlsIQpleHBvcnQgY29uc3QgT3RoZXJTdGF0ZWZ1bENvbXBvbmVudCA9ICgpID0+IHsKICBTdGF0ZS5pbml0KHsgYWdlOiAyMiB9KTsKCiAgcmV0dXJuIDxwPkFnZToge3N0YXRlLmFnZX08L3A+Owp9OwpgYGAKClN0YXRlbGVzcyBjb21wb25lbnRzIGNhbiBoYXZlIGFzIG1hbnkgY29tcG9uZW50cyBhcyB5b3Ugd2FudCBpbiBvbmUgZmlsZS4KCuKchSAqKi0gUmlnaHQqKgoKYGBgdHN4Ci8vIEdyb3VwIG9mIHN0YXRlbGVzcyBjb21wb25lbnRzCmV4cG9ydCBjb25zdCBDb21wb25lbnRBID0gKGNvbXBvbmVudFByb3BzKSA9PiB7CiAgLy8gLi4uCiAgcmV0dXJuIDxwPm9pIHtjb21wb25lbnRQcm9wcy5uYW1lfTwvcD47Cn07CgpleHBvcnQgY29uc3QgQ29tcG9uZW50QiA9IChjb21wb25lbnRQcm9wcykgPT4gewogIC8vIC4uLgogIHJldHVybiA8cD5Ib2xhIHtjb21wb25lbnRQcm9wcy5uYW1lfTwvcD47Cn07CgpleHBvcnQgY29uc3QgQ29tcG9uZW50QyA9IChjb21wb25lbnRQcm9wcykgPT4gewogIC8vIC4uLgogIHJldHVybiAoCiAgICA8PgogICAgICA8cD5IaSB7Y29tcG9uZW50UHJvcHMubmFtZX08L3A+CiAgICAgIDxDb21wb25lbnRCIC8+CiAgICAgIDxDb21wb25lbnRBIC8+CiAgICA8Lz4KICApOwp9OwpgYGAKCiMjIFByZXBhcmluZyB0aGUgUmVzb3VyY2VzCgpQcmVmZXIgdG8gY3JlYXRlIG9uZSBmaWxlIHBlciByZXNvdXJjZSwgYXMgaW1wb3J0aW5nIGEgcmVzb3VyY2UgZnJvbSBhIGAudHMvLmpzYCBmaWxlIHdpbGwgaW5qZWN0IHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhhdCBmaWxlIGludG8gdGhlIFdpZGdldC4gVGhlIHNhbWUgZ29lcyBmb3Igc3RhdGVsZXNzIGNvbXBvbmVudHMuCgojIyBDb21tZW50cwoKVGhpcyBtYXkgYmUgb2J2aW91cyBidXQgdXNlIHRoZSBjb3JyZWN0IGZvcm0gb2YgY29tbWVudHMgZHVyaW5nIGRldmVsb3BtZW50IGZvciAqKkNTUyoqIGFuZCAqKnN0eWxlZC1jb21wb25lbnRzKiouCgpgYGBjc3MKLyogY3NzIGZpbGUgKi8KCi5teS1jbGFzcyB7CiAgLyogQ29ycmVjdCAqLwogIGRpc3BsYXk6IGZsZXg7CiAgLy8gSW5jb3JyZWN0CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CmBgYAoKYGBgdHN4Ci8vIHRzeCBvciBqc3ggZmlsZSB1c2luZyBzdHlsZWQgY29tcG9uZW50cwppbXBvcnQgc3R5bGVkIGZyb20gInN0eWxlZC1jb21wb25lbnRzIjsKCmV4cG9ydCBjb25zdCBBcHBDb250YWluZXIgPSBzdHlsZWQuZGl2YAogIGRpc3BsYXk6IGZsZXg7CiAgLyogQ29ycmVjdCAqLwogIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgLy8gSW5jb3JyZWN0CiAgZm9udC1mYW1pbHk6ICJXaXggTWFkZWZvciBEaXNwbGF5Iiwgc2Fucy1zZXJpZjsKCiAgQG1lZGlhIChtYXgtd2lkdGg6IDgwMHB4KSB7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgfQpgOwpgYGAKCiMjIEFzeW5jIC8gQXdhaXQKClRoZSB1c2Ugb2YgYGFzeW5jL2F3YWl0YCBpcyBzdXBwb3J0ZWQgYW5kIGV4cGVyaW1lbnRhbC4gSXQgc2hvdWxkIGJlIHVzZWQgb25seSBpbiB0aGUgbWFpbiBzY29wZSBvZiB0aGUgY29tcG9uZW50LiBJdCB3aWxsIG1ha2UgY2hhbmdlcyB0byB0aGUgc3RhdGUgb2YgdGhlIG1haW4gV2lkZ2V0LiBEbyBub3QgdXNlIGluIGhvb2tzLiBCZWxvdyBpcyBhbiBleGFtcGxlIG9mIHVzYWdlOgoKYGBgdHN4CmltcG9ydCB7IGZldGNoLCB1c2VFZmZlY3QgfSBmcm9tICJhbGVtIjsKCmNvbnN0IFNvbWVDb21wb25lbnQgPSAoKSA9PiB7CiAgY29uc3QgZmV0Y2hJdGVtcyA9IGFzeW5jICgpID0+IHsKICAgIGNvbnN0IGl0ZW1zID0gYXdhaXQgZmV0Y2goImh0dHBzOi8vYXBpLmNvbS9pdGVtcyIpOwogIH07CgogIHVzZUVmZmVjdCgoKSA9PiB7CiAgICBmZXRjaEl0ZW1zKCk7CiAgfSwgW10pOwoKICBjb25zb2xlLmxvZyhpdGVtcyk7CgogIHJldHVybiA8PjwvPjsKfTsKYGBgCgojIyBMaW1pdGF0aW9ucwoKLSBUaGUgdXNlIG9mIHRoZSBgaW1wb3J0ICogZm9vIGZyb20gJy4vZm9vJ2Agc2lnbmF0dXJlIGlzIG5vdCBzdXBwb3J0ZWQuIFRoaXMgaXMgaW50ZW50aW9uYWwsIGFzIHRoZSBpZGVhIGlzIHRvIGltcG9ydCBvbmx5IHRoZSBuZWNlc3NhcnkgZnJhZ21lbnRzIGludG8gdGhlIFdpZGdldC4KLSBBbMOpbSBmaXhlcyBkdXBsaWNhdGUgaXRlbSBuYW1lcyBiZWluZyBleHBvcnRlZCBieSB0aGUgYXBwbGljYXRpb24gYXV0b21hdGljYWxseSwgYnV0IHlvdSBzaG91bGQgYXZvaWQgaW1wb3J0aW5nIGEgcmVzb3VyY2UgdGhhdCBoYXMgdGhlIHNhbWUgbmFtZSBhcyBhbnkgdmFyaWFibGUgd2l0aGluIHlvdXIgY29tcG9uZW50LiBFLmcuOgoK4pyFICoqLSBSaWdodCoqCgpgYGB0cwovLyBhQ29udHJhY3QudHMKZXhwb3J0IGNvbnN0IGNvbnRyYWN0SWQgPSAiY29udHJhY3QtaWQtYS5uZWFyIjsKLy8gLi4uCmBgYAoKYGBgdHMKLy8gSG9tZVBhZ2UudHN4CmltcG9ydCB7IGNvbnRyYWN0SWQgfSBmcm9tICcuL2NvbnRyYWN0SWQnOwoKY29uc3QgSG9tZVBhZ2UgPSAoKSA9PiB7CiAgY29uc3QgY29udHJhY3RJZF9CID0gImNvbnRyYWN0LWlkLWIubmVhciIKCiAgcmV0dXJuICgKICAgIC8vIC4uLgogICkKfQoKZXhwb3J0IGRlZmF1bHQgSG9tZVBhZ2U7CmBgYAoK4p2MICoqLSBXcm9uZyoqCgpgYGB0cwovLyBhQ29udHJhY3QudHMKZXhwb3J0IGNvbnN0IGNvbnRyYWN0SWQgPSAiY29udHJhY3QtaWQtYS5uZWFyIjsKZXhwb3J0IGNvbnN0IGNvbnRyYWN0SWRfQyA9ICJjb250cmFjdC1pZC1jLm5lYXIiOwovLyAuLi4KYGBgCgpgYGB0cwovLyBIb21lUGFnZS50c3gKaW1wb3J0IHsgY29udHJhY3RJZF9DIH0gZnJvbSAnLi9jb250cmFjdElkJzsKCmNvbnN0IEhvbWVQYWdlID0gKCkgPT4gewogIC8vIEVSUk9SOiB0aGlzIHdpbGwgYnJlYWsgdGhlIGFwcGxpY2F0aW9uIGJlY2F1c2UgdGhlICJjb250cmFjdElkIiBmcm9tIGFDb250cmFjdC50cyBpcyBhbHNvIGdvaW5nIHRvIGJlCiAgLy8gaW5qZWN0ZWQgdG8gdGhlIGZpbmFsIGZpbGUgYWZ0ZXIgY29tcGlsYXRpb24uCiAgY29uc3QgY29udHJhY3RJZCA9ICJjb250cmFjdC1pZC1iLm5lYXIiOwoKICByZXR1cm4gKAogICAgLy8gLi4uCiAgKQp9CgpleHBvcnQgZGVmYXVsdCBIb21lUGFnZTsKYGBgCg==`, "base64").toString("utf-8"); + const mdContent = Buffer.from(`IyBGZWF0dXJlIE92ZXJ2aWV3CgpBbGVtIGlzIGEgd2ViMyAqKkphdmFTY3JpcHQqKiAvICoqVHlwZVNjcmlwdCoqIGxpYnJhcnkgdG8gY3JlYXRlIHdlYjMgYXBwcyBmb3IgTmVhciBCT1MuIFlvdSBjYW4gY3JlYXRlIHlvdXIgYXBwbGljYXRpb25zIGluIGEgc2ltaWxhciB3YXkgdG8gUmVhY3QuIEFsbCBjb21wb25lbnRzIGFuZCBvdGhlciByZXNvdXJjZXMgd2lsbCBiZSB0cmFuc2Zvcm1lZCBpbnRvIGEgZmlsZSB1bmRlcnN0YW5kYWJsZSBieSBOZWFyIFZNLgoKKipUaXA6KiogVXNlIGZ1bmN0aW9uIGFzIG11Y2ggYXMgcG9zc2libGUuIEV2ZW4gaWYgaXQgaXMgYW4gb2JqZWN0IHRvIGJlIHNoYXJlZCwgdXNlIGEgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBvYmplY3QuIEUuZy46CgpgYGB0cwpleHBvcnQgY29uc3QgdXRpbHMgPSAoKSA9PiAoewogIGNvbnRyYWN0SWQ6ICJjb250cmFjdC1mb28ubmVhciIsCiAgZ2V0SXRlbXM6ICgpID0+IFN0b3JhZ2UuZ2V0KCJpdGVtcyIpLAogIC8vIC4uLgp9KTsKYGBgCgojIyBDb21wb25lbnQKCllvdSBjYW4gY3JlYXRlIGFueSBjb21wb25lbnQgZmlsZSB1c2luZyAqKkphdmFTY3JpcHQqKiBvciAqKlR5cGVTY3JpcHQqKi4gVGhlIGVudHJ5cG9pbnQgbXVzdCBiZSBhbiBBcHAgY29tcG9uZW50IGxpa2Ugc286CgpgYGB0c3gKY29uc3QgQXBwID0gKCkgPT4gewogIHJldHVybiAoCiAgICA8PgogICAgICA8aDE+SGVsbG8gV29ybGQ8L2gxPgogICAgPC8+CiAgKTsKfTsKCmV4cG9ydCBkZWZhdWx0IEFwcDsKYGBgCgojIyBDb21wb25lbnQgUHJvcHMKClBhc3NpbmcgcHJvcGVydGllcyB0byBhIGNvbXBvbmVudCBpcyB2ZXJ5IHNpbXBsZS4gSnVzdCB1c2UgcmVhY3QncyBkZWZhdWx0czoKCmBgYHRzeApleHBvcnQgY29uc3QgQ29tcG9uZW50QSA9ICh7IG5hbWUgfTogeyBuYW1lOiBzdHJpbmcgfSkgPT4gewogIHJldHVybiA8cD57bmFtZX08L3A+Owp9OwoKZXhwb3J0IGNvbnN0IENvbXBvbmVudEIgPSAoKSA9PiB7CiAgcmV0dXJuIDxDb21wb25lbnRBIG5hbWU9IldlbmR6IiAvPjsKfTsKCmV4cG9ydCBjb25zdCBDb21wb25lbnRDID0gKGNvbXBvbmVudFByb3BzOiB7IG5hbWU6IHN0cmluZyB9KSA9PiB7CiAgcmV0dXJuIDxwPntjb21wb25lbnRQcm9wcy5uYW1lfTwvcD47Cn07CmBgYAoKIyBHb29kIHRvIEtub3cKCiMjIFN0YXRlZnVsICYgU3RhdGVsZXNzIENvbXBvbmVudHMKClN0YXRlZnVsIGNvbXBvbmVudHMgYXJlIGludGVycHJldGVkIGFzIFdpZGdldHMgYnkgQWzDqW0sIHdoaWxlIFN0YXRlbGVzcyBjb21wb25lbnRzIGFyZSBzZWVuIGFzIGF1eGlsaWFyeSByZXNvdXJjZXMgaW5qZWN0ZWQgaW50byB0aGUgV2lkZ2V0cyB0aGF0IGltcG9ydCB0aGVtLgoKVXNpbmcgYW55IG9mIHRoZXNlIGZlYXR1cmVzIHdpbGwgY2F1c2UgYSBjb21wb25lbnQgdG8gYmUgY29uc2lkZXJlZCBTdGF0ZWZ1bDoKCmBgYHRzCmNvbnN0IFtmb28sIHNldEZvb10gPSB1c2VTdGF0ZShiYXIpOwp1c2VFZmZlY3QoKCkgPT4ge30sIFtdKTsKdXNlTWVtbygoKSA9PiB7fSwgW10pOwpTdGF0ZS5pbml0KHt9KTsKYGBgCgpFeGFtcGxlIG9mIHN0YXRlbGVzcyBhbmQgc3RhdGVmdWwgY29tcG9uZW50czoKCmBgYHRzeAovLyBTdGF0ZWxlc3MgY29tcG9uZW50CmNvbnN0IEhlcm8gPSAoeyBsYWJlbCB9OiB7IGxhYmVsOiBzdHJpbmcgfSkgPT4gewogIHJldHVybiA8cD5IZXJvIEJhciAtIHtsYWJlbH08L3A+Owp9OwpgYGAKCmBgYHRzeAovLyBTdGF0ZWZ1bCBjb21wb25lbnQKaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gImFsZW0iOwoKY29uc3QgRm9vdGVyID0gKCkgPT4gewogIGNvbnN0IFtmb290ZXJMYWJlbF0gPSB1c2VTdGF0ZSgiVGhpcyBpcyBmb290ZXIiKTsKCiAgcmV0dXJuIDxwPntmb290ZXJMYWJlbH08L3A+Owp9OwpgYGAKCk5vdywgbGV0J3MgaW1wbGVtZW50IHRoZSBjb21wb25lbnQgdGhhdCBpcyBnb2luZyB0byBpbXBvcnQgYm90aCBjb21wb25lbnRzIGFib3ZlOgoKYGBgdHN4Ci8vIFN0YXRlZnVsIGNvbXBvbmVudAppbXBvcnQgeyBTdGF0ZSwgc3RhdGUgfSBmcm9tICJhbGVtIjsKaW1wb3J0IEhlcm8gZnJvbSAiLi9IZXJvIjsKaW1wb3J0IEZvb3RlciBmcm9tICIuL0Zvb3RlciI7Cgpjb25zdCBNeVN0YXRlZnVsQ29tcG9uZW50ID0gKCkgPT4gewogIFN0YXRlLmluaXQoeyB2ZXJzaW9uOiAxIH0pOyAvLyBBbnkgcmFuZG9tIGluZm9ybWF0aW9uCgogIHJldHVybiAoCiAgICA8PgogICAgICA8cD5WZXJzaW9uOiB7c3RhdGUudmVyc2lvbn08L3A+CiAgICAgIDxIZXJvIGxhYmVsPXtzdGF0ZS52ZXJzaW9ufSAvPgogICAgICA8Rm9vdGVyIC8+CiAgICA8Lz4KICApOwp9OwpgYGAKCiMjIFRTWCAmIEpTWAoKQSAudHN4Ly5qc3ggZmlsZSBjYW4gaGF2ZSBvbmx5IG9uZSBzdGF0ZWZ1bCBjb21wb25lbnQuIFlvdSBjYW4gY3JlYXRlIG90aGVyIGludGVybmFsIGNvbXBvbmVudHMgd2l0aGluIHRoZSBjb21wb25lbnQncyBmdW5jdGlvbi4KCuKchSAqKi0gUmlnaHQqKgoKYGBgdHN4CmltcG9ydCB7IFN0YXRlLCBzdGF0ZSB9IGZyb20gImFsZW0iOwoKY29uc3QgTXlTdGF0ZWZ1bENvbXBvbmVudCA9ICgpID0+IHsKICBTdGF0ZS5pbml0KHsgbmFtZTogIldlbmR6IiB9KTsKCiAgcmV0dXJuIDxwPm9pIHtzdGF0ZS5uYW1lfTwvcD47Cn07CgpleHBvcnQgZGVmYXVsdCBNeVN0YXRlZnVsQ29tcG9uZW50OwpgYGAKCuKdjCAqKi0gV3JvbmcqKgoKYGBgdHN4CmltcG9ydCB7IFN0YXRlLCBzdGF0ZSB9IGZyb20gImFsZW0iOwoKY29uc3QgTXlTdGF0ZWZ1bENvbXBvbmVudCA9ICgpID0+IHsKICBTdGF0ZS5pbml0KHsgbmFtZTogIldlbmR6IiB9KTsKCiAgcmV0dXJuIDxwPm9pIHtzdGF0ZS5uYW1lfTwvcD47Cn07CgpleHBvcnQgZGVmYXVsdCBNeVN0YXRlZnVsQ29tcG9uZW50OwoKLy8gU2Vjb25kIHN0YXRlZnVsIGNvbXBvbmVudCBhdCB0aGUgc2FtZSBmaWxlLiBUaGlzIGlzIGdvaW5nIHRvIGZhaWwhCmV4cG9ydCBjb25zdCBPdGhlclN0YXRlZnVsQ29tcG9uZW50ID0gKCkgPT4gewogIFN0YXRlLmluaXQoeyBhZ2U6IDIyIH0pOwoKICByZXR1cm4gPHA+QWdlOiB7c3RhdGUuYWdlfTwvcD47Cn07CmBgYAoKU3RhdGVsZXNzIGNvbXBvbmVudHMgY2FuIGhhdmUgYXMgbWFueSBjb21wb25lbnRzIGFzIHlvdSB3YW50IGluIG9uZSBmaWxlLgoK4pyFICoqLSBSaWdodCoqCgpgYGB0c3gKLy8gR3JvdXAgb2Ygc3RhdGVsZXNzIGNvbXBvbmVudHMKZXhwb3J0IGNvbnN0IENvbXBvbmVudEEgPSAoY29tcG9uZW50UHJvcHMpID0+IHsKICAvLyAuLi4KICByZXR1cm4gPHA+b2kge2NvbXBvbmVudFByb3BzLm5hbWV9PC9wPjsKfTsKCmV4cG9ydCBjb25zdCBDb21wb25lbnRCID0gKGNvbXBvbmVudFByb3BzKSA9PiB7CiAgLy8gLi4uCiAgcmV0dXJuIDxwPkhvbGEge2NvbXBvbmVudFByb3BzLm5hbWV9PC9wPjsKfTsKCmV4cG9ydCBjb25zdCBDb21wb25lbnRDID0gKGNvbXBvbmVudFByb3BzKSA9PiB7CiAgLy8gLi4uCiAgcmV0dXJuICgKICAgIDw+CiAgICAgIDxwPkhpIHtjb21wb25lbnRQcm9wcy5uYW1lfTwvcD4KICAgICAgPENvbXBvbmVudEIgLz4KICAgICAgPENvbXBvbmVudEEgLz4KICAgIDwvPgogICk7Cn07CmBgYAoKIyMgUHJlcGFyaW5nIHRoZSBSZXNvdXJjZXMKClByZWZlciB0byBjcmVhdGUgb25lIGZpbGUgcGVyIHJlc291cmNlLCBhcyBpbXBvcnRpbmcgYSByZXNvdXJjZSBmcm9tIGEgYC50cy8uanNgIGZpbGUgd2lsbCBpbmplY3QgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGF0IGZpbGUgaW50byB0aGUgV2lkZ2V0LiBUaGUgc2FtZSBnb2VzIGZvciBzdGF0ZWxlc3MgY29tcG9uZW50cy4KCiMjIENvbW1lbnRzCgpUaGlzIG1heSBiZSBvYnZpb3VzIGJ1dCB1c2UgdGhlIGNvcnJlY3QgZm9ybSBvZiBjb21tZW50cyBkdXJpbmcgZGV2ZWxvcG1lbnQgZm9yICoqQ1NTKiogYW5kICoqc3R5bGVkLWNvbXBvbmVudHMqKi4KCmBgYGNzcwovKiBjc3MgZmlsZSAqLwoKLm15LWNsYXNzIHsKICAvKiBDb3JyZWN0ICovCiAgZGlzcGxheTogZmxleDsKICAvLyBJbmNvcnJlY3QKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KYGBgCgpgYGB0c3gKLy8gdHN4IG9yIGpzeCBmaWxlIHVzaW5nIHN0eWxlZCBjb21wb25lbnRzCmltcG9ydCBzdHlsZWQgZnJvbSAic3R5bGVkLWNvbXBvbmVudHMiOwoKZXhwb3J0IGNvbnN0IEFwcENvbnRhaW5lciA9IHN0eWxlZC5kaXZgCiAgZGlzcGxheTogZmxleDsKICAvKiBDb3JyZWN0ICovCiAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAvLyBJbmNvcnJlY3QKICBmb250LWZhbWlseTogIldpeCBNYWRlZm9yIERpc3BsYXkiLCBzYW5zLXNlcmlmOwoKICBAbWVkaWEgKG1heC13aWR0aDogODAwcHgpIHsKICAgIGZsZXgtd3JhcDogd3JhcDsKICB9CmA7CmBgYAoKIyMgQXN5bmMgLyBBd2FpdAoKVGhlIHVzZSBvZiBgYXN5bmMvYXdhaXRgIGlzIHN1cHBvcnRlZCBhbmQgZXhwZXJpbWVudGFsLiBJdCBzaG91bGQgYmUgdXNlZCBvbmx5IGluIHRoZSBtYWluIHNjb3BlIG9mIHRoZSBjb21wb25lbnQuIEl0IHdpbGwgbWFrZSBjaGFuZ2VzIHRvIHRoZSBzdGF0ZSBvZiB0aGUgbWFpbiBXaWRnZXQuIERvIG5vdCB1c2UgaW4gaG9va3MuIEJlbG93IGlzIGFuIGV4YW1wbGUgb2YgdXNhZ2U6CgpgYGB0c3gKaW1wb3J0IHsgZmV0Y2gsIHVzZUVmZmVjdCB9IGZyb20gImFsZW0iOwoKY29uc3QgU29tZUNvbXBvbmVudCA9ICgpID0+IHsKICBjb25zdCBmZXRjaEl0ZW1zID0gYXN5bmMgKCkgPT4gewogICAgY29uc3QgaXRlbXMgPSBhd2FpdCBmZXRjaCgiaHR0cHM6Ly9hcGkuY29tL2l0ZW1zIik7CiAgfTsKCiAgdXNlRWZmZWN0KCgpID0+IHsKICAgIGZldGNoSXRlbXMoKTsKICB9LCBbXSk7CgogIGNvbnNvbGUubG9nKGl0ZW1zKTsKCiAgcmV0dXJuIDw+PC8+Owp9OwpgYGAKCiMjIExpbWl0YXRpb25zCgotIFRoZSB1c2Ugb2YgdGhlIGBpbXBvcnQgKiBmb28gZnJvbSAnLi9mb28nYCBzaWduYXR1cmUgaXMgbm90IHN1cHBvcnRlZC4gVGhpcyBpcyBpbnRlbnRpb25hbCwgYXMgdGhlIGlkZWEgaXMgdG8gaW1wb3J0IG9ubHkgdGhlIG5lY2Vzc2FyeSBmcmFnbWVudHMgaW50byB0aGUgV2lkZ2V0LgotIEFsw6ltIGZpeGVzIGR1cGxpY2F0ZSBpdGVtIG5hbWVzIGJlaW5nIGV4cG9ydGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBhdXRvbWF0aWNhbGx5LCBidXQgeW91IHNob3VsZCBhdm9pZCBpbXBvcnRpbmcgYSByZXNvdXJjZSB0aGF0IGhhcyB0aGUgc2FtZSBuYW1lIGFzIGFueSB2YXJpYWJsZSB3aXRoaW4geW91ciBjb21wb25lbnQuIEUuZy46CgrinIUgKiotIFJpZ2h0KioKCmBgYHRzCi8vIGFDb250cmFjdC50cwpleHBvcnQgY29uc3QgY29udHJhY3RJZCA9ICJjb250cmFjdC1pZC1hLm5lYXIiOwovLyAuLi4KYGBgCgpgYGB0cwovLyBIb21lUGFnZS50c3gKaW1wb3J0IHsgY29udHJhY3RJZCB9IGZyb20gJy4vY29udHJhY3RJZCc7Cgpjb25zdCBIb21lUGFnZSA9ICgpID0+IHsKICBjb25zdCBjb250cmFjdElkX0IgPSAiY29udHJhY3QtaWQtYi5uZWFyIgoKICByZXR1cm4gKAogICAgLy8gLi4uCiAgKQp9CgpleHBvcnQgZGVmYXVsdCBIb21lUGFnZTsKYGBgCgrinYwgKiotIFdyb25nKioKCmBgYHRzCi8vIGFDb250cmFjdC50cwpleHBvcnQgY29uc3QgY29udHJhY3RJZCA9ICJjb250cmFjdC1pZC1hLm5lYXIiOwpleHBvcnQgY29uc3QgY29udHJhY3RJZF9DID0gImNvbnRyYWN0LWlkLWMubmVhciI7Ci8vIC4uLgpgYGAKCmBgYHRzCi8vIEhvbWVQYWdlLnRzeAppbXBvcnQgeyBjb250cmFjdElkX0MgfSBmcm9tICcuL2NvbnRyYWN0SWQnOwoKY29uc3QgSG9tZVBhZ2UgPSAoKSA9PiB7CiAgLy8gRVJST1I6IHRoaXMgd2lsbCBicmVhayB0aGUgYXBwbGljYXRpb24gYmVjYXVzZSB0aGUgImNvbnRyYWN0SWQiIGZyb20gYUNvbnRyYWN0LnRzIGlzIGFsc28gZ29pbmcgdG8gYmUKICAvLyBpbmplY3RlZCB0byB0aGUgZmluYWwgZmlsZSBhZnRlciBjb21waWxhdGlvbi4KICBjb25zdCBjb250cmFjdElkID0gImNvbnRyYWN0LWlkLWIubmVhciI7CgogIHJldHVybiAoCiAgICAvLyAuLi4KICApCn0KCmV4cG9ydCBkZWZhdWx0IEhvbWVQYWdlOwpgYGAK`, "base64").toString("utf-8"); return } diff --git a/src/md/feature-overview.md b/src/md/feature-overview.md index afa8f49..c772678 100644 --- a/src/md/feature-overview.md +++ b/src/md/feature-overview.md @@ -2,6 +2,16 @@ Alem is a web3 **JavaScript** / **TypeScript** library to create web3 apps for Near BOS. You can create your applications in a similar way to React. All components and other resources will be transformed into a file understandable by Near VM. +**Tip:** Use function as much as possible. Even if it is an object to be shared, use a function to return the object. E.g.: + +```ts +export const utils = () => ({ + contractId: "contract-foo.near", + getItems: () => Storage.get("items"), + // ... +}); +``` + ## Component You can create any component file using **JavaScript** or **TypeScript**. The entrypoint must be an App component like so: diff --git a/src/pages/About/About.tsx b/src/pages/About/About.tsx index dd76697..02e0b7b 100644 --- a/src/pages/About/About.tsx +++ b/src/pages/About/About.tsx @@ -12,7 +12,7 @@ import { RedCode, } from "./styles"; import { Row } from "../../components/UI"; -import { RoutesPath } from "../../routeProps"; +import { RoutesPath } from "../../routes/routeProps"; export const AboutPage = () => { return ( diff --git a/src/Routes.tsx b/src/routes/Routes.tsx similarity index 64% rename from src/Routes.tsx rename to src/routes/Routes.tsx index f9c1ac9..cf2cf92 100644 --- a/src/Routes.tsx +++ b/src/routes/Routes.tsx @@ -1,6 +1,8 @@ -import { Router, createRoute, useParams } from "alem"; -import { AboutPage } from "./pages/About/About"; +import { Router, createRoute, getLocation, useParams } from "alem"; +import { AboutPage } from "../pages/About/About"; import { RoutesPath } from "./routeProps"; +import nextPrevRoutes from "./nextPrevRoutes"; +import getRouteTitleByPath from "./getRouteTitleByPath"; import FeatureOverview from "@md/FeatureOverview"; import Installation from "@md/Installation"; import ConfigFile from "@md/ConfigFile"; @@ -18,12 +20,19 @@ import IsDevelopment from "@md/api/IsDevelopment"; import BosOverview from "@md/BosOverview"; import CreateDebounce from "@md/api/CreateDebounce"; import RoutesDocs from "@md/router/RoutesDocs"; +import { FooterNavContainer, NextPrevButton } from "./styles"; const Routes = () => { - const AboutPageRoute = createRoute(RoutesPath.about.path, AboutPage); + const urlParams = useParams(); + const location = getLocation(); + const nextPrev = nextPrevRoutes(); + const next = nextPrev[location.pathname].next; + const prev = nextPrev[location.pathname].prev; + const nextTitle = getRouteTitleByPath(next); + const prevTitle = getRouteTitleByPath(prev); const routes = [ - AboutPageRoute, + createRoute(RoutesPath.about.path, AboutPage), { path: RoutesPath.featureOverview.path, component: FeatureOverview, @@ -54,9 +63,26 @@ const Routes = () => { createRoute(RoutesPath.bosProps.path, BosOverview), ]; - const urlParams = useParams(); + return ( + <> + + + {prev && ( + +

Previous

+ {prevTitle} +
+ )} - return ; + {next && ( + +

Next

+ {nextTitle} +
+ )} +
+ + ); }; export default Routes; diff --git a/src/routes/getRouteTitleByPath.ts b/src/routes/getRouteTitleByPath.ts new file mode 100644 index 0000000..13fd582 --- /dev/null +++ b/src/routes/getRouteTitleByPath.ts @@ -0,0 +1,14 @@ +import { RoutesPath } from "./routeProps"; + +const getRouteTitleByPath = (routePath?: string) => { + if (!routePath) return ""; + let routeProps: any = null; + Object.keys(RoutesPath).forEach((route) => { + if ((RoutesPath as any)[route].path === routePath) { + routeProps = (RoutesPath as any)[route]; + } + }); + return routeProps.title; +}; + +export default getRouteTitleByPath; diff --git a/src/routes/nextPrevRoutes.ts b/src/routes/nextPrevRoutes.ts new file mode 100644 index 0000000..8a993d3 --- /dev/null +++ b/src/routes/nextPrevRoutes.ts @@ -0,0 +1,85 @@ +import { RoutesPath } from "./routeProps"; + +const nextPrevRoutes = () => ({ + // Getting Started + [RoutesPath.about.path]: { + next: RoutesPath.featureOverview.path, + }, + [RoutesPath.featureOverview.path]: { + prev: RoutesPath.about.path, + next: RoutesPath.installation.path, + }, + [RoutesPath.installation.path]: { + prev: RoutesPath.featureOverview.path, + next: RoutesPath.configFile.path, + }, + [RoutesPath.configFile.path]: { + prev: RoutesPath.installation.path, + next: RoutesPath.cli.path, + }, + [RoutesPath.cli.path]: { + prev: RoutesPath.configFile.path, + next: RoutesPath.deployingWithGithubActions.path, + }, + [RoutesPath.deployingWithGithubActions.path]: { + prev: RoutesPath.cli.path, + next: RoutesPath.routes.path, + }, + + // Routes + [RoutesPath.routes.path]: { + prev: RoutesPath.deployingWithGithubActions.path, + next: RoutesPath.routeLink.path, + }, + [RoutesPath.routeLink.path]: { + prev: RoutesPath.routes.path, + next: RoutesPath.navigate.path, + }, + [RoutesPath.navigate.path]: { + prev: RoutesPath.routeLink.path, + next: RoutesPath.getLocation.path, + }, + [RoutesPath.getLocation.path]: { + prev: RoutesPath.navigate.path, + next: RoutesPath.useParams.path, + }, + [RoutesPath.useParams.path]: { + prev: RoutesPath.getLocation.path, + next: RoutesPath.useRoutes.path, + }, + [RoutesPath.useRoutes.path]: { + prev: RoutesPath.useParams.path, + next: RoutesPath.createAndUseContext.path, + }, + + // Context + [RoutesPath.createAndUseContext.path]: { + prev: RoutesPath.useRoutes.path, + next: RoutesPath.loadExternalStyles.path, + }, + + // Utils + [RoutesPath.loadExternalStyles.path]: { + prev: RoutesPath.createAndUseContext.path, + next: RoutesPath.promisify.path, + }, + [RoutesPath.promisify.path]: { + prev: RoutesPath.loadExternalStyles.path, + next: RoutesPath.isDevelopment.path, + }, + [RoutesPath.isDevelopment.path]: { + prev: RoutesPath.promisify.path, + next: RoutesPath.createDebounce.path, + }, + [RoutesPath.createDebounce.path]: { + prev: RoutesPath.isDevelopment.path, + next: RoutesPath.bosProps.path, + }, + + // NEAR VM (BOS) + [RoutesPath.bosProps.path]: { + prev: RoutesPath.createDebounce.path, + }, +}); + +export default nextPrevRoutes; diff --git a/src/routeProps.ts b/src/routes/routeProps.ts similarity index 100% rename from src/routeProps.ts rename to src/routes/routeProps.ts diff --git a/src/routes/styles.ts b/src/routes/styles.ts new file mode 100644 index 0000000..8abc87a --- /dev/null +++ b/src/routes/styles.ts @@ -0,0 +1,45 @@ +import styled from "styled-components"; + +export const FooterNavContainer = styled.div<{ hasPrevious?: boolean; hasNext?: boolean }>` + display: flex; + justify-content: ${(props) => + props.hasPrevious && props.hasPrevious + ? "space-between" + : !props.hasPrevious && props.hasNext + ? "flex-end" + : props.hasPrevious && !props.hasNext + ? "flex-start" + : "flex-end"}; + margin-top: 28px; +`; + +export const NextPrevButton = styled.a<{ next?: boolean }>` + width: 45%; + padding: 18px; + display: flex; + flex-direction: column; + align-items: ${(props) => (props.next ? "flex-end" : "flex-start")}; + border: 1px solid #dadde1; + border-radius: 0.4rem; + transition: border 0.2s; + background-color: #fff; + cursor: pointer; + + :hover { + border: 1px solid rgb(8, 126, 164); + text-decoration: none; + } + + p { + color: #525860; + font-size: 0.875rem; + font-weight: 500; + margin-bottom: 2px; + } + + span { + color: rgb(8, 126, 164); + font-size: 1rem; + font-weight: 700; + } +`; diff --git a/src/utils/getLinksByCategory.tsx b/src/utils/getLinksByCategory.tsx index 9aeee49..5fa24fe 100644 --- a/src/utils/getLinksByCategory.tsx +++ b/src/utils/getLinksByCategory.tsx @@ -1,5 +1,5 @@ import { RouteLink, getLocation } from "alem"; -import { RoutesPath, RoutesPathProps } from "../routeProps"; +import { RoutesPath, RoutesPathProps } from "../routes/routeProps"; const getLinksByCategory = (category: string, onItemClick?: () => void) => { const { pathname } = getLocation(); From 1511c8ff0e07ec4c4f2fc50189a088f7bc54a765 Mon Sep 17 00:00:00 2001 From: Wenderson Pires Date: Tue, 2 Apr 2024 19:31:01 -0300 Subject: [PATCH 3/3] feature overview update --- package.json | 2 +- src/md/FeatureOverview.tsx | 2 +- src/md/feature-overview.md | 4 ++++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 35957ac..02bd6b8 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "deploy:testnet": "npm run build; alem deploy --network testnet" }, "dependencies": { - "alem": "1.0.0-beta.3" + "alem": "1.0.0-beta.4" }, "devDependencies": { "@types/styled-components": "^5.1.26", diff --git a/src/md/FeatureOverview.tsx b/src/md/FeatureOverview.tsx index cfe8867..1aa0928 100644 --- a/src/md/FeatureOverview.tsx +++ b/src/md/FeatureOverview.tsx @@ -1,7 +1,7 @@ import { Markdown } from 'alem'; const FeatureOverview = () => { - const mdContent = Buffer.from(`IyBGZWF0dXJlIE92ZXJ2aWV3CgpBbGVtIGlzIGEgd2ViMyAqKkphdmFTY3JpcHQqKiAvICoqVHlwZVNjcmlwdCoqIGxpYnJhcnkgdG8gY3JlYXRlIHdlYjMgYXBwcyBmb3IgTmVhciBCT1MuIFlvdSBjYW4gY3JlYXRlIHlvdXIgYXBwbGljYXRpb25zIGluIGEgc2ltaWxhciB3YXkgdG8gUmVhY3QuIEFsbCBjb21wb25lbnRzIGFuZCBvdGhlciByZXNvdXJjZXMgd2lsbCBiZSB0cmFuc2Zvcm1lZCBpbnRvIGEgZmlsZSB1bmRlcnN0YW5kYWJsZSBieSBOZWFyIFZNLgoKKipUaXA6KiogVXNlIGZ1bmN0aW9uIGFzIG11Y2ggYXMgcG9zc2libGUuIEV2ZW4gaWYgaXQgaXMgYW4gb2JqZWN0IHRvIGJlIHNoYXJlZCwgdXNlIGEgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBvYmplY3QuIEUuZy46CgpgYGB0cwpleHBvcnQgY29uc3QgdXRpbHMgPSAoKSA9PiAoewogIGNvbnRyYWN0SWQ6ICJjb250cmFjdC1mb28ubmVhciIsCiAgZ2V0SXRlbXM6ICgpID0+IFN0b3JhZ2UuZ2V0KCJpdGVtcyIpLAogIC8vIC4uLgp9KTsKYGBgCgojIyBDb21wb25lbnQKCllvdSBjYW4gY3JlYXRlIGFueSBjb21wb25lbnQgZmlsZSB1c2luZyAqKkphdmFTY3JpcHQqKiBvciAqKlR5cGVTY3JpcHQqKi4gVGhlIGVudHJ5cG9pbnQgbXVzdCBiZSBhbiBBcHAgY29tcG9uZW50IGxpa2Ugc286CgpgYGB0c3gKY29uc3QgQXBwID0gKCkgPT4gewogIHJldHVybiAoCiAgICA8PgogICAgICA8aDE+SGVsbG8gV29ybGQ8L2gxPgogICAgPC8+CiAgKTsKfTsKCmV4cG9ydCBkZWZhdWx0IEFwcDsKYGBgCgojIyBDb21wb25lbnQgUHJvcHMKClBhc3NpbmcgcHJvcGVydGllcyB0byBhIGNvbXBvbmVudCBpcyB2ZXJ5IHNpbXBsZS4gSnVzdCB1c2UgcmVhY3QncyBkZWZhdWx0czoKCmBgYHRzeApleHBvcnQgY29uc3QgQ29tcG9uZW50QSA9ICh7IG5hbWUgfTogeyBuYW1lOiBzdHJpbmcgfSkgPT4gewogIHJldHVybiA8cD57bmFtZX08L3A+Owp9OwoKZXhwb3J0IGNvbnN0IENvbXBvbmVudEIgPSAoKSA9PiB7CiAgcmV0dXJuIDxDb21wb25lbnRBIG5hbWU9IldlbmR6IiAvPjsKfTsKCmV4cG9ydCBjb25zdCBDb21wb25lbnRDID0gKGNvbXBvbmVudFByb3BzOiB7IG5hbWU6IHN0cmluZyB9KSA9PiB7CiAgcmV0dXJuIDxwPntjb21wb25lbnRQcm9wcy5uYW1lfTwvcD47Cn07CmBgYAoKIyBHb29kIHRvIEtub3cKCiMjIFN0YXRlZnVsICYgU3RhdGVsZXNzIENvbXBvbmVudHMKClN0YXRlZnVsIGNvbXBvbmVudHMgYXJlIGludGVycHJldGVkIGFzIFdpZGdldHMgYnkgQWzDqW0sIHdoaWxlIFN0YXRlbGVzcyBjb21wb25lbnRzIGFyZSBzZWVuIGFzIGF1eGlsaWFyeSByZXNvdXJjZXMgaW5qZWN0ZWQgaW50byB0aGUgV2lkZ2V0cyB0aGF0IGltcG9ydCB0aGVtLgoKVXNpbmcgYW55IG9mIHRoZXNlIGZlYXR1cmVzIHdpbGwgY2F1c2UgYSBjb21wb25lbnQgdG8gYmUgY29uc2lkZXJlZCBTdGF0ZWZ1bDoKCmBgYHRzCmNvbnN0IFtmb28sIHNldEZvb10gPSB1c2VTdGF0ZShiYXIpOwp1c2VFZmZlY3QoKCkgPT4ge30sIFtdKTsKdXNlTWVtbygoKSA9PiB7fSwgW10pOwpTdGF0ZS5pbml0KHt9KTsKYGBgCgpFeGFtcGxlIG9mIHN0YXRlbGVzcyBhbmQgc3RhdGVmdWwgY29tcG9uZW50czoKCmBgYHRzeAovLyBTdGF0ZWxlc3MgY29tcG9uZW50CmNvbnN0IEhlcm8gPSAoeyBsYWJlbCB9OiB7IGxhYmVsOiBzdHJpbmcgfSkgPT4gewogIHJldHVybiA8cD5IZXJvIEJhciAtIHtsYWJlbH08L3A+Owp9OwpgYGAKCmBgYHRzeAovLyBTdGF0ZWZ1bCBjb21wb25lbnQKaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gImFsZW0iOwoKY29uc3QgRm9vdGVyID0gKCkgPT4gewogIGNvbnN0IFtmb290ZXJMYWJlbF0gPSB1c2VTdGF0ZSgiVGhpcyBpcyBmb290ZXIiKTsKCiAgcmV0dXJuIDxwPntmb290ZXJMYWJlbH08L3A+Owp9OwpgYGAKCk5vdywgbGV0J3MgaW1wbGVtZW50IHRoZSBjb21wb25lbnQgdGhhdCBpcyBnb2luZyB0byBpbXBvcnQgYm90aCBjb21wb25lbnRzIGFib3ZlOgoKYGBgdHN4Ci8vIFN0YXRlZnVsIGNvbXBvbmVudAppbXBvcnQgeyBTdGF0ZSwgc3RhdGUgfSBmcm9tICJhbGVtIjsKaW1wb3J0IEhlcm8gZnJvbSAiLi9IZXJvIjsKaW1wb3J0IEZvb3RlciBmcm9tICIuL0Zvb3RlciI7Cgpjb25zdCBNeVN0YXRlZnVsQ29tcG9uZW50ID0gKCkgPT4gewogIFN0YXRlLmluaXQoeyB2ZXJzaW9uOiAxIH0pOyAvLyBBbnkgcmFuZG9tIGluZm9ybWF0aW9uCgogIHJldHVybiAoCiAgICA8PgogICAgICA8cD5WZXJzaW9uOiB7c3RhdGUudmVyc2lvbn08L3A+CiAgICAgIDxIZXJvIGxhYmVsPXtzdGF0ZS52ZXJzaW9ufSAvPgogICAgICA8Rm9vdGVyIC8+CiAgICA8Lz4KICApOwp9OwpgYGAKCiMjIFRTWCAmIEpTWAoKQSAudHN4Ly5qc3ggZmlsZSBjYW4gaGF2ZSBvbmx5IG9uZSBzdGF0ZWZ1bCBjb21wb25lbnQuIFlvdSBjYW4gY3JlYXRlIG90aGVyIGludGVybmFsIGNvbXBvbmVudHMgd2l0aGluIHRoZSBjb21wb25lbnQncyBmdW5jdGlvbi4KCuKchSAqKi0gUmlnaHQqKgoKYGBgdHN4CmltcG9ydCB7IFN0YXRlLCBzdGF0ZSB9IGZyb20gImFsZW0iOwoKY29uc3QgTXlTdGF0ZWZ1bENvbXBvbmVudCA9ICgpID0+IHsKICBTdGF0ZS5pbml0KHsgbmFtZTogIldlbmR6IiB9KTsKCiAgcmV0dXJuIDxwPm9pIHtzdGF0ZS5uYW1lfTwvcD47Cn07CgpleHBvcnQgZGVmYXVsdCBNeVN0YXRlZnVsQ29tcG9uZW50OwpgYGAKCuKdjCAqKi0gV3JvbmcqKgoKYGBgdHN4CmltcG9ydCB7IFN0YXRlLCBzdGF0ZSB9IGZyb20gImFsZW0iOwoKY29uc3QgTXlTdGF0ZWZ1bENvbXBvbmVudCA9ICgpID0+IHsKICBTdGF0ZS5pbml0KHsgbmFtZTogIldlbmR6IiB9KTsKCiAgcmV0dXJuIDxwPm9pIHtzdGF0ZS5uYW1lfTwvcD47Cn07CgpleHBvcnQgZGVmYXVsdCBNeVN0YXRlZnVsQ29tcG9uZW50OwoKLy8gU2Vjb25kIHN0YXRlZnVsIGNvbXBvbmVudCBhdCB0aGUgc2FtZSBmaWxlLiBUaGlzIGlzIGdvaW5nIHRvIGZhaWwhCmV4cG9ydCBjb25zdCBPdGhlclN0YXRlZnVsQ29tcG9uZW50ID0gKCkgPT4gewogIFN0YXRlLmluaXQoeyBhZ2U6IDIyIH0pOwoKICByZXR1cm4gPHA+QWdlOiB7c3RhdGUuYWdlfTwvcD47Cn07CmBgYAoKU3RhdGVsZXNzIGNvbXBvbmVudHMgY2FuIGhhdmUgYXMgbWFueSBjb21wb25lbnRzIGFzIHlvdSB3YW50IGluIG9uZSBmaWxlLgoK4pyFICoqLSBSaWdodCoqCgpgYGB0c3gKLy8gR3JvdXAgb2Ygc3RhdGVsZXNzIGNvbXBvbmVudHMKZXhwb3J0IGNvbnN0IENvbXBvbmVudEEgPSAoY29tcG9uZW50UHJvcHMpID0+IHsKICAvLyAuLi4KICByZXR1cm4gPHA+b2kge2NvbXBvbmVudFByb3BzLm5hbWV9PC9wPjsKfTsKCmV4cG9ydCBjb25zdCBDb21wb25lbnRCID0gKGNvbXBvbmVudFByb3BzKSA9PiB7CiAgLy8gLi4uCiAgcmV0dXJuIDxwPkhvbGEge2NvbXBvbmVudFByb3BzLm5hbWV9PC9wPjsKfTsKCmV4cG9ydCBjb25zdCBDb21wb25lbnRDID0gKGNvbXBvbmVudFByb3BzKSA9PiB7CiAgLy8gLi4uCiAgcmV0dXJuICgKICAgIDw+CiAgICAgIDxwPkhpIHtjb21wb25lbnRQcm9wcy5uYW1lfTwvcD4KICAgICAgPENvbXBvbmVudEIgLz4KICAgICAgPENvbXBvbmVudEEgLz4KICAgIDwvPgogICk7Cn07CmBgYAoKIyMgUHJlcGFyaW5nIHRoZSBSZXNvdXJjZXMKClByZWZlciB0byBjcmVhdGUgb25lIGZpbGUgcGVyIHJlc291cmNlLCBhcyBpbXBvcnRpbmcgYSByZXNvdXJjZSBmcm9tIGEgYC50cy8uanNgIGZpbGUgd2lsbCBpbmplY3QgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGF0IGZpbGUgaW50byB0aGUgV2lkZ2V0LiBUaGUgc2FtZSBnb2VzIGZvciBzdGF0ZWxlc3MgY29tcG9uZW50cy4KCiMjIENvbW1lbnRzCgpUaGlzIG1heSBiZSBvYnZpb3VzIGJ1dCB1c2UgdGhlIGNvcnJlY3QgZm9ybSBvZiBjb21tZW50cyBkdXJpbmcgZGV2ZWxvcG1lbnQgZm9yICoqQ1NTKiogYW5kICoqc3R5bGVkLWNvbXBvbmVudHMqKi4KCmBgYGNzcwovKiBjc3MgZmlsZSAqLwoKLm15LWNsYXNzIHsKICAvKiBDb3JyZWN0ICovCiAgZGlzcGxheTogZmxleDsKICAvLyBJbmNvcnJlY3QKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KYGBgCgpgYGB0c3gKLy8gdHN4IG9yIGpzeCBmaWxlIHVzaW5nIHN0eWxlZCBjb21wb25lbnRzCmltcG9ydCBzdHlsZWQgZnJvbSAic3R5bGVkLWNvbXBvbmVudHMiOwoKZXhwb3J0IGNvbnN0IEFwcENvbnRhaW5lciA9IHN0eWxlZC5kaXZgCiAgZGlzcGxheTogZmxleDsKICAvKiBDb3JyZWN0ICovCiAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAvLyBJbmNvcnJlY3QKICBmb250LWZhbWlseTogIldpeCBNYWRlZm9yIERpc3BsYXkiLCBzYW5zLXNlcmlmOwoKICBAbWVkaWEgKG1heC13aWR0aDogODAwcHgpIHsKICAgIGZsZXgtd3JhcDogd3JhcDsKICB9CmA7CmBgYAoKIyMgQXN5bmMgLyBBd2FpdAoKVGhlIHVzZSBvZiBgYXN5bmMvYXdhaXRgIGlzIHN1cHBvcnRlZCBhbmQgZXhwZXJpbWVudGFsLiBJdCBzaG91bGQgYmUgdXNlZCBvbmx5IGluIHRoZSBtYWluIHNjb3BlIG9mIHRoZSBjb21wb25lbnQuIEl0IHdpbGwgbWFrZSBjaGFuZ2VzIHRvIHRoZSBzdGF0ZSBvZiB0aGUgbWFpbiBXaWRnZXQuIERvIG5vdCB1c2UgaW4gaG9va3MuIEJlbG93IGlzIGFuIGV4YW1wbGUgb2YgdXNhZ2U6CgpgYGB0c3gKaW1wb3J0IHsgZmV0Y2gsIHVzZUVmZmVjdCB9IGZyb20gImFsZW0iOwoKY29uc3QgU29tZUNvbXBvbmVudCA9ICgpID0+IHsKICBjb25zdCBmZXRjaEl0ZW1zID0gYXN5bmMgKCkgPT4gewogICAgY29uc3QgaXRlbXMgPSBhd2FpdCBmZXRjaCgiaHR0cHM6Ly9hcGkuY29tL2l0ZW1zIik7CiAgfTsKCiAgdXNlRWZmZWN0KCgpID0+IHsKICAgIGZldGNoSXRlbXMoKTsKICB9LCBbXSk7CgogIGNvbnNvbGUubG9nKGl0ZW1zKTsKCiAgcmV0dXJuIDw+PC8+Owp9OwpgYGAKCiMjIExpbWl0YXRpb25zCgotIFRoZSB1c2Ugb2YgdGhlIGBpbXBvcnQgKiBmb28gZnJvbSAnLi9mb28nYCBzaWduYXR1cmUgaXMgbm90IHN1cHBvcnRlZC4gVGhpcyBpcyBpbnRlbnRpb25hbCwgYXMgdGhlIGlkZWEgaXMgdG8gaW1wb3J0IG9ubHkgdGhlIG5lY2Vzc2FyeSBmcmFnbWVudHMgaW50byB0aGUgV2lkZ2V0LgotIEFsw6ltIGZpeGVzIGR1cGxpY2F0ZSBpdGVtIG5hbWVzIGJlaW5nIGV4cG9ydGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBhdXRvbWF0aWNhbGx5LCBidXQgeW91IHNob3VsZCBhdm9pZCBpbXBvcnRpbmcgYSByZXNvdXJjZSB0aGF0IGhhcyB0aGUgc2FtZSBuYW1lIGFzIGFueSB2YXJpYWJsZSB3aXRoaW4geW91ciBjb21wb25lbnQuIEUuZy46CgrinIUgKiotIFJpZ2h0KioKCmBgYHRzCi8vIGFDb250cmFjdC50cwpleHBvcnQgY29uc3QgY29udHJhY3RJZCA9ICJjb250cmFjdC1pZC1hLm5lYXIiOwovLyAuLi4KYGBgCgpgYGB0cwovLyBIb21lUGFnZS50c3gKaW1wb3J0IHsgY29udHJhY3RJZCB9IGZyb20gJy4vY29udHJhY3RJZCc7Cgpjb25zdCBIb21lUGFnZSA9ICgpID0+IHsKICBjb25zdCBjb250cmFjdElkX0IgPSAiY29udHJhY3QtaWQtYi5uZWFyIgoKICByZXR1cm4gKAogICAgLy8gLi4uCiAgKQp9CgpleHBvcnQgZGVmYXVsdCBIb21lUGFnZTsKYGBgCgrinYwgKiotIFdyb25nKioKCmBgYHRzCi8vIGFDb250cmFjdC50cwpleHBvcnQgY29uc3QgY29udHJhY3RJZCA9ICJjb250cmFjdC1pZC1hLm5lYXIiOwpleHBvcnQgY29uc3QgY29udHJhY3RJZF9DID0gImNvbnRyYWN0LWlkLWMubmVhciI7Ci8vIC4uLgpgYGAKCmBgYHRzCi8vIEhvbWVQYWdlLnRzeAppbXBvcnQgeyBjb250cmFjdElkX0MgfSBmcm9tICcuL2NvbnRyYWN0SWQnOwoKY29uc3QgSG9tZVBhZ2UgPSAoKSA9PiB7CiAgLy8gRVJST1I6IHRoaXMgd2lsbCBicmVhayB0aGUgYXBwbGljYXRpb24gYmVjYXVzZSB0aGUgImNvbnRyYWN0SWQiIGZyb20gYUNvbnRyYWN0LnRzIGlzIGFsc28gZ29pbmcgdG8gYmUKICAvLyBpbmplY3RlZCB0byB0aGUgZmluYWwgZmlsZSBhZnRlciBjb21waWxhdGlvbi4KICBjb25zdCBjb250cmFjdElkID0gImNvbnRyYWN0LWlkLWIubmVhciI7CgogIHJldHVybiAoCiAgICAvLyAuLi4KICApCn0KCmV4cG9ydCBkZWZhdWx0IEhvbWVQYWdlOwpgYGAK`, "base64").toString("utf-8"); + const mdContent = Buffer.from(`IyBGZWF0dXJlIE92ZXJ2aWV3CgpBbGVtIGlzIGEgd2ViMyAqKkphdmFTY3JpcHQqKiAvICoqVHlwZVNjcmlwdCoqIGxpYnJhcnkgdG8gY3JlYXRlIHdlYjMgYXBwcyBmb3IgTmVhciBCT1MuIFlvdSBjYW4gY3JlYXRlIHlvdXIgYXBwbGljYXRpb25zIGluIGEgc2ltaWxhciB3YXkgdG8gUmVhY3QuIEFsbCBjb21wb25lbnRzIGFuZCBvdGhlciByZXNvdXJjZXMgd2lsbCBiZSB0cmFuc2Zvcm1lZCBpbnRvIGEgZmlsZSB1bmRlcnN0YW5kYWJsZSBieSBOZWFyIFZNLgoKQWxlbSBtYWtlcyBpdCBwYWlubGVzcyB0byBjcmVhdGUgaW50ZXJhY3RpdmUgVUlzLiBEZXNpZ24gc2ltcGxlIHZpZXdzIGZvciBlYWNoIHN0YXRlIGluIHlvdXIgYXBwbGljYXRpb24uIERlY2xhcmF0aXZlIHZpZXdzIG1ha2UgeW91ciBjb2RlIG1vcmUgcHJlZGljdGFibGUsIHNpbXBsZXIgdG8gdW5kZXJzdGFuZCwgYW5kIGVhc2llciB0byBkZWJ1Zy4KCkJ1aWxkIGVuY2Fwc3VsYXRlZCBjb21wb25lbnRzIHRoYXQgbWFuYWdlIHRoZWlyIG93biBzdGF0ZSwgdGhlbiBjb21wb3NlIHRoZW0gdG8gbWFrZSBjb21wbGV4IFVJcy4gU2luY2UgY29tcG9uZW50IGxvZ2ljIGlzIHdyaXR0ZW4gaW4gSmF2YVNjcmlwdCwgeW91IGNhbiBlYXNpbHkgcGFzcyByaWNoIGRhdGEgdGhyb3VnaCB5b3VyIGFwcC4KCioqVGlwOioqIFVzZSBmdW5jdGlvbiBhcyBtdWNoIGFzIHBvc3NpYmxlLiBFdmVuIGlmIGl0IGlzIGFuIG9iamVjdCB0byBiZSBzaGFyZWQsIHVzZSBhIGZ1bmN0aW9uIHRvIHJldHVybiB0aGUgb2JqZWN0LiBFLmcuOgoKYGBgdHMKZXhwb3J0IGNvbnN0IHV0aWxzID0gKCkgPT4gKHsKICBjb250cmFjdElkOiAiY29udHJhY3QtZm9vLm5lYXIiLAogIGdldEl0ZW1zOiAoKSA9PiBTdG9yYWdlLmdldCgiaXRlbXMiKSwKICAvLyAuLi4KfSk7CmBgYAoKIyMgQ29tcG9uZW50CgpZb3UgY2FuIGNyZWF0ZSBhbnkgY29tcG9uZW50IGZpbGUgdXNpbmcgKipKYXZhU2NyaXB0Kiogb3IgKipUeXBlU2NyaXB0KiouIFRoZSBlbnRyeXBvaW50IG11c3QgYmUgYW4gQXBwIGNvbXBvbmVudCBsaWtlIHNvOgoKYGBgdHN4CmNvbnN0IEFwcCA9ICgpID0+IHsKICByZXR1cm4gKAogICAgPD4KICAgICAgPGgxPkhlbGxvIFdvcmxkPC9oMT4KICAgIDwvPgogICk7Cn07CgpleHBvcnQgZGVmYXVsdCBBcHA7CmBgYAoKIyMgQ29tcG9uZW50IFByb3BzCgpQYXNzaW5nIHByb3BlcnRpZXMgdG8gYSBjb21wb25lbnQgaXMgdmVyeSBzaW1wbGUuIEp1c3QgdXNlIHJlYWN0J3MgZGVmYXVsdHM6CgpgYGB0c3gKZXhwb3J0IGNvbnN0IENvbXBvbmVudEEgPSAoeyBuYW1lIH06IHsgbmFtZTogc3RyaW5nIH0pID0+IHsKICByZXR1cm4gPHA+e25hbWV9PC9wPjsKfTsKCmV4cG9ydCBjb25zdCBDb21wb25lbnRCID0gKCkgPT4gewogIHJldHVybiA8Q29tcG9uZW50QSBuYW1lPSJXZW5keiIgLz47Cn07CgpleHBvcnQgY29uc3QgQ29tcG9uZW50QyA9IChjb21wb25lbnRQcm9wczogeyBuYW1lOiBzdHJpbmcgfSkgPT4gewogIHJldHVybiA8cD57Y29tcG9uZW50UHJvcHMubmFtZX08L3A+Owp9OwpgYGAKCiMgR29vZCB0byBLbm93CgojIyBTdGF0ZWZ1bCAmIFN0YXRlbGVzcyBDb21wb25lbnRzCgpTdGF0ZWZ1bCBjb21wb25lbnRzIGFyZSBpbnRlcnByZXRlZCBhcyBXaWRnZXRzIGJ5IEFsw6ltLCB3aGlsZSBTdGF0ZWxlc3MgY29tcG9uZW50cyBhcmUgc2VlbiBhcyBhdXhpbGlhcnkgcmVzb3VyY2VzIGluamVjdGVkIGludG8gdGhlIFdpZGdldHMgdGhhdCBpbXBvcnQgdGhlbS4KClVzaW5nIGFueSBvZiB0aGVzZSBmZWF0dXJlcyB3aWxsIGNhdXNlIGEgY29tcG9uZW50IHRvIGJlIGNvbnNpZGVyZWQgU3RhdGVmdWw6CgpgYGB0cwpjb25zdCBbZm9vLCBzZXRGb29dID0gdXNlU3RhdGUoYmFyKTsKdXNlRWZmZWN0KCgpID0+IHt9LCBbXSk7CnVzZU1lbW8oKCkgPT4ge30sIFtdKTsKU3RhdGUuaW5pdCh7fSk7CmBgYAoKRXhhbXBsZSBvZiBzdGF0ZWxlc3MgYW5kIHN0YXRlZnVsIGNvbXBvbmVudHM6CgpgYGB0c3gKLy8gU3RhdGVsZXNzIGNvbXBvbmVudApjb25zdCBIZXJvID0gKHsgbGFiZWwgfTogeyBsYWJlbDogc3RyaW5nIH0pID0+IHsKICByZXR1cm4gPHA+SGVybyBCYXIgLSB7bGFiZWx9PC9wPjsKfTsKYGBgCgpgYGB0c3gKLy8gU3RhdGVmdWwgY29tcG9uZW50CmltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICJhbGVtIjsKCmNvbnN0IEZvb3RlciA9ICgpID0+IHsKICBjb25zdCBbZm9vdGVyTGFiZWxdID0gdXNlU3RhdGUoIlRoaXMgaXMgZm9vdGVyIik7CgogIHJldHVybiA8cD57Zm9vdGVyTGFiZWx9PC9wPjsKfTsKYGBgCgpOb3csIGxldCdzIGltcGxlbWVudCB0aGUgY29tcG9uZW50IHRoYXQgaXMgZ29pbmcgdG8gaW1wb3J0IGJvdGggY29tcG9uZW50cyBhYm92ZToKCmBgYHRzeAovLyBTdGF0ZWZ1bCBjb21wb25lbnQKaW1wb3J0IHsgU3RhdGUsIHN0YXRlIH0gZnJvbSAiYWxlbSI7CmltcG9ydCBIZXJvIGZyb20gIi4vSGVybyI7CmltcG9ydCBGb290ZXIgZnJvbSAiLi9Gb290ZXIiOwoKY29uc3QgTXlTdGF0ZWZ1bENvbXBvbmVudCA9ICgpID0+IHsKICBTdGF0ZS5pbml0KHsgdmVyc2lvbjogMSB9KTsgLy8gQW55IHJhbmRvbSBpbmZvcm1hdGlvbgoKICByZXR1cm4gKAogICAgPD4KICAgICAgPHA+VmVyc2lvbjoge3N0YXRlLnZlcnNpb259PC9wPgogICAgICA8SGVybyBsYWJlbD17c3RhdGUudmVyc2lvbn0gLz4KICAgICAgPEZvb3RlciAvPgogICAgPC8+CiAgKTsKfTsKYGBgCgojIyBUU1ggJiBKU1gKCkEgLnRzeC8uanN4IGZpbGUgY2FuIGhhdmUgb25seSBvbmUgc3RhdGVmdWwgY29tcG9uZW50LiBZb3UgY2FuIGNyZWF0ZSBvdGhlciBpbnRlcm5hbCBjb21wb25lbnRzIHdpdGhpbiB0aGUgY29tcG9uZW50J3MgZnVuY3Rpb24uCgrinIUgKiotIFJpZ2h0KioKCmBgYHRzeAppbXBvcnQgeyBTdGF0ZSwgc3RhdGUgfSBmcm9tICJhbGVtIjsKCmNvbnN0IE15U3RhdGVmdWxDb21wb25lbnQgPSAoKSA9PiB7CiAgU3RhdGUuaW5pdCh7IG5hbWU6ICJXZW5keiIgfSk7CgogIHJldHVybiA8cD5vaSB7c3RhdGUubmFtZX08L3A+Owp9OwoKZXhwb3J0IGRlZmF1bHQgTXlTdGF0ZWZ1bENvbXBvbmVudDsKYGBgCgrinYwgKiotIFdyb25nKioKCmBgYHRzeAppbXBvcnQgeyBTdGF0ZSwgc3RhdGUgfSBmcm9tICJhbGVtIjsKCmNvbnN0IE15U3RhdGVmdWxDb21wb25lbnQgPSAoKSA9PiB7CiAgU3RhdGUuaW5pdCh7IG5hbWU6ICJXZW5keiIgfSk7CgogIHJldHVybiA8cD5vaSB7c3RhdGUubmFtZX08L3A+Owp9OwoKZXhwb3J0IGRlZmF1bHQgTXlTdGF0ZWZ1bENvbXBvbmVudDsKCi8vIFNlY29uZCBzdGF0ZWZ1bCBjb21wb25lbnQgYXQgdGhlIHNhbWUgZmlsZS4gVGhpcyBpcyBnb2luZyB0byBmYWlsIQpleHBvcnQgY29uc3QgT3RoZXJTdGF0ZWZ1bENvbXBvbmVudCA9ICgpID0+IHsKICBTdGF0ZS5pbml0KHsgYWdlOiAyMiB9KTsKCiAgcmV0dXJuIDxwPkFnZToge3N0YXRlLmFnZX08L3A+Owp9OwpgYGAKClN0YXRlbGVzcyBjb21wb25lbnRzIGNhbiBoYXZlIGFzIG1hbnkgY29tcG9uZW50cyBhcyB5b3Ugd2FudCBpbiBvbmUgZmlsZS4KCuKchSAqKi0gUmlnaHQqKgoKYGBgdHN4Ci8vIEdyb3VwIG9mIHN0YXRlbGVzcyBjb21wb25lbnRzCmV4cG9ydCBjb25zdCBDb21wb25lbnRBID0gKGNvbXBvbmVudFByb3BzKSA9PiB7CiAgLy8gLi4uCiAgcmV0dXJuIDxwPm9pIHtjb21wb25lbnRQcm9wcy5uYW1lfTwvcD47Cn07CgpleHBvcnQgY29uc3QgQ29tcG9uZW50QiA9IChjb21wb25lbnRQcm9wcykgPT4gewogIC8vIC4uLgogIHJldHVybiA8cD5Ib2xhIHtjb21wb25lbnRQcm9wcy5uYW1lfTwvcD47Cn07CgpleHBvcnQgY29uc3QgQ29tcG9uZW50QyA9IChjb21wb25lbnRQcm9wcykgPT4gewogIC8vIC4uLgogIHJldHVybiAoCiAgICA8PgogICAgICA8cD5IaSB7Y29tcG9uZW50UHJvcHMubmFtZX08L3A+CiAgICAgIDxDb21wb25lbnRCIC8+CiAgICAgIDxDb21wb25lbnRBIC8+CiAgICA8Lz4KICApOwp9OwpgYGAKCiMjIFByZXBhcmluZyB0aGUgUmVzb3VyY2VzCgpQcmVmZXIgdG8gY3JlYXRlIG9uZSBmaWxlIHBlciByZXNvdXJjZSwgYXMgaW1wb3J0aW5nIGEgcmVzb3VyY2UgZnJvbSBhIGAudHMvLmpzYCBmaWxlIHdpbGwgaW5qZWN0IHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhhdCBmaWxlIGludG8gdGhlIFdpZGdldC4gVGhlIHNhbWUgZ29lcyBmb3Igc3RhdGVsZXNzIGNvbXBvbmVudHMuCgojIyBDb21tZW50cwoKVGhpcyBtYXkgYmUgb2J2aW91cyBidXQgdXNlIHRoZSBjb3JyZWN0IGZvcm0gb2YgY29tbWVudHMgZHVyaW5nIGRldmVsb3BtZW50IGZvciAqKkNTUyoqIGFuZCAqKnN0eWxlZC1jb21wb25lbnRzKiouCgpgYGBjc3MKLyogY3NzIGZpbGUgKi8KCi5teS1jbGFzcyB7CiAgLyogQ29ycmVjdCAqLwogIGRpc3BsYXk6IGZsZXg7CiAgLy8gSW5jb3JyZWN0CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CmBgYAoKYGBgdHN4Ci8vIHRzeCBvciBqc3ggZmlsZSB1c2luZyBzdHlsZWQgY29tcG9uZW50cwppbXBvcnQgc3R5bGVkIGZyb20gInN0eWxlZC1jb21wb25lbnRzIjsKCmV4cG9ydCBjb25zdCBBcHBDb250YWluZXIgPSBzdHlsZWQuZGl2YAogIGRpc3BsYXk6IGZsZXg7CiAgLyogQ29ycmVjdCAqLwogIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgLy8gSW5jb3JyZWN0CiAgZm9udC1mYW1pbHk6ICJXaXggTWFkZWZvciBEaXNwbGF5Iiwgc2Fucy1zZXJpZjsKCiAgQG1lZGlhIChtYXgtd2lkdGg6IDgwMHB4KSB7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgfQpgOwpgYGAKCiMjIEFzeW5jIC8gQXdhaXQKClRoZSB1c2Ugb2YgYGFzeW5jL2F3YWl0YCBpcyBzdXBwb3J0ZWQgYW5kIGV4cGVyaW1lbnRhbC4gSXQgc2hvdWxkIGJlIHVzZWQgb25seSBpbiB0aGUgbWFpbiBzY29wZSBvZiB0aGUgY29tcG9uZW50LiBJdCB3aWxsIG1ha2UgY2hhbmdlcyB0byB0aGUgc3RhdGUgb2YgdGhlIG1haW4gV2lkZ2V0LiBEbyBub3QgdXNlIGluIGhvb2tzLiBCZWxvdyBpcyBhbiBleGFtcGxlIG9mIHVzYWdlOgoKYGBgdHN4CmltcG9ydCB7IGZldGNoLCB1c2VFZmZlY3QgfSBmcm9tICJhbGVtIjsKCmNvbnN0IFNvbWVDb21wb25lbnQgPSAoKSA9PiB7CiAgY29uc3QgZmV0Y2hJdGVtcyA9IGFzeW5jICgpID0+IHsKICAgIGNvbnN0IGl0ZW1zID0gYXdhaXQgZmV0Y2goImh0dHBzOi8vYXBpLmNvbS9pdGVtcyIpOwogIH07CgogIHVzZUVmZmVjdCgoKSA9PiB7CiAgICBmZXRjaEl0ZW1zKCk7CiAgfSwgW10pOwoKICBjb25zb2xlLmxvZyhpdGVtcyk7CgogIHJldHVybiA8PjwvPjsKfTsKYGBgCgojIyBMaW1pdGF0aW9ucwoKLSBUaGUgdXNlIG9mIHRoZSBgaW1wb3J0ICogZm9vIGZyb20gJy4vZm9vJ2Agc2lnbmF0dXJlIGlzIG5vdCBzdXBwb3J0ZWQuIFRoaXMgaXMgaW50ZW50aW9uYWwsIGFzIHRoZSBpZGVhIGlzIHRvIGltcG9ydCBvbmx5IHRoZSBuZWNlc3NhcnkgZnJhZ21lbnRzIGludG8gdGhlIFdpZGdldC4KLSBBbMOpbSBmaXhlcyBkdXBsaWNhdGUgaXRlbSBuYW1lcyBiZWluZyBleHBvcnRlZCBieSB0aGUgYXBwbGljYXRpb24gYXV0b21hdGljYWxseSwgYnV0IHlvdSBzaG91bGQgYXZvaWQgaW1wb3J0aW5nIGEgcmVzb3VyY2UgdGhhdCBoYXMgdGhlIHNhbWUgbmFtZSBhcyBhbnkgdmFyaWFibGUgd2l0aGluIHlvdXIgY29tcG9uZW50LiBFLmcuOgoK4pyFICoqLSBSaWdodCoqCgpgYGB0cwovLyBhQ29udHJhY3QudHMKZXhwb3J0IGNvbnN0IGNvbnRyYWN0SWQgPSAiY29udHJhY3QtaWQtYS5uZWFyIjsKLy8gLi4uCmBgYAoKYGBgdHMKLy8gSG9tZVBhZ2UudHN4CmltcG9ydCB7IGNvbnRyYWN0SWQgfSBmcm9tICcuL2NvbnRyYWN0SWQnOwoKY29uc3QgSG9tZVBhZ2UgPSAoKSA9PiB7CiAgY29uc3QgY29udHJhY3RJZF9CID0gImNvbnRyYWN0LWlkLWIubmVhciIKCiAgcmV0dXJuICgKICAgIC8vIC4uLgogICkKfQoKZXhwb3J0IGRlZmF1bHQgSG9tZVBhZ2U7CmBgYAoK4p2MICoqLSBXcm9uZyoqCgpgYGB0cwovLyBhQ29udHJhY3QudHMKZXhwb3J0IGNvbnN0IGNvbnRyYWN0SWQgPSAiY29udHJhY3QtaWQtYS5uZWFyIjsKZXhwb3J0IGNvbnN0IGNvbnRyYWN0SWRfQyA9ICJjb250cmFjdC1pZC1jLm5lYXIiOwovLyAuLi4KYGBgCgpgYGB0cwovLyBIb21lUGFnZS50c3gKaW1wb3J0IHsgY29udHJhY3RJZF9DIH0gZnJvbSAnLi9jb250cmFjdElkJzsKCmNvbnN0IEhvbWVQYWdlID0gKCkgPT4gewogIC8vIEVSUk9SOiB0aGlzIHdpbGwgYnJlYWsgdGhlIGFwcGxpY2F0aW9uIGJlY2F1c2UgdGhlICJjb250cmFjdElkIiBmcm9tIGFDb250cmFjdC50cyBpcyBhbHNvIGdvaW5nIHRvIGJlCiAgLy8gaW5qZWN0ZWQgdG8gdGhlIGZpbmFsIGZpbGUgYWZ0ZXIgY29tcGlsYXRpb24uCiAgY29uc3QgY29udHJhY3RJZCA9ICJjb250cmFjdC1pZC1iLm5lYXIiOwoKICByZXR1cm4gKAogICAgLy8gLi4uCiAgKQp9CgpleHBvcnQgZGVmYXVsdCBIb21lUGFnZTsKYGBgCg==`, "base64").toString("utf-8"); return } diff --git a/src/md/feature-overview.md b/src/md/feature-overview.md index c772678..2f91964 100644 --- a/src/md/feature-overview.md +++ b/src/md/feature-overview.md @@ -2,6 +2,10 @@ Alem is a web3 **JavaScript** / **TypeScript** library to create web3 apps for Near BOS. You can create your applications in a similar way to React. All components and other resources will be transformed into a file understandable by Near VM. +Alem makes it painless to create interactive UIs. Design simple views for each state in your application. Declarative views make your code more predictable, simpler to understand, and easier to debug. + +Build encapsulated components that manage their own state, then compose them to make complex UIs. Since component logic is written in JavaScript, you can easily pass rich data through your app. + **Tip:** Use function as much as possible. Even if it is an object to be shared, use a function to return the object. E.g.: ```ts