From ce728757e64256fd17f7c8a8bb7a9e82e2512747 Mon Sep 17 00:00:00 2001 From: Nam Anh Date: Sun, 12 Jun 2022 00:17:00 +0700 Subject: [PATCH 01/16] feat(Grid): add update checker --- src/components/Grid.tsx | 79 +++++++++++++++++++++----------- src/styles/components/_grid.scss | 23 +++++----- 2 files changed, 63 insertions(+), 39 deletions(-) diff --git a/src/components/Grid.tsx b/src/components/Grid.tsx index 30dfc2e2..9d9fcc65 100644 --- a/src/components/Grid.tsx +++ b/src/components/Grid.tsx @@ -1,7 +1,7 @@ import React from "react"; import { CardItem, CardType, Config, SchemeIni, Snippet, TabItemConfig, TabType } from "../types/marketplace-types"; import { getLocalStorageDataFromKey, generateSchemesOptions, injectColourScheme } from "../logic/Utils"; -import { LOCALSTORAGE_KEYS, ITEMS_PER_REQUEST } from "../constants"; +import { LOCALSTORAGE_KEYS, ITEMS_PER_REQUEST, MARKETPLACE_VERSION } from "../constants"; import { openModal } from "../logic/LaunchModals"; import { getExtensionRepos, fetchExtensionManifest, @@ -24,6 +24,7 @@ export default class Grid extends React.Component< }, { // TODO: add types + version: string, searchValue: string, cards: Card[], tabs: TabItemConfig[], @@ -45,6 +46,7 @@ export default class Grid extends React.Component< }; this.state = { + version: MARKETPLACE_VERSION, searchValue: "", cards: [], tabs: props.CONFIG.tabs, @@ -349,6 +351,18 @@ export default class Grid extends React.Component< * If the cardList isn't loaded, it loads the cardList. */ async componentDidMount() { + // Checks for new Marketplace updates + fetch("https://raw.githubusercontent.com/spicetify/spicetify-marketplace/main/package.json").then(res => res.json()).then( + result => { + this.setState({ + version: result.version, + }); + }, + error => { + console.log("Failed to check for updates", error); + }, + ); + this.gridUpdateTabs = this.updateTabs.bind(this); this.gridUpdatePostsVisual = this.updatePostsVisual.bind(this); @@ -410,7 +424,18 @@ export default class Grid extends React.Component< return (
-

{this.props.title}

+
+

{this.props.title}

+ { + this.state.version !== MARKETPLACE_VERSION + ? + : null + } +
{/* Show colour scheme dropdown if there is a theme with schemes installed */} @@ -423,6 +448,30 @@ export default class Grid extends React.Component< sortBySelectedFn={(a) => a.key === this.getActiveScheme()} /> : null} +
+ { + this.setState({ searchValue: event.target.value }); + }} + onKeyDown={(event) => { + if (event.key === "Enter") { + this.setState({ endOfList: false }); + this.newRequest(ITEMS_PER_REQUEST, this.state.searchValue.trim().toLowerCase()); + this.searchRequested = true; + } else if ( // Refreshes result when user deletes all queries + ((event.key === "Backspace") || (event.key === "Delete")) && + this.searchRequested && + this.state.searchValue.trim() === "" + ) { + this.setState({ endOfList: false }); + this.newRequest(ITEMS_PER_REQUEST, this.state.searchValue.trim().toLowerCase()); + this.searchRequested = false; + }}} /> +
- { -
- { - this.setState({ searchValue: event.target.value }); - }} - onKeyDown={(event) => { - if (event.key === "Enter") { - this.setState({ endOfList: false }); - this.newRequest(ITEMS_PER_REQUEST, this.state.searchValue.trim().toLowerCase()); - this.searchRequested = true; - } else if ( // Refreshes result when user deletes all queries - ((event.key === "Backspace") || (event.key === "Delete")) && - this.searchRequested && - this.state.searchValue.trim() === "" - ) { - this.setState({ endOfList: false }); - this.newRequest(ITEMS_PER_REQUEST, this.state.searchValue.trim().toLowerCase()); - this.searchRequested = false; - }}} /> -
- } {/* Add a header and grid for each card type if it has any cards */} {[ { handle: "extension", name: "Extensions" }, diff --git a/src/styles/components/_grid.scss b/src/styles/components/_grid.scss index 0b0885fd..c4b5fb5e 100644 --- a/src/styles/components/_grid.scss +++ b/src/styles/components/_grid.scss @@ -15,21 +15,21 @@ flex-direction: row-reverse; top: 80px; z-index: 1; - - h1 { - position: fixed; - left: 16px; - - @media (min-width: 1024px) { - left: 32px; - } - } } -.marketplace-header__right { +.marketplace-header__right, .marketplace-header__left { display: flex; } +.marketplace-header__left { + position: fixed; + left: 16px; + + @media (min-width: 1024px) { + left: 32px; + } +} + .marketplace-grid { --minimumColumnWidth: 180px; --column-width: minmax(var(--minimumColumnWidth),1fr); @@ -94,12 +94,13 @@ margin-left: 8px; } -.marketplace-settings-button { +.marketplace-settings-button, .marketplace-update { border-radius: 4px; color: var(--spice-text); display: inline-block; padding: 10px 14px 6px; margin-left: 8px; + font-weight: bold; position: relative; text-decoration: none !important; cursor: pointer; From 52cc3371c42a1c859f03412273b20956d6ebe3e4 Mon Sep 17 00:00:00 2001 From: Nam Anh Date: Sun, 12 Jun 2022 09:21:58 +0700 Subject: [PATCH 02/16] feat(Changelog): implement spcr-whats-new --- src/components/Grid.tsx | 52 ++++++++++++----------- src/components/Modals/Changelog/index.tsx | 40 +++++++++++++++++ yarn.lock | 9 +++- 3 files changed, 76 insertions(+), 25 deletions(-) create mode 100644 src/components/Modals/Changelog/index.tsx diff --git a/src/components/Grid.tsx b/src/components/Grid.tsx index 9d9fcc65..a3f65986 100644 --- a/src/components/Grid.tsx +++ b/src/components/Grid.tsx @@ -15,6 +15,8 @@ import SortBox from "./Sortbox"; import { TopBarContent } from "./TabBar"; import Card from "./Card/Card"; import Button from "./Button"; +import DownloadIcon from "./Icons/DownloadIcon"; +import whatsNew from "./Modals/Changelog"; export default class Grid extends React.Component< { @@ -363,6 +365,8 @@ export default class Grid extends React.Component< }, ); + whatsNew; + this.gridUpdateTabs = this.updateTabs.bind(this); this.gridUpdatePostsVisual = this.updatePostsVisual.bind(this); @@ -420,21 +424,25 @@ export default class Grid extends React.Component< return this.state.activeScheme; } + changelogModal() { + return Changelog; + } + render() { return ( +

{this.props.title}

- { - this.state.version !== MARKETPLACE_VERSION - ? - : null - } + {this.state.version !== MARKETPLACE_VERSION + ? + : null}
{/* Show colour scheme dropdown if there is a theme with schemes installed */} @@ -445,9 +453,7 @@ export default class Grid extends React.Component< sortBoxOptions={generateSchemesOptions(this.state.schemes)} // It doesn't work when I directly use CONFIG.theme.activeScheme in the sortBySelectedFn // because it hardcodes the value into the fn - sortBySelectedFn={(a) => a.key === this.getActiveScheme()} - - /> : null} + sortBySelectedFn={(a) => a.key === this.getActiveScheme()} /> : null}
{ this.setState({ searchValue: event.target.value }); - }} + } } onKeyDown={(event) => { if (event.key === "Enter") { this.setState({ endOfList: false }); @@ -464,13 +470,13 @@ export default class Grid extends React.Component< this.searchRequested = true; } else if ( // Refreshes result when user deletes all queries ((event.key === "Backspace") || (event.key === "Delete")) && - this.searchRequested && - this.state.searchValue.trim() === "" - ) { + this.searchRequested && + this.state.searchValue.trim() === "") { this.setState({ endOfList: false }); this.newRequest(ITEMS_PER_REQUEST, this.state.searchValue.trim().toLowerCase()); this.searchRequested = false; - }}} /> + } + } } />
); } diff --git a/src/components/Modals/Changelog/index.tsx b/src/components/Modals/Changelog/index.tsx new file mode 100644 index 00000000..40fae1dc --- /dev/null +++ b/src/components/Modals/Changelog/index.tsx @@ -0,0 +1,40 @@ +import React from "react"; +import whatsNew from "spcr-whats-new"; +import { MARKETPLACE_VERSION } from "../../../constants"; + +const changelogDetails = ( + <> +

0.6.1

+
    +
  • Fixed Readme pages sometimes missing scrollbar{" "} + (#113) +
  • +
  • General improvements
  • +
+

0.6.0

+
    +
  • Patched{" "} + createPortal + {" "} error that makes Marketplace unable to start +
  • +
  • You can now preview snippets' content by clicking on its card!{" "} + (#225) +
  • +
  • Snippets now have preview images, and you can add your own also{" "} + (#226) +
  • +
  • General improvements
  • +
+ +); + +export default whatsNew( + "marketplace", + // This semver version is only used to trigger the Changelog modal and must be bumped simutaneously as MARKETPLACE_VERSION + "1.0.0", + { + title: `✨ Marketplace v${MARKETPLACE_VERSION}`, + content: changelogDetails, + isLarge: true, + }, +); \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 10321088..257d3fbf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2318,7 +2318,7 @@ semver@^6.3.0: resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.2.1, semver@^7.3.7: +semver@^7.2.1, semver@^7.3.5, semver@^7.3.7: version "7.3.7" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== @@ -2421,6 +2421,13 @@ source-map@~0.8.0-beta.0: dependencies: whatwg-url "^7.0.0" +spcr-whats-new@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/spcr-whats-new/-/spcr-whats-new-1.0.1.tgz#cafa24ceb0d2f21bf432975c32c14c27907bc7dc" + integrity sha512-hLr3PvgVGVqRoDdJEfPxjdmOeJMz0uzjfELk2QBYQT0ulxPkUXEBqe7/scNTdi/Z1mwy1gIZNNjnpOORk1Xwug== + dependencies: + semver "^7.3.5" + spicetify-creator@^1.0.10: version "1.0.10" resolved "https://registry.npmjs.org/spicetify-creator/-/spicetify-creator-1.0.10.tgz" From 45d7341642ccb4606bf2a368f700fa8e6426346d Mon Sep 17 00:00:00 2001 From: Nam Anh Date: Sun, 12 Jun 2022 09:24:22 +0700 Subject: [PATCH 03/16] chore: add `spcr-whats-new` to `package.json` --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 8193f14e..cb7a7f69 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "prismjs": "^1.28.0", "react-dropdown": "^1.10.0", "react-simple-code-editor": "^0.11.2", + "spcr-whats-new": "^1.0.1", "spicetify-creator": "^1.0.10", "typescript": "^4.7.3" } From feb49c71fd2ebad9d5a5aff97fd1ed327abc9aef Mon Sep 17 00:00:00 2001 From: Nam Anh Date: Sun, 12 Jun 2022 09:38:16 +0700 Subject: [PATCH 04/16] chore: cleanup code --- src/components/Grid.tsx | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/components/Grid.tsx b/src/components/Grid.tsx index a3f65986..05581065 100644 --- a/src/components/Grid.tsx +++ b/src/components/Grid.tsx @@ -424,13 +424,8 @@ export default class Grid extends React.Component< return this.state.activeScheme; } - changelogModal() { - return Changelog; - } - render() { return ( -
From 14c6a225c07228c48422e1806f3836f2b8b33501 Mon Sep 17 00:00:00 2001 From: Nam Anh Date: Sun, 12 Jun 2022 09:42:46 +0700 Subject: [PATCH 05/16] feat(constant): add `REMOTE_VERSION` --- src/components/Grid.tsx | 4 ++-- src/constants.ts | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/Grid.tsx b/src/components/Grid.tsx index 05581065..5bc56e25 100644 --- a/src/components/Grid.tsx +++ b/src/components/Grid.tsx @@ -1,7 +1,7 @@ import React from "react"; import { CardItem, CardType, Config, SchemeIni, Snippet, TabItemConfig, TabType } from "../types/marketplace-types"; import { getLocalStorageDataFromKey, generateSchemesOptions, injectColourScheme } from "../logic/Utils"; -import { LOCALSTORAGE_KEYS, ITEMS_PER_REQUEST, MARKETPLACE_VERSION } from "../constants"; +import { LOCALSTORAGE_KEYS, ITEMS_PER_REQUEST, MARKETPLACE_VERSION, REMOTE_VERSION } from "../constants"; import { openModal } from "../logic/LaunchModals"; import { getExtensionRepos, fetchExtensionManifest, @@ -354,7 +354,7 @@ export default class Grid extends React.Component< */ async componentDidMount() { // Checks for new Marketplace updates - fetch("https://raw.githubusercontent.com/spicetify/spicetify-marketplace/main/package.json").then(res => res.json()).then( + fetch(REMOTE_VERSION).then(res => res.json()).then( result => { this.setState({ version: result.version, diff --git a/src/constants.ts b/src/constants.ts index 8c47d64f..d34d2a3a 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -38,3 +38,5 @@ export const SNIPPETS_URL = "https://raw.githubusercontent.com/spicetify/spiceti export const SNIPPETS_PAGE_URL = "https://github.com/spicetify/spicetify-marketplace/blob/main/resources/snippets.json"; export const BLACKLIST_URL = "https://raw.githubusercontent.com/spicetify/spicetify-marketplace/main/resources/blacklist.json"; + +export const REMOTE_VERSION = "https://raw.githubusercontent.com/spicetify/spicetify-marketplace/main/package.json"; From 3c3963271cbca972e82c06c8beaeae712a271da0 Mon Sep 17 00:00:00 2001 From: Nam Anh Date: Sun, 12 Jun 2022 11:40:02 +0700 Subject: [PATCH 06/16] feat: fetch Github commit log as changelog --- src/components/Grid.tsx | 4 +- src/components/Modals/Changelog/index.tsx | 50 +++++++++++++++++------ src/constants.ts | 4 ++ 3 files changed, 43 insertions(+), 15 deletions(-) diff --git a/src/components/Grid.tsx b/src/components/Grid.tsx index 5bc56e25..39e890f4 100644 --- a/src/components/Grid.tsx +++ b/src/components/Grid.tsx @@ -16,7 +16,7 @@ import { TopBarContent } from "./TabBar"; import Card from "./Card/Card"; import Button from "./Button"; import DownloadIcon from "./Icons/DownloadIcon"; -import whatsNew from "./Modals/Changelog"; +import Changelog from "./Modals/Changelog"; export default class Grid extends React.Component< { @@ -365,7 +365,7 @@ export default class Grid extends React.Component< }, ); - whatsNew; + Changelog(); this.gridUpdateTabs = this.updateTabs.bind(this); this.gridUpdatePostsVisual = this.updatePostsVisual.bind(this); diff --git a/src/components/Modals/Changelog/index.tsx b/src/components/Modals/Changelog/index.tsx index 40fae1dc..41b89122 100644 --- a/src/components/Modals/Changelog/index.tsx +++ b/src/components/Modals/Changelog/index.tsx @@ -1,8 +1,8 @@ import React from "react"; import whatsNew from "spcr-whats-new"; -import { MARKETPLACE_VERSION } from "../../../constants"; +import { COMMIT_LIST, MARKETPLACE_VERSION } from "../../../constants"; -const changelogDetails = ( +/* const changelogDetails = ( <>

0.6.1

    @@ -26,15 +26,39 @@ const changelogDetails = (
  • General improvements
-); +); */ +const commitArray: string[] = []; -export default whatsNew( - "marketplace", - // This semver version is only used to trigger the Changelog modal and must be bumped simutaneously as MARKETPLACE_VERSION - "1.0.0", - { - title: `✨ Marketplace v${MARKETPLACE_VERSION}`, - content: changelogDetails, - isLarge: true, - }, -); \ No newline at end of file +const changelogDetails = () => { + fetch(COMMIT_LIST).then(res => res.json()) + .then(commits => { + for (const { commit } of commits) { + commitArray.push( + commit.message.split("\n")[0], + ); + } + }); +}; + +const Changelog = () => { + changelogDetails(); + if (commitArray.length > 0) whatsNew( + "marketplace", + // This semver version is only used to trigger the Changelog modal and must be bumped simutaneously as MARKETPLACE_VERSION + "1.0.1", + { + title: `✨ Marketplace v${MARKETPLACE_VERSION}`, + content:
    + {commitArray.map((title, index) => +
  • {title}
  • , + )} +
, + isLarge: true, + }, + ); + else setTimeout(() => { + console.log("No commit found, retrying"); + setTimeout(() => Changelog(), 1000); + }); +}; +export default Changelog; \ No newline at end of file diff --git a/src/constants.ts b/src/constants.ts index d34d2a3a..04506128 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -40,3 +40,7 @@ export const SNIPPETS_PAGE_URL = "https://github.com/spicetify/spicetify-marketp export const BLACKLIST_URL = "https://raw.githubusercontent.com/spicetify/spicetify-marketplace/main/resources/blacklist.json"; export const REMOTE_VERSION = "https://raw.githubusercontent.com/spicetify/spicetify-marketplace/main/package.json"; + +// Used for Changelog +const commitTimestamp = "2022-06-07T21:05:22Z"; // Must be in ISO format +export const COMMIT_LIST = `https://api.github.com/repos/spicetify/spicetify-marketplace/commits?since${commitTimestamp}`; From a39a6a5a1d10f45b743795be6e84195cac4a8478 Mon Sep 17 00:00:00 2001 From: Nam Anh Date: Sun, 12 Jun 2022 11:44:02 +0700 Subject: [PATCH 07/16] chore: change semver for modal --- src/components/Modals/Changelog/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Modals/Changelog/index.tsx b/src/components/Modals/Changelog/index.tsx index 41b89122..4c023d91 100644 --- a/src/components/Modals/Changelog/index.tsx +++ b/src/components/Modals/Changelog/index.tsx @@ -45,7 +45,7 @@ const Changelog = () => { if (commitArray.length > 0) whatsNew( "marketplace", // This semver version is only used to trigger the Changelog modal and must be bumped simutaneously as MARKETPLACE_VERSION - "1.0.1", + "1.0.0", { title: `✨ Marketplace v${MARKETPLACE_VERSION}`, content:
    From 79d7eb81cc8dc04854623465d38b561d00dc00b8 Mon Sep 17 00:00:00 2001 From: Nam Anh Date: Sun, 12 Jun 2022 12:01:39 +0700 Subject: [PATCH 08/16] style: fix header direction --- src/components/ReadmePage.tsx | 2 +- src/styles/components/_grid.scss | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/ReadmePage.tsx b/src/components/ReadmePage.tsx index 86702196..bf95dd4c 100644 --- a/src/components/ReadmePage.tsx +++ b/src/components/ReadmePage.tsx @@ -93,7 +93,7 @@ class ReadmePage extends React.Component< render() { return (
    -
    +

    {this.props.title}

    {this.state.html === "

    Loading...

    " diff --git a/src/styles/components/_grid.scss b/src/styles/components/_grid.scss index c4b5fb5e..c4433d10 100644 --- a/src/styles/components/_grid.scss +++ b/src/styles/components/_grid.scss @@ -13,7 +13,7 @@ // To position the settings button + colour schemes position: sticky; flex-direction: row-reverse; - top: 80px; + // top: 80px; z-index: 1; } From 7f082339c702cc9e78ccaa46ce529650e5b76d79 Mon Sep 17 00:00:00 2001 From: Nam Anh Date: Sun, 12 Jun 2022 22:22:07 +0700 Subject: [PATCH 09/16] refactor: use `async` --- src/components/Modals/Changelog/index.tsx | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/components/Modals/Changelog/index.tsx b/src/components/Modals/Changelog/index.tsx index 4c023d91..81e7c996 100644 --- a/src/components/Modals/Changelog/index.tsx +++ b/src/components/Modals/Changelog/index.tsx @@ -29,8 +29,8 @@ import { COMMIT_LIST, MARKETPLACE_VERSION } from "../../../constants"; ); */ const commitArray: string[] = []; -const changelogDetails = () => { - fetch(COMMIT_LIST).then(res => res.json()) +const changelogDetails = async () => { + await fetch(COMMIT_LIST).then(res => res.json()) .then(commits => { for (const { commit } of commits) { commitArray.push( @@ -40,12 +40,12 @@ const changelogDetails = () => { }); }; -const Changelog = () => { - changelogDetails(); - if (commitArray.length > 0) whatsNew( +const Changelog = async () => { + await changelogDetails(); + whatsNew( "marketplace", // This semver version is only used to trigger the Changelog modal and must be bumped simutaneously as MARKETPLACE_VERSION - "1.0.0", + "1.0.1", { title: `✨ Marketplace v${MARKETPLACE_VERSION}`, content:
      @@ -56,9 +56,5 @@ const Changelog = () => { isLarge: true, }, ); - else setTimeout(() => { - console.log("No commit found, retrying"); - setTimeout(() => Changelog(), 1000); - }); }; export default Changelog; \ No newline at end of file From 8bbef2ad84eabf779da145cc094ca993feb9665b Mon Sep 17 00:00:00 2001 From: Nam Anh Date: Sun, 12 Jun 2022 22:30:02 +0700 Subject: [PATCH 10/16] chore: change semver back --- src/components/Modals/Changelog/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Modals/Changelog/index.tsx b/src/components/Modals/Changelog/index.tsx index 81e7c996..1e78d12c 100644 --- a/src/components/Modals/Changelog/index.tsx +++ b/src/components/Modals/Changelog/index.tsx @@ -45,7 +45,7 @@ const Changelog = async () => { whatsNew( "marketplace", // This semver version is only used to trigger the Changelog modal and must be bumped simutaneously as MARKETPLACE_VERSION - "1.0.1", + "1.0.0", { title: `✨ Marketplace v${MARKETPLACE_VERSION}`, content:
        From 3555416b94f012cfc11e9567089348814b7cb9df Mon Sep 17 00:00:00 2001 From: Nam Anh Date: Mon, 13 Jun 2022 09:12:02 +0700 Subject: [PATCH 11/16] feat: fetch GitHub release notes as changelog --- package.json | 1 + src/components/Modals/Changelog/index.tsx | 29 +- src/constants.ts | 5 +- yarn.lock | 537 +++++++++++++++++++++- 4 files changed, 549 insertions(+), 23 deletions(-) diff --git a/package.json b/package.json index cb7a7f69..84491757 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "husky": "^8.0.1", "prismjs": "^1.28.0", "react-dropdown": "^1.10.0", + "react-markdown": "^8.0.3", "react-simple-code-editor": "^0.11.2", "spcr-whats-new": "^1.0.1", "spicetify-creator": "^1.0.10", diff --git a/src/components/Modals/Changelog/index.tsx b/src/components/Modals/Changelog/index.tsx index 1e78d12c..80ccb41e 100644 --- a/src/components/Modals/Changelog/index.tsx +++ b/src/components/Modals/Changelog/index.tsx @@ -1,6 +1,7 @@ import React from "react"; import whatsNew from "spcr-whats-new"; -import { COMMIT_LIST, MARKETPLACE_VERSION } from "../../../constants"; +import ReactMarkdown from "react-markdown"; +import { RELEASE_CHANGELOG, MARKETPLACE_VERSION } from "../../../constants"; /* const changelogDetails = ( <> @@ -27,32 +28,24 @@ import { COMMIT_LIST, MARKETPLACE_VERSION } from "../../../constants";
      ); */ -const commitArray: string[] = []; +let changelogBody: string; -const changelogDetails = async () => { - await fetch(COMMIT_LIST).then(res => res.json()) - .then(commits => { - for (const { commit } of commits) { - commitArray.push( - commit.message.split("\n")[0], - ); - } - }); +const fetchRelease = async () => { + await fetch(RELEASE_CHANGELOG) + .then(res => res.json()) + .then(result => changelogBody = result.body) + .catch(err => console.error(err)); }; const Changelog = async () => { - await changelogDetails(); + await fetchRelease(); whatsNew( "marketplace", // This semver version is only used to trigger the Changelog modal and must be bumped simutaneously as MARKETPLACE_VERSION - "1.0.0", + "1.0.1", { title: `✨ Marketplace v${MARKETPLACE_VERSION}`, - content:
        - {commitArray.map((title, index) => -
      • {title}
      • , - )} -
      , + content: {changelogBody}, isLarge: true, }, ); diff --git a/src/constants.ts b/src/constants.ts index 04506128..39f2cdad 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -42,5 +42,6 @@ export const BLACKLIST_URL = "https://raw.githubusercontent.com/spicetify/spicet export const REMOTE_VERSION = "https://raw.githubusercontent.com/spicetify/spicetify-marketplace/main/package.json"; // Used for Changelog -const commitTimestamp = "2022-06-07T21:05:22Z"; // Must be in ISO format -export const COMMIT_LIST = `https://api.github.com/repos/spicetify/spicetify-marketplace/commits?since${commitTimestamp}`; +// Will be changed to be consistent with MARKETPLACE_VERSION +const RELEASE_TAG = "v0.5.0-beta"; +export const RELEASE_CHANGELOG = `https://api.github.com/repos/spicetify/spicetify-marketplace/releases/tags/${RELEASE_TAG}`; diff --git a/yarn.lock b/yarn.lock index 257d3fbf..8cc521cb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -81,6 +81,13 @@ "@types/node" "*" source-map "^0.6.0" +"@types/debug@^4.0.0": + version "4.1.7" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82" + integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== + dependencies: + "@types/ms" "*" + "@types/glob@^7.2.0": version "7.2.0" resolved "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz" @@ -89,6 +96,13 @@ "@types/minimatch" "*" "@types/node" "*" +"@types/hast@^2.0.0": + version "2.3.4" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc" + integrity sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g== + dependencies: + "@types/unist" "*" + "@types/html-minifier-terser@*": version "6.1.0" resolved "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" @@ -104,6 +118,18 @@ resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== +"@types/mdast@^3.0.0": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af" + integrity sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA== + dependencies: + "@types/unist" "*" + +"@types/mdurl@^1.0.0": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9" + integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA== + "@types/minify@^8.0.0": version "8.0.0" resolved "https://registry.npmjs.org/@types/minify/-/minify-8.0.0.tgz" @@ -118,12 +144,17 @@ resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== +"@types/ms@*": + version "0.7.31" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" + integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== + "@types/node@*", "@types/node@^17.0.13": version "17.0.35" resolved "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz" integrity sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg== -"@types/prop-types@*": +"@types/prop-types@*", "@types/prop-types@^15.0.0": version "15.7.5" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== @@ -165,6 +196,11 @@ dependencies: source-map "^0.6.1" +"@types/unist@*", "@types/unist@^2.0.0": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" + integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== + "@typescript-eslint/eslint-plugin@^5.27.1": version "5.27.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.27.1.tgz#fdf59c905354139046b41b3ed95d1609913d0758" @@ -372,6 +408,11 @@ autoprefixer@^10.2.5: picocolors "^1.0.0" postcss-value-parser "^4.2.0" +bail@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d" + integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" @@ -453,6 +494,11 @@ chalk@^4.0.0, chalk@^4.1.2: ansi-styles "^4.1.0" supports-color "^7.1.0" +character-entities@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.1.tgz#98724833e1e27990dee0bd0f2b8a859c3476aac7" + integrity sha512-OzmutCf2Kmc+6DrFrrPS8/tDh2+DpnrfzdICHWhcVC9eOd0N1PXmQEE1a8iM4IziIAG+8tmTq3K+oo0ubH6RRQ== + "chokidar@>=3.0.0 <4.0.0": version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" @@ -513,6 +559,11 @@ color-name@~1.1.4: resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +comma-separated-tokens@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz#d4c25abb679b7751c880be623c1179780fe1dd98" + integrity sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg== + commander@^2.20.0: version "2.20.3" resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" @@ -616,7 +667,7 @@ debug@^3.2.6: dependencies: ms "^2.1.1" -debug@^4.0.1, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: +debug@^4.0.0, debug@^4.0.1, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -630,6 +681,13 @@ debug@~3.1.0: dependencies: ms "2.0.0" +decode-named-character-reference@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e" + integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg== + dependencies: + character-entities "^2.0.0" + decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" @@ -648,6 +706,16 @@ define-properties@^1.1.3, define-properties@^1.1.4: has-property-descriptors "^1.0.0" object-keys "^1.1.1" +dequal@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.2.tgz#85ca22025e3a87e65ef75a7a437b35284a7e319d" + integrity sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug== + +diff@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" + integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -1071,6 +1139,11 @@ extend-shallow@^2.0.1: dependencies: is-extendable "^0.1.0" +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -1356,6 +1429,11 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hast-util-whitespace@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz#4fc1086467cc1ef5ba20673cb6b03cec3a970f1c" + integrity sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg== + homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1: version "1.0.3" resolved "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz" @@ -1443,6 +1521,11 @@ ini@^1.3.4: resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== +inline-style-parser@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" + integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== + internal-slot@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" @@ -1479,6 +1562,11 @@ is-buffer@^1.1.5: resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +is-buffer@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + is-callable@^1.1.4, is-callable@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" @@ -1537,6 +1625,11 @@ is-number@^7.0.0: resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-plain-obj@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.0.0.tgz#06c0999fd7574edf5a906ba5644ad0feb3a84d22" + integrity sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw== + is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -1662,6 +1755,11 @@ kind-of@^3.0.2: dependencies: is-buffer "^1.1.5" +kleur@^4.0.3: + version "4.1.4" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.4.tgz#8c202987d7e577766d039a8cd461934c01cda04d" + integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA== + lazy-cache@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz" @@ -1761,11 +1859,259 @@ make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" +mdast-util-definitions@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-5.1.0.tgz#b6d10ef00a3c4cf191e8d9a5fa58d7f4a366f817" + integrity sha512-5hcR7FL2EuZ4q6lLMUK5w4lHT2H3vqL9quPvYZ/Ku5iifrirfMHiGdhxdXMUbUkDmz5I+TYMd7nbaxUhbQkfpQ== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + unist-util-visit "^3.0.0" + +mdast-util-from-markdown@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz#84df2924ccc6c995dec1e2368b2b208ad0a76268" + integrity sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + decode-named-character-reference "^1.0.0" + mdast-util-to-string "^3.1.0" + micromark "^3.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-decode-string "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + unist-util-stringify-position "^3.0.0" + uvu "^0.5.0" + +mdast-util-to-hast@^12.1.0: + version "12.1.1" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-12.1.1.tgz#89a2bb405eaf3b05eb8bf45157678f35eef5dbca" + integrity sha512-qE09zD6ylVP14jV4mjLIhDBOrpFdShHZcEsYvvKGABlr9mGbV7mTlRWdoFxL/EYSTNDiC9GZXy7y8Shgb9Dtzw== + dependencies: + "@types/hast" "^2.0.0" + "@types/mdast" "^3.0.0" + "@types/mdurl" "^1.0.0" + mdast-util-definitions "^5.0.0" + mdurl "^1.0.0" + micromark-util-sanitize-uri "^1.0.0" + unist-builder "^3.0.0" + unist-util-generated "^2.0.0" + unist-util-position "^4.0.0" + unist-util-visit "^4.0.0" + +mdast-util-to-string@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz#56c506d065fbf769515235e577b5a261552d56e9" + integrity sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA== + +mdurl@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== + merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== +micromark-core-commonmark@^1.0.1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz#edff4c72e5993d93724a3c206970f5a15b0585ad" + integrity sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA== + dependencies: + decode-named-character-reference "^1.0.0" + micromark-factory-destination "^1.0.0" + micromark-factory-label "^1.0.0" + micromark-factory-space "^1.0.0" + micromark-factory-title "^1.0.0" + micromark-factory-whitespace "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-chunked "^1.0.0" + micromark-util-classify-character "^1.0.0" + micromark-util-html-tag-name "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-subtokenize "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.1" + uvu "^0.5.0" + +micromark-factory-destination@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz#fef1cb59ad4997c496f887b6977aa3034a5a277e" + integrity sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-label@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz#6be2551fa8d13542fcbbac478258fb7a20047137" + integrity sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-factory-space@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz#cebff49968f2b9616c0fcb239e96685cb9497633" + integrity sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-title@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz#7e09287c3748ff1693930f176e1c4a328382494f" + integrity sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-factory-whitespace@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz#e991e043ad376c1ba52f4e49858ce0794678621c" + integrity sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-character@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.1.0.tgz#d97c54d5742a0d9611a68ca0cd4124331f264d86" + integrity sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg== + dependencies: + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-chunked@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz#5b40d83f3d53b84c4c6bce30ed4257e9a4c79d06" + integrity sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-classify-character@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz#cbd7b447cb79ee6997dd274a46fc4eb806460a20" + integrity sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-combine-extensions@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz#91418e1e74fb893e3628b8d496085639124ff3d5" + integrity sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA== + dependencies: + micromark-util-chunked "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-decode-numeric-character-reference@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz#dcc85f13b5bd93ff8d2868c3dba28039d490b946" + integrity sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-decode-string@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz#942252ab7a76dec2dbf089cc32505ee2bc3acf02" + integrity sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q== + dependencies: + decode-named-character-reference "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-symbol "^1.0.0" + +micromark-util-encode@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz#2c1c22d3800870ad770ece5686ebca5920353383" + integrity sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA== + +micromark-util-html-tag-name@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz#eb227118befd51f48858e879b7a419fc0df20497" + integrity sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA== + +micromark-util-normalize-identifier@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz#4a3539cb8db954bbec5203952bfe8cedadae7828" + integrity sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-resolve-all@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz#a7c363f49a0162e931960c44f3127ab58f031d88" + integrity sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw== + dependencies: + micromark-util-types "^1.0.0" + +micromark-util-sanitize-uri@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.0.0.tgz#27dc875397cd15102274c6c6da5585d34d4f12b2" + integrity sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-encode "^1.0.0" + micromark-util-symbol "^1.0.0" + +micromark-util-subtokenize@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz#ff6f1af6ac836f8bfdbf9b02f40431760ad89105" + integrity sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA== + dependencies: + micromark-util-chunked "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-util-symbol@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz#b90344db62042ce454f351cf0bebcc0a6da4920e" + integrity sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ== + +micromark-util-types@^1.0.0, micromark-util-types@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.0.2.tgz#f4220fdb319205812f99c40f8c87a9be83eded20" + integrity sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w== + +micromark@^3.0.0: + version "3.0.10" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-3.0.10.tgz#1eac156f0399d42736458a14b0ca2d86190b457c" + integrity sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg== + dependencies: + "@types/debug" "^4.0.0" + debug "^4.0.0" + decode-named-character-reference "^1.0.0" + micromark-core-commonmark "^1.0.1" + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-chunked "^1.0.0" + micromark-util-combine-extensions "^1.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-encode "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-sanitize-uri "^1.0.0" + micromark-util-subtokenize "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.1" + uvu "^0.5.0" + micromatch@^4.0.4: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" @@ -1796,6 +2142,11 @@ mkdirp@^1.0.4, mkdirp@~1.0.4: resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mri@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + ms@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" @@ -2117,7 +2468,7 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -prop-types@^15.8.1: +prop-types@^15.0.0, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -2126,6 +2477,11 @@ prop-types@^15.8.1: object-assign "^4.1.1" react-is "^16.13.1" +property-information@^6.0.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.1.1.tgz#5ca85510a3019726cb9afed4197b7b8ac5926a22" + integrity sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w== + prr@~1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" @@ -2153,6 +2509,32 @@ react-is@^16.13.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +react-is@^18.0.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.1.0.tgz#61aaed3096d30eacf2a2127118b5b41387d32a67" + integrity sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg== + +react-markdown@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-8.0.3.tgz#e8aba0d2f5a1b2124d476ee1fff9448a2f57e4b3" + integrity sha512-We36SfqaKoVNpN1QqsZwWSv/OZt5J15LNgTLWynwAN5b265hrQrsjMtlRNwUvS+YyR3yDM8HpTNc4pK9H/Gc0A== + dependencies: + "@types/hast" "^2.0.0" + "@types/prop-types" "^15.0.0" + "@types/unist" "^2.0.0" + comma-separated-tokens "^2.0.0" + hast-util-whitespace "^2.0.0" + prop-types "^15.0.0" + property-information "^6.0.0" + react-is "^18.0.0" + remark-parse "^10.0.0" + remark-rehype "^10.0.0" + space-separated-tokens "^2.0.0" + style-to-object "^0.3.0" + unified "^10.0.0" + unist-util-visit "^4.0.0" + vfile "^5.0.0" + react-simple-code-editor@^0.11.2: version "0.11.2" resolved "https://registry.yarnpkg.com/react-simple-code-editor/-/react-simple-code-editor-0.11.2.tgz#af9da6706b76d2a520bd7b82e3383b329f61cd87" @@ -2202,6 +2584,25 @@ regexpp@^3.1.0, regexpp@^3.2.0: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== +remark-parse@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-10.0.1.tgz#6f60ae53edbf0cf38ea223fe643db64d112e0775" + integrity sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-from-markdown "^1.0.0" + unified "^10.0.0" + +remark-rehype@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-10.1.0.tgz#32dc99d2034c27ecaf2e0150d22a6dcccd9a6279" + integrity sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw== + dependencies: + "@types/hast" "^2.0.0" + "@types/mdast" "^3.0.0" + mdast-util-to-hast "^12.1.0" + unified "^10.0.0" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -2284,6 +2685,13 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +sade@^1.7.3: + version "1.8.1" + resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" + integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== + dependencies: + mri "^1.1.0" + safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -2421,6 +2829,11 @@ source-map@~0.8.0-beta.0: dependencies: whatwg-url "^7.0.0" +space-separated-tokens@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz#43193cec4fb858a2ce934b7f98b7f2c18107098b" + integrity sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw== + spcr-whats-new@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/spcr-whats-new/-/spcr-whats-new-1.0.1.tgz#cafa24ceb0d2f21bf432975c32c14c27907bc7dc" @@ -2527,6 +2940,13 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +style-to-object@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" + integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA== + dependencies: + inline-style-parser "0.1.1" + stylus@^0.54.8: version "0.54.8" resolved "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz" @@ -2634,6 +3054,11 @@ tr46@^1.0.1: dependencies: punycode "^2.1.0" +trough@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/trough/-/trough-2.1.0.tgz#0f7b511a4fde65a46f18477ab38849b22c554876" + integrity sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g== + tsconfig-paths@^3.9.0: version "3.14.1" resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz" @@ -2712,6 +3137,84 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +unified@^10.0.0: + version "10.1.2" + resolved "https://registry.yarnpkg.com/unified/-/unified-10.1.2.tgz#b1d64e55dafe1f0b98bb6c719881103ecf6c86df" + integrity sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q== + dependencies: + "@types/unist" "^2.0.0" + bail "^2.0.0" + extend "^3.0.0" + is-buffer "^2.0.0" + is-plain-obj "^4.0.0" + trough "^2.0.0" + vfile "^5.0.0" + +unist-builder@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-3.0.0.tgz#728baca4767c0e784e1e64bb44b5a5a753021a04" + integrity sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ== + dependencies: + "@types/unist" "^2.0.0" + +unist-util-generated@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-2.0.0.tgz#86fafb77eb6ce9bfa6b663c3f5ad4f8e56a60113" + integrity sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw== + +unist-util-is@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-5.1.1.tgz#e8aece0b102fa9bc097b0fef8f870c496d4a6236" + integrity sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ== + +unist-util-position@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-4.0.3.tgz#5290547b014f6222dff95c48d5c3c13a88fadd07" + integrity sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ== + dependencies: + "@types/unist" "^2.0.0" + +unist-util-stringify-position@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.2.tgz#5c6aa07c90b1deffd9153be170dce628a869a447" + integrity sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg== + dependencies: + "@types/unist" "^2.0.0" + +unist-util-visit-parents@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz#e83559a4ad7e6048a46b1bdb22614f2f3f4724f2" + integrity sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^5.0.0" + +unist-util-visit-parents@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-5.1.0.tgz#44bbc5d25f2411e7dfc5cecff12de43296aa8521" + integrity sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^5.0.0" + +unist-util-visit@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-3.1.0.tgz#9420d285e1aee938c7d9acbafc8e160186dbaf7b" + integrity sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^5.0.0" + unist-util-visit-parents "^4.0.0" + +unist-util-visit@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-4.1.0.tgz#f41e407a9e94da31594e6b1c9811c51ab0b3d8f5" + integrity sha512-n7lyhFKJfVZ9MnKtqbsqkQEk5P1KShj0+//V7mAcoI6bpbUjh3C/OG8HVD+pBihfh6Ovl01m8dkcv9HNqYajmQ== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^5.0.0" + unist-util-visit-parents "^5.0.0" + universalify@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" @@ -2739,11 +3242,39 @@ util-deprecate@^1.0.2, util-deprecate@~1.0.1: resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= +uvu@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.3.tgz#3d83c5bc1230f153451877bfc7f4aea2392219ae" + integrity sha512-brFwqA3FXzilmtnIyJ+CxdkInkY/i4ErvP7uV0DnUVxQcQ55reuHphorpF+tZoVHK2MniZ/VJzI7zJQoc9T9Yw== + dependencies: + dequal "^2.0.0" + diff "^5.0.0" + kleur "^4.0.3" + sade "^1.7.3" + v8-compile-cache@^2.0.3: version "2.3.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== +vfile-message@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-3.1.2.tgz#a2908f64d9e557315ec9d7ea3a910f658ac05f7d" + integrity sha512-QjSNP6Yxzyycd4SVOtmKKyTsSvClqBPJcd00Z0zuPj3hOIjg0rUPG6DbFGPvUKRgYyaIWLPKpuEclcuvb3H8qA== + dependencies: + "@types/unist" "^2.0.0" + unist-util-stringify-position "^3.0.0" + +vfile@^5.0.0: + version "5.3.3" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-5.3.3.tgz#70b75779d99e0698a8cb6536a09361ac37f800a0" + integrity sha512-xwALvwUKmXzHOri5dGXqXNN8JDEvxPhf8avC+E+pJEl32e4/grLdRdsgx23HpK7QI0cwgR4+QfaM8D5KUnki3g== + dependencies: + "@types/unist" "^2.0.0" + is-buffer "^2.0.0" + unist-util-stringify-position "^3.0.0" + vfile-message "^3.0.0" + webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" From eb454c3d6752532e78a57627eec0f57be315cfe3 Mon Sep 17 00:00:00 2001 From: Nam Anh Date: Mon, 13 Jun 2022 15:47:26 +0700 Subject: [PATCH 12/16] feat: fetch latest GH release instead of package.json bump --- package.json | 2 ++ src/components/Grid.tsx | 11 ++++++----- src/components/Modals/Changelog/index.tsx | 3 +-- src/constants.ts | 2 +- yarn.lock | 5 +++++ 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 84491757..3aaef5dc 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "devDependencies": { "@types/react": "^18.0.12", "@types/react-dom": "^18.0.2", + "@types/semver": "^7.3.9", "@typescript-eslint/eslint-plugin": "^5.27.1", "@typescript-eslint/parser": "^5.27.1", "copyfiles": "^2.4.1", @@ -36,6 +37,7 @@ "react-dropdown": "^1.10.0", "react-markdown": "^8.0.3", "react-simple-code-editor": "^0.11.2", + "semver": "^7.3.7", "spcr-whats-new": "^1.0.1", "spicetify-creator": "^1.0.10", "typescript": "^4.7.3" diff --git a/src/components/Grid.tsx b/src/components/Grid.tsx index 39e890f4..cea6dd12 100644 --- a/src/components/Grid.tsx +++ b/src/components/Grid.tsx @@ -1,7 +1,8 @@ import React from "react"; +import semver from "semver"; import { CardItem, CardType, Config, SchemeIni, Snippet, TabItemConfig, TabType } from "../types/marketplace-types"; import { getLocalStorageDataFromKey, generateSchemesOptions, injectColourScheme } from "../logic/Utils"; -import { LOCALSTORAGE_KEYS, ITEMS_PER_REQUEST, MARKETPLACE_VERSION, REMOTE_VERSION } from "../constants"; +import { LOCALSTORAGE_KEYS, ITEMS_PER_REQUEST, MARKETPLACE_VERSION, LATEST_RELEASE } from "../constants"; import { openModal } from "../logic/LaunchModals"; import { getExtensionRepos, fetchExtensionManifest, @@ -354,14 +355,14 @@ export default class Grid extends React.Component< */ async componentDidMount() { // Checks for new Marketplace updates - fetch(REMOTE_VERSION).then(res => res.json()).then( + fetch(LATEST_RELEASE).then(res => res.json()).then( result => { this.setState({ - version: result.version, + version: result[0].name, }); }, error => { - console.log("Failed to check for updates", error); + console.error("Failed to check for updates", error); }, ); @@ -430,7 +431,7 @@ export default class Grid extends React.Component<

      {this.props.title}

      - {this.state.version !== MARKETPLACE_VERSION + {semver.gt(this.state.version, MARKETPLACE_VERSION) ?