diff --git a/CHANGELOG.md b/CHANGELOG.md index 939dfef..28453d7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [5.13.1] + +- removed Swagger generation step in favor of pre-generated file. + - This also fixes the API issue [#409](https://github.com/Mastermindzh/tidal-hifi/issues/409) + - This also stops TIDAL-hifi from scanning your entire home directory... the glob was very broad apparently. + ## [5.13.0] - Fixed [#403](https://github.com/Mastermindzh/tidal-hifi/issues/403) "cannot read shuffle of undefined" error diff --git a/package-lock.json b/package-lock.json index 1d05892..5fcff98 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,17 +1,18 @@ { "name": "tidal-hifi", - "version": "5.13.0", + "version": "5.13.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "tidal-hifi", - "version": "5.13.0", + "version": "5.13.1", "license": "MIT", "dependencies": { "@electron/remote": "^2.1.2", "@types/swagger-jsdoc": "^6.0.4", "axios": "^1.6.8", + "cors": "^2.8.5", "discord-rpc": "^4.0.1", "electron-store": "^8.2.0", "express": "^4.19.2", @@ -24,9 +25,10 @@ }, "devDependencies": { "@mastermindzh/prettier-config": "^1.0.0", + "@types/cors": "^2.8.17", "@types/discord-rpc": "^4.0.8", "@types/express": "^4.17.21", - "@types/node": "^20.10.6", + "@types/node": "^20.12.12", "@types/request": "^2.48.12", "@types/swagger-ui-express": "^4.1.6", "@typescript-eslint/eslint-plugin": "^6.18.0", @@ -1079,6 +1081,15 @@ "@types/node": "*" } }, + "node_modules/@types/cors": { + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -1173,9 +1184,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.10.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.6.tgz", - "integrity": "sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==", + "version": "20.12.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", + "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", "dependencies": { "undici-types": "~5.26.4" } @@ -2744,6 +2755,18 @@ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/cosmiconfig": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", @@ -6058,6 +6081,14 @@ "node": "*" } }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-inspect": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", @@ -8784,4 +8815,4 @@ } } } -} +} \ No newline at end of file diff --git a/package.json b/package.json index f4fa959..88a9790 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tidal-hifi", - "version": "5.13.0", + "version": "5.13.1", "description": "Tidal on Electron with widevine(hifi) support", "main": "ts-dist/main.js", "scripts": { @@ -58,7 +58,7 @@ "@types/cors": "^2.8.17", "@types/discord-rpc": "^4.0.8", "@types/express": "^4.17.21", - "@types/node": "^20.10.6", + "@types/node": "^20.12.12", "@types/request": "^2.48.12", "@types/swagger-ui-express": "^4.1.6", "@typescript-eslint/eslint-plugin": "^6.18.0", @@ -79,4 +79,4 @@ "typescript": "^5.3.3" }, "prettier": "@mastermindzh/prettier-config" -} +} \ No newline at end of file diff --git a/src/features/api/index.ts b/src/features/api/index.ts index 8781501..cbe0b3f 100644 --- a/src/features/api/index.ts +++ b/src/features/api/index.ts @@ -1,6 +1,7 @@ import { BrowserWindow, dialog } from "electron"; import express from "express"; -import swaggerjsdoc from "swagger-jsdoc"; +import swaggerSpec from "./swagger.json"; +import cors from "cors"; import swaggerUi from "swagger-ui-express"; import { settingsStore } from "../../scripts/settings"; import { settings } from "./../../constants/settings"; @@ -8,48 +9,19 @@ import { addCurrentInfo } from "./features/current"; import { addPlaybackControl } from "./features/player"; import { addSettingsAPI } from "./features/settings/settings"; import { addLegacyApi } from "./legacy"; -import cors from "cors"; /** * Function to enable TIDAL Hi-Fi's express api */ export const startApi = (mainWindow: BrowserWindow) => { const port = settingsStore.get(settings.apiSettings.port); - const specs = swaggerjsdoc({ - definition: { - openapi: "3.1.0", - info: { - title: "TIDAL Hi-Fi API", - version: "5.13.0", - description: "", - license: { - name: "MIT", - url: "https://github.com/Mastermindzh/tidal-hifi/blob/master/LICENSE", - }, - contact: { - name: "Rick van Lieshout", - url: "https://www.rickvanlieshout.com", - }, - }, - servers: [ - { - url: `http://localhost:${port}`, - }, - ], - externalDocs: { - description: "swagger.json", - url: "swagger.json", - }, - }, - apis: ["**/*.ts"], - }); const expressApp = express(); expressApp.use(cors()); expressApp.use(express.json()); - expressApp.use("/docs", swaggerUi.serve, swaggerUi.setup(specs)); + expressApp.use("/docs", swaggerUi.serve, swaggerUi.setup(swaggerSpec)); expressApp.get("/", (req, res) => res.send("Hello World!")); - expressApp.get("/swagger.json", (req, res) => res.json(specs)); + expressApp.get("/swagger.json", (req, res) => res.json(swaggerSpec)); // add features addLegacyApi(expressApp, mainWindow); diff --git a/src/features/api/swagger.json b/src/features/api/swagger.json new file mode 100644 index 0000000..158b5ee --- /dev/null +++ b/src/features/api/swagger.json @@ -0,0 +1,135 @@ +{ + "openapi": "3.1.0", + "info": { + "title": "TIDAL Hi-Fi API", + "version": "5.13.1", + "description": "", + "license": { + "name": "MIT", + "url": "https://github.com/Mastermindzh/tidal-hifi/blob/master/LICENSE" + }, + "contact": { + "name": "Rick van Lieshout", + "url": "https://www.rickvanlieshout.com" + } + }, + "servers": [ + { + "url": "http://localhost:47836" + } + ], + "externalDocs": { + "description": "swagger.json", + "url": "swagger.json" + }, + "paths": { + "/settings/skipped-artists": { + "get": { + "summary": "get a list of artists that TIDAL Hi-Fi will skip if skipping is enabled", + "tags": [ + "settings" + ], + "responses": { + "200": { + "description": "The list book.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StringArray" + } + } + } + } + } + }, + "post": { + "summary": "Add new artists to the list of skipped artists", + "tags": [ + "settings" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StringArray" + } + } + } + }, + "responses": { + "200": { + "description": "Ok" + } + } + } + }, + "/settings/skipped-artists/delete": { + "post": { + "summary": "Remove artists from the list of skipped artists", + "tags": [ + "settings" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StringArray" + } + } + } + }, + "responses": { + "200": { + "description": "Ok" + } + } + } + }, + "/settings/skipped-artists/current": { + "post": { + "summary": "Add the current artist to the list of skipped artists", + "tags": [ + "settings" + ], + "responses": { + "200": { + "description": "Ok" + } + } + }, + "delete": { + "summary": "Remove the current artist from the list of skipped artists", + "tags": [ + "settings" + ], + "responses": { + "200": { + "description": "Ok" + } + } + } + } + }, + "components": { + "schemas": { + "StringArray": { + "type": "array", + "items": { + "type": "string" + }, + "example": [ + "Artist1", + "Artist2" + ] + } + } + }, + "tags": [ + { + "name": "settings", + "description": "The settings management API" + } + ] +} \ No newline at end of file diff --git a/src/pages/settings/settings.html b/src/pages/settings/settings.html index d64784e..a9d281a 100644 --- a/src/pages/settings/settings.html +++ b/src/pages/settings/settings.html @@ -433,7 +433,7 @@

TIDAL Hi-Fi

5.13.0 + href="https://github.com/Mastermindzh/tidal-hifi/releases/tag/5.13.1">5.13.1