Skip to content
884 changes: 443 additions & 441 deletions package-lock.json

Large diffs are not rendered by default.

20 changes: 10 additions & 10 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"url": "http://github.com/sebbo2002/node-pyatv/issues"
},
"dependencies": {
"semver": "^7.8.4"
"semver": "^7.8.5"
},
"description": "A lightweight wrapper around pyatv…",
"devDependencies": {
Expand All @@ -16,28 +16,28 @@
"@semantic-release/npm": "^13.1.5",
"@types/express": "^5.0.6",
"@types/mocha": "^10.0.10",
"@types/node": "^25.9.1",
"@types/node": "^25.9.3",
"@types/semver": "^7.7.1",
"c8": "^11.0.0",
"eslint": "^10.4.1",
"eslint": "^10.6.0",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-jsonc": "^3.2.0",
"eslint-plugin-perfectionist": "^5.9.0",
"eslint-plugin-perfectionist": "^5.9.1",
"esm": "^3.2.25",
"globals": "^17.6.0",
"globals": "^17.7.0",
"husky": "^9.1.7",
"license-checker": "^25.0.1",
"mocha": "^11.7.6",
"mochawesome": "^7.1.4",
"prettier": "^3.8.3",
"semantic-release": "^25.0.3",
"prettier": "^3.8.4",
"semantic-release": "^25.0.5",
"semantic-release-license": "^1.0.3",
"source-map-support": "^0.5.21",
"tsdown": "^0.22.2",
"tsx": "^4.22.3",
"tsdown": "^0.22.3",
"tsx": "^4.22.4",
"typedoc": "^0.28.19",
"typescript": "^6.0.3",
"typescript-eslint": "^8.60.0"
"typescript-eslint": "^8.62.1"
},
"engines": {
"node": "22 || >=24.0.0"
Expand Down
6 changes: 5 additions & 1 deletion src/lib/device-events.ts
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,11 @@ export default class NodePyATVDeviceEvents extends EventEmitter {
}

removeAllListeners(event?: string | symbol): this {
super.removeAllListeners(event);
if (event !== undefined) {
super.removeAllListeners(event);
} else {
super.removeAllListeners();
}
this.checkListener();
return this;
}
Expand Down
2 changes: 1 addition & 1 deletion src/lib/device.ts
Original file line number Diff line number Diff line change
Expand Up @@ -651,7 +651,7 @@ export default class NodePyATVDevice implements EventEmitter {
* @param event
* @category Event
*/
listenerCount(event: string | symbol): number {
listenerCount(event?: string | symbol): number {
return this.events.listenerCount(event);
}

Expand Down
2 changes: 1 addition & 1 deletion src/lib/instance.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ export default class NodePyATVInstance {
} catch (error) {
throw new Error(
`Unable to scan for devices: ${String(error).replace('Error: ', '')}`,
{ cause: error }
{ cause: error },
);
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/lib/tools.ts
Original file line number Diff line number Diff line change
Expand Up @@ -501,7 +501,7 @@ export async function request<O extends NodePyATVRequestOptions>(
const msg = `Unable to parse result ${requestId} json: ${error}`;
debug(requestId, msg, options);
throw new Error(msg, {
cause: error
cause: error,
});
}
}
Expand Down
26 changes: 26 additions & 0 deletions test/device-events.ts
Original file line number Diff line number Diff line change
Expand Up @@ -491,6 +491,32 @@ describe('NodePyATVDeviceEvents', function () {
});
});

describe('removeAllListeners()', function () {
it('should remove all listeners across all events when called without arguments', function () {
const device = new NodePyATVDevice({
host: '192.168.178.2',
name: 'My Testdevice',
spawn: createFakeSpawn((cp) => {
cp.onStdIn(() => cp.end());
}),
});

device.on('foo', () => {});
device.on('bar', () => {});
device.on('bar', () => {});

assert.deepStrictEqual(device.listenerCount(), 3);
assert.deepStrictEqual(device.listenerCount('foo'), 1);
assert.deepStrictEqual(device.listenerCount('bar'), 2);

device.removeAllListeners();

assert.deepStrictEqual(device.listenerCount(), 0);
assert.deepStrictEqual(device.listenerCount('foo'), 0);
assert.deepStrictEqual(device.listenerCount('bar'), 0);
});
});

describe('emit()', function () {
it('should work', function (done) {
const device = new NodePyATVDevice({
Expand Down
Loading