mirror of
https://github.com/ICDSystems/ICD.Common.Utils.git
synced 2026-01-11 19:44:55 +00:00
14 KiB
14 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
[Unreleased]
Added
- Added ToCollection extension method for copying an enumerable to a new collection
- TableBuilder supports multi-line content
- Added eIcdFileMode for IO platform agnosticism
Changed
- Rewrote JsonItemWrapper serialization for JsonConvert friendliness
[11.0.0] - 2020-03-20
Added
- Added Not null tag for ICDUriBuilder Constructor that takes a URI as an argument.
- Added MathUtils methods for converting to and from percentages
- Added enum extensions for finding the inclusion and exclusion of enum flags
- Added DateTime extensions for adding years, months, days, hours, minutes and wrapping without modifying other values
- Added shims for deserializing an XML array using a callback for each item
- Added methods for serializing an XML array
- Added WriteAllByte method on IcdFile.
- Added PathUtils for building paths in the HTML directory
- Added public access to GetValues enumeration extension
- Added extensions for getting JsonReader values as long or ulong
- Added DateTimeUtils methods for creating DateTimes from epoch seconds or milliseconds
- Added utils for splitting ANSI into spans for conversion to XAML, HTML, etc
Changed
- Fixed exception trying to get DHCP status of network interfaces on Linux
- Fixed a bug where color formatted console output on Net Standard was not raising the OnConsolePrint event
- Simplifying ANSI color methods, better cross-platform color support
- Console uses unicode for table drawing on Net Standard
- Using UTC for tracking scheduled events, fixes issues with DST
- Using UTC for tracking durations
- Fixed a bug where table width calculations were not considering unprintable characters
[10.3.0] - 2020-01-20
Changed
- Network/MAC/DNS address utils are now enumerating all adapter types
- Ignoring Crestron ethernet parameters that say "Invalid Value"
- Skipping network interfaces with an invalid adapter id
[10.2.0] - 2019-12-04
Added
- Added shim methods for finding closest DateTimes from a sequence
[10.1.0] - 2019-11-18
Added
- Added PathUtils methods for getting ProgramData paths
- Added a method for determining if a URI is defaults
- Added MaxOrDefault extension method for enumerables
- Added a method for finding an item in a sorted list by a given predicate
Changed
- NullObject implements IComparable, fixes issues with null keys in ordered dictionaries
- IcdSqliteConnection CreateFile method will create directories recursively
[10.0.0] - 2019-10-07
Added
- IcdEnvironment.GetUtcTime() to get UTC representaiton of current time.
- Extension methods for determining if a sequence is in order
- Overload for calculating the modulus of longs
- Default implementation for AbstractGenericXmlConverter Instantiate method
- Additional binary search extensions, now working for all ILists
- Added NullObject as a means of having null keys in hash tables
Changed
- Potential fix for unhelpful exception messages coming from SafeCriticalSection.Execute
- Small performance improvement when copying arrays
[9.9.0] - 2019-09-16
Added
- Added a method for converting 24 hour to 12 hour format
- Added a method for determining if a culture uses 24 hour format
- Added math util method for modulus
- Added TimeSpan extension methods for cycling hours and minutes without modifying the day
- Added a dictionary extension method for getting or adding a new value via func
- Added CultureInfo extensions for converting between 12 hour and 24 hour time formatting
- Added environment methods for setting the current date and time
- Added BinarySearch extension method for all IList types
- Added PathUtils methods to get ProgramData directory
Changed
- The Root Config path in Net Standard will now be the ICD.Connect folder in the current environments ProgramData directory
- Fixed a bug where CultureInfo was not being cloned correctly
- List AddSorted extensions now work for all IList types
[9.8.0] - 2019-09-03
Added
- Added Public API Properties to get the program install date based on the creation date of core dll file for NetStandard and SimplSharp
- Implemented processor utils for NetStandard to get the system uptime and the program uptime
- Added methods for deserializing an XML array
Changed
- Fixed a bug where ANSI color encoded strings with percentages were being scrambled
- Improvements to JSON DateTime parsing, particularly in Net Standard
[9.7.0] - 2019-08-15
Added
- Added logger timestamps to non simplsharp programs
- Added Net Standard Support for JSON DateTime formats
- Added EmailValidation class
Changed
- JSON dict serialization serializes keys instead of converting to property name
[9.6.0] - 2019-07-03
Added
- Added RecursionUtils method to get a single clique given a starting node
- Breadth First Search can now search graphs in addition to trees
- Added StartOfDay and EndOfDay DateTime extension methods
Changed
- Fixed bug in IcdUriBuilder where Query property behaved differently to UriBuilder
- Throwing an exception when attempting to read a non-primitive JSON token as a string
[9.5.0] - 2019-06-10
Added
- Added Shim to read a list from xml with no root element
- Added a URI query builder
Changed
- Fixed JSON DateTime parsing in .Net Standard
- Fixed threading exception in TypeExtensions
- Fixes for platform-agnostic culture handling
[9.4.0] - 2019-05-10
Added
- Added extension method for peeking queues
- Added extension method for getting or adding a new item to a dictionary
- Added methods for serializing additional types, arrays and dictionaries to JSON
- AbstractGenericJsonConverter exposes virtual methods for overriding object serialization/deserialization
- Added RemoveRange method to IcdHashSet
- Added IcdCultureInfo and CultureInfo database for localization
Changed
- IcdUriBuilder constructors behave closer to UriBuilder, Host defaults to "localhost"
[9.3.0] - 2019-04-16
Added
- Added SPlusUtils with ConvertToInt method taking LowWord/HighWord ushorts
- Added JsonReader extension methods for reading DateTimes
- Added JsonReader extension methods for writing properties
- IcdStreamWriter exposes WriteLine(string)
- Added ProgramLogsPath to PathUtils
Changed
- Fixes for VC4 compatibility
- Fixed JSON DateTime parsing for timezone information
- Small reflection optimizations
[9.2.0] - 2019-03-01
Added
- Added Type IsAssignableTo extension shim
- Added constructor to BiDictionary to instantiate from an existing dict
Changed
- Fixed bug preventing deserialization of XML lists
- Crestron ConsoleResponse uses PrintLine instead of Print
- Use PrintLine instead of ConsoleResponse on Crestron server
[9.1.0] - 2019-02-07
Added
- Added SubscribeEvent shim for delegate callbacks
- Extension method for reading JSON token as a GUID
- Added ToStringJsonConverter
Changed
- Significantly reduced size of JSON serialized Types
- Small logging optimizations
[9.0.0] - 2019-01-29
Added
- IcdConsole.OnConsolePrint event
Changed
- Better VC-4 support for IcdConsole
- JSON refactoring for simpler deserialization
[8.8.1] - 2020-02-18
Changed
- IcdTimer - fixed issue that prevented OnElapsed event from firing when Length is less than (or close to) Heartbeat Interval
[8.8.0] - 2020-01-23
Added
- Added an overload to PriorityQueue for determing the de-duplication behaviour
[8.7.2] - 2019-10-29
Changed
- Fixed a bug with PriorityQueue de-duplication where a new command would be inserted in the wrong position
[8.7.1] - 2019-08-22
Changed
- Fixed a bug with the IcdOrderedDict index setter that was creating additional values
[8.7.0] - 2019-06-24
Added
- IcdXmlException exposes line number and position properties
[8.6.1] - 2019-06-14
Changed
- Fixed a bug where stopped timers on NetStandard would still have a periodic callback duration
[8.6.0] - 2019-06-14
Changed
- Overhaul of RangeAttribute remap methods to better avoid overflows
[8.5.0] - 2019-06-06
Added
- Adding features to IcdEnvironment for tracking program initialization state
[8.4.1] - 2019-06-05
Changed
- Caching the program/processor start time and calculating the uptime from those values instead of polling the crestron processor
[8.4.0] - 2019-05-15
Added
- Added GUID utils for generating seeded GUIDs
- Added extension method for getting stable hashcodes from strings
- Added environment and processor utilities for determining DNS status and hostname
Changed
- RangeAttribute improvements for better type safety
- PathUtils breaking out ProgramConfigDirectory and CommonConfigDirectory from the full paths
[8.3.3] - 2019-05-24
Added
- Added empty, placeholder interface for ICD Attributes
[8.3.2] - 2019-05-02
Changed
- Fixed PriorityQueue IndexOutOfRange exception when an inner queue becomes depleted
[8.3.1] - 2019-04-05
Changed
- Fixed FormatException when parsing some JSON DateTimes
[8.3.0] - 2019-01-25
Added
- Added SimplSharpProMono to eRuntimeEnvironment enum
- Added path support for SimplSharpProMono environment
- Added GetApplicationRootDirectory for all platforms
Changed
- Small fixes for better VC4 support
[8.2.0] - 2019-01-10
Added
- Added TryGetPortForScheme method to UriExtensions
- Added range attribute for clarifying numeric fields, properties and parameters
Changed
- IcdHashSet preserves comparer when an operation creates a new IcdHashSet
- Fixed bug where XML fragments on Net Standard were being prepended with a document header
[8.1.0] - 2019-01-02
Added
- Added GetAttributeAsEnum xml utils method
- Adding short parsing methods to XML utils
- Added methods to IcdUriBuilder for appending path
- Added RegexUtils method for replacing a single group in a match
[8.0.0] - 2018-11-20
Added
- XML TryGetAttribute methods
Changed
- Performance improvements when working with xml attributes
- Fixed NullReferenceException when writing null strings to CSV
- Fixed bug with string formatting console input on Net Standard
Removed
- Removed IcdXmlAttribute
[7.1.0] - 2018-11-08
Added
- IcdXmlTextWriter exposes WriteStartDocument and WriteEndDocument
- AttributeUtils method for getting properties with the given attribute type
Changed
- EnumerableExtensions performance improvements
- Fixed bug in StringExtensions when removing a sequence of characters from a string
[7.0.0] - 2018-10-30
Changed
- Micro-optimizations in string and XML manipulations
- Significant hashset optimizations
- Deprecated NVRAM in favor of USER directory
[6.0.0] - 2018-10-18
Added
- CsvWriter for creating CSV files + Settings
- AppendText method for IcdFile
- IcdStreamWriter, a wrapper for a StreamWriter
- New XML conversion framework for performance improvements
Changed
- XmlUtils is now using the improved XML conversion framework
- Better implementation of DictionaryExtensions.ToInverse
[5.0.0] - 2018-09-14
Added
- Stopwatch profiling methods
- Attempt to interpret old assembly naming convention when parsing types
- Added RegexUtils
Changed
- Significant performance improvements across the board
[4.0.0] - 2018-07-19
Added
- Added extension method for getting type name without trailing generic info
- Added DateTime extensions for getting next/last time in a sequence
- Added action scheduler service
- Added IcdTimer methods for profiling event performance
Changed
- Re-raise base exception from ReflectionUtils.CreateInstance, TargetInvocationException and TypeLoadException don't say much
[3.7.0] - 2018-07-02
Added
- Adding SequenceComparer for ordering collections of lists, arrays, etc
- Added RateLimitedEventQueue collection for throttling events
Changed
- Potential fix for timer disposal on Net Standard
- Added workaround for older RPC servers where the typestring being broadcast would stil include _SimplSharp, now will be stripped
- Fixing bug where Timer.Reset() would continue repeating on an interval in Net Standard
[3.6.0] - 2018-06-19
Added
- Added ZIP features for examining the contents of an archive
- Added FileNameEqualityComparer
- Added BiDictionary for one-to-one maps
[3.5.1] - 2018-06-04
Changed
- PriorityQueue indexing fix
- Pathfinding optimizations
[3.5.0] - 2018-05-24
Added
- Added GetFlagsExceptNone parameterless enum method
- Added pathfinding methods for determining if a path exists
[3.4.0] - 2018-05-23
Added
- Added SetEquals method to IcdHashSet
[3.3.0] - 2018-05-18
Added
- Added IcdOrderedDictionary collection
- Added PriorityQueue collection
- Added IcdUriBuilder and UriExtensions for reading/writing URI data
[3.2.0] - 2018-05-09
Added
- Added util method for removing BOM characters from UTF8 data
- Added extension method to convert from bool to ushort and back
- Added extension method to cast enums to ushort value
[3.1.0] - 2018-05-04
Added
- Added Yield extension to return a single-item enumerable for an object.
[3.0.0] - 2018-04-23
Added
- Adding extension method for getting Informational Version from an Assembly
- Adding WeakKeyDictionary for caching
- Reflection util methods
Changed
- JSON serialization/deserialization features moved into base converter
- Removed suffix from assembly name