[@types/wav] adds typings for wav (#39065)

* wip

* [@types/wav] add type definitions for wav
This commit is contained in:
Matthew Peveler
2019-10-14 16:59:42 -07:00
committed by Andrew Branch
parent bb43717ca3
commit 6bd457dec0
4 changed files with 126 additions and 0 deletions
+74
View File
@@ -0,0 +1,74 @@
// Type definitions for wav 1.0
// Project: https://github.com/TooTallNate/node-wav#readme
// Definitions by: Matthew Peveler <https://github.com/MasterOdin>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/// <reference types="node" />
import { Transform, TransformOptions } from "stream";
import { WriteStream } from 'fs';
export interface Format {
audioFormat: number;
endianness: 'LE' | 'BE';
channels: number;
sampleRate: number;
byteRate: number;
blockAlign: number;
bitDepth: number;
signed: boolean;
}
export interface UnknownChunk {
id: string;
data: any;
}
export class Reader extends Transform {
constructor(opts?: TransformOptions);
addListener(event: "format", listener: (format: Format) => void): this;
addListener(event: "chunk", listener: (unknownChunk: UnknownChunk) => void): this;
addListener(event: string, listener: (...args: any[]) => void): this;
on(event: "format", listener: (format: Format) => void): this;
on(event: "chunk", listener: (unknownChunk: UnknownChunk) => void): this;
on(event: string, listener: (...args: any[]) => void): this;
}
export interface WriterOptions extends TransformOptions {
format?: number;
channels?: number;
sampleRate?: number;
bitDepth?: number;
}
export class Writer extends Transform {
endianness: 'LE';
format: number;
channels: number;
sampleRate: number;
bitDepth: number;
bytesProcessed: number;
constructor(opts?: WriterOptions);
addListener(event: "header", listener: (header: Buffer) => void): this;
addListener(event: string, listener: (...args: any[]) => void): this;
on(event: "header", listener: (header: Buffer) => void): this;
on(event: string, listener: (...args: any[]) => void): this;
}
export class FileWriter extends Writer {
path: string;
file: WriteStream;
constructor(path: string, opts?: WriterOptions);
addListener(event: "done", listener: () => void): this;
addListener(event: string, listener: (...args: any[]) => void): this;
on(event: "done", listener: () => void): this;
on(event: string, listener: (...args: any[]) => void): this;
}
+23
View File
@@ -0,0 +1,23 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": [
"es6"
],
"noImplicitAny": true,
"noImplicitThis": true,
"strictFunctionTypes": true,
"strictNullChecks": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"wav-tests.ts"
]
}
+1
View File
@@ -0,0 +1 @@
{ "extends": "dtslint/dt.json" }
+28
View File
@@ -0,0 +1,28 @@
import { createReadStream } from 'fs';
import { Reader, Writer, FileWriter } from 'wav';
const file = createReadStream('track01.wav');
const reader = new Reader();
const reader2 = new Reader();
const writer = new Writer({
sampleRate: 16000,
channels: 1
});
const fileWriter = new FileWriter('./test.wav', {
sampleRate: 16000,
channels: 1
});
reader.on('format', (format) => {
console.log(format);
reader.pipe(writer);
});
reader2.on('format', (format) => {
console.log(format);
reader2.pipe(fileWriter);
});
file.pipe(reader);