diff --git a/.eslintrc.js b/.eslintrc.js index 5518fcd8..8a482da6 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,70 +1,39 @@ -// eslint-disable-next-line no-undef module.exports = { - "ignorePatterns": ["node_modules", "dist"], - "env": { - "browser": true, - "es2021": true, + ignorePatterns: ["node_modules", "dist", ".eslintrc.js", "spicetify.d.ts"], + env: { + browser: true, + es2022: true, }, - "extends": [ + extends: [ "eslint:recommended", "plugin:react/recommended", "plugin:@typescript-eslint/recommended", ], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaFeatures": { - "jsx": true, - }, - "ecmaVersion": "latest", - "sourceType": "module", + parser: "@typescript-eslint/parser", + parserOptions: { + sourceType: "module", + project: ["tsconfig.json"], }, - "plugins": [ - "react", - "@typescript-eslint", - ], - "rules": { - "indent": [ - "error", - 2, - ], - "linebreak-style": [ - "error", - "unix", - ], - "quotes": [ - "error", - "double", - { "allowTemplateLiterals": true }, - ], - "semi": [ - "error", - "always", - ], - "comma-dangle": [ - "error", - "always-multiline", - ], + plugins: ["react", "@typescript-eslint"], + rules: { + indent: ["error", 2], + "linebreak-style": ["error", "unix"], + quotes: ["error", "double", { allowTemplateLiterals: true }], + semi: ["error", "always"], + "comma-dangle": ["error", "always-multiline"], "no-var": "error", "space-before-blocks": "error", - "comma-spacing": [ - "error", { "before": false, "after": true }, - ], + "comma-spacing": ["error", { before: false, after: true }], "no-trailing-spaces": "error", "keyword-spacing": "error", - "no-multiple-empty-lines": [ - "error", { "max": 1 }, - ], - "object-curly-spacing": [ - "error", "always", - ], - "key-spacing": [ - "error", { "beforeColon": false, "afterColon": true }, - ], + "no-multiple-empty-lines": ["error", { max: 1 }], + "object-curly-spacing": ["error", "always"], + "key-spacing": ["error", { beforeColon: false, afterColon: true }], }, - "settings": { - "react": { + settings: { + react: { // This is what Spotify uses - "version": "17", + version: "17.0.2", }, }, }; diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 38c3e2ec..a6812aee 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -2,4 +2,7 @@ blank_issues_enabled: false contact_links: - name: ✏️ Spicetify Docs url: https://spicetify.app/ - about: Check out our documentation here. + about: Read our documentation before creating an issue. + - name: ⛑️ Spicetify Discord Server + url: https://discord.gg/spicetify-842219447716151306 + about: Issues are not for support. If you need it - join our Discord server. diff --git a/package.json b/package.json index 9d0160a7..28d9cad5 100644 --- a/package.json +++ b/package.json @@ -1,55 +1,53 @@ { - "name": "spicetify-marketplace", - "version": "0.9.2", - "homepage": "https://github.com/spicetify/spicetify-marketplace", - "repository": { - "type": "git", - "url": "git@github.com:spicetify/spicetify-marketplace.git" - }, - "bugs": { - "url": "https://github.com/spicetify/spicetify-marketplace/issues" - }, - "packageManager": "pnpm@8.10.2", - "scripts": { - "build": "spicetify-creator", - "build:local": "spicetify-creator --out=dist --minify", - "build:prod": "pnpm build:local && pnpm copy:docs", - "copy:docs": "copyfiles README.md dist/", - "lint": "eslint --fix src", - "lint:ci": "eslint src", - "type-check": "tsc --noEmit", - "watch": "spicetify-creator --watch", - "prepare": "husky install" - }, - "engines": { - "yarn": "please-use-pnpm", - "npm": "please-use-pnpm", - "pnpm": ">=8", - "node": ">=20" - }, - "devDependencies": { - "@types/chroma-js": "^2.4.2", - "@types/react": "^17.0.65", - "@types/react-dom": "^17.0.20", - "@types/semver": "^7.5.4", - "@typescript-eslint/eslint-plugin": "^6.9.1", - "@typescript-eslint/parser": "^6.9.1", - "chroma-js": "^2.4.2", - "copyfiles": "^2.4.1", - "eslint": "^8.53.0", - "eslint-plugin-react": "^7.33.2", - "husky": "^8.0.3", - "i18next": "^23.6.0", - "i18next-browser-languagedetector": "^7.1.0", - "prismjs": "^1.29.0", - "react-dropdown": "^1.11.0", - "react-i18next": "^13.3.1", - "react-simple-code-editor": "^0.13.1", - "semver": "^7.5.4", - "spcr-whats-new": "^1.0.1", - "spicetify-creator": "^1.0.16", - "typescript": "^5.2.2", - "util": "^0.12.5" - }, - "private": true + "name": "spicetify-marketplace", + "version": "0.9.3", + "homepage": "https://github.com/spicetify/spicetify-marketplace", + "repository": "github:spicetify/spicetify-marketplace", + "bugs": { + "url": "https://github.com/spicetify/spicetify-marketplace/issues" + }, + "packageManager": "pnpm@8.10.5", + "scripts": { + "build": "spicetify-creator", + "build:local": "spicetify-creator --out=dist --minify", + "build:prod": "pnpm build:local && pnpm copy:docs", + "copy:docs": "copyfiles README.md dist/", + "lint": "eslint --fix src", + "lint:ci": "eslint src", + "type-check": "tsc --noEmit", + "watch": "spicetify-creator --watch", + "prepare": "husky install", + "update-types": "curl -s -o src/types/spicetify.d.ts https://raw.githubusercontent.com/spicetify/spicetify-cli/master/globals.d.ts" + }, + "engines": { + "yarn": "please-use-pnpm", + "npm": "please-use-pnpm", + "pnpm": ">=8", + "node": ">=20" + }, + "devDependencies": { + "@types/chroma-js": "^2.4.3", + "@types/react": "17.0.2", + "@types/react-dom": "17.0.2", + "@types/semver": "^7.5.5", + "@typescript-eslint/eslint-plugin": "^6.11.0", + "@typescript-eslint/parser": "^6.11.0", + "copyfiles": "^2.4.1", + "eslint": "^8.53.0", + "eslint-plugin-react": "^7.33.2", + "husky": "^8.0.3", + "spicetify-creator": "^1.0.16", + "typescript": "^5.2.2" + }, + "dependencies": { + "react-dropdown": "^1.11.0", + "chroma-js": "^2.4.2", + "i18next": "^23.7.6", + "i18next-browser-languagedetector": "^7.2.0", + "prismjs": "^1.29.0", + "react-i18next": "^13.5.0", + "react-simple-code-editor": "^0.13.1", + "semver": "^7.5.4" + }, + "private": true } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b653b55c..c6d17e34 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,28 +4,51 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false -devDependencies: - '@types/chroma-js': +dependencies: + chroma-js: specifier: ^2.4.2 version: 2.4.2 + i18next: + specifier: ^23.7.6 + version: 23.7.6 + i18next-browser-languagedetector: + specifier: ^7.2.0 + version: 7.2.0 + prismjs: + specifier: ^1.29.0 + version: 1.29.0 + react-dropdown: + specifier: ^1.11.0 + version: 1.11.0(react-dom@18.2.0)(react@18.2.0) + react-i18next: + specifier: ^13.5.0 + version: 13.5.0(i18next@23.7.6)(react-dom@18.2.0)(react@18.2.0) + react-simple-code-editor: + specifier: ^0.13.1 + version: 0.13.1(react-dom@18.2.0)(react@18.2.0) + semver: + specifier: ^7.5.4 + version: 7.5.4 + +devDependencies: + '@types/chroma-js': + specifier: ^2.4.3 + version: 2.4.3 '@types/react': - specifier: ^17.0.65 - version: 17.0.65 + specifier: 17.0.2 + version: 17.0.2 '@types/react-dom': - specifier: ^17.0.20 - version: 17.0.20 + specifier: 17.0.2 + version: 17.0.2 '@types/semver': - specifier: ^7.5.4 - version: 7.5.4 + specifier: ^7.5.5 + version: 7.5.5 '@typescript-eslint/eslint-plugin': - specifier: ^6.9.1 - version: 6.9.1(@typescript-eslint/parser@6.9.1)(eslint@8.53.0)(typescript@5.2.2) + specifier: ^6.11.0 + version: 6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: ^6.9.1 - version: 6.9.1(eslint@8.53.0)(typescript@5.2.2) - chroma-js: - specifier: ^2.4.2 - version: 2.4.2 + specifier: ^6.11.0 + version: 6.11.0(eslint@8.53.0)(typescript@5.2.2) copyfiles: specifier: ^2.4.1 version: 2.4.1 @@ -38,39 +61,12 @@ devDependencies: husky: specifier: ^8.0.3 version: 8.0.3 - i18next: - specifier: ^23.6.0 - version: 23.6.0 - i18next-browser-languagedetector: - specifier: ^7.1.0 - version: 7.1.0 - prismjs: - specifier: ^1.29.0 - version: 1.29.0 - react-dropdown: - specifier: ^1.11.0 - version: 1.11.0(react-dom@18.2.0)(react@18.2.0) - react-i18next: - specifier: ^13.3.1 - version: 13.3.1(i18next@23.6.0)(react-dom@18.2.0)(react@18.2.0) - react-simple-code-editor: - specifier: ^0.13.1 - version: 0.13.1(react-dom@18.2.0)(react@18.2.0) - semver: - specifier: ^7.5.4 - version: 7.5.4 - spcr-whats-new: - specifier: ^1.0.1 - version: 1.0.1 spicetify-creator: specifier: ^1.0.16 version: 1.0.16(less@4.2.0)(postcss@8.4.31)(sass@1.69.3)(stylus@0.60.0) typescript: specifier: ^5.2.2 version: 5.2.2 - util: - specifier: ^0.12.5 - version: 0.12.5 packages: @@ -88,7 +84,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.0 - dev: true + dev: false /@esbuild/linux-loong64@0.14.54: resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==} @@ -177,8 +173,8 @@ packages: fastq: 1.15.0 dev: true - /@types/chroma-js@2.4.2: - resolution: {integrity: sha512-gbiHvCuBS9aXkE3OEDfS69bscNLTYtbbx2TQf6WyOu+4eCH1AH1gPSiDGF2UzwkRFAbqKNsC5F0mY0xcaEHCbg==} + /@types/chroma-js@2.4.3: + resolution: {integrity: sha512-1ly5ly/7S/YF8aD7MxUQnFOZxdegimuOunJl0xDsLlguu5JrwuSTVGVH3UpIUlh6YauI0RMNT4cqjBonhgbdIQ==} dev: true /@types/json-schema@7.0.13: @@ -189,30 +185,25 @@ packages: resolution: {integrity: sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ==} dev: true - /@types/react-dom@17.0.20: - resolution: {integrity: sha512-4pzIjSxDueZZ90F52mU3aPoogkHIoSIDG+oQ+wQK7Cy2B9S+MvOqY0uEA/qawKz381qrEDkvpwyt8Bm31I8sbA==} + /@types/react-dom@17.0.2: + resolution: {integrity: sha512-Icd9KEgdnFfJs39KyRyr0jQ7EKhq8U6CcHRMGAS45fp5qgUvxL3ujUCfWFttUK2UErqZNj97t9gsVPNAqcwoCg==} dependencies: - '@types/react': 17.0.65 + '@types/react': 17.0.2 dev: true - /@types/react@17.0.65: - resolution: {integrity: sha512-oxur785xZYHvnI7TRS61dXbkIhDPnGfsXKv0cNXR/0ml4SipRIFpSMzA7HMEfOywFwJ5AOnPrXYTEiTRUQeGlQ==} + /@types/react@17.0.2: + resolution: {integrity: sha512-Xt40xQsrkdvjn1EyWe1Bc0dJLcil/9x2vAuW7ya+PuQip4UYUaXyhzWmAbwRsdMgwOFHpfp7/FFZebDU6Y8VHA==} dependencies: '@types/prop-types': 15.7.8 - '@types/scheduler': 0.16.4 csstype: 3.1.2 dev: true - /@types/scheduler@0.16.4: - resolution: {integrity: sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==} + /@types/semver@7.5.5: + resolution: {integrity: sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg==} dev: true - /@types/semver@7.5.4: - resolution: {integrity: sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==} - dev: true - - /@typescript-eslint/eslint-plugin@6.9.1(@typescript-eslint/parser@6.9.1)(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-w0tiiRc9I4S5XSXXrMHOWgHgxbrBn1Ro+PmiYhSg2ZVdxrAJtQgzU5o2m1BfP6UOn7Vxcc6152vFjQfmZR4xEg==} + /@typescript-eslint/eslint-plugin@6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-uXnpZDc4VRjY4iuypDBKzW1rz9T5YBBK0snMn8MaTSNd2kMlj50LnLBABELjJiOL5YHk7ZD8hbSpI9ubzqYI0w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -223,11 +214,11 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.9.1 - '@typescript-eslint/parser': 6.9.1(eslint@8.53.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.9.1 - '@typescript-eslint/type-utils': 6.9.1(eslint@8.53.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.9.1(eslint@8.53.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.9.1 + '@typescript-eslint/parser': 6.11.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.11.0 + '@typescript-eslint/type-utils': 6.11.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.11.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.11.0 debug: 4.3.4 eslint: 8.53.0 graphemer: 1.4.0 @@ -240,8 +231,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.9.1(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-C7AK2wn43GSaCUZ9do6Ksgi2g3mwFkMO3Cis96kzmgudoVaKyt62yNzJOktP0HDLb/iO2O0n2lBOzJgr6Q/cyg==} + /@typescript-eslint/parser@6.11.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-+whEdjk+d5do5nxfxx73oanLL9ghKO3EwM9kBCkUtWMRwWuPaFv9ScuqlYfQ6pAD6ZiJhky7TZ2ZYhrMsfMxVQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -250,10 +241,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.9.1 - '@typescript-eslint/types': 6.9.1 - '@typescript-eslint/typescript-estree': 6.9.1(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.9.1 + '@typescript-eslint/scope-manager': 6.11.0 + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.11.0 debug: 4.3.4 eslint: 8.53.0 typescript: 5.2.2 @@ -261,16 +252,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@6.9.1: - resolution: {integrity: sha512-38IxvKB6NAne3g/+MyXMs2Cda/Sz+CEpmm+KLGEM8hx/CvnSRuw51i8ukfwB/B/sESdeTGet1NH1Wj7I0YXswg==} + /@typescript-eslint/scope-manager@6.11.0: + resolution: {integrity: sha512-0A8KoVvIURG4uhxAdjSaxy8RdRE//HztaZdG8KiHLP8WOXSk0vlF7Pvogv+vlJA5Rnjj/wDcFENvDaHb+gKd1A==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.9.1 - '@typescript-eslint/visitor-keys': 6.9.1 + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/visitor-keys': 6.11.0 dev: true - /@typescript-eslint/type-utils@6.9.1(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-eh2oHaUKCK58qIeYp19F5V5TbpM52680sB4zNSz29VBQPTWIlE/hCj5P5B1AChxECe/fmZlspAWFuRniep1Skg==} + /@typescript-eslint/type-utils@6.11.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-nA4IOXwZtqBjIoYrJcYxLRO+F9ri+leVGoJcMW1uqr4r1Hq7vW5cyWrA43lFbpRvQ9XgNrnfLpIkO3i1emDBIA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -279,8 +270,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.9.1(typescript@5.2.2) - '@typescript-eslint/utils': 6.9.1(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.11.0(eslint@8.53.0)(typescript@5.2.2) debug: 4.3.4 eslint: 8.53.0 ts-api-utils: 1.0.3(typescript@5.2.2) @@ -289,13 +280,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types@6.9.1: - resolution: {integrity: sha512-BUGslGOb14zUHOUmDB2FfT6SI1CcZEJYfF3qFwBeUrU6srJfzANonwRYHDpLBuzbq3HaoF2XL2hcr01c8f8OaQ==} + /@typescript-eslint/types@6.11.0: + resolution: {integrity: sha512-ZbEzuD4DwEJxwPqhv3QULlRj8KYTAnNsXxmfuUXFCxZmO6CF2gM/y+ugBSAQhrqaJL3M+oe4owdWunaHM6beqA==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.9.1(typescript@5.2.2): - resolution: {integrity: sha512-U+mUylTHfcqeO7mLWVQ5W/tMLXqVpRv61wm9ZtfE5egz7gtnmqVIw9ryh0mgIlkKk9rZLY3UHygsBSdB9/ftyw==} + /@typescript-eslint/typescript-estree@6.11.0(typescript@5.2.2): + resolution: {integrity: sha512-Aezzv1o2tWJwvZhedzvD5Yv7+Lpu1by/U1LZ5gLc4tCx8jUmuSCMioPFRjliN/6SJIvY6HpTtJIWubKuYYYesQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -303,8 +294,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.9.1 - '@typescript-eslint/visitor-keys': 6.9.1 + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/visitor-keys': 6.11.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -315,18 +306,18 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.9.1(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-L1T0A5nFdQrMVunpZgzqPL6y2wVreSyHhKGZryS6jrEN7bD9NplVAyMryUhXsQ4TWLnZmxc2ekar/lSGIlprCA==} + /@typescript-eslint/utils@6.11.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-p23ibf68fxoZy605dc0dQAEoUsoiNoP3MD9WQGiHLDuTSOuqoTsa4oAy+h3KDkTcxbbfOtUjb9h3Ta0gT4ug2g==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) '@types/json-schema': 7.0.13 - '@types/semver': 7.5.4 - '@typescript-eslint/scope-manager': 6.9.1 - '@typescript-eslint/types': 6.9.1 - '@typescript-eslint/typescript-estree': 6.9.1(typescript@5.2.2) + '@types/semver': 7.5.5 + '@typescript-eslint/scope-manager': 6.11.0 + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) eslint: 8.53.0 semver: 7.5.4 transitivePeerDependencies: @@ -334,11 +325,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@6.9.1: - resolution: {integrity: sha512-MUaPUe/QRLEffARsmNfmpghuQkW436DvESW+h+M52w0coICHRfD6Np9/K6PdACwnrq1HmuLl+cSPZaJmeVPkSw==} + /@typescript-eslint/visitor-keys@6.11.0: + resolution: {integrity: sha512-+SUN/W7WjBr05uRxPggJPSzyB8zUpaYo2hByKasWbqr3PM8AXfZt8UHdNpBS1v9SA62qnSSMF3380SwDqqprgQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.9.1 + '@typescript-eslint/types': 6.11.0 eslint-visitor-keys: 3.4.3 dev: true @@ -566,11 +557,11 @@ packages: /chroma-js@2.4.2: resolution: {integrity: sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A==} - dev: true + dev: false /classnames@2.3.2: resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} - dev: true + dev: false /clean-css@5.3.2: resolution: {integrity: sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==} @@ -1499,7 +1490,7 @@ packages: resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} dependencies: void-elements: 3.1.0 - dev: true + dev: false /husky@8.0.3: resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} @@ -1507,17 +1498,17 @@ packages: hasBin: true dev: true - /i18next-browser-languagedetector@7.1.0: - resolution: {integrity: sha512-cr2k7u1XJJ4HTOjM9GyOMtbOA47RtUoWRAtt52z43r3AoMs2StYKyjS3URPhzHaf+mn10hY9dZWamga5WPQjhA==} + /i18next-browser-languagedetector@7.2.0: + resolution: {integrity: sha512-U00DbDtFIYD3wkWsr2aVGfXGAj2TgnELzOX9qv8bT0aJtvPV9CRO77h+vgmHFBMe7LAxdwvT/7VkCWGya6L3tA==} dependencies: '@babel/runtime': 7.23.2 - dev: true + dev: false - /i18next@23.6.0: - resolution: {integrity: sha512-z0Cxr0MGkt+kli306WS4nNNM++9cgt2b2VCMprY92j+AIab/oclgPxdwtTZVLP1zn5t5uo8M6uLsZmYrcjr3HA==} + /i18next@23.7.6: + resolution: {integrity: sha512-O66BhXBw0fH4bEJMA0/klQKPEbcwAp5wjXEL803pdAynNbg2f4qhLIYlNHJyE7icrL6XmSZKPYaaXwy11kJ6YQ==} dependencies: '@babel/runtime': 7.23.2 - dev: true + dev: false /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} @@ -1595,14 +1586,6 @@ packages: side-channel: 1.0.4 dev: true - /is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: true - /is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: @@ -1815,7 +1798,6 @@ packages: /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: true /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} @@ -1927,14 +1909,12 @@ packages: hasBin: true dependencies: js-tokens: 4.0.0 - dev: true /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} dependencies: yallist: 4.0.0 - dev: true /make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} @@ -2276,7 +2256,7 @@ packages: /prismjs@1.29.0: resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} engines: {node: '>=6'} - dev: true + dev: false /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -2313,7 +2293,7 @@ packages: loose-envify: 1.4.0 react: 18.2.0 scheduler: 0.23.0 - dev: true + dev: false /react-dropdown@1.11.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-E2UWetRPxNdIhQahXw6b984ME7WmcgDj9AEAjrtS/oyLCFVo+2qkCfcS06C22JR0Zj+YLnygwv0Ozf6VKKDq7g==} @@ -2324,10 +2304,10 @@ packages: classnames: 2.3.2 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: true + dev: false - /react-i18next@13.3.1(i18next@23.6.0)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-JAtYREK879JXaN9GdzfBI4yJeo/XyLeXWUsRABvYXiFUakhZJ40l+kaTo+i+A/3cKIED41kS/HAbZ5BzFtq/Og==} + /react-i18next@13.5.0(i18next@23.7.6)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-CFJ5NDGJ2MUyBohEHxljOq/39NQ972rh1ajnadG9BjTk+UXbHLq4z5DKEbEQBDoIhUmmbuS/fIMJKo6VOax1HA==} peerDependencies: i18next: '>= 23.2.3' react: '>= 16.8.0' @@ -2341,10 +2321,10 @@ packages: dependencies: '@babel/runtime': 7.23.2 html-parse-stringify: 3.0.1 - i18next: 23.6.0 + i18next: 23.7.6 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: true + dev: false /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} @@ -2358,14 +2338,14 @@ packages: dependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: true + dev: false /react@18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 - dev: true + dev: false /readable-stream@1.0.34: resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} @@ -2409,7 +2389,7 @@ packages: /regenerator-runtime@0.14.0: resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} - dev: true + dev: false /regexp.prototype.flags@1.5.1: resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} @@ -2539,7 +2519,7 @@ packages: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: loose-envify: 1.4.0 - dev: true + dev: false /semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} @@ -2559,7 +2539,6 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 - dev: true /set-function-name@2.0.1: resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} @@ -2617,12 +2596,6 @@ packages: engines: {node: '>= 8'} dev: true - /spcr-whats-new@1.0.1: - resolution: {integrity: sha512-hLr3PvgVGVqRoDdJEfPxjdmOeJMz0uzjfELk2QBYQT0ulxPkUXEBqe7/scNTdi/Z1mwy1gIZNNjnpOORk1Xwug==} - dependencies: - semver: 7.5.4 - dev: true - /spicetify-creator@1.0.16(less@4.2.0)(postcss@8.4.31)(sass@1.69.3)(stylus@0.60.0): resolution: {integrity: sha512-b/DPC6qmVBhFFViSDVJe6qVgi/qpnhDg75UVb8aIkmEnSsm4AreI/dbUL10JLo+1sneaCIRvm3E117eLsRjEzA==} hasBin: true @@ -2888,20 +2861,10 @@ packages: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - dependencies: - inherits: 2.0.4 - is-arguments: 1.1.1 - is-generator-function: 1.0.10 - is-typed-array: 1.1.12 - which-typed-array: 1.1.11 - dev: true - /void-elements@3.1.0: resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} engines: {node: '>=0.10.0'} - dev: true + dev: false /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} @@ -2991,7 +2954,6 @@ packages: /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} diff --git a/resources/assets/snippets/smaller-right-sidebar-cover.png b/resources/assets/snippets/smaller-right-sidebar-cover.png new file mode 100644 index 00000000..fec32411 Binary files /dev/null and b/resources/assets/snippets/smaller-right-sidebar-cover.png differ diff --git a/src/app.tsx b/src/app.tsx index 2af30a86..010fe72a 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -42,21 +42,7 @@ i18n }, }); -// TODO: the mono-stylesheet doesn't seem to import nested component stylesheets properly on build? -// import './styles/styles.scss'; -import "./styles/components/_grid.scss"; -import "./styles/components/_dropdown.scss"; -import "./styles/components/_card.scss"; -import "./styles/components/_settings.scss"; -import "./styles/components/_reload-modal.scss"; -import "./styles/components/_add-snippet-modal.scss"; -import "./styles/components/_readme-pages.scss"; -import "./styles/components/_fixes.scss"; -import "./styles/components/prismjs-themes/prism-tomorrow.scss"; -import "./styles/components/_devtools.scss"; -import "./styles/components/_code-editors.scss"; -import "./styles/components/_backup.scss"; - +import "./styles/styles.scss"; import Grid from "./components/Grid"; import ReadmePage from "./components/ReadmePage"; import { getLocalStorageDataFromKey } from "./logic/Utils"; diff --git a/src/components/Grid.tsx b/src/components/Grid.tsx index 0bd5e9be..d2b36820 100644 --- a/src/components/Grid.tsx +++ b/src/components/Grid.tsx @@ -11,7 +11,7 @@ import { getLocalStorageDataFromKey, generateSortOptions, sortCardItems, } from "../logic/Utils"; -import { LOCALSTORAGE_KEYS, ITEMS_PER_REQUEST, MARKETPLACE_VERSION, LATEST_RELEASE } from "../constants"; +import { LOCALSTORAGE_KEYS, ITEMS_PER_REQUEST, MARKETPLACE_VERSION, LATEST_RELEASE_URL } from "../constants"; import { openModal } from "../logic/LaunchModals"; import { getTaggedRepos, @@ -27,7 +27,6 @@ import { TopBarContent } from "./TabBar"; import Card from "./Card/Card"; import Button from "./Button"; import DownloadIcon from "./Icons/DownloadIcon"; -import Changelog from "./Modals/Changelog"; class Grid extends React.Component< { @@ -457,11 +456,11 @@ class Grid extends React.Component< */ async componentDidMount() { // Checks for new Marketplace updates - fetch(LATEST_RELEASE).then(res => res.json()).then( + fetch(LATEST_RELEASE_URL).then(res => res.json()).then( result => { if (result.message) throw result; this.setState({ - version: result[0].name, + version: result.name, }); try { @@ -475,8 +474,6 @@ class Grid extends React.Component< }, ); - Changelog(); - this.gridUpdateTabs = this.updateTabs.bind(this); this.gridUpdatePostsVisual = this.updatePostsVisual.bind(this); @@ -541,7 +538,7 @@ class Grid extends React.Component<