# Changelog Previous Latest changelog entries in [Readme link](README.md#Changelog) - 1.2.122 - Fix parsing `{op:f}`; partial keyword state, at close of bracket (started to match `false`). - Fix NPM Package to include d.ts info. - 1.2.121 - hotfix on 1.2.120 - dropped module JSOX declaration. - 1.2.120 - Add JSDoc comments to provide some type information. - fix quoting the string `'[]'`; ended up unquoted. - Fragmented changelog. - Change external testing tool. - Quote strings that have a '#' in them. - allow '#' to start a comment until end-of-line. - fix cummulative error in column count on a comma after a number. - 1.2.119 - Provide typescript definitions. - Provide JSOX as a import name; see issue #13. - 1.2.118 - Fix stringify with prettify option. - 1.2.117 - Fix decoding number as first argument in a reference. - update non-module version with 116 changes too. - 1.2.116 - Fix parsing negative ISO-8601 Dates. - generate specific timestamp for `new Date( "0000-01-01T00:00:00.000Z" ).getTime()` to return that string anyway. - 1.2.115 - Strings starting with 'N' not followed by 'a' for 'NaN' did not recover the right string. - 1.2.114 - import.mjs is not included in npm publish (fixed) - Fix errors found when reviving referneces; (assumed a field in object meant THE object; checked wrong array length; cleanup duplicate variables) - 1.2.113 - Add higher resolution Date type called DateNS; which adds a 'ns' field which is a number of additional nanoseconds on top of the timestamp. (JS Specific issue; ISO-8601 date format may be of any precision) - 1.2.112 - add check for `\ufeff` in stringifier for identifiers; because of BOM legacy usage unquoted ZWNBSP has to be counted as just whitespace. (especially considering multiple files might have been concatenated?) - 1.2.111 - fixes travis tests; latest mocha/coverage slows benchmark tests by 10x. - 1.2.110 - Fix packaging error. - 1.2.109 - fixed vertical tab character parsing. - fixed hex numbers with `[a-f][A-F]` characters. - added reset() method for tests to reset global JSOX type registrations. - added 1.2.108 named tests. - Added `RegExp` support; ~~encodes as `?e?` string type; `JSOX.parses("?e?'a+'") === /a+/`~~ - encode as `regex` instead of `?e?`; is actually 1 byte shorter, and more familiar. `JSOX.parses("regex'a+'") === /a+/`, `JSOX.stringify(/a+/) === /"regex'a+'"/` - 1.2.108 - Refix base64, which failed to quote strings that looked like numbers. - Clear array buffer typed variable when resolving the typed array; leaked to next parse. - 1.2.107 - Updated document about CI tests. - Enable Travis CI integration. - Reference arrays don't result with the same object; reduce frequency of warning message. - Remove automatic guess promoting numbers to bigints, floats can also be pretty big. - 1.2.106 - fix regression in stringifying binary array objects; removing the quotes caused the '/' to be interpreted as a comment. - update documentation about base64 encoding - replace '+/' with '$_' as the high value strings emitted. Older versions will already accept this encoding. - 1.2.105 - Fix losing array containing typed objects. - Pass stringifier to toJSOX method. - Added compatibility tests between sack.vfs node plugin and JS version. - Fixed issues reviving references (new test), and replacing/providing values. - 1.2.104 - Throw error while parser is in error state and new writes() are called. - allow '+' prefix to numbers - Fix fromJSOX class revival handling; call per-field. - Added beginning of stringify tests (coverage). - 1.2.103 - additional reference path revival fix. - 1.2.102 - added automated test notes - Added formal reference revival test; a different recursive variation of reference which failed. - refactored to remove 'element_array' special case tracking variable; standardize on just 'elements' instead. - 1.1.123 (published as 1.2.101) - Added automated mocha tests; (ported from JSON6). - Fixed some parsing issues exposed by tests around unicode whitespace handling and more. - Throw an error when a invalid date is created. - Most fixes were in handling badly formatted data either with exceptions, or accepting more badly formatted input as valid. - 1.1.122 - Remove option SUPPORT_LEAD_ZERO_OCTAL; JS "strict" errors on lead zeros; and Number() converts lead zeros as decimal; removes custom decoding. - 1.1.121 - fix parsing {op:f,}. Generalize unquoted string recovery. - 1.1.120 - revert UTC time change; keep accuracy. - 1.1.119 - missed the toFullYear -> toUTCFullYear of the date. - 1.1.118 - treat \u00A0 the same as a ' ' (space). Visually they are the same, so in the interst of being human readable, it would make sense the machine should read it the same way. - fix failure to encode millisecond into timestamp. - 1.1.117 - Fixes reviving a class in a class in a map referencing the class in the map, and then finishsing map.class.class before finishing map.class - Fixes reviving references after another prototype revival. (map followed by a key with a reference). - restore handling empty object arguments `{,,a:3,,,,,b:4,,,}` results in `{a;3,b:4}`. - Added some tests which caused the above failures; updated ancient tests to account for - top level `` in a stream to seprate with `` which is valid for the test. - 1.1.116 - Provides 'browser', and 'module' entry points. Improves module support. - Fixes an issue with references in arrays after other objects. - Fixes unclosed ref array state, for `ref[], []`. - Resolves an internal state meaning that overlapped meaning of default and pushed. - 1.1.115 - publish minor doc updates - 1.1.114 - Cricial Fix - clear arrayType when opening a new object or array (circular object decode) - Reference fix when referencing the root node. - 1.1.113 - fix leftover test code in require.js. - 1.1.111 - fix packaging. - 1.1.101 - Minor patch to get a long miner version - fixed base64 decoding to handle terminations better. - 1.1.1 - added Map() builtin type for JS which is type 'map'. - Fixed expression which quoted words with 'S' or 's' in them. - Fixed Known array types. - 1.1.0 - Added stringifier/parser instance specific registrations for ToJSOX and FromJSOX handlers. - removed unicode non-identifier check, prefering instead just the set of structure characters (basically anything which is not caught before the end begins an identifier). This simplifies testing field names for encoding/stringification. - 1.0.8 - Sort object fields case insensitively; standardize field ordering. - 1.0.7 - Fixed some stream parsing issues with identifiers. - 1.0.6 - just updated build products - 1.0.5 - Fix streaming ability - consequtive strings only have whitespace to separate them, so identifiers for defining typed-objects cannot have whitespace between them and '{'. - (reverted)implement test for non-identifier characters to quote field strings (or not). Implement reading non-identifier characters, and fault if identifier is unquoted and has such a character. - implement typed-strings, which can be used to trigger constructors which accept single strings. - update readme with typed-strings, typed-arrays, and typed-objects. - performance fix; was keeping parser objects forever. - 1.0.4 - Be more forgiving about platforms not having BigInt native support. - 1.0.3 - Add ability to register prototypes to use for decoding. - 1.0.2 - Issue with mutiple leading and trailing spaces. Fix collecting streams of numbers. Fix an issue with nested classes. Add circular reference support. - 1.0.1 - Removed modification of object prototypes; instead track object prototype to formatting function in a WeakMap(). Fixed class expansion. Make objects of a class share the same prototype. - 1.0.0 - Intial Release.