# Changelog

## Unofficial 1.5.6b

- fix firstOnly queries for branched resultsets
- add \$elemMatch query operator

## 1.5.6

- added support for indexes on nested properties (#718)
- more robust environment detection (#717)
- precompile \$regex filters recursively (#710)
- Corrected \$aeq example in Query Examples (#706)
- change 'shallow-recurse-objects' clone to support deep array clone (#692)
- jsdoc fixes for compoundsort example (#691)

## 1.5.5

- fixed issue where batch removes did not update unique index (#677)

## 1.5.4

- fixes to checkIndex maintenance fn (#654, #661)
- bulk remove optimizations (#663)
- fix to meta when cloning (#666)
- AWS S3 sync adapter added (#670)
- fix for browser project: fs not found (#674)
- added comparators to default export (#672)

## 1.5.3

- simplesort can leverage binary index (via index intersect) when weakly
  filtered (#645)
- the simplesort 'descending' param is now multipurposed (with bw-compat) see
  jsdocs
- added new simplified js comparison ops for unindexed optimizations (commit
  bb011d)
- added collection.checkIndex() and collection.checkIndexes() for diagnostics
  (#654,#47)

## 1.5.2

- fixed error when transform steps have non-serializable parameters (#624)
- addCollection will return existing collection when collection named already
  exists (#635)
- batch updates when not cloning no longer risk invalidating adaptive binary
  indices (#639)
- fixed autosave race condition when using async adapter (#643)
- collection option added to disableMeta if not using changes api or ttl (#644)

## 1.5.1

- added disableDeltaChangesApi (default:true) collection option to store only
  differences. (#582)
- loki indexed adapter deleteDatabase method will now wait until complete before
  callback (#584)
- fixed clone methods correctly assigning object prototypes (#586)
- partitioning adapter and memory adapter no longer throw error when database
  doesn't exist (yet)
- simplesort and compoundsort now support sorting on nested properties via
  dot-notation (#574)
- added support for binary indices on nested properties (#574)
- fixed jsdoc syntax error causing vscode to crash (#614)
- fixed error when using partitioning adapter with nativescript adapter (#615)
- added optional 'dataOptions' to eqJoin and map (chain/transform) (see #618)

## 1.5.0

- refactored binary indices sorting order
- date values in properties with binary index will be converted to epoch time
- fix to LokiFsStructuredAdapter first time autoload error where file doesn't
  exist yet
- fixed simplesort descending with binary indices and no filters
- with 'clone' option collection 'insert' events no longer emit internal obj
  reference
- fix to clone method 'shallow'
- added 'removeMeta' option to chained data calls to shallow clone and remove
  \$loki and meta
- added quickstart examples for node and updated loki sandbox with online web
  quickstarts
- fixes to async unit tests
- npm release trimmed from 5 megs to 500k (no examples, jsdocs, tests)

## 1.4.3

- added throttled saves and loads (enabled by default) to ensure no overlapping
  calls
- unfiltered simplesorts can leverage binary index
- collection.clear now clears indices correctly
- fix to LokiPartitioning adapter resetting maxId across saves
- meta set correctly on batch inserts
- LokiMemoryAdapter now configurable to simulate async
- fix changesApi not enabled after loading database

## 1.4.2

- added 'adaptiveBinaryIndices' option to collections (default true) to avoid
  rebuilds on inserts/updates/removes
- added higher performance LokiFsStructuredAdapter for node
- added destructured serialization methods for partitioning and exporting
- added 'addListener' method alias of 'on' method
- LokiFsAdapter doesn't throw exception when file doesn't exist (yet)
- fix for circular structure error when setting ttl
- fix unit testing on windows
- experimental implementation of an incremental adapter

## 1.4.1

- minor fixes
- updated jsdoc coverage

## 1.4.0

- fixes to loki indexed adapter
- added nativescript adapter
- added $aeq, $contains, $containsAny, $ne
- fix unique index update with new object
- expose persistence adapters to module export
- fix to loki-crypted-file-adapter

## 1.3.0

- UniqueIndex and `by()` method
- staging API
- count() utility method
- RethinkDB-style joins (eqJoin)
- moved testing to Karma
- moved builds and run to npm instead of gulp
- added \$containsAny operator
- statistical functions: average, max, maxRecord, min, minRecord, median, mode
- extract() to extract a flat array of values for one field in each record
- extractNumerical() - same as extract() for numerical values
- pre-insert and pre-update events
