linting, editorconfig

This commit is contained in:
Rik Berkelder 2021-01-23 20:48:42 +01:00
parent ee66b16be2
commit 2f4ab521b5
9 changed files with 2267 additions and 146 deletions

View file

@ -1,3 +1,2 @@
export * from './oscClient';
export {OSCType, OSCArgumentType} from 'osc-min'
export { OSCType, OSCArgumentType } from 'osc-min';

View file

@ -1,44 +1,40 @@
import * as dgram from 'dgram';
import {OSCArgument, OSCType, toBuffer, fromBuffer, OSCArgumentType} from 'osc-min';
import { OSCArgument, OSCType, toBuffer, fromBuffer, OSCArgumentType } from 'osc-min';
import { EventEmitter } from 'events';
export interface OSCClientOptions {
/** host to output OSC data to */
outHost: string;
/** port to output OSC data to */
outPort: number;
/** Local port for incoming OSC messages */
inPort?: number;
/** host to output OSC data to */
outHost: string;
/** port to output OSC data to */
outPort: number;
/** Local port for incoming OSC messages */
inPort?: number;
}
export interface ReceivedOSCMessage<T extends OSCType> {
address: string;
type: T;
value: OSCArgumentType<T>
address: string;
type: T;
value: OSCArgumentType<T>;
}
// declare types for events
export declare interface OSCClient {
/**
/**
Emitted whenever an OSC message is received on inPort
@event
*/
on(event: 'message', listener: (message: ReceivedOSCMessage<OSCType>) => void): this
on(event: 'message', listener: (message: ReceivedOSCMessage<OSCType>) => void): this;
/**
Emitted when OSC client is listening on inPort
/**
Emitted when OSC client is listening on inPort
@event
*/
on(event: 'listening', listener: ()=>void): this
on(event: 'listening', listener: () => void): this;
}
/**
* OSC Client base class, handles sending and receiving OSC messages
```
const osc = new OSCClient({
outHost: "192.168.0.68",
@ -47,54 +43,54 @@ export declare interface OSCClient {
})
```
*/
export class OSCClient extends EventEmitter{
private socket: dgram.Socket;
private options: OSCClientOptions;
constructor(options: OSCClientOptions){
super();
this.socket = dgram.createSocket({type: "udp4", reuseAddr: true});
this.options = options;
export class OSCClient extends EventEmitter {
private socket: dgram.Socket;
private options: OSCClientOptions;
constructor(options: OSCClientOptions) {
super();
this.socket = dgram.createSocket({ type: 'udp4', reuseAddr: true });
this.options = options;
if(options.inPort){
this.socket.bind(options.inPort);
}
this.socket.on('listening', ()=>{
this.emit('listening');
})
this.socket.on('message', (msg)=>{
const decoded = fromBuffer(msg)
if(decoded.oscType === "message"){
decoded.args.forEach((arg)=>{
this.emit('message', {
address: decoded.address,
type: arg.type,
value: arg.value
})
})
}
})
if (options.inPort) {
this.socket.bind(options.inPort);
}
private sendPacket(packet: Buffer): void{
this.socket.send(packet, 0, packet.length, this.options.outPort, this.options.outHost)
}
this.socket.on('listening', () => {
this.emit('listening');
});
/**
this.socket.on('message', (msg) => {
const decoded = fromBuffer(msg);
if (decoded.oscType === 'message') {
decoded.args.forEach((arg) => {
this.emit('message', {
address: decoded.address,
type: arg.type,
value: arg.value,
});
});
}
});
}
private sendPacket(packet: Buffer): void {
this.socket.send(packet, 0, packet.length, this.options.outPort, this.options.outHost);
}
/**
* Send an OSC message
```
osc.send("/osc/url", OSCType.String, "hello")
```
*/
public send<T extends OSCType>(address: string, type: T, value: OSCArgumentType<T>){
const arg: OSCArgument<T> = {
type,
value
}
public send<T extends OSCType>(address: string, type: T, value: OSCArgumentType<T>): void {
const arg: OSCArgument<T> = {
type,
value,
};
const encoded = toBuffer(address, [arg]);
this.sendPacket(encoded);
}
const encoded = toBuffer(address, [arg]);
this.sendPacket(encoded);
}
}

106
src/types/osc-min.d.ts vendored
View file

@ -1,59 +1,65 @@
declare module "osc-min" {
export const enum OSCType {
String = "string",
Float = "float",
Integer = "integer",
Blob = "blob",
True = "true",
False = "false",
Null = "null",
Bang = "bang",
Timetag = "timetag",
Array = "array"
}
declare module 'osc-min' {
export const enum OSCType {
String = 'string',
Float = 'float',
Integer = 'integer',
Blob = 'blob',
True = 'true',
False = 'false',
Null = 'null',
Bang = 'bang',
Timetag = 'timetag',
Array = 'array',
}
export type OSCTimeTag = [number, number];
export type OSCTimeTag = [number, number];
export type OutgoingOSCArgsTypes = (OSCArgument<OSCType> | Buffer | boolean | string | number)[];
export interface OSCMessage {
oscType?: "message",
address: string,
args: Array<OSCArgument<OSCType>>
}
export interface OSCMessage {
oscType?: 'message';
address: string;
args: OSCArgument<OSCType>[];
}
export interface OutgoingOSCMessage extends OSCMessage{
args: OutgoingOSCArgsTypes;
}
export interface OutgoingOSCMessage extends OSCMessage {
args: OutgoingOSCArgsTypes;
}
export type OutgoingOSCArgsTypes = Array<OSCArgument<OSCType> | Buffer | boolean | string | number>
export interface OSCBundle {
oscType: 'bundle';
timetag: null | number | Date | OSCTimeTag;
elements: (OSCMessage | OSCBundle)[];
}
export interface OSCBundle {
oscType: "bundle",
timetag: null | number | Date | OSCTimeTag,
elements: Array<OSCMessage | OSCBundle>
}
export type OSCArgumentType<T extends OSCType> = T extends OSCType.String
? string
: T extends OSCType.Float | OSCType.Integer | OSCType.Timetag
? number
: T extends OSCType.True
? true
: T extends OSCType.False
? false
: T extends OSCType.Blob
? Buffer
: T extends OSCType.Array
? OSCArgument<OSCType>[]
: null;
export type OSCArgumentType<T extends OSCType> = T extends OSCType.String ? string
: T extends OSCType.Float | OSCType.Integer | OSCType.Timetag ? number
: T extends OSCType.True ? true
: T extends OSCType.False ? false
: T extends OSCType.Blob ? Buffer
: T extends OSCType.Array ? Array<OSCArgument<OSCType>>
: null;
export interface OSCArgument<T extends OSCType> {
type: T;
value: OSCArgumentType<T>;
}
export interface OSCArgument<T extends OSCType>{
type: T;
value: OSCArgumentType<T>;
}
type OSCPacket = OSCMessage | OSCBundle;
type OSCPacket = OSCMessage | OSCBundle;
export function fromBuffer(buffer: Buffer, strict?: boolean): OSCPacket;
export function toBuffer(object: OutgoingOSCMessage, strict?: boolean): Buffer;
export function toBuffer(address: string, args: Array<OSCArgument<OSCType>>, strict?: boolean): Buffer;
export function applyMessageTransform(msg: Buffer, transform: (message: OSCMessage) => OSCMessage);
export function applyAddressTransform(msg: Buffer, transform: (address: string) => string);
export function timetagToDate(ntpTimeTag: OSCTimeTag): Date;
export function dateToTimetag(date: Date): OSCTimeTag;
export function timetagToTimestamp(timeTag: OSCTimeTag): number;
export function timestampToTimetag(timestamp: number); OSCTimeTag;
export function fromBuffer(buffer: Buffer, strict?: boolean): OSCPacket;
export function toBuffer(object: OutgoingOSCMessage, strict?: boolean): Buffer;
export function toBuffer(address: string, args: OSCArgument<OSCType>[], strict?: boolean): Buffer;
export function applyMessageTransform(msg: Buffer, transform: (message: OSCMessage) => OSCMessage);
export function applyAddressTransform(msg: Buffer, transform: (address: string) => string);
export function timetagToDate(ntpTimeTag: OSCTimeTag): Date;
export function dateToTimetag(date: Date): OSCTimeTag;
export function timetagToTimestamp(timeTag: OSCTimeTag): number;
export function timestampToTimetag(timestamp: number);
OSCTimeTag;
}