diff --git a/package-lock.json b/package-lock.json index e3f426b8..3b00d00e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,8 @@ "better-sse": "^0.8.0", "body-parser": "^1.19.0", "bonjour-service": "^1.2.1", - "chromecast-client": "^1.0.1", + "castv2": "^0.1.10", + "chromecast-client": "github:foxxmd/chromecast-client#dist", "clsx": "^2.0.0", "common-tags": "^1.8.2", "compare-versions": "^4.1.2", @@ -7516,12 +7517,13 @@ }, "node_modules/chromecast-client": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chromecast-client/-/chromecast-client-1.0.1.tgz", - "integrity": "sha512-79QTIu6g1oYHvI9i8sPc8kpwrZGb6hXiNnEJmoiFLfjTYTJO+kKc8ML1uqNNKZbKMMFsgR/89da0A3ezD5p92A==", + "resolved": "git+ssh://git@github.com/foxxmd/chromecast-client.git#e65837e350bea9ef6f85a9e536b1a351b753076a", + "license": "MIT", "dependencies": { "castv2": "^0.1.10", "debug": "^4.3.4", - "zod": "^3.20.2" + "zod": "^3.20.2", + "zod-validation-error": "^2.1.0" }, "funding": { "url": "https://www.patreon.com/dantaylor" @@ -25855,6 +25857,17 @@ "funding": { "url": "https://github.com/sponsors/colinhacks" } + }, + "node_modules/zod-validation-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-2.1.0.tgz", + "integrity": "sha512-VJh93e2wb4c3tWtGgTa0OF/dTt/zoPCPzXq4V11ZjxmEAFaPi/Zss1xIZdEB5RD8GD00U0/iVXgqkF77RV7pdQ==", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.18.0" + } } } } diff --git a/package.json b/package.json index 625eef3f..b5bcc957 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,8 @@ "better-sse": "^0.8.0", "body-parser": "^1.19.0", "bonjour-service": "^1.2.1", - "chromecast-client": "^1.0.1", + "castv2": "^0.1.10", + "chromecast-client": "github:foxxmd/chromecast-client#dist", "clsx": "^2.0.0", "common-tags": "^1.8.2", "compare-versions": "^4.1.2", diff --git a/patches/chromecast-client+1.0.1.patch b/patches/chromecast-client+1.0.1.patch.maybeUse similarity index 100% rename from patches/chromecast-client+1.0.1.patch rename to patches/chromecast-client+1.0.1.patch.maybeUse diff --git a/src/backend/sources/ChromecastSource.ts b/src/backend/sources/ChromecastSource.ts index bb1341dd..309bde69 100644 --- a/src/backend/sources/ChromecastSource.ts +++ b/src/backend/sources/ChromecastSource.ts @@ -10,7 +10,7 @@ import {EventEmitter} from "events"; import Bonjour, {Service} from "bonjour-service"; import {MediaController, PersistentClient, Media} from "chromecast-client"; import {Client as CastClient} from 'castv2'; -import {ErrorWithCause} from "pony-cause"; +import {ErrorWithCause, findCauseByReference} from "pony-cause"; import {PlayObject} from "../../core/Atomic"; import dayjs from "dayjs"; import {RecentlyPlayedOptions} from "./AbstractSource"; @@ -26,6 +26,7 @@ import { initializeClientPlatform } from "../common/vendor/chromecast/ChromecastClientUtils"; import {Logger} from "@foxxmd/winston"; +import {ContextualValidationError} from "chromecast-client/dist/cjs/src/utils"; interface ChromecastDeviceInfo { mdns: Service @@ -180,6 +181,10 @@ export class ChromecastSource extends MemorySource { apps = await getCurrentPlatformApplications(v.platform); } catch (e) { v.logger.warn(new ErrorWithCause('Could not refresh applications', {cause: e})); + const validationError = findCauseByReference(e, ContextualValidationError); + if(validationError && validationError.data !== undefined) { + v.logger.warn(JSON.stringify(validationError.data)); + } continue; } @@ -339,6 +344,10 @@ export class ChromecastSource extends MemorySource { } } catch (e) { this.logger.warn(new ErrorWithCause(`Could not get Player State for ${k}`, {cause: e})) + const validationError = findCauseByReference(e, ContextualValidationError); + if(validationError && validationError.data !== undefined) { + v.logger.warn(JSON.stringify(validationError.data)); + } } }