NamePath renamed to Path
Added support auxiliary data.
- NamePath renamed to Path.
- Field.path renamed to pathName.
- Field.path renamed to path.
Added support auxiliary data.
Added numbering support so that array indices can be shown in a display format when generating labels.
Added support auxiliary data.
Added support auxiliary data.
Added support for white label systems. See Tyr.config().
Added support for Services.
Added support for Collection.migratePatchToDocument().
Added support for conditional fields.
Added support for capitalized names in Tyr.collections permitting use of destructuring assignment.
For example, you can now write
const { Depot, Train } = Tyr.collections;
instead of
const Depot = Tyr.byName.depot; const Train = Tyr.byName.train;
This works on both the client and the server. The existing syntax is also still supported.
See the Units Guide for more information.
Added support for database migrations.
Added additional support to convert Tyranid Documents to POJO objects that is also available in the client API.
Tyranid has been updated to Node 8. This includes generating native ES2017 code (including native async functions).
Unfortunately we had to remove the plugin system since it was based on a library which was incompatible with Node 8's native async functions. However, the Event system provides the same hooks for plugging into Tyranid.
Links can now be optional. See optional links for discussion and an example.
Added support for find events that can mutate documents coming out of reads (see example).
Adding counting methods and options. All of the counting functionality is also supported in the client.
Documented previously-undocumented Timer class.
Added additional metadata to field types.
Added support for clients to subscribe to updates in data to support live updating of data on clients. See Subscriptions.
Added datetime and time built-in data types to complement the existing date type.
Added a "fromClient" hook that can be defined for collections
Tyranid instances will now auto-join a local Tyranid cluster and Tyranid events can now be sent cluster-wide.
You can now mark fields as being deprecated.
Added historical asOf option to most query methods that support population, allowing you to query a tree of documents that are all $asOf()'d the same date.
Added Collection.references() method which can be used to find all references to an id or a list of ids.
See client options for more information.
Added ability to define pre-defined projections and enhanced the fields syntax to support pre-defined projections and projection merging. See Projections.
Enhanced Document.$toClient() to support an options object which provides further control on how the toClient processing is performed.
Array paging (using the new Document.$slice() method) provides a way to page large embedded arrays inside large documents down to the client without having to send down the entire document. You can sort, filter, skip, limit, and populate the embedded array just like querying top-level documents.
Advanced population projection syntax is now supported (was silently ignored before).
Adds support for historical data to Tyranid.
This allows you to place specific collections onto alternate servers to help distribute the load.
See Tyr.validate() for an example.
You can now use ES2015 functionality in code that will be used on the client (it will be transformed into ES5 via babel) and the code generated by tyranid (at /api/tyranid) is now by default minified.
Added various async utilities functions.
Permissions values used by Tyranid are now configurable.
Tyranid is switching from the promised-mongo to the native MongoDB library now that it supports promises.
Added Collection.links() method to search for a list of links between collections.
Added relate option to Field defs. This allows you to specify the relationship between links. See Links for more information.
Added a Component mixin interface for Tyranid to facilitate extensions and plugins.
Collections are also Components, so you can use component hooks when defining your collections.
Also added a Secure mixin interface that permits client to plug in security rules.
Added an isomorphic logging system that can log to the client console, the server console, and/or the database log collection. See Log for more information.
Added a new Collection.mixin() method that can add additional fields to an existing collection. This is useful for adding additional metadata to builtin Tyranid collections. See Mixins for more information.
Added support for continuation local storage -- an equivalent to thread local storage for async node.js.
Added ability to efficiently query an array of UIDs.
In addition to specifying a fields property on objects, you can now also specify a keys and of property for them as well to indicate that the object is a map. See Maps for more information.
The general strategy going forward is to try to leave def untouched and to store compiled def information on the containing class (i.e. Collection, Field, Type, ...). This is easier to use (field.X instead of field.def.X) and also keeps the original unprocessed raw def value around for later inspection.
Tyranid now supports units of measure. Units of measure are an important piece of metadata to keep track of. For example, knowing that a field is a double containing kilometers has a lot more meaning than simply knowing it is a double.
See the Units Guide, Units, and Unit for more information.
Collections have a new boot() hook method can be used to bootstrap your collection.
Field objects now have
NamePath objects now have
defaultValue can now take a function for dynamic defaults.
Collection.fromClientQuery() method added which allows MongoDB queries created on the client to be usable on the server in MongoDB queries.
Collection.idToLabel() method added, available on the client and server.
NamePath support added.
NamePath can now also parse denormalized paths.