#### 1.8.6 Maintenance Release - Fix bug in date/time picture string. Width formatting is not respected without a separator (issue #546) - Fix error when converting empty array to an object (issue #547) - Fix Buffer deprecation warning (PR #560) #### 1.8.5 Maintenance Release - Fix regression with singleton sequence of array type (issue #462) - Correctly handle empty array input to group expression (issue #527) - Fix bug with outer array when evaluating wildcard (issue #495) #### 1.8.4 Maintenance Release - Fix bug in `$eval` when second arg is an empty array (issue #463) - Fix bug in `toMillis()` parsing timezones (issue #477) #### 1.8.3 Maintenance Release - Remove incomplete polyfill for `Array.from()` (issue #432) - Fix `$not` to return empty sequence for missing inputs (issue #433) - Fix RangeError (stack overflow) when querying very large objects (issue #434) #### 1.8.2 Maintenance Release - Fix bug with regex usage in partially applied functions (issue #427) - Fix regression when the $string() function is applied to a top-level array (PR #429) #### 1.8.1 Maintenance Release - Fix bug in timezone handling for ISO week date formats (issue #403) #### 1.8.0 Milestone Release - New syntax (`%` parent operator) to select the parent of the current context value (issue #299) - New function `$type` to return the data type of the argument (issue #208) - Added versioning to the documentation site (issue #385) - Fixed bugs #382, #387, #396, #399 #### 1.7.0 Milestone Release - New syntax (`@` operator) to support cross-referencing and complex data joins (issue #333) - New syntax (`#` operator) to get current context position in sequence (issue #187) - Equality operators (`=`, `!=`) now perform deep object/array comparison - New functions - `$error` - Explicitly throw an error with message (issue #167) - `$assert` - Throw error (with message) if assertion evaluates to false (issue #369) - `$single` - Returns the single value in an array (issue #348) - `$encodeUrl`, `$encodeUrlComponent`, `$decodeUrl`, `$decodeUrlComponent` - URL/URI helper functions (issue #103) - `$distinct` - Returns array with duplicate values removed - Enhanced functions - `$reduce` - Now works with a 4-argument function parameter (issue #102) - `$number` - Can now cast numeric strings with leading zeros (issue #368) - `$string` - Now has optional second argument to "prettify" objects (issue #334) - Minimum node.js runtime v8 (dropped support for v6). Added support for Node 12. - Fixed bugs #316, #332, #349 #### 1.6.5 Maintenance Release - Fix concurrency bug in chain operator (issue #335) - Fix flattening login in map operator (issue #314) - Fix message inserts for errors thrown in function bodies (issue #297) - Limit array size allocatable by range operator to ten million entries (issue #240) #### 1.6.4 Maintenance Release - Fix performance regression (PR #292) - Fix bug in `$each` function (PR #293) #### 1.6.3 Maintenance Release - Fix es5 build and polyfills to enable test suite to (mostly) run in Nashorn (PR #288) - Extra polyfill required for running jsonata-es5.js in IE 11 (PR #289) #### 1.6.2 Maintenance Release - Fix insertion of regenerator runtime at top of ES5 file (PR #284) #### 1.6.1 Milestone Release (v1.6.0 was not published) - New date/time formatting and parsing capability (issue #166) - Support for comments in expressions (issue #75) - Higher-order extension functions (issue #259) - Allow Boolean to be cast to a number (issue #257) - New functions - $eval - parse/evaluate the contexts of a JSON/JSONata string (issue #134) - $formatInteger - format an integer to a string using picture string definition - $parseInteger - parse an integer from a string using picture string definition - Non-functional enhancements: - Split codebase into multiple files; fixed multiple issues with ES5 generated library - Multiple conformance tests in a single file - Documentation moved to main jsonata repo; generated using docusaurus.io - Minimum node.js runtime v6 (dropped support for v4) - Numerous bug fixes (#236, #179, #261, #236, #245, #246, #233, #250, #247, #242, #249) #### 1.5.4 Maintenance Release - Fully test and fix bugs in async mode (PR #219) - Publish Typescript definition file (issue #182) - Numeric precision should be 15 decimal digits, not 13 (issue 194) - Defining functions for use with `$match` etc. (issue #213) - Fix regression in `$substring` for negative start position & length (issue #204) - Fix for 'sort' syntax error (issue #210) - Various code optimizations (issues #184, #205, #164) - Add support for node 10.x (PR #228) #### 1.5.3 Maintenance Release - `$formatNumber` should use `zero-digit` character for padding (issue #161) - Handle undefined inputs in `$formatNumber` (issue #165) - Handle surrogate pairs as single char in string functions (issue #156) - Throw error if multiple group-by expressions evaluate to same key (issue #163) #### 1.5.2 Maintenance Release - Enforce consistent syntax error when attempting to use unquoted numeric property names (issue #147) - Invalid token on LHS of binding operator is now a syntax error rather than dynamic (runtime) error (issue #148) - Fix corruption of predicated function calls within lambda functions (PR 149) #### 1.5.1 Maintenance Release - Update `$toMillis()` to allow more complete range of ISO 8601 compatible dates (issue #140) - Fix `$append()` so that it doesn't mutate the first argument (issue #139) #### 1.5.0 Milestone Release - Restructured the entire test suite to be implementation language agnostic (PR #122) - Provide es5 as main entry point, es6 as module entry point (PR #106) - Added Typescript definitions to package (PR #114) - Changes to how 'singleton sequences' are handled (issue #93) - Unary negation of undefined (no match) should return undefined (issue #99) #### 1.4.1 Maintenance Release - Object transformation syntax should work with arrays of objects as well as objects (issue #94) #### 1.4.0 Milestone Release - New object transformation syntax `~> |...|...|` (issue #70) - New functions - $formatNumber - formats a decimal number to a string using a picture specification defined in XPath F&O spec (issue #54) - $formatBase - converts a number to a string in a specified radix - $pad - pads a string to a minimum width with leading or trailing padding characters - $toMillis - converts an ISO 8601 formatted date/time string to number of milliseconds since the epoch (issue #55) - $fromMillis - converts the number of milliseconds since the epoch to an ISO 8601 formatted date/time string (issue #55) - $clone - returns a deep copy of an object - used internally by the object transform syntax; overridable by custom implementation (issue #70) #### 1.3.3 Maintenance Release - $lookup() function throws an error when the property has a null value (issue #85) #### 1.3.2 Maintenance Release - Support extension functions that mix sync/async behaviours (issue #77) #### 1.3.1 Maintenance Release - Fix S0202 error insert to report token value, not token type (PR #74) - Remove use of array iterators because they were failing to transpile to ES5 correctly (issue #78) #### 1.3.0 Milestone Release - Property names containing reserved tokens can now be quoted using backticks (`). The current quoting mechanism using single or double quotes is deprecated and will probably be removed in a future major (e.g. v2.0.0) release. - The parser can be invoked in a *robust* mode whereby errors will be indicated by an error token in the parse tree rather than throwing an exception. This is the first step in creating a parser that can recover and report multiple errors. The default mode remains to throw an exception on first syntax error. - New functions - $merge - merge an array of objects into a single object - $millis - current timestamp in milliseconds since the epoch #### 1.2.6 Maintenance Release - fix evaluator when array constructor is the first step in a path expression (issue #63) #### 1.2.5 Maintenance Release - Fix $base64encode and $base64decode functions in the browser #### 1.2.4 Maintenance Release - Fix an issue running in IE11 and phantom.js (#58) #### 1.2.3 Maintenance Release - Fix an issue for a few functions that were not working in ES5 transpiled version (#56) #### 1.2.2 Maintenance Release - Update readme.md with API documentation - Correctly handle null values when executed with a callback (#53) #### 1.2.1 Maintenance Release - Generate ES5 compatible version of jsonata.js (jsonata-es5.js & jsonata-es5.min.js) using Babel - use the -es5 version if you need to support older browsers or phantom.js - New functions $base64encode & base64decode - Fix formatting of inserts in error messages #### 1.2.0 Milestone Release - New syntax to specify order of query results - Support for asynchronous extension functions - callbacks and promises - New functions - $floor - numeric rounding down - $ceil - numeric rounding up - $round - numeric round half to even - $abs - numeric absolute value - $power - numeric power function - $sqrt - square root - $random - generate random number - $now - current timestamp - $filter - filter array with predicate function - $sort - sort array with comparator function - $reverse - reverse contents of array - $shuffle - shuffle contents of array into random order - $zip - convolves (zips) multiple arrays into an array of tuples (nested arrays) - $each - generate array from object by applying function to key/value pairs - $sift - sift contents of object with predicate function - The following (previously undocumented) functions have been modified to align them with other functions - $map - apply a function to all values in an array - $reduce - apply a function to aggregate (fold) all values in an array #### 1.1.1 Maintenance Release - fix chaining operator for falsy inputs - fix tokenizer regression for name tokens that start with "in" and "or" - Make minified version appear in npm - Enforce eqeqeq rule in JSONata (#41) - fix regression: some instances of divide token were incorrectly parsed as start of regex #### 1.1.0 Milestone Release - New syntax to create regular expressions - Enhanced `$split` function to support regex parameter - New functions - `$contains` - tests existence of string/regex in a string - `$match` - returns an object representing matches against a regex - `$replace` - replaces occurrences of a substring or regex in a string - `$trim` - removes excessive whitespace in a string - Function chaining operator `~>` - allows multiple functions to be applied without excessive nesting - Context substitutable function parameters - allows functions to implicitly operate on the context value - Function signature syntax - to support runtime validation of function arguments - Errors now have error codes - messages maintained in separate catalog