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",
|
||||
"docs": "typedoc --out docs ./src/index.ts",
|
||||
"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": {
|
||||
"type": "git",
|
||||
|
|
@ -29,9 +31,25 @@
|
|||
},
|
||||
"devDependencies": {
|
||||
"@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",
|
||||
"prettier": "^2.2.1",
|
||||
"rimraf": "^3.0.2",
|
||||
"typedoc": "^0.20.16",
|
||||
"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 {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 { EventEmitter } from 'events';
|
||||
|
||||
|
||||
export interface OSCClientOptions {
|
||||
/** host to output OSC data to */
|
||||
outHost: string;
|
||||
|
|
@ -15,7 +14,7 @@ export interface OSCClientOptions {
|
|||
export interface ReceivedOSCMessage<T extends OSCType> {
|
||||
address: string;
|
||||
type: T;
|
||||
value: OSCArgumentType<T>
|
||||
value: OSCArgumentType<T>;
|
||||
}
|
||||
|
||||
// declare types for events
|
||||
|
|
@ -24,18 +23,15 @@ 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
|
||||
@event
|
||||
*/
|
||||
on(event: 'listening', listener: ()=>void): this
|
||||
on(event: 'listening', listener: () => void): this;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* OSC Client base class, handles sending and receiving OSC messages
|
||||
|
||||
|
|
@ -52,7 +48,7 @@ export class OSCClient extends EventEmitter{
|
|||
private options: OSCClientOptions;
|
||||
constructor(options: OSCClientOptions) {
|
||||
super();
|
||||
this.socket = dgram.createSocket({type: "udp4", reuseAddr: true});
|
||||
this.socket = dgram.createSocket({ type: 'udp4', reuseAddr: true });
|
||||
this.options = options;
|
||||
|
||||
if (options.inPort) {
|
||||
|
|
@ -61,24 +57,24 @@ export class OSCClient extends EventEmitter{
|
|||
|
||||
this.socket.on('listening', () => {
|
||||
this.emit('listening');
|
||||
})
|
||||
});
|
||||
|
||||
this.socket.on('message', (msg) => {
|
||||
const decoded = fromBuffer(msg)
|
||||
if(decoded.oscType === "message"){
|
||||
const decoded = fromBuffer(msg);
|
||||
if (decoded.oscType === 'message') {
|
||||
decoded.args.forEach((arg) => {
|
||||
this.emit('message', {
|
||||
address: decoded.address,
|
||||
type: arg.type,
|
||||
value: arg.value
|
||||
})
|
||||
})
|
||||
value: arg.value,
|
||||
});
|
||||
});
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
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> = {
|
||||
type,
|
||||
value
|
||||
}
|
||||
value,
|
||||
};
|
||||
|
||||
const encoded = toBuffer(address, [arg]);
|
||||
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 {
|
||||
String = "string",
|
||||
Float = "float",
|
||||
Integer = "integer",
|
||||
Blob = "blob",
|
||||
True = "true",
|
||||
False = "false",
|
||||
Null = "null",
|
||||
Bang = "bang",
|
||||
Timetag = "timetag",
|
||||
Array = "array"
|
||||
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 OutgoingOSCArgsTypes = (OSCArgument<OSCType> | Buffer | boolean | string | number)[];
|
||||
|
||||
export interface OSCMessage {
|
||||
oscType?: "message",
|
||||
address: string,
|
||||
args: Array<OSCArgument<OSCType>>
|
||||
oscType?: 'message';
|
||||
address: string;
|
||||
args: OSCArgument<OSCType>[];
|
||||
}
|
||||
|
||||
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: Array<OSCMessage | OSCBundle>
|
||||
oscType: 'bundle';
|
||||
timetag: null | number | Date | OSCTimeTag;
|
||||
elements: (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 ? Array<OSCArgument<OSCType>>
|
||||
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 interface OSCArgument<T extends OSCType> {
|
||||
|
|
@ -49,11 +54,12 @@ declare module "osc-min" {
|
|||
|
||||
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 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;
|
||||
export function timestampToTimetag(timestamp: number);
|
||||
OSCTimeTag;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue