Skip to content

Latest commit

 

History

History
296 lines (219 loc) · 11.8 KB

CHANGELOG.md

File metadata and controls

296 lines (219 loc) · 11.8 KB

1.2.1 (2024-11-07)

Change:

  • Document#purgeObsoleteProperties(props, returnIds, shouldCompactIfPurged) can compact the db file if docs got changed

1.1.1 (2024-11-07)

Added:

  • static method purgeObsoleteProperties() of Document, allowing to remove properties from the database file when they're no longer part of the schema

1.0.1 (2023-01-18)

Added:

  • schema descriptors may have an "indexed" flag, ensuring a non-unique index on the respective field

1.0.0 (2022-05-12)

Changes:

  • refactored/rewritten pretty much everything
  • much stricter schemas
  • much more CPU friendly
  • removed lodash, only 1 dependency left (depd)

Breaking Changes:

  • requires Node 14+
  • Removed Mongo support (for now)
  • Signature of connect is now connect(nedbUrl, DatastoreClass).
  • Accessing id properties of Document or EmbeddedDocument no longer displays deprecation warnings, but will throw an Error.
  • Passing a collection name to new MyDocument(collectionName) now throws an Error (must override static collectionName() instead)
  • Removed deprecated Document.loadOne(), loadOneAndUpdate(), loadOneAndDelete(), loadMany()
  • null values for properties marked required will throw during validation, too
  • Disallowed wildcard types (Object, [], Array, [Object]). Instead, added cleaner custom type syntax (see #1)
  • Saving, loading and Document.toJSON now strictly adhere to the document's schema, i.e. ignore any instance properties not defined in the class' schema.
  • strict Date handling: numbers and strings assigned to Date-type properties will no longer be auto-converted to Date instances before save(), but throw ValidationError instead. Only exception: the schema's default value (or function return value) may still be string/number and be auto-converted to Date on Document creation.
  • Documents now throw by default if created with data containing keys which are not defined in the schema. This behavior can be customized either globally globally via setUnknownDataKeyBehavior(), or by overriding onUnknownData(dataKey, val) in a derived Document/EmbeddedDocument class
  • Deprecated schema definition within constructors (and/or by calling instance.schema()). Preferring static field SCHEMA in document classes instead (#2).
  • Renamed Client.dropDatabase to Client._dropDatabase, marked it "internal" (for testing purposes only) since there is no clean way of safely deleting entire persistent NeDB collections in the filesystem.

0.12.5 (2022-04-22)

Features

  • Allow connect() to use alternative Datastore constructors from any NeDB fork

Breaking Changes

  • NeDB is no (optional) dependency anymore, must install manually

0.12.3 (2016-11-04)

Bugfixes:

  • Merged PR that allows changes to persist in postValidate and preSave hooks (#85). Fixes #43.

0.12.2 (2016-06-27)

Bugfixes:

  • Merged PR that prevents methods from being serialized in toJSON() (#79)

0.12.1 (2016-03-02)

Features:

  • Updated README to warn about frequently changing API
  • Added Contributing and Contact sections to README Bugfixes:
  • Fixed issue that prevented save() from being aborted when Promise.reject was returned in a hook (#57)
  • Replaced all .id references to ._id in README
  • Fixed issue where schema types Array and [] were not properly being validated (#53)
  • In README, changed an incorrect reference of .findMany() to .find() (#54)
  • Fixed issue where updated nested data wasn't returned when using .findOneAndUpdate() with NeDB (#55)

0.12.0 (2016-02-24)

Features:

  • Added support for sorting with multiple keys (#22)
  • Added support for accepting strings as Dates (#46)
  • Deprecated loadMany, loadOne, loadOneAndUpdate, and loadOneAndDelete in favor of find, findOne, findOneAndUpdate, and findOneAndDelete, respectively (#37)
  • Added documentation on transpiler support for Camo Bugfixes:
  • Changed 'schema({})' to 'this.schema({})' in README since original throws ReferenceError (#52)

0.11.4 (2016-01-19)

Bugfixes:

  • Fixed issue with saving/loading deeply nested embedded documents (#35)
  • Removed _id and _schema._id from EmbeddedDocument class (#31)
  • Allow user to specify a custom _id (#29)

0.11.3 (2015-12-29)

Features:

  • Added new ValidationError object Bugfixes:
  • Improved some validation tests
  • Fixed min validation
  • Fixed validation for array of embedded documents
  • Moved collectionName method to BaseDocument so EmbeddedDocument can use it (#26)
  • Deprecated id alias from document object (#20)
  • Fixed serialization test for MongoDB IDs

0.11.2 (2015-12-15)

Bugfixes:

  • Fixed issue with running 'canonicalize' tests on travis-ci

0.11.1 (2015-12-15)

Bugfixes:

  • Removed unused harmony-reflect dependency

0.11.0 (2015-12-15)

Features:

  • --harmony-proxies flag is no longer required
  • Class names now declared in static collectionName(). Declaration through constructor is depracated (#16)
  • Added new required schema property (#18 and #19) Bugfixes:
  • Fixed some inconsistencies with id aliasing (partial fix to #20)

0.10.0 (2015-11-12)

Features:

  • Added support for setting the 'unique' index on a field
  • Added support for specifying which reference fields should be populated in loadOne() and loadMany() Bugfixes:
  • Fixed issue in isNativeId where we weren't returning a proper Boolean.

0.9.1 (2015-11-06)

Features:

  • Added support for testing in travis-ci.org Bugfixes:
  • Fixed issue #10 where IDs in queries had to be ObjectId. Now string IDs are automatically cast to ObjectId.

0.9.0 (2015-10-30)

Features:

  • Added support for sort option on .loadMany()
  • Added support for limit option on .loadMany()
  • Added support for skip option on .loadMany()
  • Added .toJSON() to Document and EmbeddedDocument for serialization
  • Updated 'engines' property to '>=2.0.0' in package.json Bugfixes:
  • Fixed issue #14 where Documents couldn't be initialized with an array of EmbeddedDocument objects via .create()

0.8.0 (2015-10-12)

Features:

  • Added support for custom validation on schemas via validate property Bugfixes:
  • Fixed issue #9 where no member values could be set as undefined

0.7.1 (2015-08-21)

Bugfixes:

  • Fixed issue #8 where virtual setters were not used on initialization
  • loadMany() now loads all documents if query is not provided
  • deleteMany() now deletes all documents if query is not provided

0.7.0 (2015-08-18)

Features:

  • Added loadOneAndUpdate static method to Document class
  • Added loadOneAndDelete static method to Document class

0.6.0 (2015-08-10)

Features:

  • Added in-memory support for NeDB
  • Added regex validator to Document

0.5.7 (2015-08-06)

Bugfixes:

  • Fixed issue where schema() wasn't canonicalizing schema definitions.
  • Updated README to show an example of using schema().

0.5.6 (2015-07-20)

Features:

  • README additions
  • New test for overriding schemas

0.5.5 (2015-07-15)

Bugfixes:

  • Fixed issue where _id was being reassigned in Mongo, and fixed issue with populating references in Mongo.
  • Fixed issue with Mongo driver where reference validation checks failed.
  • Fixed test Issues.#4 for when running in Mongo.

0.5.4 (2015-07-09)

Bugfixes:

  • Fixed issue where Dates were saved in different formats (integers, Date objects, etc). Added way to canonicalize them so all dates look the same in the DB and are also loaded as Date objects.

0.5.3 (2015-07-01)

Bugfixes:

  • Fixed issue in .loadMany() where references in arrays were getting loaded too many times. (#4).
    • Added test in issues.test.js
  • Fixed issue in .loadMany() where muliple references to the same object were only getting loaded once. (#5).
    • Added test in issues.test.js

0.5.2 (2015-06-30)

  • Version bump, thanks to NPM.

0.5.1 (2015-06-30)

Bugfixes:

  • Fixed validation and referencing so Documents can be referenced by their object or ID.

0.5.0 (2015-06-26)

Features:

  • Exposed getClient() method for retrieving the active Camo client.
  • Added options parameter to connect() so options can be passed to backend DB client.
  • Static method Document.fromData() is now a private helper method. Static method .create() should be used instead.

Bugfixes:

  • In Document._fromData(), added check to see if ID exists before assigning
  • Changed BaseDocument._fromData() so it returns data in same form as it was passed.
    • i.e. Array of data returned as array, single object returned as single object.
  • Fixed bug where assigning an array of Documents in .create() lost the references.
  • Stopped using the depracated _.extend() alias. Now using _.assign() instead. (#1).
  • Fixed get and set issue with Proxy (#3).

0.4.0 (2015-06-22)

Features:

  • Changed .isModel() to .isDocument().
  • Added EmbeddedDocument class and tests.
    • The following features work with EmbeddedDocuments: = Schema options: default, min, max, type, choices = All types supported in Document also work in EmbeddedDocument = Array of EmbeddedDocuments = Pre/post validate, save, and delete hooks

0.3.2 (2015-06-19)

Bugfix:

  • Added forked version of harmony-reflect. Only difference is it uses a global to ensure it runs only once.

0.3.1 (2015-06-19)

Bugfix:

  • Moved Proxy/Reflect shim to index. Seems to fix problem where shim broke Proxies (even worse).

0.3.0 (2015-06-18)

Features:

  • Added support for MongoDB using node-mongodb-native as the backend.
  • Added .toCanonicalId() and .isNativeId() to DatabaseClient and its child classes.

0.2.1 (2015-06-17)

  • README fix.

0.2.0 (2015-06-17)

Features:

  • Added the following Document hooks:
    • preValidate()
    • postValidate()
    • preSave()
    • postSave()
    • preDelete()
    • postDelete()

0.1.1 (2015-06-17)

Features:

  • Updated README to include 'javascript' declaration for syntax highlighting.
  • Added 'homepage' to package.json.
  • Added 'repository' to package.json.
  • Added 'email' to 'author' in package.json.

0.1.0 (2015-06-17)

Features:

  • Minor version bump.
  • No longer need to use .schema() in Document subclass. Now all public variables (any variable not starting with an underscore) are used in the schema.
  • Implemented .count() in Document, Client, and NeDbClient to get Document count without retrieving data.
  • Added options parameter to .loadOne() and .loadMany() to specify whether references should be populated.
  • Added support for circular dependencies.
  • Added README.
  • Added CHANGELOG.

0.0.1 (2015-06-15)

Initial release.