Compare commits
No commits in common. "11b1702726d1bbc35b9b5c25b6eb0cfa53403a49" and "5fda0ab2048855c800e63edeffa2980858486a3c" have entirely different histories.
11b1702726
...
5fda0ab204
10 changed files with 109 additions and 298 deletions
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"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -25,10 +25,6 @@ build:
|
||||||
script:
|
script:
|
||||||
- npm install
|
- npm install
|
||||||
- npm run build
|
- npm run build
|
||||||
artifacts:
|
|
||||||
expire_in: 1 hour
|
|
||||||
paths:
|
|
||||||
- lib
|
|
||||||
|
|
||||||
pages:
|
pages:
|
||||||
stage: deploy
|
stage: deploy
|
||||||
|
|
@ -49,8 +45,6 @@ npm_publish:
|
||||||
script:
|
script:
|
||||||
- npm config set '//registry.npmjs.org/:_authToken' "${NPM_TOKEN}"
|
- npm config set '//registry.npmjs.org/:_authToken' "${NPM_TOKEN}"
|
||||||
- npm publish
|
- npm publish
|
||||||
dependencies:
|
|
||||||
- build
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
when: always
|
when: always
|
||||||
|
|
|
||||||
12
README.md
12
README.md
|
|
@ -5,15 +5,17 @@ API Docs [here](https://riksolo.pages.riksolo.com/ts-osc/)
|
||||||
|
|
||||||
## Usage example
|
## Usage example
|
||||||
```javascript
|
```javascript
|
||||||
import {OSCClient, OSCType, OSCServer} from 'ts-osc';
|
import {OSCClient, OSCType} from 'ts-osc';
|
||||||
|
|
||||||
const client = new OSCClient("localhost", 8000);
|
const client = new OSCClient({
|
||||||
|
outHost: "localhost",
|
||||||
|
outPort: 8000,
|
||||||
|
inPort: 8000
|
||||||
|
})
|
||||||
|
|
||||||
client.send('/hello', OSCType.String, "hello");
|
client.send('/hello', OSCType.String, "hello");
|
||||||
|
|
||||||
const server = new OSCServer("0.0.0.0", 8000);
|
client.on('message', (msg)=>{
|
||||||
|
|
||||||
server.on('message', (msg)=>{
|
|
||||||
console.log(msg);
|
console.log(msg);
|
||||||
})
|
})
|
||||||
```
|
```
|
||||||
|
|
|
||||||
191
package-lock.json
generated
191
package-lock.json
generated
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "ts-osc",
|
"name": "ts-osc",
|
||||||
"version": "0.2.3",
|
"version": "0.1.2",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|
@ -460,17 +460,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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": {
|
"color-convert": {
|
||||||
"version": "1.9.3",
|
"version": "1.9.3",
|
||||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
||||||
|
|
@ -510,27 +499,6 @@
|
||||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
||||||
"dev": true
|
"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": {
|
"cosmiconfig": {
|
||||||
"version": "7.0.0",
|
"version": "7.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz",
|
||||||
|
|
@ -699,12 +667,6 @@
|
||||||
"is-symbol": "^1.0.2"
|
"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": {
|
"escape-string-regexp": {
|
||||||
"version": "1.0.5",
|
"version": "1.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
||||||
|
|
@ -1196,12 +1158,6 @@
|
||||||
"integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
|
"integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
|
||||||
"dev": true
|
"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": {
|
"get-intrinsic": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz",
|
||||||
|
|
@ -1541,12 +1497,6 @@
|
||||||
"has-symbols": "^1.0.1"
|
"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": {
|
"isexe": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
||||||
|
|
@ -1976,12 +1926,6 @@
|
||||||
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
|
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
|
||||||
"dev": true
|
"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": {
|
"ms": {
|
||||||
"version": "2.1.2",
|
"version": "2.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||||
|
|
@ -2006,16 +1950,6 @@
|
||||||
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
|
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
|
||||||
"dev": true
|
"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": {
|
"normalize-package-data": {
|
||||||
"version": "2.5.0",
|
"version": "2.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
|
||||||
|
|
@ -2283,12 +2217,6 @@
|
||||||
"fast-diff": "^1.1.2"
|
"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": {
|
"progress": {
|
||||||
"version": "2.0.3",
|
"version": "2.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
|
||||||
|
|
@ -2322,18 +2250,6 @@
|
||||||
"path-type": "^3.0.0"
|
"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": {
|
"rechoir": {
|
||||||
"version": "0.6.2",
|
"version": "0.6.2",
|
||||||
"resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
|
||||||
|
|
@ -2349,12 +2265,6 @@
|
||||||
"integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
|
"integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
|
||||||
"dev": true
|
"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": {
|
"require-from-string": {
|
||||||
"version": "2.0.2",
|
"version": "2.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
|
||||||
|
|
@ -2417,12 +2327,6 @@
|
||||||
"tslib": "^1.9.0"
|
"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": {
|
"semver": {
|
||||||
"version": "5.7.1",
|
"version": "5.7.1",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
|
||||||
|
|
@ -2645,12 +2549,6 @@
|
||||||
"define-properties": "^1.1.3"
|
"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": {
|
"stringify-object": {
|
||||||
"version": "3.3.0",
|
"version": "3.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz",
|
||||||
|
|
@ -2742,48 +2640,6 @@
|
||||||
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
|
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
|
||||||
"dev": true
|
"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": {
|
"to-regex-range": {
|
||||||
"version": "5.0.1",
|
"version": "5.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||||
|
|
@ -2867,12 +2723,6 @@
|
||||||
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
|
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
|
||||||
"dev": true
|
"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": {
|
"uri-js": {
|
||||||
"version": "4.4.1",
|
"version": "4.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
|
||||||
|
|
@ -2882,12 +2732,6 @@
|
||||||
"punycode": "^2.1.0"
|
"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": {
|
"v8-compile-cache": {
|
||||||
"version": "2.2.0",
|
"version": "2.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz",
|
||||||
|
|
@ -2980,18 +2824,6 @@
|
||||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
||||||
"dev": true
|
"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": {
|
"yallist": {
|
||||||
"version": "3.1.1",
|
"version": "3.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
||||||
|
|
@ -3004,27 +2836,6 @@
|
||||||
"integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==",
|
"integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==",
|
||||||
"dev": true
|
"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": {
|
"yocto-queue": {
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "ts-osc",
|
"name": "ts-osc",
|
||||||
"version": "0.3.2",
|
"version": "0.2.1",
|
||||||
"description": "Fully TypeScript-native OSC Client based on osc-min",
|
"description": "Fully TypeScript-native OSC Client based on osc-min",
|
||||||
"main": "./lib/index.js",
|
"main": "./lib/index.js",
|
||||||
"types": "./lib/index.d.ts",
|
"types": "./lib/index.d.ts",
|
||||||
|
|
@ -9,9 +9,8 @@
|
||||||
"compile": "tsc",
|
"compile": "tsc",
|
||||||
"watch": "tsc --watch",
|
"watch": "tsc --watch",
|
||||||
"docs": "typedoc --out docs ./src/index.ts",
|
"docs": "typedoc --out docs ./src/index.ts",
|
||||||
"copy": "copyfiles -u 1 -f ./src/**/*.d.ts ./lib",
|
|
||||||
"clean": "rimraf lib",
|
"clean": "rimraf lib",
|
||||||
"build": "run-s clean compile copy docs",
|
"build": "run-s clean compile docs",
|
||||||
"lint": "eslint ./src --ext .js,.ts",
|
"lint": "eslint ./src --ext .js,.ts",
|
||||||
"lint:fix": "npm run lint -- --fix"
|
"lint:fix": "npm run lint -- --fix"
|
||||||
},
|
},
|
||||||
|
|
@ -34,7 +33,6 @@
|
||||||
"@types/node": "^14.14.22",
|
"@types/node": "^14.14.22",
|
||||||
"@typescript-eslint/eslint-plugin": "^4.14.0",
|
"@typescript-eslint/eslint-plugin": "^4.14.0",
|
||||||
"@typescript-eslint/parser": "^4.14.0",
|
"@typescript-eslint/parser": "^4.14.0",
|
||||||
"copyfiles": "^2.4.1",
|
|
||||||
"eslint": "^7.18.0",
|
"eslint": "^7.18.0",
|
||||||
"eslint-config-prettier": "^7.2.0",
|
"eslint-config-prettier": "^7.2.0",
|
||||||
"eslint-plugin-prettier": "^3.3.1",
|
"eslint-plugin-prettier": "^3.3.1",
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
export * from './oscClient';
|
export * from './oscClient';
|
||||||
export * from './oscServer';
|
export * from './oscServer';
|
||||||
export { OSCType, OSCArgumentType } from './types';
|
export { OSCType, OSCArgumentType } from 'osc-min';
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,16 @@
|
||||||
import * as dgram from 'dgram';
|
import * as dgram from 'dgram';
|
||||||
import { toBuffer } from 'osc-min';
|
import { OSCArgument, OSCType, toBuffer, OSCArgumentType } from 'osc-min';
|
||||||
import { OSCArgument, OSCType, OSCArgumentType } from './types';
|
import { EventEmitter } from 'events';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* OSC Client, handles sending OSC messages
|
* OSC Client base class, handles sending and receiving OSC messages
|
||||||
|
|
||||||
```
|
```
|
||||||
const osc = new OSCClient("192.168.0.44", 8000);
|
const osc = new OSCClient("192.168.0.44", 8000)
|
||||||
```
|
```
|
||||||
*/
|
*/
|
||||||
export class OSCClient {
|
export class OSCClient {
|
||||||
public socket: dgram.Socket;
|
private socket: dgram.Socket;
|
||||||
private host: string;
|
private host: string;
|
||||||
private port: number;
|
private port: number;
|
||||||
constructor(host: string, port: number) {
|
constructor(host: string, port: number) {
|
||||||
|
|
@ -19,14 +19,14 @@ export class OSCClient {
|
||||||
this.socket = dgram.createSocket({ type: 'udp4', reuseAddr: true });
|
this.socket = dgram.createSocket({ type: 'udp4', reuseAddr: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
public sendPacket(packet: Buffer): void {
|
private sendPacket(packet: Buffer): void {
|
||||||
this.socket.send(packet, 0, packet.length, this.port, this.host);
|
this.socket.send(packet, 0, packet.length, this.port, this.host);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send an OSC message
|
* Send an OSC message
|
||||||
```
|
```
|
||||||
osc.send("/osc/url", OSCType.String, "hello");
|
osc.send("/osc/url", OSCType.String, "hello")
|
||||||
```
|
```
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
@ -39,12 +39,4 @@ export class OSCClient {
|
||||||
const encoded = toBuffer(address, [arg]);
|
const encoded = toBuffer(address, [arg]);
|
||||||
this.sendPacket(encoded);
|
this.sendPacket(encoded);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Close the connection
|
|
||||||
*/
|
|
||||||
|
|
||||||
public close(): void {
|
|
||||||
this.socket.close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
import EventEmitter = require('events');
|
import EventEmitter = require('events');
|
||||||
import * as dgram from 'dgram';
|
import * as dgram from 'dgram';
|
||||||
import { fromBuffer } from 'osc-min';
|
import { OSCType, OSCArgumentType, fromBuffer } from 'osc-min';
|
||||||
import { OSCType, OSCArgumentType } from './types';
|
|
||||||
|
|
||||||
export interface ReceivedOSCMessage<T extends OSCType> {
|
export interface ReceivedOSCMessage<T extends OSCType> {
|
||||||
address: string;
|
address: string;
|
||||||
|
|
@ -15,58 +14,27 @@ export declare interface OSCServer {
|
||||||
Emitted whenever an OSC message is received on inPort
|
Emitted whenever an OSC message is received on inPort
|
||||||
@event
|
@event
|
||||||
*/
|
*/
|
||||||
on(event: 'message', listener: <T extends OSCType>(message: ReceivedOSCMessage<T>) => 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;
|
||||||
|
|
||||||
/**
|
|
||||||
* 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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* OSC Server, handles receiving OSC messages
|
|
||||||
|
|
||||||
```
|
|
||||||
const osc = new OSCServer("192.168.0.44", 8000);
|
|
||||||
```
|
|
||||||
*/
|
|
||||||
export class OSCServer extends EventEmitter {
|
export class OSCServer extends EventEmitter {
|
||||||
public socket: dgram.Socket;
|
private socket: dgram.Socket;
|
||||||
|
|
||||||
constructor(bindAddress: string, port: number) {
|
constructor(address: string, port: number) {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
this.socket = dgram.createSocket({ type: 'udp4', reuseAddr: true });
|
this.socket = dgram.createSocket({ type: 'udp4', reuseAddr: true });
|
||||||
this.socket.bind({
|
this.socket.bind(port, address);
|
||||||
port,
|
|
||||||
address: bindAddress,
|
|
||||||
exclusive: true,
|
|
||||||
});
|
|
||||||
|
|
||||||
this.socket.on('listening', () => {
|
this.socket.on('listening', () => {
|
||||||
this.emit('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) => {
|
this.socket.on('message', (msg) => {
|
||||||
const decoded = fromBuffer(msg);
|
const decoded = fromBuffer(msg);
|
||||||
|
|
@ -81,12 +49,4 @@ export class OSCServer extends EventEmitter {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* close the server
|
|
||||||
*/
|
|
||||||
|
|
||||||
public close(): void {
|
|
||||||
this.socket.close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
31
src/types.ts
31
src/types.ts
|
|
@ -1,31 +0,0 @@
|
||||||
export interface OSCArgument<T extends OSCType> {
|
|
||||||
type: T;
|
|
||||||
value: OSCArgumentType<T>;
|
|
||||||
}
|
|
||||||
|
|
||||||
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> = 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;
|
|
||||||
32
src/types/osc-min.d.ts
vendored
32
src/types/osc-min.d.ts
vendored
|
|
@ -1,5 +1,16 @@
|
||||||
declare module 'osc-min' {
|
declare module 'osc-min' {
|
||||||
import { OSCType, OSCArgumentType, OSCArgument } from '../types';
|
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 type OutgoingOSCArgsTypes = (OSCArgument<OSCType> | Buffer | boolean | string | number)[];
|
||||||
|
|
@ -20,6 +31,25 @@ declare module 'osc-min' {
|
||||||
elements: (OSCMessage | OSCBundle)[];
|
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
|
||||||
|
? OSCArgument<OSCType>[]
|
||||||
|
: null;
|
||||||
|
|
||||||
|
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 fromBuffer(buffer: Buffer, strict?: boolean): OSCPacket;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue