Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 17 additions & 5 deletions types/node-pipewire/index.d.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
export interface PipewirePort {
id: number;
permissions: number;
props: string;
props: Record<string, string>;
node_id: number;
name: string;
direction: string;
}
export interface PipewireNode {
id: number;
permissions: number;
props: string;
props: Record<string, string>;
name: string;
node_direction: string;
node_type: string;
Expand All @@ -18,23 +18,35 @@ export interface PipewireNode {
export interface PipewireLink {
id: number;
permissions: number;
props: string;
props: Record<string, string>;
input_node_id: number;
input_port_id: number;
output_node_id: number;
output_port_id: number;
}
export interface PipewireClient {
id: number;
permissions: number;
pid: number;
application_name: string;
props: Record<string, string>;
}
export type NodeDirection = "Input" | "Output" | "Both";
export type AudioPosition = "FL" | "FR";
export function createPwThread(enableDebug?: boolean): void;
export function getLinks(): PipewireLink[];
export function getPorts(): PipewirePort[];
export function getNodes(): PipewireNode[];
export function getClients(): PipewireClient[];
export function getOutputNodes(): PipewireNode[];
export function getInputNodes(): PipewireNode[];
export function linkNodesNameToId(nodeName: string, nodeId: number): void;
export function linkNodesNameToId(nodeName: string, nodeId: number, permanent?: boolean): void;
export function unlinkNodesNameToId(nodeName: string, nodeId: number): void;
export function linkPorts(inputPortId: number, outputPortId: number): void;
export function linkPorts(inputPortId: number, outputPortId: number, permanent?: boolean): void;
export function unlinkPorts(inputPortId: number, outputPortId: number): void;
export function getInputNodesName(): string[];
export function getOutputNodesName(): string[];
export function waitForNewNode(nodeName: string, direction?: NodeDirection, timeout?: number): Promise<PipewireNode>;
export function createSource(newSourceName: string, audioPositions: AudioPosition[], permanent?: boolean): void;
export function createSink(newSinkName: string, audioPositions: AudioPosition[], permanent?: boolean): void;
export function destroyObject(id: number): void;
54 changes: 46 additions & 8 deletions types/node-pipewire/node-pipewire-tests.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
import {
AudioPosition,
createPwThread,
createSink,
createSource,
destroyObject,
getClients,
getInputNodes,
getInputNodesName,
getLinks,
Expand All @@ -9,23 +14,56 @@ import {
getPorts,
linkNodesNameToId,
linkPorts,
NodeDirection,
PipewireClient,
PipewireLink,
PipewireNode,
PipewirePort,
unlinkNodesNameToId,
unlinkPorts,
waitForNewNode,
} from "node-pipewire";

createPwThread();
createPwThread(true);

const links = getLinks();
const ports = getPorts();
const nodes = getNodes();
const outputNodes = getOutputNodes();
const inputNodes = getInputNodes();
const outputNodeNames = getOutputNodesName();
const inputNodeNames = getInputNodesName();
const links: PipewireLink[] = getLinks();
const ports: PipewirePort[] = getPorts();
const nodes: PipewireNode[] = getNodes();
const clients: PipewireClient[] = getClients();
const outputNodes: PipewireNode[] = getOutputNodes();
const inputNodes: PipewireNode[] = getInputNodes();
const outputNodeNames: string[] = getOutputNodesName();
const inputNodeNames: string[] = getInputNodesName();

const portProps: Record<string, string> = ports[0].props;
const nodeProps: Record<string, string> = nodes[0].props;
const linkProps: Record<string, string> = links[0].props;
const clientProps: Record<string, string> = clients[0].props;
const clientPid: number = clients[0].pid;
const clientApplicationName: string = clients[0].application_name;

linkPorts(outputNodes[0].id, inputNodes[0].id);
linkPorts(outputNodes[0].id, inputNodes[0].id, false);
unlinkPorts(outputNodes[1].id, inputNodes[1].id);
linkNodesNameToId(outputNodeNames[0], outputNodes[0].id);
linkNodesNameToId(outputNodeNames[0], outputNodes[0].id, false);
unlinkNodesNameToId(inputNodeNames[0], inputNodes[0].id);
waitForNewNode(outputNodeNames[0]);

const direction: NodeDirection = "Output";
const newNode: Promise<PipewireNode> = waitForNewNode(outputNodeNames[0], direction, 1_000);

const positions: AudioPosition[] = ["FL", "FR"];
createSource("node-pipewire-test-source", positions);
createSource("node-pipewire-test-source", positions, true);
createSink("node-pipewire-test-sink", positions);
createSink("node-pipewire-test-sink", positions, true);
destroyObject(nodes[0].id);

void portProps;
void nodeProps;
void linkProps;
void clientProps;
void clientPid;
void clientApplicationName;
void newNode;
4 changes: 2 additions & 2 deletions types/node-pipewire/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"private": true,
"name": "@types/node-pipewire",
"version": "1.0.9999",
"version": "1.1.9999",
"projects": [
"https://github.com/kakxem/node-pipewire#readme"
],
Expand All @@ -10,7 +10,7 @@
},
"owners": [
{
"name": "Paul Antonio Almasi",
"name": "kakxem",
"githubUsername": "kakxem"
}
]
Expand Down