Bugfixes:
RxLocalDocument.$
emitted to often on changes #2471
Other:
Features:
Bugfixes:
- wrong key handling on compound indexes #2456 Thanks @dome4
- Nested
$or
queries where broken when they used the primaryKey in the selector
Other:
- Upgraded pouchdb to
7.2.2
- Upgraded typescript to
3.9.7
Features:
- Add cache-replacement-policy for the QueryCache
- GraphQL replication async modifier function #2367
Bugfixes:
- GraphQL replication run increasing requests when offline #2336
Features:
- Added (beta)
RxCollection.findByIds()
to get many documents by their id with a better performance.
Other:
- Added typings for
pouch.allDocs()
Bugfixes:
ref
-fields must be nullable #2285 Thanks @kunal15595- RxDatabase names can no longer end with a slash #2251 which breaks the server plugin.
Other:
- Added
"sideEffects": false
to all plugins
Features:
RxDatabase.server()
does now acceptpouchdbExpressOptions
to set the log file and other stuff configured on express-pouchdb
Bugfixes:
- prepareQuery should handle all comparison operators #2213 Thanks @kunal15595
Other:
- Added webpack tree shaking optimization via
sideEffects: false
9.0.0 (16 May 2020) BREAKING read the announcement
Features:
- Added
RxQuery.exec(throwIfMissing: true)
- Added helper functions to GraphQL replication to generate GraphQL Schemas from the
RxJsonSchema
Bugfixes:
- GraphQL replication plugin fires exponentially #2048
- When a
default
is set in the schema, the default values are also applied afteratomicUpdate()
andatomicSet()
Breaking:
- Indexes are now specified at the top-level of the schema-definition. #1655
- Encrypted fields are now specified at the top-level of the schema-definition
- Removed all default exports. Please only import the stuff that you really need.
- Renamed
RxDB.create()
tocreateRxDatabase()
- Renamed
removeDatabase()
toremoveRxDatabase()
- Renamed
plugin()
toaddRxPlugin()
- Replaced plugins
error-messages
andschema-check
with dev-mode - Moved data migration from core to migration plugin
- Replaced key-compression implementation with jsonschema-key-compression
- Renamed
RxDatabase.queryChangeDetection
toeventReduce
and set default totrue
(no beta anymore) - Change
.find()
and.findOne()
to acccept a full MangoQuery withsort
andlimit
instead of just the selector - Chained queries like
collection.find().where('x').eq('foo')
moved out of the core module into the query-builder plugin - The internal
hash()
function does now use a RxDB specific salt - Change default of
RxDocument().toJSON(withRevAndAttachments)
tofalse
- Refactored
RxCollection
- Creating a collection will no longer emit an
RxChangeEvent
- Removed
RxCollection.docChanges$()
because all events are from the docs - Renamed
RxSchema.jsonID
toRxSchema.jsonSchema
- Moved remaining stuff of leader-election from core into the plugin
- Merged multiple internal databases for metadata into one
internalStore
- In dev-mode, the GraphQL-replication will run a schema validation of each document that comes from the server
Other:
- Removed many runtime type checks that now should be covered by typescript in buildtime
- The GraphQL replication is now out of beta mode
Docs:
- Removed examples for
require()
CommonJS loading
Other:
Features:
Other:
- Upgraded PouchDB and other dependencies
Other:
- Added a new example for electron with the remote API. Thanks @SebastienWae
- Fixed Typing error on
database.dump()
#1754. Thanks @PVermeer
Bugfixes:
- Updates to documents fail with GraphQL replication. #1812. Thanks @gautambt
RxQuery.doesDocumentDataMatch()
was wrong on queries with$and
which lead to a wrong result with QueryChangeDetection
Other:
- Improved performance of
QueryChangeDetection
by using array-push-at-sort-position instead of re-sorting the whole results of a query - Improved performance by removing unnecessary calls to deep-clone
Features:
- Added
RxCollection.bulkInsert()
Bugfixes:
- Fix replication of migrated schemas in the server plugin
Bugfixes:
- GraphQL replication sometimes not pushes when a big amount of documents has been pulled before
- Fixed typings of PouchdbReplicationOptions
Other:
- Upgrade pouchdb to
7.1.1
- Refactor some internals
Other:
- Json-Import now uses
bulkDocs
for better performance - Refactored prototype merging so it can be optimised later
- Moved some check into the check-plugin to optimize production build size
- Refactor schema-validation-plugins since sub-path validation is no longer needed
Features:
- RxDB server can now be used with an existing express-app. #1448 Thanks @dstudzinski
- Wrapped pouchdb conflict error into
RxError
Other:
- Fixed typings of
RxError
parameters - Fix GraphQL-example to propper use Websocket-Pub-Sub
Migrated to typescript.
- Fixed import of
@types/pouchdb-core
and@types/pouchdb-find
Bugfixes:
- Fixed typings of
preCreateRxCollection
#1533 Thanks @yanshiyason
Migrated to typescript.
Features:
- Add ability to use
server
app as a part of bigger Express app #1448 Thanks @dstudzinski
Bugfixes:
- custom server path not working on
server
-plugin #1447 Thanks @dstudzinski - Fix CORS headers when the request's credentials mode is 'include' #1450 Thanks @dstudzinski
Other:
- Improved
QueryChangeDetection
to not run on irrelevant changes
Bugfixes:
- Fix imports of encryption-plugin to work with rollup #1413 Thanks @kenshyx
- Removed
express-pouchdb
from the dependencies #884
Features:
- Added
RxQuery.doesDocumentDataMatch()
read the docs
Bugfixes:
- Attachments not working in electron renderer with IndexedDb adapter #1371 Thanks @rixo
- json export/import not working when a document has attachments #1396 Thanks @rixo
Other:
- Improved performance of query-change-detection by reusing the result of
massageSelector
Features:
- Added a plugin for GraphQL-replication
Bugfixes:
Features:
Bugfixes:
Typings:
- ADD typings to access the
PouchSyncHandler
ofRxReplicationState
Bugfixes:
- Vue devtools broke the application #1126
Typings:
RxDocument.getAttachment()
andRxDocument.allAttachments()
did not return promises- ADD RxJsonSchema generic for better TypeScript experience
Bugfixes:
- Server-plugin did not work with absolute paths and leveldb
- Vue threw
get is not a function
when a RxDocument was added to a component's state RxDocument.allAttachments()
did throw an error when the document has noRxAttachment
RxDocument.toJSON(false)
does no longer return the_attachments
attribute
Bugfixes:
- Fix creating a collection mutates to arguments object #939
- Fix not having optional encrypted fields in a document throws an error #917
Features:
RxDocument().toJSON()
can be called with.toJSON(false)
and then returns not_rev
attribute
Bugfixes:
- (typings) Fix
additionalProperties: boolean
is allowed for nested objects - (typings) Fix
RxQuery().toJSON()'
was missing
Bugfixes:
- Calling
remove()
on a deleted RxDocument should return a rejected promise #830 - Passing
auto_compaction
to a collection did not work via gitter util
missing in react-native #890
Bugfixes:
- Updated the dependencies with some bugfixes
Bugfixes:
- Reopening a database after using the wrong password did not work #837
Features:
Bugfixes:
Bugfixes:
- Does not compile in TypeScript with strict flag enabled #448
8.0.0 (18. September 2018) BREAKING read the announcement
Breaking:
- Upgraded to pouchdb 7.0.0
disableKeyCompression
is renamed tokeyCompression
which defaults tofalse
RxDatabase.collection()
now only accepts the json-schema as schema-attribute- It is no longer allowed to set required fields via
required: true
, userequired: ['myfield']
in compliance with the jsonschema standard - QueryChangeDetection is not enabled in the RxDatabase-options
queryChangeDetection: true
- Setters and
save()
are only callable on temporary documents - Removed
RxDocument.synced$
andRxDocument.resync()
- Middleware-Hooks now have
plainJson
as first parameter andRxDocument
-instance as second - Typings have been modified, see
postCreateRxDocument
-hooks will not be awaited if they are async
Features:
- Added
RxDocument.atomicSet()
- Added
RxCollection.awaitPersistence()
for in-memory-collections - Added
RxReplicationState.denied$
#763 - Added option for CORS to server-plugin
this
-scope of collection-hooks are bound to the collection itself #788- All methods of
RxDocument
are bound to the instance #791 - Added
RxReplicationState.alive$
, see. Thanks @rafamel
Bugfixes:
- checkAdapter doesn't cleanup test databases #714
- inMemory collections don't implement static methods #744
- inMemory collections do not sync up removals #754
- Ensure
final
fields cannot be changed onRxDocument.atomicUpdate()
andRxDocument.update()
- Fixed a missing dependency on the server-plugin
Other:
- cross-instance communication is now done with https://github.com/pubkey/broadcast-channel (way better performance)
- Upgrade to eslint 5 (no more babel-eslint)
- Upgrade to babel7
- Refactored
plugins/replication/.watchForChanges()
to fix sometimes-breaking-test withRxReplicationState.complete$
- Split
RxCollection.watchForChanges()
into own plugin - Refactored
RxQuery
Bugfixes:
- newRxError is not a constructor #719 thanks @errorx666
- Collection name validation is too strict #720 thanks @errorx666
- Field names can't be one character long #717 thanks @errorx666
- Invalid value persists in document after failed update #734 thanks @rybaczewa
Other
- Moved
@types/core-js
to dev-dependencies #712 - Added more example the the RxQuery-Docs #740 thanks @Celludriel
Bugfixes:
- Indexes do not work in objects named "properties" #697
- Wrong pouch-location when folderpath used for collection #677
- Mutating a result-array from
RxQuery.exec()
orRxQuery.$
does not affect future calls #698#issuecomment-402604237
Other:
- Updated Angular-Example to 6.0.5 Thanks @fuerst
Bugfixes:
- Unhandled promise rejection with DOMException #644
- Prevent bug with replication of internal pouchdb's #641
- LocalDocument observe on field not working #661
- Skip defining getter and setter when property not defined in schema #646
- (typings) Fix
type: 'object'
not correctly recognized (via gitter at 2018 Mai 22 19:20)
Bugfixes:
- Query cache is not being invalidated by replication #630
Other:
- Updated to rxjs 6.0.0
- Added integration tests for couchdb
Bugfixes:
Other:
- Fixed typings for
additionalProperties
in schemas - Added performance-tests
- Removed workarround for pouchdb#6733
Typings:
- Added optional type for ORM-Methods
Features:
- Added
RxCollection.insert$
,RxCollection.update$
,RxCollection.remove$
read the docs
Other:
- Added
dangerousRemoveCollectionInfo()
for migrations over rxdb-versions. - Improved typings for
RxChangeEvent
Bugfixes:
- Wrong index used when no sort specified #609
Other:
- Improved typings of
RxChangeEvent
thx @hubgit
Bugfixes:
- Sort by sub object is not working #585
- Encrypted attachments not working inside of electron-renderer #587
- Schema fails with sub-sub-index #590
- Default value not applied when the stored value is
undefined
#596
Bugfixes:
- Wrong typings with custom build #576
Features:
Bugfixes:
- Remove preinstall-script #558 thx @adam-lebon
Features:
- Added
RxDatabase.server()
to quickly spawn couchdb-compatibe endpoint out of RxDB. Read this - Use
CustomIdleQueue
for atomic updates to enable #494
Bugfixes:
Other:
- Update to pouchdb version 6.4.3
- Improve performance by using the profiler
- Added typings for internal
pouchdb
-instance
Features:
- Upgraded to pouchdb 6.4.2. Read this
Typings:
- Fix
RxCollection.findOne()
can returnnull
Other:
- Improved react-native-example thx @Darkbladecr
Bugfixes:
Features:
- Added ajv-validate-plugin. Thx @rybaczewa
Bugfixes:
- inMemory() throws error when using primary-key #401
Other:
- Update to pouchdb 6.4.0
- Optimize socket-pull by comparing internal last-change-time
- do not hide fields with
value: undefined
in error-message #403
Warning:
- Removed automatic import of
pouchdb-adapter-memory
for in-memory-collections. Read this
Features:
- Added options-parameter
- Added
postCreateRxDocument
plugin-hook - Added no-validate-plugin
- Added typings for
RxPlugin
Bugfixes:
- Query-Cache not used when declaring queries without mango-chain
Other:
- Do not throw errors if the same plugin is added multiple times
- Allow getting the collection via
RxDatabase().collection(name: string)
- Allow recreating the collection with different schema, if it has no documents
- Split out error-messages into separate own plugin
Bugfixes:
- Error on key-compression when nested value is null
- Fix typings of
RxDocument.putAttachment()
Other:
- Reduced build-size by using rxjs-lettable-operators. Read this if you have problems.
- Improved typings #368 thx @FlorianKoerner
Bugfixes:
- Include
pouchdb-adapter-memory
as dependency #365
Breaking:
Features:
- Added attachments
- Added final fields
- Added inMemory-collections
- Added local documents
Bugfixes:
- Added error-message when you json-import on a non-existing collection #319
- Allow windows-foldernames (with backslash) as collection-name 343
Other:
- Split out idle-queue into own npm-module
- Enfore usage of strict-equality via eslint
- Fix
core is not defined
#296
Breaking:
- Filenames are now kebab-case
pouchdb-replication
-plugin is now imported by default, do not import it by your own.RxDB.create()
throws if you create the same database twice. (You can use ignoreDuplicate)
Features:
- Added RxDatabase.requestIdlePromise()
- Added RxDB.checkAdapter()
- Added ignoreDuplicate-parameter to
RxDB.create()
Custom-Build:
- Custom-build is now out of beta
- If you use a custom-build, you have to change the import-paths. See custom-build
- Replication is now its own module see
- Json import/exportis now its own module see
Bugfixes:
- Allow null-selector #267
RxQuery.exec()
throws when out of change-event-buffer-bounds #278- Fix deprecated warning that sometimes occurs with indexeddb-adapter
db.type()
- Add fallback to leader-election when unload not works (mostly when you use RxDB inside of an iFrame)
Other:
- Use
RxError
-class to throw Custom errors with theparameters
-attribute - Optimize leader-election to not waste resources when many tabs open
- Optimize schema-parsing when multiple collections have the same schema
- Reduced build-size by only using async/await if it makes sense
- Pre-Parse schema to validator when requestIdleCallback available
- Optimize socket-cleanup by using
requestIdlePromise
- Added plugin-hook for
preCreatePouchDb
Features:
- Added custom builds
- Added plugin-support
- Added default exports. Use
import RxDB from 'rxdb'
instead ofimport * as RxDB from 'rxdb'
Bugfixes:
RxQuery.or()
did not work with KeyCompression #252
Quickfix because of new pouchdb-import
Features:
- Added RxCollection.atomicUpsert
- Added default values
- Added generic typings so it's easier to be extended see
Other:
- Split out test-util into its own npm-module async-test-util
- Upgrade to pouchdb version 6.3.4
Bugfixes:
- Settings values to
null
did not work on temporaryDocuments #215 RxDocument.atomicUpdate()
did not run when reusing after a whileRxQuery.toString()
was sometimes not predictable
WARNING: If you use RxDB with angular2||zone.js, you might have the error _global is not defined. Wait for the next zone.js release before updating RxDB.
Features:
- Added instanceOf-checks
Bugfixes:
- AutoMigrated caused infinity-loop #212
- Minor bugs on the typings
Other:
- Use requestIdleCallback on non-prio-tasks for better performance on browsers
- Optimise socket-pull-intervall to not waste resources on slow devices
- split out test-util from util to optimize build-size
- remove lodash completely
Features:
- Added
RxDocument.atomicUpdate()
docs - Added
RxCollection.remove()
docs - Added
RxDatabase.remove()
docs - Added options for
RxCollection.sync()
: direction and pouchdb-replication-settings docs - Added query-param for
RxCollection.sync()
to allow selector-based replication docs - Added TemporaryDocuments
RxCollection.newDocument()
docs
Breaking:
postCreate
-hooks can no longer be asyncRxCollection.sync()
completely changed docs
Other:
- Added .babelrc to .npmignore
- Added build-tests to travis
Features:
- Added
postCreate
-hook #165 - Added
RxQuery.update()
andRxDocument.update()
#143 Thanks @lgandecki
Bugfixes:
Other:
- Throw error if
RxQuery.sort()
runs on field which is not in the schema #146 - extract
watchForChanges
to allow custom sync-operations #197 - Added travis-ci
Bugfixes:
- Ensure es6-build does not contain es7-features
- Ensure everything works after using UglifyJs
Bugfixes:
jsnext:main
andmodule
now point to es6 instead of es7-stage-0 commit issue- Sort on primary fails without non-id primary commit
- QueryChangeDetection breaks on no-resort-optimisation commit
Breaking:
- RxQuery's are now immutable
- RxQuery.$ does not emit
null
when running - RxQuery will sort by primary (ASC) as default
Features:
- Added QueryChangeDetection (in beta, disabled by default)
Other:
- upgraded to pouchdb v6.2.0
- re-executing queries while nothing happend to the collection, is now fetched
Bugfixes:
findOne().$
did not havelimit:1
findOne(string).$
streams all documents when_id
as primary
Bugfixes:
- Fixed es6-imports for webpack-builds
Features:
- Population can now be done on arrays
Other:
- improved typings
Bugfixes:
- overwrites default selector on
RxQuery.sort()
Other:
- Refactor RxQuery for better performance
- Refactor mquery for smaller build
- More tests for RxQuery
Bugfixes:
- Vuejs runs populate-getter on changedetection #75
isDeepEqual
does not work correctly for Arrays #76- wrong
storageEngine
in the typings
Features:
- Added RxDocument.deleted
- Added RxDocument.synced
- moved from jsonschema to is-my-json-valid
Bugfixes:
- No error on sync when remote document is deleted 680f75bfcbda3f71b6ba0a95ceecdc6b6f30ba58
Bugfixes:
- compound-index not being created #68
Bugfixes:
- new document does not get new state on remove-reinsert #66
Features:
- added DataMigration
- added ORM/DRM-capabilities
- added RxQuery.remove()
- added Population
- added RxDocument.deleted$
- added RxDocument.synced$
- added RxDocument.resnyc()
- added RxCollection.upsert()
- non-top-level-indexes are now allowed
RxQuery.sort()
now works on non-top-level-indexes
Bugfixes:
- running
RxDocument().save()
twice did not work
Breaking:
- Collection-names must match
^[a-z][a-z0-9]*$
Fixes #45 - RxDB.create has new api with destructuring see
- RxDatabase.collection() has new api with destructuring see
- schema-fieldnames must match the regex:
^[a-zA-Z][[a-zA-Z0-9_]*]?[a-zA-Z0-9]$
RxDatabase.collection()
only to create collection, usemyDatabase.heroes
to get existing oneRxDB.create()
multiInstance is now true by defaultrxjs
andbabel-polyfill
are now peerDependencies
Features:
- possibility to add
pouchSettings
when creating a collection - typings compatible with
noImplicitAny
Typescript projects
Bugfixes:
- top-level array of document not working #50
- event on document.remove() not fired at query-obserable #52
Features:
- save full schema in internal database once
Bugfixes:
- Throw when .findOne() is called with number or array
- ADD babel-polyfill to dependencies #40
Bugfixes:
- Throw when .regex() is used on primary
Refactor:
- Because IE11 does not support the Proxy-Object, defineGetter/Setter is now used
- Tests now run in all installed browsers
Bugfixes:
- Fixed tests for IE11
Features:
- key-compression for better space-usage
Breaking:
- schema-objects are now normalized (order alphabetic) before hashing
- RxQuery.select() is removed since it has no better performance than getting the whole document
- RxChangeEvent on sockets do no longer contain the documents-data for performance-reason
- RxQuery.$ only emits when the result actually changes #31
Bugfixes:
- console.dir on RxDocument now works
Features:
Features:
- add middleware-hooks
Bugfixes:
- direct import 'url'-module for react native
Features:
- refactor socket to save db-io
- wrap BroadcastChannel-API
- added leader-election
- sync() will only start if db is leader
Bugfixes:
- cleanup all databases after tests
- remove broken builds from dist-folder