{"_id":"@bluenav/signalk-client","_rev":"2-1947bbbbab8df4ea521901441d9631c2","name":"@bluenav/signalk-client","dist-tags":{"latest":"2.1.8"},"versions":{"2.1.8":{"name":"@bluenav/signalk-client","version":"2.1.8","description":"A Javascript SDK for Signal K clients. Provides various abstract interfaces for discovering (via optional mDNS) the Signal K server and communication via WebSocket & REST. Aims to implement all major APIs in the most recent Signal K version(s)","main":"index.js","scripts":{"test":"mocha --timeout 10000 --require @babel/register --exit","start":"nodemon --exec babel-node src/index.js","dist":"babel src -d dist","prepublishOnly":"npm run dist","preversion":"npm test","push":"npm publish --access public --scope @bluenav .","create-release":"github-create-release --owner ricard33 --repository signalk-js-client","release":"git tag -d v$npm_package_version && git tag v$npm_package_version && git push --tags && git push && npm run create-release"},"keywords":["signal k","js","javascript","ecmascript","client","sdk"],"author":{"name":"Fabian Tollenaar","email":"fabian@decipher.industries","url":"http://signalk.org"},"license":"Apache-2.0","devDependencies":{"@babel/cli":"^7.10.1","@babel/core":"^7.10.2","@babel/preset-env":"^7.10.2","@babel/register":"^7.10.1","@signalk/github-create-release":"^1.2.0","bonjour":"^3.5.0","casper-chai":"^0.3.0","chai":"^4.1.0","freeport-promise":"^1.1.0","mdns":"^2.5.1","mocha":"^7.2.0","signalk-server":"^1.32.0"},"repository":{"type":"git","url":"git+https://github.com/ricard33/signalk-js-client.git"},"homepage":"https://github.com/ricard33/signalk-js-client","bugs":{"url":"https://github.com/ricard33/signalk-js-client/issues"},"standard":{"globals":["describe","before","after","it","expect","Promise","WebSocket"]},"dependencies":{"core-js":"^3.6.5","cross-fetch":"^3.0.3","debug":"^4.3.2","eventemitter3":"^4.0.0","isomorphic-ws":"^4.0.0","uuid":"^8.1.0"},"gitHead":"dae883435e96101b4c2f325fb760eeeec16cd1a5","_id":"@bluenav/signalk-client@2.1.8","_nodeVersion":"16.6.0","_npmVersion":"7.19.1","dist":{"integrity":"sha512-meaG8avOw0+BcLojFlLbDX1361aXEiTT5GEpreaNFCbjG8L3HDD1FsIt5XFR8leW3hhnOq4Q1nEbmpy/V1/vig==","shasum":"472a307ff94101bc6771d4b2dc72da2453bac7d4","tarball":"https://registry.npmjs.org/@bluenav/signalk-client/-/signalk-client-2.1.8.tgz","fileCount":20,"unpackedSize":141445,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhHVR6CRA9TVsSAnZWagAAN5EP/jO0zKmQsM8746VcHnh7\ncUc4bCTAdvSBWmo+E7JKhAhI1id2o0fj+LNFC17y7908wQ4qdDYBK82fOQBO\nl7il1inrt60ZE6QOg6tm02DIR0hP2FT8aGp1+H/LPzuREYy4MCYL+l7veWyR\n5xIUAT4OPUE9P7VJFy1snUHKoF+dj0gxF4QJpKqBGAt/ITd7WyeaE/wsnukT\n3Y+vFcI4KSkj95TfdYMp1QkUQWFRYee7DEDFjGT9bvmzjhqbDEXa72D+DEp0\nD/jTgJa/44UHy5GGY4VcVXFPfgF1vL+mv4yCZc2f0FaKSMCFfXuVi65IYPTQ\nXTsvUUuA5JTC1HUx+WydcmkR/y2q9pm0jy2P1CemmrVmTe6fEqIAaoZuaUl6\n/F+9phg0KtaqWlpKt4ZSTY0joa/W2TUQOAuCTHQkeRKNrr6yQEdXcygE/W+Y\nAeDWhQBbgj8qr6xYCVnKb+6xaUQSbufFovsVUGEvzktg72bvNj970K+GGQgF\nQQULFiOIzkYbSbPfBIIvmPrYmbk6zZnEUZaSOkNTyy3Ock30AGxWGjm/XNqn\nwSyJ8WtkF68O2vj1L01nXjkBmgUzn5klQslryybAuugY1bWV6XnQoUMRoiPH\nRZA9sfATT9Szu+RvfIWtTlf8OiRpkPa4oDoFzTTYYVv2gFkNV7mDDlGu916L\n9eIr\r\n=NOYC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICIAqBloagCMRaKRjGOIxQb2DEidix2cKTI5tW4EYS7iAiEAgrc5vKI6vBmEfdgzcEfGqnOdqZkVR7xiZC5x+K4L/zc="}]},"_npmUser":{"name":"ricard33","email":"ricard33@gmail.com"},"directories":{},"maintainers":[{"name":"ricard33","email":"ricard33@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/signalk-client_2.1.8_1629312122696_0.6216111020301502"},"_hasShrinkwrap":false}},"time":{"created":"2021-08-18T18:42:02.640Z","2.1.8":"2021-08-18T18:42:02.834Z","modified":"2022-06-03T10:19:26.191Z"},"maintainers":[{"email":"theo.lanique@bluenav.fr","name":"theol"},{"email":"ricard33@gmail.com","name":"ricard33"}],"description":"A Javascript SDK for Signal K clients. Provides various abstract interfaces for discovering (via optional mDNS) the Signal K server and communication via WebSocket & REST. Aims to implement all major APIs in the most recent Signal K version(s)","homepage":"https://github.com/ricard33/signalk-js-client","keywords":["signal k","js","javascript","ecmascript","client","sdk"],"repository":{"type":"git","url":"git+https://github.com/ricard33/signalk-js-client.git"},"author":{"name":"Fabian Tollenaar","email":"fabian@decipher.industries","url":"http://signalk.org"},"bugs":{"url":"https://github.com/ricard33/signalk-js-client/issues"},"license":"Apache-2.0","readme":"# Signal K JS Client\n\n[![Build Status](https://travis-ci.org/SignalK/signalk-js-client.svg)](https://travis-ci.org/SignalK/signalk-js-client)\n\n> A Javascript SDK for Signal K clients. Provides various abstract interfaces for discovering the Signal K server and communication via WebSocket & REST. Aims to implement all major APIs in the most recent Signal K version(s).\n\n### INSTALLATION\n\n```bash\n[sudo] npm install --save @signalk/client\n```\n\n### BASIC USAGE\n\n```javascript\nimport Client, { Discovery } from '@signalk/client'\nimport Bonjour from 'bonjour'\n\nlet client = null\n\n// Default options for instantiating a client:\nconst defaults = {\n  hostname: 'localhost',\n  port: 3000,\n  useTLS: true,\n  useAuthentication: false,\n  notifications: true,\n  autoConnect: false,\n  reconnect: true,\n  maxRetries: Infinity,\n  maxTimeBetweenRetries: 2500,\n  username: null,\n  password: null,\n  deltaStreamBehaviour: 'none',\n}\n\n// Instantiate client\nclient = new Client({\n  hostname: 'demo.signalk.org',\n  port: 80,\n  useTLS: false,\n  reconnect: true,\n  autoConnect: false,\n})\n\n// Instantiate client with authentication\nclient = new Client({\n  hostname: 'demo.signalk.org',\n  port: 80,\n  useTLS: false,\n  rejectUnauthorized: false, // Optional, set to false only if the server has a self-signed certificate\n  useAuthentication: true,\n  reconnect: true,\n  autoConnect: false,\n  username: 'demo@signalk.org',\n  password: 'signalk',\n})\n\n// Discover client using mDNS\n// Params: bonjour lib, search time\nconst bonjour = Bonjour()\nconst discovery = new Discovery(bonjour, 60000)\n\n// Timeout fires when search time is up and no servers were found\ndiscovery.on('timeout', () => console.log('No SK servers found'))\n\n// Found fires when a SK server was found\ndiscovery.on('found', (server) => {\n  if (server.isMain() && server.isMaster()) {\n    client = server.createClient({\n      useTLS: false,\n      useAuthentication: true,\n      reconnect: true,\n      autoConnect: true,\n      notifications: false,\n      username: 'sdk@decipher.industries',\n      password: 'signalk',\n    })\n  }\n})\n\n// Delta Stream over WS usage\n// 1. Stream behaviour selection\nclient = new Client({\n  hostname: 'demo.signalk.org',\n  port: 80,\n  useTLS: false,\n  reconnect: true,\n  autoConnect: false,\n  notifications: false,\n  // Either \"self\", \"all\", \"none\", or null (see below)\n  // - null: no behaviour is set for the delta stream, default behaviour is used. Use this option when connecting to older devices that don't support the subscription modifiers per query request. See https://signalk.org/specification/1.4.0/doc/subscription_protocol.html.\n  // - \"self\" provides a stream of all local data of own vessel\n  // - \"all\" provides a stream of all data for all vessels\n  // - \"none\" provides no data over the stream\n  deltaStreamBehaviour: 'self',\n})\n\n// 2. Subscribe to specific Signal K paths\nclient = new Client({\n  hostname: 'demo.signalk.org',\n  port: 80,\n  useTLS: false,\n  reconnect: true,\n  autoConnect: false,\n  notifications: false,\n  subscriptions: [\n    {\n      context: 'vessels.*',\n      subscribe: [\n        {\n          path: 'navigation.position',\n          policy: 'instant',\n        },\n      ],\n    },\n  ],\n})\n\n// 3. Listen to the \"delta\" event to get the stream data\nclient.on('delta', (delta) => {\n  // do something with delta\n})\n\n// 4. Modify your subscription parameters. Can be a single object or an array.\nclient.subscribe([\n  {\n    context: 'vessels.*',\n    subscribe: [\n      {\n        path: 'navigation.position',\n        policy: 'instant',\n      },\n    ],\n  },\n])\n\n// 5. Unsubscribe from all data paths.\nclient.unsubscribe()\n\n// REST API usage\n// 1. Fetch an entire group\nclient\n  .API() // create REST API client\n  .then((api) => api.navigation())\n  .then((navigationGroupResult) => {\n    // Do something with navigation group data\n  })\n\n// 2. Fetch a specific path\nclient\n  .API() // create REST API client\n  .then((api) => api.get('/vessels/self/navigation/position')) // Path can be specified using dotnotation and slashes\n  .then((positionResult) => {\n    // Do something with position data\n  })\n\n// 3. Fetch meta for a specific path\nclient\n  .API() // create REST API client\n  .then((api) => api.getMeta('vessels.self.navigation.position'))\n  .then((positionMetaResult) => {\n    // Do something with position meta data\n  })\n\n// 4. Fetch the entire tree for the local vessel\nclient\n  .API() // create REST API client\n  .then((api) => api.self())\n  .then((selfResult) => {\n    // Do something with boat data\n  })\n\n// ... check out the tests for more REST API examples\n```\n\n### Other Signal K Clients:\n\n**Angular:**\nSignal K client for the Angular framework\n[signalk-client-angular](https://github.com/panaaj/signalk-client-angular)\n\n### NOTES\n\n- Node SK server responds with \"Request updated\" for access request responses. This is incorrect per spec\n- Node SK server paths for access requests repsponses are not correct to spec (i.e. no /signalk/v1 prefix)\n","readmeFilename":"README.md"}