linting, editorconfig
This commit is contained in:
parent
ee66b16be2
commit
2f4ab521b5
9 changed files with 2267 additions and 146 deletions
13
.editorconfig
Normal file
13
.editorconfig
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
# Editor configuration, see http://editorconfig.org
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*.{js,ts,json}]
|
||||||
|
charset = utf-8
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
insert_final_newline = true
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
|
||||||
|
[*.md]
|
||||||
|
max_line_length = off
|
||||||
|
trim_trailing_whitespace = false
|
||||||
33
.eslintrc.js
Normal file
33
.eslintrc.js
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
module.exports = {
|
||||||
|
parser: "@typescript-eslint/parser", // Specifies the ESLint parser
|
||||||
|
|
||||||
|
parserOptions: {
|
||||||
|
ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features
|
||||||
|
sourceType: "module" // Allows for the use of imports
|
||||||
|
},
|
||||||
|
|
||||||
|
extends: [
|
||||||
|
"plugin:@typescript-eslint/recommended",
|
||||||
|
"prettier/@typescript-eslint",
|
||||||
|
"plugin:prettier/recommended"
|
||||||
|
],
|
||||||
|
rules: {
|
||||||
|
"@typescript-eslint/no-shadow": ["error", { "allow": ["err"] }],
|
||||||
|
"no-console": "off",
|
||||||
|
"no-use-before-define": "off",
|
||||||
|
"no-constant-condition": "off",
|
||||||
|
"import/no-unresolved": "off",
|
||||||
|
"import/extensions": "off",
|
||||||
|
"class-methods-use-this": "off",
|
||||||
|
"@typescript-eslint/array-type": [2, { "default": "array" }],
|
||||||
|
"@typescript-eslint/consistent-type-definitions": [2, "interface"],
|
||||||
|
"@typescript-eslint/no-explicit-any": "error",
|
||||||
|
"@typescript-eslint/no-for-in-array": "error",
|
||||||
|
"@typescript-eslint/no-inferrable-types": "error",
|
||||||
|
"@typescript-eslint/no-use-before-define": "warn",
|
||||||
|
"no-unused-vars": "off",
|
||||||
|
"@typescript-eslint/no-unused-vars": "warn",
|
||||||
|
"no-underscore-dangle": "off",
|
||||||
|
"prefer-destructuring": "off"
|
||||||
|
}
|
||||||
|
};
|
||||||
55
.eslintrc.json
Normal file
55
.eslintrc.json
Normal file
|
|
@ -0,0 +1,55 @@
|
||||||
|
{
|
||||||
|
"env": {
|
||||||
|
"es6": true
|
||||||
|
},
|
||||||
|
"extends": ["airbnb-base", "prettier"],
|
||||||
|
"globals": {
|
||||||
|
"Atomics": "readonly",
|
||||||
|
"SharedArrayBuffer": "readonly"
|
||||||
|
},
|
||||||
|
"parser": "@typescript-eslint/parser",
|
||||||
|
"parserOptions": {
|
||||||
|
"ecmaVersion": 2018,
|
||||||
|
"sourceType": "module",
|
||||||
|
"allowImportExportEverywhere": true
|
||||||
|
},
|
||||||
|
"plugins": [
|
||||||
|
"prettier",
|
||||||
|
"@typescript-eslint"
|
||||||
|
],
|
||||||
|
"rules": {
|
||||||
|
"prettier/prettier": "error",
|
||||||
|
"class-methods-use-this": [
|
||||||
|
"error",
|
||||||
|
{"exceptMethods": ["requestDidStart", "willSendRequest", "willSendResponse", "errorFromResponse"]}
|
||||||
|
],
|
||||||
|
"camelcase": 0,
|
||||||
|
"no-undef": 0,
|
||||||
|
"no-new": 0,
|
||||||
|
"no-shadow": 0,
|
||||||
|
"@typescript-eslint/no-shadow": ["error", { "allow": ["err"] }],
|
||||||
|
"no-console": "off",
|
||||||
|
"no-use-before-define": "warn",
|
||||||
|
"no-constant-condition": "off",
|
||||||
|
"import/no-unresolved": "off",
|
||||||
|
"import/prefer-default-export": "warn",
|
||||||
|
"import/extensions": "off",
|
||||||
|
"class-methods-use-this": "off",
|
||||||
|
"@typescript-eslint/array-type": [2, { "default": "array" }],
|
||||||
|
"@typescript-eslint/consistent-type-definitions": [2, "interface"],
|
||||||
|
"@typescript-eslint/no-explicit-any": "error",
|
||||||
|
"@typescript-eslint/no-for-in-array": "error",
|
||||||
|
"@typescript-eslint/no-inferrable-types": "error",
|
||||||
|
"@typescript-eslint/no-use-before-define": "warn",
|
||||||
|
"no-unused-vars": "off",
|
||||||
|
"@typescript-eslint/no-unused-vars": "warn",
|
||||||
|
"no-underscore-dangle": "off",
|
||||||
|
"prefer-destructuring": "off"
|
||||||
|
},
|
||||||
|
"settings": {
|
||||||
|
"import/extensions": [".js", ".ts"],
|
||||||
|
"import/parsers": {
|
||||||
|
"@typescript-eslint/parser": [".ts", ".tsx"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
7
.prettierrc.js
Normal file
7
.prettierrc.js
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
module.exports = {
|
||||||
|
semi: true,
|
||||||
|
trailingComma: "all",
|
||||||
|
singleQuote: true,
|
||||||
|
printWidth: 120,
|
||||||
|
tabWidth: 2
|
||||||
|
};
|
||||||
1996
package-lock.json
generated
1996
package-lock.json
generated
File diff suppressed because it is too large
Load diff
20
package.json
20
package.json
|
|
@ -10,7 +10,9 @@
|
||||||
"watch": "tsc --watch",
|
"watch": "tsc --watch",
|
||||||
"docs": "typedoc --out docs ./src/index.ts",
|
"docs": "typedoc --out docs ./src/index.ts",
|
||||||
"clean": "rimraf lib",
|
"clean": "rimraf lib",
|
||||||
"build": "run-s clean compile docs"
|
"build": "run-s clean compile docs",
|
||||||
|
"lint": "eslint ./src --ext .js,.ts",
|
||||||
|
"lint:fix": "npm run lint -- --fix"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
|
@ -29,9 +31,25 @@
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^14.14.22",
|
"@types/node": "^14.14.22",
|
||||||
|
"@typescript-eslint/eslint-plugin": "^4.14.0",
|
||||||
|
"@typescript-eslint/parser": "^4.14.0",
|
||||||
|
"eslint": "^7.18.0",
|
||||||
|
"eslint-config-prettier": "^7.2.0",
|
||||||
|
"eslint-plugin-prettier": "^3.3.1",
|
||||||
|
"husky": "^4.3.8",
|
||||||
|
"lint-staged": "^10.5.3",
|
||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
|
"prettier": "^2.2.1",
|
||||||
"rimraf": "^3.0.2",
|
"rimraf": "^3.0.2",
|
||||||
"typedoc": "^0.20.16",
|
"typedoc": "^0.20.16",
|
||||||
"typescript": "^4.1.3"
|
"typescript": "^4.1.3"
|
||||||
|
},
|
||||||
|
"lint-staged": {
|
||||||
|
"src/**/*.{ts}": "eslint ./src --fix"
|
||||||
|
},
|
||||||
|
"husky": {
|
||||||
|
"hooks": {
|
||||||
|
"pre-commit": "lint-staged"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,2 @@
|
||||||
export * from './oscClient';
|
export * from './oscClient';
|
||||||
export {OSCType, OSCArgumentType} from 'osc-min'
|
export { OSCType, OSCArgumentType } from 'osc-min';
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ 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';
|
import { EventEmitter } from 'events';
|
||||||
|
|
||||||
|
|
||||||
export interface OSCClientOptions {
|
export interface OSCClientOptions {
|
||||||
/** host to output OSC data to */
|
/** host to output OSC data to */
|
||||||
outHost: string;
|
outHost: string;
|
||||||
|
|
@ -15,7 +14,7 @@ export interface OSCClientOptions {
|
||||||
export interface ReceivedOSCMessage<T extends OSCType> {
|
export interface ReceivedOSCMessage<T extends OSCType> {
|
||||||
address: string;
|
address: string;
|
||||||
type: T;
|
type: T;
|
||||||
value: OSCArgumentType<T>
|
value: OSCArgumentType<T>;
|
||||||
}
|
}
|
||||||
|
|
||||||
// declare types for events
|
// declare types for events
|
||||||
|
|
@ -24,18 +23,15 @@ export declare interface OSCClient {
|
||||||
Emitted whenever an OSC message is received on inPort
|
Emitted whenever an OSC message is received on inPort
|
||||||
@event
|
@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
|
@event
|
||||||
*/
|
*/
|
||||||
on(event: 'listening', listener: ()=>void): this
|
on(event: 'listening', listener: () => void): this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* OSC Client base class, handles sending and receiving OSC messages
|
* OSC Client base class, handles sending and receiving OSC messages
|
||||||
|
|
||||||
|
|
@ -52,7 +48,7 @@ export class OSCClient extends EventEmitter{
|
||||||
private options: OSCClientOptions;
|
private options: OSCClientOptions;
|
||||||
constructor(options: OSCClientOptions) {
|
constructor(options: OSCClientOptions) {
|
||||||
super();
|
super();
|
||||||
this.socket = dgram.createSocket({type: "udp4", reuseAddr: true});
|
this.socket = dgram.createSocket({ type: 'udp4', reuseAddr: true });
|
||||||
this.options = options;
|
this.options = options;
|
||||||
|
|
||||||
if (options.inPort) {
|
if (options.inPort) {
|
||||||
|
|
@ -61,24 +57,24 @@ export class OSCClient extends EventEmitter{
|
||||||
|
|
||||||
this.socket.on('listening', () => {
|
this.socket.on('listening', () => {
|
||||||
this.emit('listening');
|
this.emit('listening');
|
||||||
})
|
});
|
||||||
|
|
||||||
this.socket.on('message', (msg) => {
|
this.socket.on('message', (msg) => {
|
||||||
const decoded = fromBuffer(msg)
|
const decoded = fromBuffer(msg);
|
||||||
if(decoded.oscType === "message"){
|
if (decoded.oscType === 'message') {
|
||||||
decoded.args.forEach((arg) => {
|
decoded.args.forEach((arg) => {
|
||||||
this.emit('message', {
|
this.emit('message', {
|
||||||
address: decoded.address,
|
address: decoded.address,
|
||||||
type: arg.type,
|
type: arg.type,
|
||||||
value: arg.value
|
value: arg.value,
|
||||||
})
|
});
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private sendPacket(packet: Buffer): void {
|
private sendPacket(packet: Buffer): void {
|
||||||
this.socket.send(packet, 0, packet.length, this.options.outPort, this.options.outHost)
|
this.socket.send(packet, 0, packet.length, this.options.outPort, this.options.outHost);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -88,11 +84,11 @@ export class OSCClient extends EventEmitter{
|
||||||
```
|
```
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public send<T extends OSCType>(address: string, type: T, value: OSCArgumentType<T>){
|
public send<T extends OSCType>(address: string, type: T, value: OSCArgumentType<T>): void {
|
||||||
const arg: OSCArgument<T> = {
|
const arg: OSCArgument<T> = {
|
||||||
type,
|
type,
|
||||||
value
|
value,
|
||||||
}
|
};
|
||||||
|
|
||||||
const encoded = toBuffer(address, [arg]);
|
const encoded = toBuffer(address, [arg]);
|
||||||
this.sendPacket(encoded);
|
this.sendPacket(encoded);
|
||||||
|
|
|
||||||
60
src/types/osc-min.d.ts
vendored
60
src/types/osc-min.d.ts
vendored
|
|
@ -1,43 +1,48 @@
|
||||||
declare module "osc-min" {
|
declare module 'osc-min' {
|
||||||
export const enum OSCType {
|
export const enum OSCType {
|
||||||
String = "string",
|
String = 'string',
|
||||||
Float = "float",
|
Float = 'float',
|
||||||
Integer = "integer",
|
Integer = 'integer',
|
||||||
Blob = "blob",
|
Blob = 'blob',
|
||||||
True = "true",
|
True = 'true',
|
||||||
False = "false",
|
False = 'false',
|
||||||
Null = "null",
|
Null = 'null',
|
||||||
Bang = "bang",
|
Bang = 'bang',
|
||||||
Timetag = "timetag",
|
Timetag = 'timetag',
|
||||||
Array = "array"
|
Array = 'array',
|
||||||
}
|
}
|
||||||
|
|
||||||
export type OSCTimeTag = [number, number];
|
export type OSCTimeTag = [number, number];
|
||||||
|
export type OutgoingOSCArgsTypes = (OSCArgument<OSCType> | Buffer | boolean | string | number)[];
|
||||||
|
|
||||||
export interface OSCMessage {
|
export interface OSCMessage {
|
||||||
oscType?: "message",
|
oscType?: 'message';
|
||||||
address: string,
|
address: string;
|
||||||
args: Array<OSCArgument<OSCType>>
|
args: OSCArgument<OSCType>[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface OutgoingOSCMessage extends OSCMessage {
|
export interface OutgoingOSCMessage extends OSCMessage {
|
||||||
args: OutgoingOSCArgsTypes;
|
args: OutgoingOSCArgsTypes;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type OutgoingOSCArgsTypes = Array<OSCArgument<OSCType> | Buffer | boolean | string | number>
|
|
||||||
|
|
||||||
export interface OSCBundle {
|
export interface OSCBundle {
|
||||||
oscType: "bundle",
|
oscType: 'bundle';
|
||||||
timetag: null | number | Date | OSCTimeTag,
|
timetag: null | number | Date | OSCTimeTag;
|
||||||
elements: Array<OSCMessage | OSCBundle>
|
elements: (OSCMessage | OSCBundle)[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export type OSCArgumentType<T extends OSCType> = T extends OSCType.String ? string
|
export type OSCArgumentType<T extends OSCType> = T extends OSCType.String
|
||||||
: T extends OSCType.Float | OSCType.Integer | OSCType.Timetag ? number
|
? string
|
||||||
: T extends OSCType.True ? true
|
: T extends OSCType.Float | OSCType.Integer | OSCType.Timetag
|
||||||
: T extends OSCType.False ? false
|
? number
|
||||||
: T extends OSCType.Blob ? Buffer
|
: T extends OSCType.True
|
||||||
: T extends OSCType.Array ? Array<OSCArgument<OSCType>>
|
? true
|
||||||
|
: T extends OSCType.False
|
||||||
|
? false
|
||||||
|
: T extends OSCType.Blob
|
||||||
|
? Buffer
|
||||||
|
: T extends OSCType.Array
|
||||||
|
? OSCArgument<OSCType>[]
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
export interface OSCArgument<T extends OSCType> {
|
export interface OSCArgument<T extends OSCType> {
|
||||||
|
|
@ -49,11 +54,12 @@ declare module "osc-min" {
|
||||||
|
|
||||||
export function fromBuffer(buffer: Buffer, strict?: boolean): OSCPacket;
|
export function fromBuffer(buffer: Buffer, strict?: boolean): OSCPacket;
|
||||||
export function toBuffer(object: OutgoingOSCMessage, strict?: boolean): Buffer;
|
export function toBuffer(object: OutgoingOSCMessage, strict?: boolean): Buffer;
|
||||||
export function toBuffer(address: string, args: Array<OSCArgument<OSCType>>, 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 applyMessageTransform(msg: Buffer, transform: (message: OSCMessage) => OSCMessage);
|
||||||
export function applyAddressTransform(msg: Buffer, transform: (address: string) => string);
|
export function applyAddressTransform(msg: Buffer, transform: (address: string) => string);
|
||||||
export function timetagToDate(ntpTimeTag: OSCTimeTag): Date;
|
export function timetagToDate(ntpTimeTag: OSCTimeTag): Date;
|
||||||
export function dateToTimetag(date: Date): OSCTimeTag;
|
export function dateToTimetag(date: Date): OSCTimeTag;
|
||||||
export function timetagToTimestamp(timeTag: OSCTimeTag): number;
|
export function timetagToTimestamp(timeTag: OSCTimeTag): number;
|
||||||
export function timestampToTimetag(timestamp: number); OSCTimeTag;
|
export function timestampToTimetag(timestamp: number);
|
||||||
|
OSCTimeTag;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue