- Added link caching
- Added named query results caching
- Added subbody to NamedQuery
- Added named query first resolver
- Bug fixes and other small stuff
- Support for promises via .fetchSync and .fetchOneSync for client-side queries
- Support for autoremove from inverse side as well
- Fixed .fetchOne from client-side Query
- Fixed #55, #60, #61, #66
- Added Reducers Concept
- Added $paginate: true, at the first level body which puts as options limit and skip from params automatically
- Exported "prepareForProcess" so Grapher Live can use it
- Fixed implying packages for broader adoption
- Bug fixes and improvements
- Metadata is now available on the client
- Decoupled code better
- Added $meta filters for filtering linked items by their metadata
- Extended exposure body to accept deep functions that are computed on-demand
- Fixed issues with $metadata
- For security reasons, every node value should be truthy. Meaning undefined, 0, and false will be ignored.
- Graph intersection for exposure, will not intersect if the body of exposure has a field that contains "false" or "undefined"
- Added deep function computing to the body to allow code-reusability
- Added body to exposure that will intersect with the actual request
- Written rigurous unit tests for deep cloning
- Auto-adding $metadata field when coming from an inversed link.
- Separated and decoupled client-side and server-side queries
- Fixed issue with deep cloning and arrays
- Added .clone() to Query
- Added namedQuery concept.
- Direct meta-children are automatically appended with $metadata
- Added .fetchOne() to Query
- Modified Documentor so it returns queries also.
- Fixed bug with deep $filter() function
- Added deepCloning ability that solved some weird bugs.
- Exposing documentation so it can be used by grapher live.
- Updated readme links
- Added ability to allow publication or method or both or none via expose() api.
- Exposure.restrictLinks now filters in depth with $and/$nor/$or/$not logical mongodb operators.
- Added restrictLinks at expose level, and you can use it as an array, or function: restrictLinks(userId) => returns array of links
- Decoupled query fetcher better, removing automatically "skip" option when fetching as client
- Ability to allow skip when you want custom behavior
- Added count method to allow pagination
- restrictFields not throws propper error when invalid
- Bug fixes for oneResults
- Extend the way exposure works. Added "maxLimit", "maxDepth", "restrictedFields" as configuration options for it.
- Added hypernova module which reduces queries to the database dramatically.
- Added a way to link collections via string when using addLinks
- Added "unique" parameter available to "One" and "One Meta" relationships, that adds a unique index into the database, and when you fetch them from their inversed side, it will return a single value instead of an array.
- Fixed a bug with cleaning the field.
- Fixed the bug where you had one virtual collection, and all the other fields were applied
- restrictFields in the exposure module is now filtering-out "filters" and "sort" to avoid information exposure.
- Fixed reactive fetching when using inversed links
- Optimized creating link for _id only, by fetching the object with the storage field only
- Added restrictFields in the exposure module to easily restrictFields
- Fixed exposure bug for static fetching
- Exporting useful components that allow you to customly build your data graph
- Index for meta will now only index _id
- You can now perform actions from the inversed links
- Added autoremove support to cascade delete links.
- When adding/setting objects that have no _id defined, it automatically inserts them into the database and makes the link.
- Added ability to chain link methods that affect the data
- Added ability to index the added links.
- Added $all special field, which will retrieve all the possible fields unless it's secured in exposure.
Simplified subscription and decided to keep "linkStorageFields" in the response.
Bug fixes + Updated documentation
First release.