diff --git a/docs/api-overview.md b/docs/api-overview.md index 43e00add12..8e39fcae1d 100644 --- a/docs/api-overview.md +++ b/docs/api-overview.md @@ -22,10 +22,18 @@ Parsers are used to take raw binary data and transform them into usable messages Parsers are traditionally Transform streams, but Duplex streams and other non stream interfaces are acceptable. -- [@serialport/parser-byte-length](api-parser-byte-length.md) -- [@serialport/parser-cctalk](api-parser-cctalk.md) -- [@serialport/parser-delimiter](api-parser-delimiter.md) -- [@serialport/parser-readline](api-parser-readline.md) -- [@serialport/parser-ready](api-parser-ready.md) -- [@serialport/parser-regex](api-parser-regex.md) -- [@serialport/parser-slip-encoder](api-parser-slip-encoder.md) +- [`@serialport/parser-byte-length`](api-parser-byte-length.md) +- [`@serialport/parser-cctalk`](api-parser-cctalk.md) +- [`@serialport/parser-delimiter`](api-parser-delimiter.md) +- [`@serialport/parser-readline`](api-parser-readline.md) +- [`@serialport/parser-ready`](api-parser-ready.md) +- [`@serialport/parser-regex`](api-parser-regex.md) +- [`@serialport/parser-slip-encoder`](api-parser-slip-encoder.md) + +## Command Line Tools + +The [Command Line Tools](guide-cli.md) provide helpful utilities for working with serial ports. + +- [`@serialport/list`](guide-cli.md#serialport-list) +- [`@serialport/repl`](guide-cli.md#serialport-repl) +- [`@serialport/terminal`](guide-cli.md#serialport-terminal) diff --git a/docs/guide-cli.md b/docs/guide-cli.md index a3b831d589..a00b9bf174 100644 --- a/docs/guide-cli.md +++ b/docs/guide-cli.md @@ -3,19 +3,35 @@ id: guide-cli title: Command Line Tools --- -If you install `serialport` globally (e.g., `npm install -g serialport`), you'll receive two command line tools. These can also be run with `npx` if serialport is a dependency in your project. +(These cli tools were formally part of the `serialport` package and have now been moved to their own packages for ease of use.) + +All cli tools can be run via [`npx`](https://www.npmjs.com/package/npx) or installed globally. For Example: ```bash -$ npm install --save serialport -$ npx serialport-list +$ npx @serialport/list /dev/tty.Bluetooth-Incoming-Port /dev/tty.usbmodem1421 Arduino (www.arduino.cc) +#or + +$ npm install -g @serialport/list +$ serialport-list +/dev/tty.Bluetooth-Incoming-Port +/dev/tty.usbmodem1421 Arduino (www.arduino.cc) + +``` + +## SerialPort List + +```bash +$ npx @serialport/list [options] +# or +$ npm install -g @serialport/list +$ serialport-list [options] ``` -## `serialport-list` -`serialport-list` will list all available serial ports in different formats. +The package `@serialport/list` will install the `serialport-list` cli tool which lists all available serial ports in different formats. ```bash $ serialport-list -h @@ -43,35 +59,15 @@ $ serialport-list -f jsonline {"comName":"/dev/tty.usbmodem1421","manufacturer":"Arduino (www.arduino.cc)","serialNumber":"752303138333518011C1","locationId":"14200000","vendorId":"2341","productId":"0043"} ``` -## `serialport-term` -`serialport-term` provides a basic terminal interface for communicating over a serial port. `ctrl+c` will exit. - +## SerialPort Repl ```bash -$ serialport-term -h - - Usage: serialport-term -p [options] - - A basic terminal interface for communicating over a serial port. Pressing ctrl+c exits. - - Options: - - -h, --help output usage information - -V, --version output the version number - -l --list List available ports then exit - -p, --port, --portname Path or name of serial port - -b, --baud Baud rate default: 9600 - --databits Data bits default: 8 - --parity Parity default: none - --stopbits Stop bits default: 1 - --echo --localecho Print characters as you type them - -$ serialport-term -l -/dev/tty.Bluetooth-Incoming-Port -/dev/tty.usbmodem1421 Arduino (www.arduino.cc) +$ npx @serialport/repl +# or +$ npm install -g @serialport/repl +$ serialport-repl ``` -## `serialport-repl` -`serialport-repl` provides a nodejs repl for working with serialport. This is valuable when debugging. +The package `@serialport/repl` will install the `serialport-repl` cli tool which provides a nodejs repl for working with serialport. This is valuable when debugging. You can make use of the `serialport-repl` command with; ```bash @@ -103,3 +99,37 @@ null serialport:main opening path: /dev/tty.usbmodem1421 +30s serialport:bindings open +1ms ``` + +## SerialPort Terminal +```bash +$ npx @serialport/terminal -p [options] +# or +$ npm install -g @serialport/terminal +$ serialport-terminal -p [options] +``` + +The package `@serialport/terminal` will install the `serialport-terminal` cli tool which provides a basic terminal interface for communicating over a serial port. `ctrl+c` will exit. + +```bash +$ serialport-terminal -h + + Usage: serialport-terminal -p [options] + + A basic terminal interface for communicating over a serial port. Pressing ctrl+c exits. + + Options: + + -h, --help output usage information + -V, --version output the version number + -l --list List available ports then exit + -p, --port, --portname Path or name of serial port + -b, --baud Baud rate default: 9600 + --databits Data bits default: 8 + --parity Parity default: none + --stopbits Stop bits default: 1 + --echo --localecho Print characters as you type them + +$ serialport-terminal -l +/dev/tty.Bluetooth-Incoming-Port +/dev/tty.usbmodem1421 Arduino (www.arduino.cc) +``` diff --git a/packages/list/.npmignore b/packages/list/.npmignore new file mode 100644 index 0000000000..2bc54e675b --- /dev/null +++ b/packages/list/.npmignore @@ -0,0 +1,2 @@ +*.test.js +CHANGELOG.md diff --git a/packages/list/LICENSE b/packages/list/LICENSE new file mode 100644 index 0000000000..9bd2a0c3f9 --- /dev/null +++ b/packages/list/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright 2018 Francis Gulotta. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. diff --git a/packages/list/README.md b/packages/list/README.md new file mode 100644 index 0000000000..e85d78063d --- /dev/null +++ b/packages/list/README.md @@ -0,0 +1,36 @@ +## SerialPort List + +```bash +$ npx @serialport/list [options] +# or +$ npm install -g @serialport/list +$ serialport-list [options] +``` + +The package `@serialport/list` will install the `serialport-list` cli tool which lists all available serial ports in different formats. + +```bash +$ serialport-list -h + + Usage: serialport-list [options] + + List available serial ports + + Options: + + -h, --help output usage information + -V, --version output the version number + -f, --format Format the output as text, json, or jsonline. default: text + + +$ serialport-list +/dev/tty.Bluetooth-Incoming-Port +/dev/tty.usbmodem1421 Arduino (www.arduino.cc) + +$ serialport-list -f json +[{"comName":"/dev/tty.Bluetooth-Incoming-Port"},{"comName":"/dev/tty.usbmodem1421","manufacturer":"Arduino (www.arduino.cc)","serialNumber":"752303138333518011C1","locationId":"14200000","vendorId":"2341","productId":"0043"}] + +$ serialport-list -f jsonline +{"comName":"/dev/tty.Bluetooth-Incoming-Port"} +{"comName":"/dev/tty.usbmodem1421","manufacturer":"Arduino (www.arduino.cc)","serialNumber":"752303138333518011C1","locationId":"14200000","vendorId":"2341","productId":"0043"} +``` diff --git a/packages/list/lib/list.js b/packages/list/lib/list.js new file mode 100644 index 0000000000..9e78a7f0b4 --- /dev/null +++ b/packages/list/lib/list.js @@ -0,0 +1,42 @@ +#!/usr/bin/env node + +const bindings = require('@serialport/bindings') +const { version } = require('../package.json') +const args = require('commander') + +args + .version(version) + .description('List available serial ports') + .option( + '-f, --format ', + 'Format the output as text, json, or jsonl. default: text', + /^(text|json|jsonline|jsonl)$/i, + 'text' + ) + .parse(process.argv) + +function jsonl(ports) { + ports.forEach(port => { + console.log(JSON.stringify(port)) + }) +} + +const formatters = { + text(ports) { + ports.forEach(port => { + console.log( + `${port.comName}\t${port.pnpId || ''}\t${port.manufacturer || ''}` + ) + }) + }, + json(ports) { + console.log(JSON.stringify(ports)) + }, + jsonl, + jsonline: jsonl, +} + +bindings.list().then(formatters[args.format], err => { + console.error(JSON.stringify(err)) + process.exit(1) +}) diff --git a/packages/list/package.json b/packages/list/package.json new file mode 100644 index 0000000000..546177f508 --- /dev/null +++ b/packages/list/package.json @@ -0,0 +1,23 @@ +{ + "name": "@serialport/list", + "version": "1.0.0", + "main": "lib/list.js", + "bin": { + "serialport-list": "./lib/list.js" + }, + "dependencies": { + "commander": "^2.13.0", + "@serialport/bindings": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + }, + "publishConfig": { + "access": "public" + }, + "license": "MIT", + "repository": { + "type": "git", + "url": "git://github.com/node-serialport/node-serialport.git" + } +} diff --git a/packages/repl/.npmignore b/packages/repl/.npmignore new file mode 100644 index 0000000000..2bc54e675b --- /dev/null +++ b/packages/repl/.npmignore @@ -0,0 +1,2 @@ +*.test.js +CHANGELOG.md diff --git a/packages/repl/LICENSE b/packages/repl/LICENSE new file mode 100644 index 0000000000..9bd2a0c3f9 --- /dev/null +++ b/packages/repl/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright 2018 Francis Gulotta. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. diff --git a/packages/repl/README.md b/packages/repl/README.md new file mode 100644 index 0000000000..e6259292ff --- /dev/null +++ b/packages/repl/README.md @@ -0,0 +1,40 @@ +## SerialPort Repl +```bash +$ npx @serialport/repl +# or +$ npm install -g @serialport/repl +$ serialport-repl +``` + +The package `@serialport/repl` will install the `serialport-repl` cli tool which provides a nodejs repl for working with serialport. This is valuable when debugging. + +You can make use of the `serialport-repl` command with; +```bash +$ serialport-repl # to auto detect an arduino +$ serialport-repl /dev/tty.usbmodem1421 # to connect to a specific port +``` + +It will load a serialport object with debugging turned on. +```bash +$ serialport-repl + serialport:binding:auto-detect loading DarwinBinding +0ms +port = SerialPort("/dev/tty.usbmodem1421", { autoOpen: false }) +globals { SerialPort, portName, port } +> SerialPort.list() + serialport:main .list +6s +[ { comName: '/dev/tty.usbmodem1421', + manufacturer: 'Arduino (www.arduino.cc)', + serialNumber: '752303138333518011C1', + pnpId: undefined, + locationId: '14200000', + vendorId: '2341', + productId: '0043' } ] +> port.write('Calling all Autobots!') +true +> port.read() + serialport:main _read queueing _read for after open +1m +null +> port.open() + serialport:main opening path: /dev/tty.usbmodem1421 +30s + serialport:bindings open +1ms +``` diff --git a/packages/serialport/bin/repl.js b/packages/repl/lib/repl.js old mode 100755 new mode 100644 similarity index 94% rename from packages/serialport/bin/repl.js rename to packages/repl/lib/repl.js index 97dd8e5580..2619ea409d --- a/packages/serialport/bin/repl.js +++ b/packages/repl/lib/repl.js @@ -1,10 +1,10 @@ #!/usr/bin/env node +const { promirepl } = require('promirepl') const repl = require('repl') -const promirepl = require('promirepl').promirepl +const SerialPort = require('serialport') process.env.DEBUG = process.env.DEBUG || '*' -const SerialPort = require('../') // outputs the path to an arduino or nothing function findArduino() { diff --git a/packages/repl/package.json b/packages/repl/package.json new file mode 100644 index 0000000000..557aff8d1c --- /dev/null +++ b/packages/repl/package.json @@ -0,0 +1,23 @@ +{ + "name": "@serialport/repl", + "version": "1.0.0", + "main": "lib/repl.js", + "bin": { + "serialport-repl": "./lib/repl.js" + }, + "dependencies": { + "promirepl": "^1.0.1", + "serialport": "^7.0.2" + }, + "engines": { + "node": ">=6.0.0" + }, + "publishConfig": { + "access": "public" + }, + "license": "MIT", + "repository": { + "type": "git", + "url": "git://github.com/node-serialport/node-serialport.git" + } +} diff --git a/packages/serialport/bin/echo.js b/packages/serialport/bin/echo.js deleted file mode 100755 index b2c38dd48d..0000000000 --- a/packages/serialport/bin/echo.js +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env node - -const args = require('commander') - -const SerialPort = require('../') -const version = require('../package.json').version - -const readyData = Buffer.from('READY') - -args - .version(version) - .usage('-p ') - .description( - 'A basic terminal interface for communicating over a serial port. Pressing ctrl+c exits.' - ) - .option('-p, --port ', 'Path or Name of serial port') - .parse(process.argv) - -if (!args.port) { - args.outputHelp() - args.missingArgument('port') - process.exit(-1) -} - -const port = new SerialPort(args.port) - -port.on('open', () => { - console.log(`echo: Port open: ${args.port}`) - setTimeout(() => { - console.log('echo: READY!') - port.on('data', data => port.write(data)) - port.write(readyData) - }, 250) -}) diff --git a/packages/serialport/bin/list.js b/packages/serialport/bin/list.js deleted file mode 100755 index 8e1406db1a..0000000000 --- a/packages/serialport/bin/list.js +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env node - -const serialport = require('../') -const version = require('../package.json').version -const args = require('commander') - -args - .version(version) - .description('List available serial ports') - .option( - '-f, --format ', - 'Format the output as text, json, or jsonline. default: text', - /^(text|json|jsonline)$/i, - 'text' - ) - .parse(process.argv) - -const formatters = { - text(err, ports) { - if (err) { - console.error(err) - process.exit(1) - } - ports.forEach(port => { - console.log( - `${port.comName}\t${port.pnpId || ''}\t${port.manufacturer || ''}` - ) - }) - }, - json(err, ports) { - if (err) { - console.error(JSON.stringify(err)) - process.exit(1) - } - console.log(JSON.stringify(ports)) - }, - jsonline(err, ports) { - if (err) { - console.error(JSON.stringify(err)) - process.exit(1) - } - ports.forEach(port => { - console.log(JSON.stringify(port)) - }) - }, -} - -serialport.list(formatters[args.format]) diff --git a/packages/serialport/package.json b/packages/serialport/package.json index 93f7d0b23b..340ad4546d 100644 --- a/packages/serialport/package.json +++ b/packages/serialport/package.json @@ -49,22 +49,13 @@ "@serialport/parser-ready": "^2.0.1", "@serialport/parser-regex": "^2.0.1", "@serialport/stream": "^2.0.1", - "commander": "^2.13.0", - "debug": "^4.0.1", - "promirepl": "^1.0.1", - "prompt-list": "^3.2.0" + "debug": "^4.0.1" }, "engines": { "node": ">=6.0.0" }, - "bin": { - "serialport-list": "./bin/list.js", - "serialport-repl": "./bin/repl.js", - "serialport-term": "./bin/terminal.js" - }, "license": "MIT", "scripts": { - "repl": "node bin/repl.js", - "terminal": "node bin/terminal.js" + "repl": "node bin/repl.js" } } diff --git a/packages/terminal/.npmignore b/packages/terminal/.npmignore new file mode 100644 index 0000000000..2bc54e675b --- /dev/null +++ b/packages/terminal/.npmignore @@ -0,0 +1,2 @@ +*.test.js +CHANGELOG.md diff --git a/packages/terminal/LICENSE b/packages/terminal/LICENSE new file mode 100644 index 0000000000..9bd2a0c3f9 --- /dev/null +++ b/packages/terminal/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright 2018 Francis Gulotta. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. diff --git a/packages/terminal/README.md b/packages/terminal/README.md new file mode 100644 index 0000000000..931a6e310d --- /dev/null +++ b/packages/terminal/README.md @@ -0,0 +1,33 @@ +## SerialPort Terminal +```bash +$ npx @serialport/terminal -p [options] +# or +$ npm install -g @serialport/terminal +$ serialport-terminal -p [options] +``` + +The package `@serialport/terminal` will install the `serialport-terminal` cli tool which provides a basic terminal interface for communicating over a serial port. `ctrl+c` will exit. + +```bash +$ serialport-terminal -h + + Usage: serialport-terminal -p [options] + + A basic terminal interface for communicating over a serial port. Pressing ctrl+c exits. + + Options: + + -h, --help output usage information + -V, --version output the version number + -l --list List available ports then exit + -p, --port, --portname Path or name of serial port + -b, --baud Baud rate default: 9600 + --databits Data bits default: 8 + --parity Parity default: none + --stopbits Stop bits default: 1 + --echo --localecho Print characters as you type them + +$ serialport-terminal -l +/dev/tty.Bluetooth-Incoming-Port +/dev/tty.usbmodem1421 Arduino (www.arduino.cc) +``` diff --git a/packages/serialport/bin/terminal.js b/packages/terminal/lib/terminal.js similarity index 80% rename from packages/serialport/bin/terminal.js rename to packages/terminal/lib/terminal.js index f8f90910eb..3b839525fe 100755 --- a/packages/serialport/bin/terminal.js +++ b/packages/terminal/lib/terminal.js @@ -1,9 +1,9 @@ #!/usr/bin/env node -const SerialPort = require('../lib/') -const version = require('../package.json').version +const SerialPort = require('serialport') +const { version } = require('../package.json') const args = require('commander') -const List = require('prompt-list') +const PromptList = require('prompt-list') function makeNumber(input) { return Number(input) @@ -52,20 +52,20 @@ function askForPort() { process.exit(2) } - const portSelection = new List({ + const portSelection = new PromptList({ name: 'serial-port-selection', message: 'Select a serial port to open', - choices: ports.map( - (port, i) => - `[${i + 1}]\t${port.comName}\t${port.pnpId || - ''}\t${port.manufacturer || ''}` - ), + choices: ports.map((port, i) => ({ + value: `[${i + 1}]\t${port.comName}\t${port.pnpId || + ''}\t${port.manufacturer || ''}`, + name: port.comName, + })), + validate: Boolean, // ensure we picked something }) return portSelection.run().then(answer => { - const choice = answer.split('\t')[1] - console.log(`Opening serial port: ${choice}`) - return choice + console.log(`Opening serial port: ${answer}`) + return answer }) }) } @@ -105,6 +105,11 @@ function createPort(selectedPort) { console.log('Error', err) process.exit(1) }) + + port.on('close', err => { + console.log('Closed', err) + process.exit(err ? 1 : 0) + }) } if (args.list) { diff --git a/packages/terminal/package.json b/packages/terminal/package.json new file mode 100644 index 0000000000..f79d5f476a --- /dev/null +++ b/packages/terminal/package.json @@ -0,0 +1,24 @@ +{ + "name": "@serialport/terminal", + "version": "1.0.0", + "main": "lib/terminal.js", + "bin": { + "serialport-terminal": "./lib/terminal.js" + }, + "dependencies": { + "commander": "^2.13.0", + "prompt-list": "^3.2.0", + "serialport": "^7.0.2" + }, + "engines": { + "node": ">=6.0.0" + }, + "publishConfig": { + "access": "public" + }, + "license": "MIT", + "repository": { + "type": "git", + "url": "git://github.com/node-serialport/node-serialport.git" + } +} diff --git a/packages/website/i18n/en.json b/packages/website/i18n/en.json index aa0074f498..7afebe90ed 100644 --- a/packages/website/i18n/en.json +++ b/packages/website/i18n/en.json @@ -4,34 +4,80 @@ "next": "Next", "previous": "Previous", "tagline": "Node.js package to access serial ports for Linux, OSX and Windows.", - "api-bindings": "Bindings", - "api-overview": "Packages Overview", - "api-parser-byte-length": "ByteLength Parser", - "api-parser-cctalk": "ccTalk Parser", - "api-parser-delimiter": "Delimiter Parser", - "api-parser-readline": "Readline Parser", - "api-parser-ready": "Ready Parser", - "api-parser-regex": "Regex Parser", - "api-parser-slip-encoder": "Slip Encoder Parser", - "api-parsers-overview": "What are Parsers?", - "api-serialport": "SerialPort", - "api-stream": "Stream Interface", - "guide-about": "About SerialPort", - "guide-cli": "Command Line Tools", - "guide-debugging": "Debugging", - "guide-errors": "Error Handling", - "guide-installation": "Installing SerialPort", - "guide-platform-support": "Support Environments", - "guide-testing": "Testing", - "guide-usage": "SerialPort Usage", - "Guides": "Guides", - "API": "API", - "Getting Started": "Getting Started", - "Usage": "Usage", - "Core": "Core", - "Bindings": "Bindings", - "Interfaces": "Interfaces", - "Parsers": "Parsers" + "docs": { + "api-bindings": { + "title": "Bindings" + }, + "api-overview": { + "title": "Packages Overview" + }, + "api-parser-byte-length": { + "title": "ByteLength Parser" + }, + "api-parser-cctalk": { + "title": "ccTalk Parser" + }, + "api-parser-delimiter": { + "title": "Delimiter Parser" + }, + "api-parser-readline": { + "title": "Readline Parser" + }, + "api-parser-ready": { + "title": "Ready Parser" + }, + "api-parser-regex": { + "title": "Regex Parser" + }, + "api-parser-slip-encoder": { + "title": "Slip Encoder Parser" + }, + "api-parsers-overview": { + "title": "What are Parsers?" + }, + "api-serialport": { + "title": "SerialPort" + }, + "api-stream": { + "title": "Stream Interface" + }, + "guide-about": { + "title": "About SerialPort" + }, + "guide-cli": { + "title": "Command Line Tools" + }, + "guide-debugging": { + "title": "Debugging" + }, + "guide-errors": { + "title": "Error Handling" + }, + "guide-installation": { + "title": "Installing SerialPort" + }, + "guide-platform-support": { + "title": "Support Environments" + }, + "guide-testing": { + "title": "Testing" + }, + "guide-usage": { + "title": "SerialPort Usage" + } + }, + "links": { + "Guides": "Guides", + "API": "API" + }, + "categories": { + "Getting Started": "Getting Started", + "Usage": "Usage", + "Core": "Core", + "Bindings": "Bindings", + "Interfaces": "Interfaces", + "Parsers": "Parsers" + } }, "pages-strings": { "Help Translate|recruit community translators for your project": "Help Translate",