UNPKG

@tak-ps/node-cot

Version:

Lightweight JavaScript library for parsing and manipulating TAK messages

837 lines (453 loc) 17.5 kB
# CHANGELOG ## Emoji Cheatsheet - :pencil2: doc updates - :bug: when fixing a bug - :rocket: when making general improvements - :white_check_mark: when adding tests - :arrow_up: when upgrading dependencies - :tada: when adding new features ## Version History ### Pending Fixed ### v14.0.5 - 2025-07-13 - :bug: Fix TS error ### v14.0.4 - 2025-07-13 - :rocket: Prepend `#` to color values in normalized features to ensure they are valid hex colors ### v14.0.3 - 2025-07-13 - :rocket: Use `Type.Literal` for `type: Feature` ### v14.0.2 - 2025-07-13 - :rocket: Include .d.ts files in output ### v14.0.1 - 2025-07-13 - :bug: Ensure `archived: true` is set on normalized features as these will result in `u-d` type CoTs ### v14.0.0 - 2025-07-13 - :rocket: Replace AJV with TypeBox for schema validation in `from_geojson` - :rocket: **Breaking** All parser functions now return `Promise` ### v13.6.0 - 2025-07-10 - :rocket: Include KML Styling ### v13.5.0 - 2025-07-10 - :rocket: Update Schema to support additional symbol properties - :tada: Add support for new circle type `u-r-b-c-c` - :rocket: Add support for Circle Style properties - :tada: Add support for `labels_on` ### v13.4.0 - 2025-07-03 - :tada: Add `Emergency` section to schema - :rocket: Infer `emergency` section in `from_geojson` if an Emergency CoT type is matched ### v13.3.0 - 2025-06-25 - :rocket: Direct import of CoT Library ### v13.2.0 - 2025-06-25 - :rocket: Web Compatible UUID generation ### v13.1.0 - 2025-06-25 - :tada: Support parsing to Route format if type is set during `from_geojson` ### v13.0.0 - 2025-06-25 - :tada: The base CoT object is now seperate from the Parser - :rocket: Migrate to/from calls to use `CoTParser` class ### v12.37.0 - 2025-06-06 - :tada: First pass at mapping MilSym ### v12.36.0 - 2025-06-01 - :rocket: `archived(archived?: boolean): boolean` Helper Function - :white_check_mark: Add basic helper function tests ### v12.35.0 - 2025-05-28 - :rocket: `stale` value is now calculated based on current time ### v12.34.0 - 2025-05-26 - :tada: Add to/from parsing of R&B to geojson utilities - :bug: Ensure units are in Km for Turf Conversion ### v12.33.0 - 2025-05-26 - :tada: Initial support for Range & Bearing geometry generation - :arrow_up: Update Core Deps ### v12.32.4 - 2025-05-20 - :arrow_up: Update Core Deps ### v12.32.3 - 2025-04-30 - :rocket: Expose 2525 via index ### v12.32.2 - 2025-04-30 - :rocket: Remove Main ### v12.32.1 - 2025-04-30 - :rocket: Add 2525 Export ### v12.32.0 - 2025-04-30 - :tada: Augment COT Types with 2525B ### v12.31.0 - 2025-04-30 - :tada: Add CoT Type <=> SIDC ### v12.30.1 - 2025-04-28 - :arrow_up: Update Core Deps ### v12.30.0 - 2025-04-24 - :tada: Bi-Directional `creator` support - :tada: COT core MilSym support - :rocket: Avoid constant `detail` check with new helper fn ### v12.29.0 - 2025-04-21 - :rocket: Add `COT.type()` helper fn ### v12.28.0 - 2025-04-17 - :bug: Update StrokeWidth to allow Numeric Values ### v12.27.0 - 2025-04-17 - :rocket: Add `is_stale` fn ### v12.26.0 - 2025-04-17 - :rocket: Allow specifying a working path when creating a DataPackage ### v12.25.0 - 2025-04-15 - :rocket: Add support for `Marti => Dest => Group` ### v12.24.0 - 2025-04-15 - :bug: Fix paths when running on windows - :arrow_up: Update all base deps ### v12.23.0 - 2025-03-04 - :rocket: Ensure DataPackage zip reader is closed when using `DataPackage.parse` - :rocket: Automatically remove provided zip container given to `DataPackage.parse` unless `opts.cleanup = false` ### v12.22.0 - 2025-03-04 - :arrow_up: Update core deps ### v12.21.0 - 2025-02-03 - :tada: Add support for identifying DataPackages that are Mission Archive Exports - :rocket: Add types present in MissionArchive Exports - :rocket: Include unknown properties in `unknown` object of DataPackage ### v12.20.0 - 2025-01-28 - :rocket: Make Callsign Optional ### v12.19.0 - 2025-01-04 - :rocket: Ensure entire attribute type is reflected in GeoJSON ### v12.18.0 - 2025-01-01 - :tada: Add `strict: false` mode to DataPackage parsing that will turn a zip file into a DataPackage if it is not valid ### v12.17.1 - 2024-12-27 - :arrow_up: Update all core deps ### v12.17.0 - 2024-12-04 - :arrow_up: Update all core deps ### v12.16.2 - 2024-12-04 - :bug: Fix bug where calling `to_proto` twice would fail ### v12.16.1 - 2024-11-23 - :bug: Fix type complaint on CoT being converted to XML when it could be a `Buffer<ArrayBufferLike>` ### v12.16.0 - 2024-11-21 - :tada: Add limited Sensor GeoJSON Parsing - NOTE: it does not respect that sensors are in a 3D space reprojected into 2D so the sensor geojson isn't entirely correct ### v12.15.0 - 2024-11-11 - :rocket: Add internally stored `path` value ### v12.14.0 - 2024-11-11 - :rocket: Allow `Feature.Path: string` on GeoJSON Features ### v12.13.0 - 2024-11-04 - :rocket: Add support for Mission GUID dest tagging ### v12.12.0 - 2024-11-04 - :rocket: Add full bidirectional support for `ConnectionEntry` fields ### v12.11.0 - 2024-11-01 - :rocket: Allow `string` and `buffer` in `DataPackage.addFile` definition ### v12.10.0 - 2024-10-31 - :rocket: Add a ton of new Sensor Attribute keys that were surfaced in CoT mining - :data: Add Video Configuration object type ### v12.9.0 - 2024-10-26 - :bug: MissionChange can have no text in `creatorUid` Tag ### v12.8.0 - 2024-10-26 - :rocket: Add `.to_json` call for Basemap XML ### v12.7.1 - 2024-10-16 - :rocket: Remove `exports` from package.json for now Ref: https://github.com/dfpc-coe/node-CoT/issues/47 ### v12.7.0 - 2024-10-16 - :rocket: Add `DataPackage.files()` Fn for getting non-attachment files ### v12.6.0 - 2024-10-15 - :rocket: Allow 0 length polylines to allow for removal from ATAK ### v12.5.2 - 2024-10-10 - :bug: Resolver was having trouble with export path - :bug: Group parsing wasn't adding `__` prefix from proto => CoT ### v12.5.1 - 2024-10-09 - :rocket: Add Types Export ### v12.5.0 - 2024-10-09 - :rocket: Use Numerics for Sensor Attributes ### v12.4.0 - 2024-09-30 - :rocket: Use internal XMLDocument class as base for Iconset/Basemap - :tada: Add initial Iconset Types ### v12.3.0 - 2024-09-18 - :bug: Support parsing CoTs with empty/non-populated video tag ### v12.2.0 - 2024-09-17 - :tada: Add support for parsing Basemap XML Documents ### v12.1.0 - 2024-09-09 - :rocket: Add preliminary support for TAK Routes => GeoJSON LineStrings ### v12.0.0 - 2024-09-05 - :rocket: Add `object` type support to COT Constructor definition - :bug: Removal of `Type.Index` on `event` in JSONCOT type definition to fix AJV Coerce Types - :bug: Removal surfaced `archive` inconsistencies - :bug: Removal surfaced `__forcedelete` inconsistencies ### v11.2.0 - 2024-09-03 - :rocket: Add basic typed support for Range & Bearing Values ### v11.1.0 - 2024-08-16 - :bug: Tasking messages don't have location field in MissionChange entry ### v11.0.0 - 2024-08-14 - :rocket: Require the top level TAKMessage Protobuf in `from_proto` Fn ### v10.12.2 - 2024-08-12 - :bug: MissionSync required uid to be the same for `t-x-d-d` ### v10.12.1 - 2024-08-12 - :white_check_mark: Add validation tests to ensure validation takes place ### v10.12.0 - 2024-08-12 - :data: Add `ForceDelete` helper class ### v10.11.0 - 2024-08-08 - :white_check_mark: Fixing type test ### v10.10.1 - 2024-08-08 - :bug: Fix deploy on branch ### v10.10.0 - 2024-08-08 - :bug: Fix default export in COTTypes ### v10.9.5 - 2024-08-07 - :arrow_up: Update batch-error ### v10.9.4 - 2024-08-07 - :rocket: Seperate out Geometry type into unique type def ### v10.9.3 - 2024-08-07 - :rocket: Enforce `import type` vs `import` ### v10.9.2 - 2024-08-07 - :bug: Fix polyline parsing error ### v10.9.1 - 2024-08-06 - :bug: Swap path and UID ### v10.9.0 - 2024-08-06 - :rocket: Extend the `DataPackage.addFile` method to allow specifying the file is an attachment ### v10.8.0 - 2024-08-05 - :tada: Expose a tmp dir aware version of the hash code ### v10.7.0 - 2024-08-05 - :bug: Hash should be `sha256sum` and not UID in MANIFEST ### v10.6.2 - 2024-08-05 - :bug: Fix bug in DataPackage attachment hash calculation ### v10.6.1 - 2024-08-05 - :bug: Fix bug in DataPackage attachment hash calculation ### v10.6.0 - 2024-08-05 - :tada: Initial release of the CotTypes manager/parser ### v10.5.0 - :bug: Fix an instance of `a-f-g` cot type to `a-f-G` ### v10.4.0 - :rocket: Merge attachments defined in DataPackage manifest with those defined via CoT `attachment_list` property ### v10.3.0 - :rocket: Add `MissionChange` parsing ### v10.2.0 - :rocket: Add `DataPackage.hash` fn ### v10.1.0 - :rocket: Add `addFile` `getFile` Endpoints ### v10.0.0 - :rocket: Move `Feature` and `Types` out of root for cleaner docs - :rocket: Add `attachments` suppport for GeoJSON - :rocket: Add `attachment_list` suppport for CoTs ### v9.10.0 - :rocket: Support QuickPic File Relations - :bug: Fix type in DataPackage Error - :rocket: Add additional `<link\>` attrs ### v9.9.0 - :rocket: Surface `ackrequest` in GeoJSON ### v9.8.0 - :rocket: Hoise Polyline Styles to top level geojson style ### v9.7.0 - :rocket: support closing polylines and point polylines ### v9.6.0 - :rocket: Add truncation to Ellipse outputs (including circle) ### v9.5.0 - :rocket: Add support for Circles ### v9.4.0 - :rocket: Add support for Targeting ### v9.3.0 - :rocket: Add support for `geofence` property ### v9.2.0 - :white_check_mark: Add missionLayer test - :rocket: Add `DEBUG_COTS` debug output ### v9.1.0 - :rocket: Add support for `mission` & `missionLayer` Tags ### v9.0.0 - :rocket: Use opacity values between `0-1` instead of TAK style values `0-255` for better interop with external data ### v8.5.2 - :arrow_up: Update Core Deps ### v8.5.1 - :rocket: Use Simple Style Spec where possible `color` => `marker-color` and `opacity` => `marker-opacity` ### v8.5.0 - :bug: Fix colour encoding to XML - :white_check_mark: Add Reversal Tests for Color ### v8.4.0 - :rocket: Add `color` detail properties in encoding/decoding and types ### v8.3.0 - :rocket: Add Schema support for `path` and `after` when using `<dest/>` with Mission Sync API Ref: https://wiki.tak.gov/display/VBM/Mission+Layers ### v8.2.0 - :white_check_mark: Add tests for ensuring newlines are retained in remarks ### v8.1.0 - :rocket: Add ability to set Ephemeral or Permanent package type ### v8.0.1 - :bug: Include `@openaddresses/batch-error` ### v8.0.0 - :tada: *BREAKING* Full Bi-Directional Parsing of DataPackages ### v7.3.0 - :rocket: Relax speed/course/slope to allow floats ### v7.2.2 - :bug: Ensure Proto Directory is copied to dist/lib/proto ### v7.2.1 - :bug: Ensure Proto Directory is copied to dist ### v7.2.0 - :tada: Preliminary support for V1 Protobuf encoded CoT messages - :white_check_mark: Round trip to/from proto tests mirring the to/from geojson tests - :arrow_up: Update to latest deps ### v7.1.0 - :rocket: Distribute ATAK CoT Proto files with node-cot ### v7.0.1 - :bug: Ensure `Feature` is accessible outside of library by using named ### v7.0.0 - :tada: Use more strictly defined Feature types ### v6.11.0 - :rocket: `Track._attributes` is now optional ### v6.10.0 - :tada: :arrow_up: Add basic support for UAS generated CoTs - :tada: Add `video` parsing - :tada: Add `sensor` parsing ### v6.9.1 - :bug: Only pass in _attributes in GeoJSONified Links ### v6.9.0 - :rocket: Add BiDirectional parsing of Feature Links ### v6.8.0 - :rocket: Add support for URL Links ### v6.7.0 - :rocket: Add schema support for `ackrequest` ### v6.6.0 - :rocket: Allow type coercion as all XML attrs are in strings by default ### v6.5.0 - :rocket: Add ability to ignore `dest` section in diff ### v6.4.0 - :rocket: Add ability to ignore `flow` section in diff ### v6.3.3 - :white_check_mark: Update GH Release action ### v6.3.2 - :white_check_mark: Update GH Release action ### v6.3.1 - :white_check_mark: Update iTAK CoT tests ### v6.3.0 - :white_check_mark: Add basic unit tests for diff mode ### v6.2.2 - :bug: Explicit array check to keep tsc happy ### v6.2.1 - :bug: Cleaner `addDest` TS code ### v6.2.0 - :arrow_up: Switch to ESLint Flat Config ### v6.1.0 - :rocket: Add reversal of `metadata` property in `to_geojson()` ### v6.0.0 - :tada: Add `metadata` section in GeoJSON feature for custom props - :rocket: Add `addDest` function for easily adding dest to an existing COT - :rocket: Add `isDiff` function for comparing two COTs - :data: Add DataPackage builder ### v5.7.1 - :bug: Add missing file ### v5.7.0 - :tada: Build FileShare helper class ### v5.6.0 - :tada: Add support for `fileshare` COT ### v5.5.1 - :tada: Add TAK Server Version Attributes ### v5.5.0 - :tada: Migrate to TypeBox based schema for stricter types and to avoid JSONSchema compilation step ### v5.4.0 - :tada: Include suppport for `archived` tag - :arrow_up: Update Core Deps ### v5.3.1 - :arrow_up: Update Core Deps ### v5.3.0 - :rocket: Add full reversal support for Marti/Dest tags ### v5.2.0 - :rocket: Add basic support for Marti/Dest tags in schema ### v5.1.1 - :bug: Make Chat vars optional ### v5.1.0 - :rocket: Add `chat` property to GeoJSON output ### v5.0.6 - :bug: Detail is optional in Tak/Pongs ### v5.0.5 - :bug: Object Defs ### v5.0.4 - :bug: Optional `_flow-tags_._attributes` ### v5.0.3 - :bug: `remarks._text` is optional ### v5.0.2 - :bug: `remarks._attributes` is optional ### v5.0.1 - :bug: Add `package.json` in `dist/` ### v5.0.0 - :tada: `schema.json` is now automatically generated from Type Defs - :tada: Add Chat interface for easily creating Direct Messages - :rocket: Add Flow Tag when parsed by NodeCoT - :arrow_up: Update Typescript - :white_check_mark: Add Chat & Flow tests ### v4.6.0 - :rocket: Decode `__group` to `.properties.group` ### v4.5.1 - :bug: Fix contact parser in `from_geojson` ### v4.5.0 - :rocket: Support `center` property and calculate if not present - :rocket: Support `flow` property from `_flow-tags_`; - :rocket: Support `group` property from `__group`; - :rocket: Support `takv` property from `takv`; - :rocket: Support `status` property from `status`; - :rocket: Support `Droid` property from `uid._attributes.Droid`; - :rocket: Support `contact` property from `contact`; - :rocket: Support `precisionlocation` property from `precisionlocation`; ### v4.4.2 - :bug: Close `u-d-r` Polygons ### v4.4.1 - :rocket: `u-d-r` type can also be a polygon ### v4.4.0 - :rocket: Support `Polygon` & `LineString` `to_geojson()` - :bug: Fix previously unused Packed colour => opacity ### v4.3.0 - :bug: Fix Opacity default to a non-zero value ### v4.2.1 - :bug: Close coordinates in `u-d-f` type ### v4.2.0 - :bug: Fix the polygon type from a Rectangle CoT type to a Polygon ### v4.1.2 - :pencil2: Update Git Repo Location ### v4.1.1 - :arrow_up: Update Core Deps ### v4.1.0 - :bug: Fix parsing of `remarks` field in `from_geojson` - :rocket: Support for `course` in `to_geojson` - :rocket: Support for `speed` in `to_geojson` - :rocket: Support for `icon` in `to_geojson` - :rocket: Support for `remarks` in `to_geojson` - :rocket: Support for HAE in `to_geojson` ### v4.0.0 - :rocket: Rename `XMLCoT` to `CoT` and make it the default export - :tada: Add `.is_` fns for testing CoT type - :white_check_mark: Add `cot.is_*` unit tests ### v3.5.4 - :bug: Ensure `to_geojson` FN returns proper coordinate order - :arrow_up: Update Deps ### v3.5.3 - :bug: Ensure `to_geojson` FN returns numeric coordinates ### v3.5.2 - :arrow_up: Update Deps ### v3.5.1 - :arrow_up: Update Deps ### v3.5.0 - :rocket: Add support for the `remarks` field ### v3.4.3 - :arrow_up: `TypeScript@5` ### v3.4.2 - :bug: Fix location of track data ### v3.4.1 - :bug: Fix location of track data ### v3.4.0 - :tada: Add `speed` & `course` parsing ### v3.3.0 - :tada: Add Height Extraction from GeoJSON from `z` coordinate ### v3.2.0 - :tada: Add support for icon property parsing in GeoJSON ### v3.1.1 - :bug: Include schema.json in dist output ### v3.1.0 - :rocket: Expand use of known vs generic raw attributes ### v3.0.0 - :rocket: Rewrite in TypeScript ### v2.8.1 - :bug: Fix typo in error message ### v2.8.0 - :bug: Significant improvements to start/time/stale parsing - :white_check_mark: Add tests for date parsing - :rocket: Support parsing `Date` types - :arrow_up: General Dep Update ### v2.5.0 - :tada: Automatically perform basic schema validation on CoT Creation ### v2.4.0 - :tada: `from_geojson(Feature.LineString)` Support ### v2.3.0 - :tada: `from_geojson(Feature.Polygon)` Support ### v2.2.1 - :bug: `event.display` => `event.detail` ### v2.2.0 - :bug: Bugfixes in default values - :bug: Ensure `to_geojson` is a function call that doesn't modify underlying message ### v2.1.3 - :bug: Continue squashing a ton of small expectation issues to get an MVP of a point on TAK ### v2.1.2 - :bug: Parse GeoJSON Point coords into COT ### v2.1.1 - :bug: Parse GeoJSON Point coords into COT ### v2.1.0 - :rocket: Allow setting `type` & `how` from GeoJSON ### v2.0.0 - :rocket: Class based XML CoT approach - :tada: Add GeoJSON to/from parsing (experimental) - :white_check_mark: Update tests to use `tape` - :pencil2: Update docs to Class approach - :pencil2: Add a CHANGELOG