{"_id":"@chartedsails/strongly-signalk","_rev":"2-38c8928646827dd3957cad342129497c","name":"@chartedsails/strongly-signalk","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"@chartedsails/strongly-signalk","version":"0.0.1","description":"A strongly typed library for interactive SignalK apps","author":{"name":"Thomas Sarlandie","email":"thomas@sarlandie.net"},"license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","bin":{"strongly-signalk":"dist/cli/CLI.js"},"scripts":{"prepare":"npm run build","build":"tsc","_comment":"below line to make sure tests behave the same way as they do from root of monorepo","test":"jest","lint":"tslint --project . --config tslint.json"},"dependencies":{"@signalk/n2k-signalk":"^1.3.2","@signalk/nmea0183-signalk":"3.0.1","@signalk/nmea0183-utilities":"^0.6.0","canboatjs":"git://github.com/sarfata/canboatjs.git#4b73662","commander":"^2.15.1","fast-xml-parser":"^3.12.0","node-fetch":"^2.2.0","papaparse":"^4.5.0","simplify-path":"^1.1.0"},"devDependencies":{"@types/jest":"^23.1.0","@types/node-fetch":"^2.1.2","@types/papaparse":"^4.1.34","jest":"^23.6.0","jest-matcher-deep-close-to":"^1.3.0","ts-jest":"^23.10.5","tslint":"^5.11.0","tslint-config-prettier":"^1.17.0"},"_id":"@chartedsails/strongly-signalk@0.0.1","dist":{"shasum":"850beb8c8da785f7b3408d7d8a258f052a0980b5","integrity":"sha512-fMOtV43LEfMlYg3Nt5cJPTsRacL05BcHoGHo/zc3/74m+EWQj7F2LxiySG4fWwzMGea9s3rhpOSnr523lcZK2w==","tarball":"https://registry.npmjs.org/@chartedsails/strongly-signalk/-/strongly-signalk-0.0.1.tgz","fileCount":1592,"unpackedSize":11574745,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcEDhxCRA9TVsSAnZWagAAi7EP/147CgqaGeo6+rZZuSaB\nKCpQaEqSJWEdtBN3CeKYgN+vAOLfa1sSbZjyITaQM7/2jvlnTKdl5hfP01GU\nfUr4QfXOKrNaRCGsfpYQDnQkaEtb6BHsu38bP0tjIFODwxDHgmDpHHIn1Eee\nZBI8QiDoDeiX5zwXIVLtbF1V0OeidwzoV+fk++aamcmryodDfsjlNsEOyc7v\nY1IXQyW00FtrZG/fYoDHyjS7udr9aTAXpXCq62WdxPSLnW+FwRgMCGfslSuU\nrH7ICLrd++8KHezcENYbfsfoDL6DEzVcXdhiHxl2FkNK4lcRdMvgCcaq6lbq\nBfC+j9yzwDLYUmfPye2WNQhRAbyG8dat266Io21OvnmWd0vY4uzKGiMgnT2a\nzp2QWW9Eqtnn0hiU10utuf2Jm3czxw+rVqAlEdTAMz32IV1NdPWGYb+AEcm1\nW41u4Ao1r9yVa+UXal4Fq/q5e2v2AoLRwqqhJT+9aDoKJiOzOZ0kOMnNW1FH\nc1pcoTtNhuinudhJFizuotcYMgZEqOucm2fZ0Rtmc9SzSO92aZur8hr4AWpY\nDk2//V2X6X1ScWK27JRuL083rS0IhUJXznnkyGnZks6p1ZSc9whcFFY4M3tB\nVZBE+VDBtBgpMmRPmHrz2hgGq//fFBHANzZ8L6r8ecG+waIvFShm5kH8KLbD\nCuZj\r\n=P3TB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHFOzkp3M4EwQ6Kw9JR1vi4A8KDad3Q0+AdJHPKx3rCTAiAe1Vhw/YgJKJd0ccpZh5OLYOahVfglVI2I+7wLszjpsA=="}]},"maintainers":[{"name":"sarfata","email":"thomas@sarlandie.net"}],"_npmUser":{"name":"sarfata","email":"thomas@sarlandie.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/strongly-signalk_0.0.1_1544566896701_0.21249387108596451"},"_hasShrinkwrap":false},"0.0.2":{"name":"@chartedsails/strongly-signalk","version":"0.0.2","description":"A strongly typed library for interactive SignalK apps","author":{"name":"Thomas Sarlandie","email":"thomas@sarlandie.net"},"license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","bin":{"strongly-signalk":"dist/cli/CLI.js"},"scripts":{"prepare":"npm run build","build":"tsc","_comment":"below line to make sure tests behave the same way as they do from root of monorepo","test":"jest","lint":"tslint --project . --config tslint.json"},"dependencies":{"@signalk/n2k-signalk":"^1.3.2","@signalk/nmea0183-signalk":"3.0.1","@signalk/nmea0183-utilities":"^0.6.0","canboatjs":"git://github.com/sarfata/canboatjs.git#feb17f94ba","commander":"^2.15.1","fast-xml-parser":"^3.12.0","node-fetch":"^2.2.0","papaparse":"^4.5.0","simplify-path":"^1.1.0"},"devDependencies":{"@types/jest":"^23.1.0","@types/node-fetch":"^2.1.2","@types/papaparse":"^4.1.34","jest":"^23.6.0","jest-matcher-deep-close-to":"^1.3.0","ts-jest":"^23.10.5","tslint":"^5.11.0","tslint-config-prettier":"^1.17.0"},"_id":"@chartedsails/strongly-signalk@0.0.2","dist":{"shasum":"e21e8c22b377357a671c851679a436f2ae1f955e","integrity":"sha512-6hz4J3m8Nja6L4X1aAwt9Spc9OsNrFEIRy6dr1w/0zOO1aDiMO3U4SNK0pZuXu4vmjBQktVM2MFV9//HoRUUgg==","tarball":"https://registry.npmjs.org/@chartedsails/strongly-signalk/-/strongly-signalk-0.0.2.tgz","fileCount":1592,"unpackedSize":11574796,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcEMH7CRA9TVsSAnZWagAA3MIP/3kLBCvQpCb9Nb8MSTkY\n3k2tNbVDJy6feHO/guV+2WfohmbT5T+9kn+FYs3aWbW8DIOVAzygmCCXwx/I\ngjk03RKp3wGdDpTP+y/k4eK2WTCo3n4slTZbeCuX1yBkxhRPd95bM+GZRP8O\nq0U3KpeMJbelO+D5ZZQEZXbUUsrtSsgJXz5U6x7xVU0Au+8fQ04iJkDuosfM\nGZZmv0ZOv/VCtJ+AN1bygtBBaHjSZ4n0xvH6AZMxrTorHMPdfXv/be1zf04W\nT+EBj+PY0t/fMRmb2+QdplODFFR3CqWXMoSUKu4EE6MQyQ1OF/xApuvyd+3X\n20xhRrJRNdBUz9Ybwg5KaRa1FUrWSmgIqa9O+7rFlz7NJVIytxXqMhaNpu8O\nFVcj4/LnUYBPuBw3+ZLeHGscduVTRimIfJaRQbkU7QKL3+ZQBpvLORz3QwEY\n8HoIoR21YNSXsSyLCgwEFwcOBoO2GC6O9cZlcKd20jlJu1bSzTqhSuLRMXC9\nk9AbNaTTmEqVjVLbvUmTtqpCPGZEVtuKjta3WH0AHwv9rEfiLiN0yTKJRJd0\nPJ3Tyh3ICnXhSPCSUg6u2FxK6zw6VJLCfZT0cfcBI2RU4itlAkfago2hK+dn\npo1sYnstyUyWn8qCVhP1jIecUnNKmGX+VRSXCXNrTC2wIbo8XpSy7yxAHDp2\nn0ZH\r\n=5Gpi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDtkqKMFw7AUSVWW5bdsqB9ybXJ0zvXcEROt6faWU8ORQIhAJmeX3IF3tmBZp+2E+AF3Nb6+LORbb34ona611IMlymL"}]},"maintainers":[{"name":"sarfata","email":"thomas@sarlandie.net"}],"_npmUser":{"name":"sarfata","email":"thomas@sarlandie.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/strongly-signalk_0.0.2_1544602106618_0.5291668374826193"},"_hasShrinkwrap":false}},"time":{"created":"2018-12-11T22:21:36.523Z","0.0.1":"2018-12-11T22:21:37.016Z","modified":"2022-04-04T22:32:48.412Z","0.0.2":"2018-12-12T08:08:26.961Z"},"maintainers":[{"name":"sarfata","email":"thomas@sarlandie.net"}],"description":"A strongly typed library for interactive SignalK apps","author":{"name":"Thomas Sarlandie","email":"thomas@sarlandie.net"},"license":"Apache-2.0","readme":"# Strongly SignalK\n\nA strongly typed SignalK library written in TypeScript. Can be used in\nJavaScript and TypeScript projects.\n\nThis library is designed for developers writing interactive marine apps and\nneed to manipulate data in SignalK format.\n\nA strong design decision is that the in-memory representation should be\ndirectly compatible with SignalK via `JSON.serialize()` calls.\n\nInversely, any valid SignalK file can be parsed and loaded by strongly-signalk.\n\nHowever, another strong design decision is to not implement all the subtle and less used\nattributes of the SignalK specification which means that some signalK files\nthat are valid may lose some information when they are parsed into\nstrongly-signalk.\n\n## How to use\n\n### Load files\n\n`SaltedRosetta` provides different methods to load files from their filename (on\ndisk, in a node context), from a `File` object (browser), from a `Response` object\n(node and browser) or from a string.\n\nThe format of the file will be automatically detected.\n\n```javascript\nimport { SaltedRosetta } from strongly-signalk;\n\nlet skDeltas = SaltedRosetta.fromFilename('myfile.log')\nlet myBoatDelta = skDeltas[0]\n```\n\n`SaltedRosetta` returns a list of `SKDelta` objects. By convention, the first one\nis always the \"main\" delta (the delta of your boat). If the log includes information\nabout other boats, there will be additional `SKDelta` objects.\n\n### Analyze files\n\n```javascript\nimport { BetterDataProvider } from strongly-signalk;\n\nconst dataProvider = new BetterDataProvider(myBoatDelta)\n\nconst availablePaths = dataProvider.getAvailableValues()\n\n// Return an object { [path:string]: SKValueType }\n// Values are interpolated to provide a continuous representation over time.\nconst values = dataProvider.getValuesAtTime(aDateObject)\nconsole.log(`SOG was: ${ values['navigation.speedOverGround'] }`)\nconsole.log(`Position was: ${ values['navigation.position'].asDMSString() }`)\n```\n\nAnd also:\n```javascript\nimport { SignalKTripAnalyzer } from strongly-signalk;\n\n// Returns a list of positions - the trace included in the delta\nSignalKTripAnalyzer.getPath(myBoatDelta)\n\n// Returns the bounds of the trace\nSignalKTripAnalyzer.getBounds(myBoatDelta)\n\n// Returns time bounds of data in a delta object\nSignalKTripAnalyzer.getStartTime(myBoatDelta)\nSignalKTripAnalyzer.getEndTime(myBoatDelta)\n```\n\n### Command Line Interface\n\nConvert a supported file to SignalK data\n```sh\n$ node dist/cli/CLI.js some-supported-file.log\n{\n  \"context\": \"vessels.self\",\n  \"updates\": [\n    {\n      \"timestamp\": \"2018-07-10T08:00:00.012Z\",\n      \"source\": {\n        \"label\": \"NMEA2000\",\n        \"pgn\": 130306,\n        \"src\": \"105\",\n        \"type\": \"NMEA2000\"\n...\n```\n\nShow a summary of a file:\n - List of included SignalK path/values\n - Bounds\n - Time bounds\n - Simplified path\n\n```sh\n$  node dist/cli/CLI.js --summary some-supported-file.log\nContext: vessels.self - 1846570 updates and 2533140 values\nIncluded SignalK paths: electrical.batteries.dc3.voltage,electrical.batteries.engine.voltage,electrical.batteries.house.voltage,electrical.batteries.kbox-supply.voltage,environment.depth.belowTransducer,environment.inside.engineRoom.temperature,environment.outside.pressure,environment.water.temperature,environment.wind.angleApparent,environment.wind.speedApparent,navigation.attitude,navigation.courseGreatCircle.bearingTrackTrue,navigation.courseGreatCircle.nextPoint.bearingTrue,navigation.courseGreatCircle.nextPoint.distance,navigation.courseGreatCircle.nextPoint.position,navigation.courseGreatCircle.nextPoint.timeToGo,navigation.courseGreatCircle.nextPoint.velocityMadeGood,navigation.courseOverGroundMagnetic,navigation.courseOverGroundTrue,navigation.courseRhumbline.nextPoint.position,navigation.currentRoute.name,navigation.currentRoute.waypoints,navigation.datetime,navigation.gnss.antennaAltitude,navigation.gnss.differentialAge,navigation.gnss.differentialReference,navigation.gnss.geoidalSeparation,navigation.gnss.horizontalDilution,navigation.gnss.integrity,navigation.gnss.methodQuality,navigation.gnss.positionDilution,navigation.gnss.satellites,navigation.gnss.type,navigation.headingMagnetic,navigation.log,navigation.magneticVariation,navigation.magneticVariationAgeOfService,navigation.position,navigation.rateOfTurn,navigation.speedOverGround,navigation.speedThroughWater,navigation.speedThroughWaterReferenceType,navigation.trip.log,notifications.instrument.NoFix,steering.rudderAngle\nBounds: -117.37541216666668,32.83565016666667 -117.20893,32.6481391\nStart: 2018-05-11T02:02:42.625Z\nEnd: 2018-05-11T07:10:04.703Z\nPath: [[-117.37541216666668,32.83565016666667],[-117.2915456,32.6891026],[-117.2450925,32.6513145],[-117.2258069,32.6529853],[-117.2298686,32.7026236],[-117.2089823,32.7264535]]\n```\n\n## License\n\nMIT","readmeFilename":"README.md"}