diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 5c72b61..0000000 --- a/.eslintrc.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "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"] - } - } -} diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0fd2474..2631594 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -25,6 +25,10 @@ build: script: - npm install - npm run build + artifacts: + expire_in: 1 hour + paths: + - lib pages: stage: deploy @@ -45,6 +49,8 @@ npm_publish: script: - npm config set '//registry.npmjs.org/:_authToken' "${NPM_TOKEN}" - npm publish + dependencies: + - build clean: when: always diff --git a/README.md b/README.md index 9a1c36b..a7bdec2 100644 --- a/README.md +++ b/README.md @@ -5,17 +5,15 @@ API Docs [here](https://riksolo.pages.riksolo.com/ts-osc/) ## Usage example ```javascript -import {OSCClient, OSCType} from 'ts-osc'; +import {OSCClient, OSCType, OSCServer} from 'ts-osc'; -const client = new OSCClient({ - outHost: "localhost", - outPort: 8000, - inPort: 8000 -}) +const client = new OSCClient("localhost", 8000); client.send('/hello', OSCType.String, "hello"); -client.on('message', (msg)=>{ +const server = new OSCServer("0.0.0.0", 8000); + +server.on('message', (msg)=>{ console.log(msg); }) ``` diff --git a/package-lock.json b/package-lock.json index 17bc7c4..6cfd086 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "ts-osc", - "version": "0.1.2", + "version": "0.2.3", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -460,6 +460,17 @@ } } }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -499,6 +510,27 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "copyfiles": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz", + "integrity": "sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==", + "dev": true, + "requires": { + "glob": "^7.0.5", + "minimatch": "^3.0.3", + "mkdirp": "^1.0.4", + "noms": "0.0.0", + "through2": "^2.0.1", + "untildify": "^4.0.0", + "yargs": "^16.1.0" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, "cosmiconfig": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", @@ -667,6 +699,12 @@ "is-symbol": "^1.0.2" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -1158,6 +1196,12 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, "get-intrinsic": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz", @@ -1497,6 +1541,12 @@ "has-symbols": "^1.0.1" } }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -1926,6 +1976,12 @@ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -1950,6 +2006,16 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "noms": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", + "integrity": "sha1-2o69nzr51nYJGbJ9nNyAkqczKFk=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "~1.0.31" + } + }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -2217,6 +2283,12 @@ "fast-diff": "^1.1.2" } }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -2250,6 +2322,18 @@ "path-type": "^3.0.0" } }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", @@ -2265,6 +2349,12 @@ "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", "dev": true }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -2327,6 +2417,12 @@ "tslib": "^1.9.0" } }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -2549,6 +2645,12 @@ "define-properties": "^1.1.3" } }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, "stringify-object": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", @@ -2640,6 +2742,48 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -2723,6 +2867,12 @@ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true }, + "untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -2732,6 +2882,12 @@ "punycode": "^2.1.0" } }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, "v8-compile-cache": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", @@ -2824,6 +2980,18 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "dev": true + }, "yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -2836,6 +3004,27 @@ "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", "dev": true }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 9855161..460c438 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ts-osc", - "version": "0.2.1", + "version": "0.3.2", "description": "Fully TypeScript-native OSC Client based on osc-min", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -9,8 +9,9 @@ "compile": "tsc", "watch": "tsc --watch", "docs": "typedoc --out docs ./src/index.ts", + "copy": "copyfiles -u 1 -f ./src/**/*.d.ts ./lib", "clean": "rimraf lib", - "build": "run-s clean compile docs", + "build": "run-s clean compile copy docs", "lint": "eslint ./src --ext .js,.ts", "lint:fix": "npm run lint -- --fix" }, @@ -33,6 +34,7 @@ "@types/node": "^14.14.22", "@typescript-eslint/eslint-plugin": "^4.14.0", "@typescript-eslint/parser": "^4.14.0", + "copyfiles": "^2.4.1", "eslint": "^7.18.0", "eslint-config-prettier": "^7.2.0", "eslint-plugin-prettier": "^3.3.1", diff --git a/src/index.ts b/src/index.ts index 14d58ea..a6817fa 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,3 +1,3 @@ export * from './oscClient'; export * from './oscServer'; -export { OSCType, OSCArgumentType } from 'osc-min'; +export { OSCType, OSCArgumentType } from './types'; diff --git a/src/oscClient.ts b/src/oscClient.ts index d51c7ac..a8774d9 100644 --- a/src/oscClient.ts +++ b/src/oscClient.ts @@ -1,16 +1,16 @@ import * as dgram from 'dgram'; -import { OSCArgument, OSCType, toBuffer, OSCArgumentType } from 'osc-min'; -import { EventEmitter } from 'events'; +import { toBuffer } from 'osc-min'; +import { OSCArgument, OSCType, OSCArgumentType } from './types'; /** - * OSC Client base class, handles sending and receiving OSC messages + * OSC Client, handles sending OSC messages ``` - const osc = new OSCClient("192.168.0.44", 8000) + const osc = new OSCClient("192.168.0.44", 8000); ``` */ export class OSCClient { - private socket: dgram.Socket; + public socket: dgram.Socket; private host: string; private port: number; constructor(host: string, port: number) { @@ -19,14 +19,14 @@ export class OSCClient { this.socket = dgram.createSocket({ type: 'udp4', reuseAddr: true }); } - private sendPacket(packet: Buffer): void { + public sendPacket(packet: Buffer): void { this.socket.send(packet, 0, packet.length, this.port, this.host); } /** * Send an OSC message ``` - osc.send("/osc/url", OSCType.String, "hello") + osc.send("/osc/url", OSCType.String, "hello"); ``` */ @@ -39,4 +39,12 @@ export class OSCClient { const encoded = toBuffer(address, [arg]); this.sendPacket(encoded); } + + /** + * Close the connection + */ + + public close(): void { + this.socket.close(); + } } diff --git a/src/oscServer.ts b/src/oscServer.ts index 3f87397..c4ebbbc 100644 --- a/src/oscServer.ts +++ b/src/oscServer.ts @@ -1,6 +1,7 @@ import EventEmitter = require('events'); import * as dgram from 'dgram'; -import { OSCType, OSCArgumentType, fromBuffer } from 'osc-min'; +import { fromBuffer } from 'osc-min'; +import { OSCType, OSCArgumentType } from './types'; export interface ReceivedOSCMessage { address: string; @@ -14,27 +15,58 @@ export declare interface OSCServer { Emitted whenever an OSC message is received on inPort @event */ - on(event: 'message', listener: (message: ReceivedOSCMessage) => void): this; + on(event: 'message', listener: (message: ReceivedOSCMessage) => void): this; /** Emitted when OSC client is listening on inPort @event */ on(event: 'listening', listener: () => void): this; + + /** + * Emitted when OSC socket is closed + @event + */ + + on(event: 'close', listener: () => void): this; + + /** + * Emitted whenever an error occurs + @event + */ + + on(event: 'error', listener: (exception: Error) => void): this; } -export class OSCServer extends EventEmitter { - private socket: dgram.Socket; +/** + * OSC Server, handles receiving OSC messages - constructor(address: string, port: number) { + ``` + const osc = new OSCServer("192.168.0.44", 8000); + ``` + */ +export class OSCServer extends EventEmitter { + public socket: dgram.Socket; + + constructor(bindAddress: string, port: number) { super(); this.socket = dgram.createSocket({ type: 'udp4', reuseAddr: true }); - this.socket.bind(port, address); + this.socket.bind({ + port, + address: bindAddress, + exclusive: true, + }); this.socket.on('listening', () => { this.emit('listening'); }); + this.socket.on('close', () => { + this.emit('close'); + }); + this.socket.on('error', (e) => { + this.emit('error', e); + }); this.socket.on('message', (msg) => { const decoded = fromBuffer(msg); @@ -49,4 +81,12 @@ export class OSCServer extends EventEmitter { } }); } + + /** + * close the server + */ + + public close(): void { + this.socket.close(); + } } diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..df1c10a --- /dev/null +++ b/src/types.ts @@ -0,0 +1,31 @@ +export interface OSCArgument { + type: T; + value: OSCArgumentType; +} + +export enum OSCType { + String = 'string', + Float = 'float', + Integer = 'integer', + Blob = 'blob', + True = 'true', + False = 'false', + Null = 'null', + Bang = 'bang', + Timetag = 'timetag', + Array = 'array', +} + +export type OSCArgumentType = 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[] + : null; diff --git a/src/types/osc-min.d.ts b/src/types/osc-min.d.ts index dec8f5f..c1b49b8 100644 --- a/src/types/osc-min.d.ts +++ b/src/types/osc-min.d.ts @@ -1,16 +1,5 @@ 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', - } + import { OSCType, OSCArgumentType, OSCArgument } from '../types'; export type OSCTimeTag = [number, number]; export type OutgoingOSCArgsTypes = (OSCArgument | Buffer | boolean | string | number)[]; @@ -31,25 +20,6 @@ declare module 'osc-min' { elements: (OSCMessage | OSCBundle)[]; } - export type OSCArgumentType = 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[] - : null; - - export interface OSCArgument { - type: T; - value: OSCArgumentType; - } - type OSCPacket = OSCMessage | OSCBundle; export function fromBuffer(buffer: Buffer, strict?: boolean): OSCPacket;