πŸ”„ A realtime Database for JavaScript Applications

Overview

RxDB

A realtime Database for JavaScript Applications

RxDB (short for Reactive Database) is a NoSQL-database for JavaScript Applications like Websites, hybrid Apps, Electron-Apps, Progressive Web Apps and NodeJs. Reactive means that you can not only query the current state, but subscribe to all state changes like the result of a query or even a single field of a document. This is great for UI-based realtime applications in way that makes it easy to develop and also has great performance benefits. To replicate data between your clients and server, RxDB provides modules for realtime replication with any CouchDB compliant endpoint and also with custom GraphQL endpoints.

follow on Twitter


reactive.gif


Features
πŸ’» πŸ“± Multiplatform support for browsers, nodejs, electron, cordova, react-native and every other javascript-runtime
πŸ“¨ Reactive data-handling based on RxJS
🚣 Offline first let your app still work when the users has no internet
πŸ”„ Replication between client and server-data, compatible with pouchdbPouchDB, couchdbCouchDB and cloudantIBM Cloudant. There is also a plugin for a GraphQL replication
πŸ“„ Schema-based with the easy-to-learn standard of json-schema
🍊 Mango-Query exactly like you know from mongoDB and mongoose
πŸ” Encryption of single data-fields to protect your users data
πŸ“€ πŸ“₯ Import/Export of the database-state (json), awesome for coding with TDD
πŸ“‘ Multi-Window to synchronise data between different browser-windows or nodejs-processes
πŸ’… ORM-capabilities to easily handle data-code-relations and customize functions of documents and collections
πŸ”· Full TypeScript support for fast and secure coding (Requires Typescript v3.8 or higher)

Platform-support

RxDB is made so that you can use exactly the same code at

We optimized, double-checked and made boilerplates so you can directly start to use RxDB with frameworks like

Quickstart

Installation:

npm install rxdb --save

# peerDependencies
npm install rxjs --save

Import:

import { createRxDatabase } from 'rxdb';
const db = await createRxDatabase({
    name: 'heroesdb',
    adapter: 'indexeddb',
    password: 'myLongAndStupidPassword' // optional
  });                                                       // create database

await db.collection({name: 'heroes', schema: mySchema});    // create collection
db.heroes.insert({ name: 'Bob' });                          // insert document

Feature-Showroom (click to toggle)

Mango-Query

To find data in your collection, use the mquery api to create chained mango-queries, which you maybe know from mongoDB or mongoose.

myCollection
  .find()
  .where('name').ne('Alice')
  .where('age').gt(18).lt(67)
  .limit(10)
  .sort('-age')
  .exec().then( docs => {
    console.dir(docs);
  });
Reactive

RxDB implements rxjs to make your data reactive. This makes it easy to always show the real-time database-state in the dom without manually re-submitting your queries.

db.heroes
  .find()
  .sort('name')
  .$ // <- returns observable of query
  .subscribe( docs => {
    myDomElement.innerHTML = docs
      .map(doc => '<li>' + doc.name + '</li>')
      .join();
  });

reactive.gif

MultiWindow/Tab

When two instances of RxDB use the same storage-engine, their state and action-stream will be broadcasted. This means with two browser-windows the change of window #1 will automatically affect window #2. This works completely offline.

multiwindow.gif

Replication

Because RxDB relies on glorious PouchDB, it is easy to replicate the data between devices and servers. And yes, the changeEvents are also synced.

sync.gif

Schema

Schemas are defined via jsonschema and are used to describe your data.

const mySchema = {
    title: "hero schema",
    version: 0,                 // <- incremental version-number
    description: "describes a simple hero",
    type: "object",
    properties: {
        name: {
            type: "string",
            primary: true       // <- this means: unique, required, string and will be used as '_id'
        },
        secret: {
            type: "string",
        },
        skills: {
            type: "array",
            maxItems: 5,
            uniqueItems: true,
            item: {
                type: "object",
                properties: {
                    name: {
                        type: "string"
                    },
                    damage: {
                        type: "number"
                    }
                }
            }
        }
    },
    required: ["color"],
    encrypted: ["secret"] // <- this means that the value of this field is stored encrypted
};
Encryption

By setting a schema-field to encrypted, the value of this field will be stored in encryption-mode and can't be read without the password. Of course you can also encrypt nested objects. Example:

{
  "title": "my schema",
  "properties": {
    "secret": {
      "type": "string",
      "encrypted": true
    }
  },
  "encrypted": [
    "secret"
  ]
}
Level-adapters

The underlying pouchdb can use different adapters as storage engine. So you can use RxDB in different environments by just switching the adapter. For example you can use websql in the browser, localstorage in mobile-browsers and a leveldown-adapter in nodejs.

// this requires the indexeddb-adapter
RxDB.plugin(require('pouchdb-adapter-idb'));
// this creates a database with the indexeddb-adapter
const database = await RxDB.create({
    name: 'mydatabase',
    adapter: 'indexeddb' // the name of your adapter
});

There is a big ecosystem of adapters you can use.

Import / Export

RxDB lets you import and export the whole database or single collections into json-objects. This is helpful to trace bugs in your application or to move to a given state in your tests.

// export a single collection
const jsonCol = await myCollection.dump();

// export the whole database
const jsonDB = await myDatabase.dump();

// import the dump to the collection
await emptyCollection.importDump(json);


// import the dump to the database
await emptyDatabase.importDump(json);
Leader-Election

Imagine your website needs to get a piece of data from the server once every minute. To accomplish this task you create a websocket or pull-interval. If your user now opens the site in 5 tabs parallel, it will run the interval or create the socket 5 times. This is a waste of resources which can be solved by RxDB's LeaderElection.

myRxDatabase.waitForLeadership()
  .then(() => {
      // this will only run when the instance becomes leader.
      mySocket = createWebSocket();
  });

In this example the leader is marked with the crown β™›

reactive.gif

Key-Compression

Depending on which adapter and in which environment you use RxDB, client-side storage is limited in some way or the other. To save disc-space, RxDB uses a schema based keycompression to minimize the size of saved documents. This saves about 40% of used storage.

Example:

// when you save an object with big keys
await myCollection.insert({
  firstName: 'foo'
  lastName:  'bar'
  stupidLongKey: 5
});

// key compression will internally transform it to
{
  '|a': 'foo'
  '|b':  'bar'
  '|c': 5
}

// so instead of 46 chars, the compressed-version has only 28
// the compression works internally, so you can of course still access values via the original key.names and run normal queries.
console.log(myDoc.firstName);
// 'foo'
EventReduce

One big benefit of having a realtime database is that big performance optimizations can be done when the database knows a query is observed and the updated results are needed continuously. RxDB internally uses the Event-Reduce algorithm. This makes sure that when you update/insert/remove documents, the query does not have to re-run over the whole database but the new results will be calculated from the events. This creates a huge performance-gain with zero cost.

Use-Case-Example

Imagine you have a very big collection with many user-documents. At your page you want to display a toplist with users which have the most points and are currently logged in. You create a query and subscribe to it.

const query = usersCollection.find().where('loggedIn').eq(true).sort('points');
query.$.subscribe(users => {
    document.querySelector('body').innerHTML = users
        .reduce((prev, cur) => prev + cur.username+ '<br/>', '');
});

As you may detect, the query can take very long time to run, because you have thousands of users in the collection. When a user now logs off, the whole query will re-run over the database which takes again very long.

anyUser.loggedIn = false;
await anyUser.save();

But not with the EventReduce. Now, when one user logs off, it will calculate the new results from the current results plus the RxChangeEvent. This often can be done in-memory without making IO-requests to the storage-engine. EventReduce not only works on subscribed queries, but also when you do multiple .exec()'s on the same query.

Getting started

Get started now by reading the docs or exploring the example-projects.

Contribute

Check out how you can contribute to this project.

Follow up

  • Follow RxDB on twitter to not miss the latest enhancements.
  • Join the chat on gitter for discussion.

Thank you

A big Thank you to every contributor of this project.

License

Apache-2.0

Comments
  • Unable to store blob type attachments in Electron

    Unable to store blob type attachments in Electron

    Case

    bug

    Issue

    I've got an error when trying to store an attachment in electron renderer process, with pouchdb adapter.

        file: Pick<File, 'name' | 'type'> & { blob: Blob }
    
        await putAttachment(
                  {
                    id: file.name,
                    data: file.blob,
                    type: file.type,
                  },
                  true
                );
    

    Throws:

    Uncaught (in promise) TypeError [ERR_INVALID_ARG_TYPE]: The first argument must be of type string 
    or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object. Received an instance of Blob
    

    Versions

        "pouchdb-adapter-leveldb": "^7.2.2",
        "rxdb": "^9.12.1",
        "electron": "^11.1.1",
    

    Info

    • Environment: electron
    • Adapter: pouchdb
    • Stack: Typescript,React

    Code

    After I see the source code, problem in this method, Buffer.from can't accept a Blob parameter.

      createBlobBuffer: function createBlobBuffer(data, type) {
        var blobBuffer;
    
        if (_util__WEBPACK_IMPORTED_MODULE_3__.isElectronRenderer) {
          // if we are inside of electron-renderer, always use the node-buffer
          return Buffer.from(data, {
            type: type
          });
        }
      /* ... */
    

    And it is impossible to encrypt the blob type attachments, JSON.stringify also can't accept a Blob parameter.

    var _encryptValue = function _encryptValue(value) {
      return encrypt(JSON.stringify(value), this.password);
    };
    
    opened by Wuchv 35
  • RxDatabase.create(): Adapter not added. Use RxDB.plugin(require('pouchdb-adapter-[adaptername]');

    RxDatabase.create(): Adapter not added. Use RxDB.plugin(require('pouchdb-adapter-[adaptername]');

    Case

    🐞 BUG, but I don't know where 😭

    Issue

    RxDatabase.create(): Adapter not added. Use RxDB.plugin(require('pouchdb-adapter-[adaptername]');

    I'm trying to create a service which will handle all database stuff. When I'm using the database service I keep getting an error message telling me that IndexedDB adapter is not imported as PouchDB plugin. I have tried with WebSQL adapter and it works with a warning message telling me to use IndexedDB adapter because it will be deprecated soon.

    Info

    • Environment: Browser
    • Adapter: IndexedDB
    • Stack: Typescript, Angular

    Code

    import { Injectable } from '@angular/core';
    import { Logger } from '@nsalaun/ng-logger';
    
    import * as RxDB from 'rxdb';
    import * as PouchDBAdapterWebSQL from 'pouchdb-adapter-websql';
    import * as PouchDBAdapterIdb from 'pouchdb-adapter-idb';
    
    RxDB.plugin(PouchDBAdapterWebSQL);
    RxDB.plugin(PouchDBAdapterIdb);
    
    @Injectable()
    export class DatabaseService {
      private _database: RxDB.RxDatabase;
    
      constructor(private logger: Logger) {
        this.initDatabase();
      }
    
      private async initDatabase(): Promise<any> {
        this._database = await RxDB.create({
          name: 'seristdb',
          multiInstance: true,
          adapter: 'idb'
        });
    
        this._database.$.subscribe(event => this.logger.debug(event));
      }
    }
    

    Screenshots

    error

    iOS 
    opened by igorissen 32
  • ANNOUNCEMENT: The plans for the next major release

    ANNOUNCEMENT: The plans for the next major release

    Hello everyone. Atm I am planning the next major release where I want to change some breaking things.

    The list of changes is maintained here: https://github.com/pubkey/rxdb/blob/master/orga/before-next-major.md Notice that not everything in this list will be in the next major release, it depends on how much time I have.

    Please check the list and make pull requests with other changes you want to see. Also I would be good to see some opinions here and I will answer open questions of course.

    ANNOUNCEMENT :scream: 10.0.0 
    opened by pubkey 31
  • Unexpected token: keyword (function) UglifyJs

    Unexpected token: keyword (function) UglifyJs

    hi author, i trying to use rxdb with vuejs + cordova ( quasar framework ) but when build this bug happend.

    ERROR in js/0.bcc8ac658f5ce5687243.js from UglifyJs
    Unexpected token: keyword (function) [js/0.bcc8ac658f5ce5687243.js:590,6]
    

    more detail i posted here: https://github.com/quasarframework/quasar/issues/573 this error make app can not run on mobile cordova, please help !

    opened by lyquocnam 31
  • ANNOUNCEMENT: Please help testing 8.0.0-beta.9

    ANNOUNCEMENT: Please help testing 8.0.0-beta.9

    Hello everybody. Today I released [email protected] with improvements and changes.

    The focus of the new version lays on better defaults and better performance.

    Please help testing the new version by installing it via npm i [email protected] and report any bugs you may find.

    What has changed?:

    Every change in the current beta is still changeable and you are invited to discussion. If you have any other proposals for breaking changes, please speak now or hold your peace until the next major release.

    EDIT: Released 8.0.0-beta.2 EDIT: Released 8.0.0-beta.3 EDIT: Released 8.0.0-beta.4 EDIT: Released 8.0.0-beta.5 EDIT: Released 8.0.0-beta.6 EDIT: Released 8.0.0-beta.7 EDIT: Released 8.0.0-beta.8 EDIT: Released 8.0.0-beta.9

    help wanted ANNOUNCEMENT :scream: 8.0.0 
    opened by pubkey 28
  • Subscriber breaks with react-native and async storage

    Subscriber breaks with react-native and async storage

    Case

    I was just developing an app using rxdb and react-native, when the time came to update a record on the database, suddenly a subscription on a collection broke

    Issue

    triggering an update on document (via atomicSet or any other update operation) breaks the query response on other parts of the app

    Reproducible example:

    I've created a repo with the issue:

    https://github.com/ospfranco/rxdb-rn-bug

    to reproduce:

    1. clone and run the app: yarn, yarn ios
    2. click on add random node a couple of times, so you have some elements
    3. click on one of the ids on the list
    4. click on randomly update selected node, it will do an atomic update and all of the sudden the list of elements will be cleared, and only the selected node will remain
    react-native 
    opened by ospfranco 24
  • Fix react-native example based expo

    Fix react-native example based expo

    opened by msotnikov 22
  • RxDB automatic observe and change data in Vuex

    RxDB automatic observe and change data in Vuex

    Case

    RxDB automatic observe and change data in Vuex

    Issue

    1. Create new database, schemas, collections
    2. Insert some documents
    3. Get documents and store it into store (using Vuex)

    Error: Vuex throw error: [Vue warn]: Error in callback for watcher "function () { return this._data.$$state }": "Error: [vuex] Do not mutate vuex store state outside mutation handlers

    It looks like Rxdb always observe and automatically change the data so Vuex throw above error (conflict with Vuex)

    image

    More information: this issue didn't happen on other DB (PouchDB, Postgresql) Question: How to stop Observe in RxDB?

    Info

    • Environment: Electron
    • Adapter:LevelDB
    • Stack: VueJS, Vuex

    Code

    Line 20: store.dispatch('testplan/changeTreeViewData', result)

    import * as Database from '../../../backend/Database'
    import _ from 'lodash'
    import store from '../../store'
    
    async function getTestPlanTree () {
        var result
        const db = await Database.get();
        let categoriesCollection = await db['categories']
    	await categoriesCollection.find({
    	}).exec().then(async (categories) => {
            result = categories
            for(var i in categories){
                result[i].children = []
            }
            _.forEach(categories, async (category, index) => {
                result[index].children = await category.testsuites_
            })
        }).catch((err) => { console.log('error', err) })
        // console.log('result', result)
        store.dispatch('testplan/changeTreeViewData', result)
        return result
    }
    export default {
        getTestPlanTree
    }
    
    opened by tindecken 22
  • ANNOUNCEMENT: Try out the beta of 11.0.0

    ANNOUNCEMENT: Try out the beta of 11.0.0

    Hello. I am planning things for the next major version. I have to make a new major release because I will add some breaking changes to make it possible to run the RxStorage inside of a WebWorker. So this is your chance to include other breaking changes.

    • Breaking changes backlog: https://github.com/pubkey/rxdb/blob/master/orga/before-next-major.md
    • Normal backlog: https://github.com/pubkey/rxdb/blob/master/orga/BACKLOG.md
    • Current implemented changes for 11 https://github.com/pubkey/rxdb/blob/master/orga/releases/11.0.0.md

    I am open for any other proposals, just write a comment about them here.

    ANNOUNCEMENT :scream: 11.0.0 
    opened by pubkey 21
  • feature suggestion .update function

    feature suggestion .update function

    Hello, I've been playing with this a bit, love it!

    The functionality I'm missing is to do updates in a mongo update(matcher, changes) manner. I've built a simple solution for that stealing some code from minimongo. Would you be willing to take a PR? Or is a lack of update a design decision?

    What I'm doing now is:

    
    users.find(matchingQuery).exec().then(function (docs) {
            docs.forEach(function (doc, index) {
              const newDoc = { ...doc._data }
              modify(newDoc, setQuery);
              delete newDoc._rev;
              delete newDoc._id;
              Object.keys(newDoc).forEach((el) => {
                doc[el] = newDoc[el];
              });
              doc.save()
            });
    });
    

    setQuery can be {$set: {}}, or use $rename, $pullAll $pop $push $unset etc. modify changes the newDoc according to the setQuery.

    I'm thinking of making the modify a standalone package, that would take a doc and return a new one, that could be a dependency in rxdb, and then I'd just add a simple update method. If not needed - not a problem! I will just polish it a bit for my own use :)

    FEATURE REQUEST :pray: 
    opened by lgandecki 19
  • Getting 'Unexpected end of JSON input' exception in encryption.js

    Getting 'Unexpected end of JSON input' exception in encryption.js

    Case

    bug

    Issue

    Getting the following exception:

    encryption.js:25 Uncaught (in promise) SyntaxError: Unexpected end of JSON input
        at Object.parse (<anonymous>)
        at Crypter._decryptValue (encryption.js:25)
        at crypter.js:62
        at Array.map (<anonymous>)
        at Crypter.decrypt (crypter.js:59)
        at RxCollection._handleFromPouch (rx-collection.js:192)
        at rx-collection.js:314
        at Array.map (<anonymous>)
        at rx-collection.js:313
    

    Not exactly sure which part of my code triggers it, since the stack trace references none of my files.

    Info

    • Environment: browser
    • Adapter: IndexedDB
    • Stack: React

    Code

    Here's my schema:

    const schema = {
      title: 'User profile schema',
      description: 'Database schema for the profile of a user',
      version: 0,
      type: 'object',
      properties: {
        peerID: {
          type: 'string',
          primary: true,
        },
        handle: {
          type: 'string',
          encrypted: true,
        },    
        name: {
          type: 'string',
          encrypted: true,
        },
        location: {
          type: 'string',
          encrypted: true,
        },
        about: {
          type: 'string',
          encrypted: true,
        },
        shortDescription: {
          type: 'string',
          encrypted: true,
        },
        nsfw: {
          type: 'boolean',
          encrypted: true,
        },
        vendor: {
          type: 'boolean',
          encrypted: true,
        },
        moderator: {
          type: 'boolean',
          encrypted: true,
        },
        // Will work this in later
        moderatorInfo: {
          type: ['object', 'null'],
          encrypted: true,
        },
        contactInfo: {
          type: ['object', 'null'],
          encrypted: true,
          properties: {
            website: {
              type: 'string',
            },
            email: {
              type: 'string',
            },
            phoneNumber: {
              type: 'string',
            },
            social: {
              type: 'array',
              uniqueItems: true,
              items: {
                type: 'object',
                properties: {
                  type: {
                    type: 'string'
                  },
                  username: {
                    type: 'string'
                  },
                  proof: {
                    type: 'string'
                  },
                }
              }
            }
          }
        },
        colors: {
          type: ['object', 'null'],
          encrypted: true,
          properties: {
            primary: {
              type: 'string',
            },
            secondary: {
              type: 'string',
            },
            text: {
              type: 'string',
            },
            highlight: {
              type: 'string',
            },
            highlightText: {
              type: 'string',
            },
          }
        },
        avatarHashes: {
          type: ['object', 'null'],
          encrypted: true,
          properties: {
            tiny: {
              type: 'string'
            },
            small: {
              type: 'string'
            },
            medium: {
              type: 'string'
            },
            large: {
              type: 'string'
            },
            original: {
              type: 'string'
            },
          }
        },    
      },
      required: ['peerID', 'name']
    };
    

    Here's a dump of my db:

    {
      "name": "a0e62fc96f1ca251998d512db1353c21f008d8c071b5c46a6212f9ab8e854c1c9",
      "instanceToken": "oodzoxksdi",
      "encrypted": true,
      "passwordHash": "a76bb4891fe30596c51e410f63e42bd9",
      "collections": [
        {
          "name": "profile",
          "schemaHash": "132ae4ac54c7552c18d7e47881deca12",
          "encrypted": true,
          "passwordHash": "a76bb4891fe30596c51e410f63e42bd9",
          "docs": [
            {
              "moderatorInfo": "U2FsdGVkX1+/wnlXNw6+M43WciG7cJLSWGAMFZswKiM=",
              "contactInfo": "U2FsdGVkX18vJeCWXulo+yzOH8LZvo/116TZz2G44xg=",
              "colors": "U2FsdGVkX19NDXFNWacnl6lhnIrvWZWVj1tCbxKyuik=",
              "avatarHashes": "U2FsdGVkX19H+VaarclSvJrfKQAENQ0UNM3N/zsmBIg=",
              "name": "U2FsdGVkX1/FV1R+rnIAokULhcZJLl+gkvcstrtgzgU=",
              "shortDescription": "U2FsdGVkX19oniIoqdi2wfrzfTtooaKoVhRGIWvTDRI=",
              "handle": "U2FsdGVkX1+ZlspmtKqfPLQiQ69poS6Yus5GE6MUHt4=",
              "location": "U2FsdGVkX19RpHIltTXvMcKJIX5mAJxiHgoMLbGA+sE=",
              "about": "U2FsdGVkX184Sc8xWQSI00mE/TwlPeiZSZi9/XxGw0o=",
              "nsfw": "U2FsdGVkX1+lfcIIxHwN6vvMHUiEPCMH33ux2frXpnI=",
              "vendor": "U2FsdGVkX1+nqr63Th0KW8qdgjzrZCTC+k+ytIdye4w=",
              "moderator": "U2FsdGVkX19qmzgLZJ2lO6b51u9C85Rt8VlXWlRB9oc=",
              "peerID": "QmRHvW41Ga6wQuayQNbrhwrTghasabxwWwqmT5hrWXQLoj"
            }
          ]
        }
      ]
    }
    
    opened by rmisio 17
  • ANNOUNCEMENT: Test RxDB 14.0.0 BETA

    ANNOUNCEMENT: Test RxDB 14.0.0 BETA

    RxDB version 14.0.0 is now it beta and you should try it out. Bugs found related to the beta version, will be fixed by the maintainer. The new version will be in beta for about 4 weeks. If you have problems after the 14.0.0 non-beta release, you will have to fix them by yourself.

    https://github.com/pubkey/rxdb/blob/master/docs-src/releases/14.0.0.md

    You can find the latest beta version here: https://www.npmjs.com/package/rxdb?activeTab=versions

    ANNOUNCEMENT :scream: 14.0.0 
    opened by pubkey 4
  • Update typescript-eslint monorepo to v5 (major)

    Update typescript-eslint monorepo to v5 (major)

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | @typescript-eslint/eslint-plugin | 4.33.0 -> 5.48.0 | age | adoption | passing | confidence | | @typescript-eslint/parser | 4.33.0 -> 5.48.0 | age | adoption | passing | confidence |


    Release Notes

    typescript-eslint/typescript-eslint (@​typescript-eslint/eslint-plugin)

    v5.48.0

    Compare Source

    Features
    • eslint-plugin: specify which method is unbound and added test case (#​6281) (cf3ffdd)

    5.47.1 (2022-12-26)

    Bug Fixes

    v5.47.1

    Compare Source

    Bug Fixes

    v5.47.0

    Compare Source

    Features
    • eslint-plugin: [no-floating-promises] add suggestion fixer to add an 'await' (#​5943) (9e35ef9)

    5.46.1 (2022-12-12)

    Note: Version bump only for package @​typescript-eslint/eslint-plugin

    v5.46.1

    Compare Source

    Note: Version bump only for package @​typescript-eslint/eslint-plugin

    v5.46.0

    Compare Source

    Bug Fixes
    • eslint-plugin: [ban-types] update message to suggest object instead of Record<string, unknown> (#​6079) (d91a5fc)
    Features
    • eslint-plugin: [prefer-nullish-coalescing] logic and test for strict null checks (#​6174) (8a91cbd)

    5.45.1 (2022-12-05)

    Bug Fixes
    • eslint-plugin: [keyword-spacing] unexpected space before/after in import type (#​6095) (98caa92)
    • eslint-plugin: [no-shadow] add call and method signatures to ignoreFunctionTypeParameterNameValueShadow (#​6129) (9d58b6b)
    • eslint-plugin: [prefer-optional-chain] collect MetaProperty type (#​6083) (d7114d3)
    • eslint-plugin: [sort-type-constituents, sort-type-union-intersection-members] handle some required parentheses cases in the fixer (#​6118) (5d49d5d)

    v5.45.1

    Compare Source

    Bug Fixes
    • eslint-plugin: [keyword-spacing] unexpected space before/after in import type (#​6095) (98caa92)
    • eslint-plugin: [no-shadow] add call and method signatures to ignoreFunctionTypeParameterNameValueShadow (#​6129) (9d58b6b)
    • eslint-plugin: [prefer-optional-chain] collect MetaProperty type (#​6083) (d7114d3)
    • eslint-plugin: [sort-type-constituents, sort-type-union-intersection-members] handle some required parentheses cases in the fixer (#​6118) (5d49d5d)

    v5.45.0

    Compare Source

    Bug Fixes
    • eslint-plugin: [array-type] --fix flag removes parentheses from type (#​5997) (42b33af)
    • eslint-plugin: [keyword-spacing] prevent crash on no options (#​6073) (1f19998)
    • eslint-plugin: [member-ordering] support private fields (#​5859) (f02761a)
    • eslint-plugin: [prefer-readonly] report if a member's property is reassigned (#​6043) (6e079eb)
    Features
    • eslint-plugin: [member-ordering] add a required option for required vs. optional member ordering (#​5965) (2abadc6)

    v5.44.0

    Compare Source

    Bug Fixes
    • eslint-plugin: [no-empty-interface] disable autofix for declaration merging with class (#​5920) (a4f85b8)
    • eslint-plugin: [no-unnecessary-condition] handle index signature type (#​5912) (5baad08)
    • eslint-plugin: [prefer-optional-chain] handle binary expressions in negated or (#​5992) (2778ff0)
    • typescript-estree: don't consider a cached program unless it's specified in the current parserOptions.project config (#​5999) (530e0e6)
    Features
    • eslint-plugin: [adjacent-overload-signatures] check BlockStatement nodes (#​5998) (97d3e56)
    • eslint-plugin: [keyword-spacing] Support spacing in import-type syntax (#​5977) (6a735e1)

    v5.43.0

    Compare Source

    Bug Fixes
    • eslint-plugin: [no-shadow] handle false positives on generics and parameters (#​5902) (769e8c8)
    • eslint-plugin: [promise-function-async] handle keyword token (#​5907) (f25a94f)
    Features
    • eslint-plugin: [consistent-type-imports] support fixing to inline types (#​5050) (75dcdf1)
    • eslint-plugin: [naming-convention] add support for "override" and "async" modifiers (#​5310) (#​5610) (c759da1)
    • eslint-plugin: [prefer-optional-chain] support suggesting !foo || !foo.bar as a valid match for the rule (#​5594) (923d486)

    5.42.1 (2022-11-07)

    Bug Fixes

    v5.42.1

    Compare Source

    Bug Fixes

    v5.42.0

    Compare Source

    Bug Fixes
    Features
    • eslint-plugin: [member-ordering] add natural sort order (#​5662) (1eaae09)
    • eslint-plugin: [no-invalid-void-type] better report message for void used as a constituent inside a function return type (#​5274) (d806bda)

    v5.41.0

    Compare Source

    Bug Fixes
    Features
    • eslint-plugin: [no-unsafe-declaration-merging] switch to use scope analysis instead of type information (#​5865) (e70a10a)
    • eslint-plugin: add no-unsafe-declaration-merging (#​5840) (3728031)

    5.40.1 (2022-10-17)

    Bug Fixes

    v5.40.1

    Compare Source

    Bug Fixes

    v5.40.0

    Compare Source

    Bug Fixes
    Features

    v5.39.0

    Compare Source

    Features
    • eslint-plugin: allow using void as a default type for a generic argument if allowInGenericTypeArguments is specified (#​5671) (bb46ef0)

    5.38.1 (2022-09-26)

    Note: Version bump only for package @​typescript-eslint/eslint-plugin

    v5.38.1

    Compare Source

    Note: Version bump only for package @​typescript-eslint/eslint-plugin

    v5.38.0

    Compare Source

    Note: Version bump only for package @​typescript-eslint/eslint-plugin

    v5.37.0

    Compare Source

    Bug Fixes
    • eslint-plugin: [strict-boolean-expressions] check all conditions in a logical operator chain (#​5539) (77d76e2)

    5.36.2 (2022-09-05)

    Bug Fixes

    5.36.1 (2022-08-30)

    Note: Version bump only for package @​typescript-eslint/eslint-plugin

    v5.36.2

    Compare Source

    Bug Fixes

    v5.36.1

    Compare Source

    Note: Version bump only for package @​typescript-eslint/eslint-plugin

    v5.36.0

    Compare Source

    Bug Fixes
    Features

    5.35.1 (2022-08-24)

    Bug Fixes

    v5.35.1

    Compare Source

    Bug Fixes

    v5.35.0

    Compare Source

    Features
    • eslint-plugin: [explicit-member-accessibility] suggest adding explicit accessibility specifiers (#​5492) (0edb94a)

    v5.34.0

    Compare Source

    Bug Fixes
    • eslint-plugin: [no-useless-constructor] handle parameter decorator (#​5450) (864dbcf)
    Features
    • eslint-plugin: [prefer-optional-chain] support suggesting !foo || !foo.bar as a valid match for the rule (#​5266) (aca935c)

    5.33.1 (2022-08-15)

    Bug Fixes
    • missing placeholders in violation messages for no-unnecessary-type-constraint and no-unsafe-argument (and enable eslint-plugin/recommended rules internally) (#​5453) (d023910)

    v5.33.1

    Compare Source

    Bug Fixes
    • missing placeholders in violation messages for no-unnecessary-type-constraint and no-unsafe-argument (and enable eslint-plugin/recommended rules internally) (#​5453) (d023910)

    v5.33.0

    Compare Source

    Bug Fixes
    Features

    v5.32.0

    Compare Source

    Features
    • eslint-plugin: [no-use-before-define] add "allowNamedExports" option (#​5397) (ad412cd)

    v5.31.0

    Compare Source

    Bug Fixes
    • eslint-plugin: [typedef] Support nested array destructuring with type annotation (#​5311) (6d19efe)
    • scope-manager: handle typeParameters of TSInstantiationExpression (#​5355) (2595ccf)
    Features
    • eslint-plugin: [consistent-generic-ctors] check class field declaration (#​5288) (48f996e)
    • eslint-plugin: [prefer-nullish-coalescing] add ignoreTernaryTests option (#​4965) (f82727f)

    5.30.7 (2022-07-18)

    Bug Fixes

    5.30.6 (2022-07-11)

    Note: Version bump only for package @​typescript-eslint/eslint-plugin

    5.30.5 (2022-07-04)

    Bug Fixes
    • eslint-plugin: [consistent-indexed-object-style] fix record mode fixer for generics with a default value (#​5280) (57f032c)

    5.30.4 (2022-07-03)

    Note: Version bump only for package @​typescript-eslint/eslint-plugin

    5.30.3 (2022-07-01)

    Note: Version bump only for package @​typescript-eslint/eslint-plugin

    5.30.2 (2022-07-01)

    Note: Version bump only for package @​typescript-eslint/eslint-plugin

    5.30.1 (2022-07-01)

    Bug Fixes
    • eslint-plugin: [no-base-to-string] add missing apostrophe to message (#​5270) (d320174)

    v5.30.7

    Compare Source

    Bug Fixes

    v5.30.6

    Compare Source

    Note: Version bump only for package @​typescript-eslint/eslint-plugin

    v5.30.5

    Compare Source

    Bug Fixes
    • eslint-plugin: [consistent-indexed-object-style] fix record mode fixer for generics with a default value (#​5280) (57f032c)

    v5.30.4

    Compare Source

    Note: Version bump only for package @​typescript-eslint/eslint-plugin

    v5.30.3

    Compare Source

    Note: Version bump only for package @​typescript-eslint/eslint-plugin

    v5.30.2

    Compare Source

    Note: Version bump only for package @​typescript-eslint/eslint-plugin

    v5.30.1

    Compare Source

    Bug Fixes
    • eslint-plugin: [no-base-to-string] add missing apostrophe to message (#​5270) (d320174)

    v5.30.0

    Compare Source

    Features

    v5.29.0

    Compare Source

    Note: Version bump only for package @​typescript-eslint/eslint-plugin

    v5.28.0

    Compare Source

    Bug Fixes
    • [TS4.7] allow visiting of typeParameters in TSTypeQuery (#​5166) (dc1f930)
    • eslint-plugin: [space-infix-ops] support for optional property without type (#​5155) (1f25daf)
    Features

    5.27.1 (2022-06-06)

    Bug Fixes
    • eslint-plugin: [space-infix-ops] correct PropertyDefinition with typeAnnotation (#​5113) (d320174)
    • eslint-plugin: [space-infix-ops] regression fix for conditional types (#​5135) (e5238c8)
    • eslint-plugin: [space-infix-ops] regression fix for type aliases (#​5138) (4e13deb)

    v5.27.1

    Compare Source

    Bug Fixes
    • eslint-plugin: [space-infix-ops] correct PropertyDefinition with typeAnnotation (#​5113) (d320174)
    • eslint-plugin: [space-infix-ops] regression fix for conditional types (#​5135) (e5238c8)
    • eslint-plugin: [space-infix-ops] regression fix for type aliases (#​5138) (4e13deb)

    v5.27.0

    Compare Source

    Bug Fixes
    Features

    v5.26.0

    Compare Source

    Bug Fixes
    • eslint-plugin: [member-delimiter-style] autofixer result is not as expected when comments after the delimiter with option delimiter: 'none' (#​5029) (ed7b5f6)
    • eslint-plugin: [member-delimiter-style] autofixer result is not as expected with option delimiter: 'none' (#​5023) (9e97a11)
    • eslint-plugin: [prefer-readonly] correct issue with anonymus functions (#​4974) (952e2f0), closes #​2590

    v5.25.0

    Compare Source

    Bug Fixes
    Features

    v5.24.0

    Compare Source

    Bug Fixes
    Features

    v5.23.0

    Compare Source

    Bug Fixes
    • eslint-plugin: [no-restricted-imports] allow type import as long as there's one matching pattern (#​4898) (0419d28)
    • eslint-plugin: [no-unnecessary-type-constraint] change to suggestion fix, fix multiple trailing comma failures (#​4901) (4507ac8)

    v5.22.0

    Compare Source

    Bug Fixes
    Features

    v5.21.0

    Compare Source

    Bug Fixes
    • eslint-plugin: [no-misused-promises] prioritize false returns when checking whether a function returns only void (#​4841) (ccadb60)
    • eslint-plugin: [no-namespace] fix false positive for exported namespaces when allowDeclarations=true (#​4844) (4e7c9be)
    • eslint-plugin: [space-infix-ops] fix no error when right type is function (#​4848) (d74d559)
    Features
    • eslint-plugin: [parameter-properties] add rule to replace no-parameter-properties (#​4622) (88ed9ec)

    v5.20.0

    Compare Source

    Features

    v5.19.0

    Compare Source

    Bug Fixes
    Features
    • eslint-plugin: [unified-signatures] add ignoreDifferentlyNamedParameters option (#​4659) (fdf95e0)
    • eslint-plugin: add support for valid number and bigint intersections in restrict-plus-operands rule (#​4795) (19c600a)

    v5.18.0

    Compare Source

    Bug Fixes
    Features

    [v5.17.0](https://togithub.com/typescript-eslint/typescript-eslint/blob/


    Configuration

    πŸ“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    β™» Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about these updates again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • IN Query not working RxDB SqlLite premium

    IN Query not working RxDB SqlLite premium

    Hi,

    In RxDB SqlLite premium the in query doesn't work:

    # this doesnt work
    collection.find({selector: {_id: { $in: ['a1','b2'] } }})
    
    # this works 
    collection?.find({selector: {_id: 'a1'} }})
    
    

    In PouchDB it works fine as well - it only error when switching to the premium plugins.

    Thank you

    opened by meabed 3
  • Update dependency testcafe to v2.2.0

    Update dependency testcafe to v2.2.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | testcafe (source) | 1.20.1 -> 2.2.0 | age | adoption | passing | confidence | | testcafe (source) | 2.1.0 -> 2.2.0 | age | adoption | passing | confidence |


    Release Notes

    DevExpress/testcafe

    v2.2.0

    Compare Source

    TestCafe v2.2.0 introduces user-defined custom actions and an important experimental capability. Google Chrome users can now enable "proxyless mode" to speed up their test suite.

    Custom Action Support

    TestCafe users can now define custom test actions. Place the definition function in a JavaScript configuration file:

    module.exports = {
      customActions: {
       async makeCoffee (args) {
            await this.click(args);
        }, 
      }
    };
    

    Include custom methods in your tests alongside other TestController methods. Add the customActions prefix when you call the action:

    test('Test with a custom action', async t => {
        await t.click()
            .customActions.makeCoffee()
            .click();
    })
    
    Experimental: Proxyless mode

    TestCafe runs an under-the-hood reverse proxy to automate tests across different browsers. But this technique complicates the framework. Native automation protocols offer superior automation speeds and greater stability. That's why the TestCafe team decided to gradually phase the reverse proxy out in favor of native support for these automation protocols.

    TestCafe v2.2.0 includes an experimental option that disables the proxy for Google Chrome.

    testcafe chrome tests --experimental-proxyless
    

    You can enable this option in the command line interface, the Test Runner API, and the configuration file. Read the Proxyless mode guide for more information.

    Bug Fixes
    • TestCafe doesn't hide the live mode status bar when the bar obstructs the action target (#​7384)
    • The 'Target element is overlapped' message does not reference the Selector that caused the warning (#​7386)
    • The TestCafe Dashboard reporter includes an outdated uuid dependency (testcafe-reporter-dashboard#​111)
    • TestCafe doesn't display the correct error message when the framework throws an exception (#​6936)
    • TestCafe retains some cookies after the user requests their deletion (PR testcafe-hammerhead#​2818)
    • TestCafe cannot load test pages with the localhost URL on Node.js v17 and up (#​7396)
    • TestCafe cannot take screenshots in headless Chrome on Node.js v17 and up (#​7408)
    • Web workers that originate from Blob URLs throw an error when they call the importScript function (#​7378)
    • TestCafe doesn't set the correct Request header when an iframe points the user to a new URL (#​7376, PR testcafe-hammerhead#​2813 by @​naggingant)
    • TestCafe cannot interact with options that belong to a <select> element with the multiple attribute (PR testcafe-hammerhead#​2815)

    v2.1.0

    Compare Source

    Improvements
    Improved handling of invisible elements
    • Visibility criteria update: TestCafe no longer interacts with elements that have the visibility: collapse attribute.
    • If the action target does not fit the visibility criteria, TestCafe outputs an error message that references the exact reason. (#​7310).
    Improved handling of overlapped elements
    • When another element overlaps the center of the action target, TestCafe scans the target element for available points of contact. If the selector timeout ends before TestCafe finds an unobstructed point, TestCafe outputs a warning message and interacts with the topmost element at the center of the original target (#​7309).
    • TestCafe v2.1.0 contains an improved algorithm that detects whether extra scrolling can resolve an element obstruction issue. (#​6208)
    Bug Fixes
    • In some environments, TestCafe cannot take screenshots when the test runs in a headless Chromium-based browser (#​7224).
    • Full-page screenshots in headless Chrome do not include the edges of the page (#​5961).
    • TestCafe throws the "TypeError: Illegal invocation" error when the front-end code passes a number value to the Element.insertAdjacentText method (#​7352).

    v2.0.2

    Compare Source

    Bug Fixes
    • TestCafe doesn't include the flags necessary to launch Chrome in a Podman container (PR #​7307 by @​timnederhoff)
    • TestCafe doesn't warn users when it interacts with an element that obstructs the original action target (#​2930)
    • TestCafe incorrectly parses regular expressions passed to the --skip-js-errors CLI flag (#​7301)

    v2.0.1

    Compare Source

    Bug Fixes
    • TestCafe yields incomplete video recordings in concurrency mode (#​7218).
    • Video recordings in concurrency mode yield EPIPE errors that cause crashes (#​7216).
    • Running TestCafe 1.20.1 and up with a high concurrency factor may nonetheless result in a MaxListenersExceededWarning warning (#​7188).

    v2.0.0

    Compare Source

    TypeScript update

    :warning: TestCafe 2.0 includes a breaking change. The framework’s built-in TypeScript compiler has been updated from version 3.9 to version 4.7. The vast majority of TestCafe users should not experience any issues during the upgrade. However, since TypeScript does not follow the semver versioning policy, even minor TypeScript updates contain breaking changes. Some TypeScript users may need to perform additional actions to ensure the compatibility of their test code.

    Read the TestCafe 2.0 Migration Guide to learn more.

    Improvement: New ways to ignore JavaScript errors

    TestCafe v2.0 introduces new ways to ignore JavaScript errors during test runs.

    Two new methods allow you to ignore errors on a per-test or a per-fixture basis.

    • Use the test.skipJsErrors method to ignore JavaScript errors in specific tests.
    • Use the fixture.skipJsErrors method to ignore JavaScript errors for specific fixtures.
    • The t.skipJsErrors action lets you ignore JavaScript errors at specific points in the test.

    For each of the methods above, you can define the following options:

    • The pageUrl option filters errors by page URL.
    • The message option filters errors by message.
    • The stack option filters errors by call stack.

    Read the Skip JavaScript Errors recipe to learn more.


    Configuration

    πŸ“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    β™» Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about these updates again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • Update dependency sirv-cli to v2

    Update dependency sirv-cli to v2

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | sirv-cli | 1.0.14 -> 2.0.2 | age | adoption | passing | confidence |


    Release Notes

    lukeed/sirv

    v2.0.2

    Compare Source

    Patches

    • (sirv) Bump totalist version: e8c66e2 This allows for full native ESM support on Node.js

    Full Changelog: https://github.com/lukeed/sirv/compare/v2.0.0...v2.0.2

    v2.0.1

    Compare Source

    v2.0.0

    Compare Source

    Breaking

    • (sirv-cli) Change default port from 5000 to 8080 (#​124): 93a920b With macOS Monterey, Apple now reserves port 5000 for AirPlay. This would cause sirv-cli to start seemingly successfully, but macOS would intercept all traffic to localhost:5000, causing unexpected behavior for users/clients.

    Features

    • (sirv): Supports native ESM usage within Node~! Now sirv and all its dependencies support ESM natively.

    • (sirv-cli): Support the NO_COLOR standard (#​108): 4b8703b Thank you @​SpyTec~!

    Chores

    • (sirv): Bump totalist version (#​86): 0cf66d8 Thank you @​aleclarson~!

    • Add http-server benchmark comparison (#​4): 17ea37f http-server (cache=1) 5,247 req/sec http-server (cache=0) 5,091 req/sec sirv-cli (cache=1) 12,612 req/sec sirv-cli (cache=0) 8,490 req/sec sirv-cli (cache=1, logs=0) 13,609 req/sec sirv-cli (cache=0, logs=0) 10,157 req/sec

    Full Changelog: https://github.com/lukeed/sirv/compare/v1.0.19...v2.0.0


    Configuration

    πŸ“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    β™» Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • Update dependency rollup to v3

    Update dependency rollup to v3

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | rollup (source) | 2.79.1 -> 3.9.1 | age | adoption | passing | confidence |


    Release Notes

    rollup/rollup

    v3.9.1

    Compare Source

    2023-01-02

    Bug Fixes
    • Sort keys in generated dynamic namespace objects (#​4780)
    • Do not consider Array.group to be side effect free as the specs have changed (#​4779)
    Pull Requests

    v3.9.0

    Compare Source

    2022-12-28

    Features
    • Support ES2022 arbitrary module namespace identifiers (#​4770)
    • Add optional version property to plugin type (#​4771)
    Pull Requests

    v3.8.1

    Compare Source

    2022-12-23

    Bug Fixes
    • Reduce memory footprint when explicitly passing cache: false (#​4762)
    • Fix a crash when preserving modules and reexporting namespaces (#​4766)
    Pull Requests

    v3.8.0

    Compare Source

    2022-12-22

    Features
    • Deduplicate ESM exports and reexports when preserving modules (#​4759)
    Bug Fixes
    • Handle files that are emitted as a side effect of the manualChunks option (#​4759)
    Pull Requests

    v3.7.5

    Compare Source

    2022-12-17

    Bug Fixes
    • Avoid name shadowing when default exporting a class that matches the name of another class (#​4756)
    • Do not display the error message both in a separate line and in the stack trace in rollup CLI (#​4749)
    • Make type of RollupWarning.cause compatible with Error.cause (#​4757)
    • Do not swallow side effects when interacting with modules namespaces nested in another object (#​4758)
    Pull Requests

    v3.7.4

    Compare Source

    2022-12-13

    Bug Fixes
    • Do not remove calls to .exec and .test for included stateful regular expressions (#​4742)
    Pull Requests

    v3.7.3

    Compare Source

    2022-12-11

    Bug Fixes
    • Ensure this.getFileName no longer returns a placeholder as soon as hash placeholders have been resolved (#​4747)
    Pull Requests

    v3.7.2

    Compare Source

    2022-12-10

    Bug Fixes
    • Improve chunk generation performance when one module is dynamically imported by many other modules (#​4736)
    Pull Requests

    v3.7.1

    Compare Source

    2022-12-09

    Bug Fixes
    Pull Requests

    v3.7.0

    Compare Source

    2022-12-08

    Features
    • Do not treat .test and .exec on regular expressions as side effects (#​4737)
    Pull Requests

    v3.6.0

    Compare Source

    2022-12-05

    Features
    • extend this.getModuleInfo with information about exports (#​4731)
    Pull Requests

    v3.5.1

    Compare Source

    2022-12-01

    Bug Fixes
    • Accept functions returning a config in defineConfig (#​4728)
    Pull Requests

    v3.5.0

    Compare Source

    2022-11-27

    Features
    • Add treeshake.manualPureFunctions to override static analysis for explicit function names (#​4718)
    Bug Fixes
    • Do not throw when a plugin uses this.load without awaiting its result (#​4725)
    Pull Requests

    v3.4.0

    Compare Source

    2022-11-22

    Features
    • Do not keep unused Object.freeze calls on object literals (#​4720)
    Pull Requests

    v3.3.0

    Compare Source

    2022-11-12

    Features
    • Add "experimentalMinChunkSize" option to merge smaller chunks into larger ones (#​4705)
    • Automatically deduplicate assets again when the source is a Buffer (#​4712)
    • Deduplicate Buffer with string assets (#​4712)
    Bug Fixes
    • Support plugins with object hooks when using perf: true (#​4707)
    Pull Requests

    v3.2.5

    Compare Source

    2022-11-01

    Bug Fixes
    • We deconflicting classes, ensure the original class name still does not shadow variables (#​4697)
    Pull Requests

    v3.2.4

    Compare Source

    2022-10-31

    Bug Fixes
    • Always use forward slashes in chunk ids when preserving modules, even on Windows (#​4693)
    • Escape problematic characters in ids when rewriting import.meta.url (#​4693)
    Pull Requests

    v3.2.3

    Compare Source

    2022-10-18

    Bug Fixes
    • Fix an issue whre Rollup confused new.target with import.meta (#​4679)
    • Ensure that Rollup does not make assumptions about the value of unknown namespace import members (#​4684)
    Pull Requests

    v3.2.2

    Compare Source

    2022-10-16

    Bug Fixes
    • Do not hang/crash on hashbang comments in input modules (#​4676)
    Pull Requests

    v3.2.1

    Compare Source

    2022-10-16

    Bug Fixes
    • Rewrite class declarations to preserve their .name property if necessary (#​4674)
    Pull Requests

    v3.2.0

    Compare Source

    2022-10-15

    Features
    • Support providing Promises as plugins like Vite (#​4671)
    Pull Requests

    v3.1.0

    Compare Source

    2022-10-12

    Features
    • Support using arrays of plugins as plugins like Vite (#​4657)
    Pull Requests

    v3.0.1

    Compare Source

    2022-10-12

    Bug Fixes
    • Fix installation on Windows (#​4662)
    • Avoid missing parameters that are only used in a destructuring initializer (#​4663)
    Pull Requests

    v3.0.0

    Compare Source

    2022-10-11

    Breaking Changes
    General Changes
    • Rollup now requires at least Node 14.18.0 to run (#​4548 and #​4596)
    • The browser build has been split into a separate package @rollup/browser (#​4593)
    • The node build uses the node: prefix for imports of builtin modules (#​4596)
    • Some previously deprecated features have been removed (#​4552):
      • Some plugin context functions have been removed:
        • this.emitAsset(): use this.emitFile()
        • this.emitChunk(): use this.emitFile()
        • this.getAssetFileName(): use this.getFileName()
        • this.getChunkFileName(): use this.getFileName()
        • this.isExternal(): use this.resolve()
        • this.resolveId(): use this.resolve()
      • The resolveAssetUrl plugin hook has been removed: use resolveFileUrl
      • Rollup no longer passes assetReferenceId or chunkReferenceId parameters to resolveFileUrl
      • The treeshake.pureExternalModules option has been removed: use treeshake.moduleSideEffects: 'no-external'
      • You may no longer use true or false for output.interop. As a replacement for true, you can use "compat"
      • Emitted assets no longer have an isAsset flag in the bundle
      • Rollup will no longer fix assets added directly to the bundle by adding the type: "asset" field
    • Some features that were previously marked for deprecation now show warnings when used (#​4552):
      • Some options have been deprecated:
        • inlineDynamicImports as part of the input options: use output. inlineDynamicImports
        • manualChunks as part of the input options: use output. manualChunks
        • maxParallelFileReads: use `maxParallelFileOps
        • output.preferConst: use output.generatedCode.constBindings
        • output.dynamicImportFunction: use the renderDynamicImport plugin hook
        • output.namespaceToStringTag: use output.generatedCode.symbols
        • preserveModules as part of the input options: use output. preserveModules
      • You should no longer access this.moduleIds in plugins: use this.getModuleIds()
      • You should no longer access this.getModuleInfo(...).hasModuleSideEffects in plugins: use this.getModuleInfo(...).moduleSideEffects
    • Configuration files are only bundled if either the --configPlugin or the --bundleConfigAsCjs options are used. The configuration is bundled to an ES module unless the --bundleConfigAsCjs option is used. In all other cases, configuration is now loaded using Node's native mechanisms (#​4574 and #​4621)
    • The properties attached to some errors have been changed so that there are fewer different possible properties with consistent types (#​4579)
    • Some errors have been replaced by others (ILLEGAL_NAMESPACE_REASSIGNMENT -> ILLEGAL_REASSIGNMENT, NON_EXISTENT_EXPORT -> MISSING_EXPORT) (#​4579)
    • Files in rollup/dist/* can only be required using their file extension (#​4581)
    • The loadConfigFile helper now has a named export of the same name instead of a default export (#​4581)
    • When using the API and sourcemaps, sourcemap comments are contained in the emitted files and sourcemaps are emitted as regular assets (#​4605)
    • Watch mode no longer uses Node's EventEmitter but a custom implementation that awaits Promises returned from event handlers (#​4609)
    • Assets may only be deduplicated with previously emitted assets if their source is a string (#​4644)
    • By default, Rollup will keep external dynamic imports as import(…) in commonjs output unless output.dynamicImportInCjs is set to false (#​4647)
    Changes to Rollup Options
    • As functions passed to output.banner/footer/intro/outro are now called per-chunk, they should be careful to avoid performance-heavy operations (#​4543)
    • entryFileNames/chunkFileNames functions now longer have access to the rendered module information via modules, only to a list of included moduleIds (#​4543)
    • The path of a module is no longer prepended to the corresponding chunk when preserving modules (#​4565)
    • When preserving modules, the [name] placeholder (as well as the chunkInfo.name property when using a function) now includes the relative path of the chunk as well as optionally the file extension if the extension is not one of .js, .jsx, .mjs, .cjs, .ts, .tsx, .mts, or .cts (#​4565)
    • The [ext], [extName] and [assetExtName] placeholders are no longer supported when preserving modules (#​4565)
    • The perf option no longer collects timings for the asynchronous part of plugin hooks as the readings were wildly inaccurate and very misleading, and timings are adapted to the new hashing algorithm (#​4566)
    • Change the default value of makeAbsoluteExternalsRelative to "ifRelativeSource" so that absolute external imports will no longer become relative imports in the output, while relative external imports will still be renormalized (#​4567)
    • Change the default for output.generatedCode.reservedNamesAsProps to no longer quote properties like default by default (#​4568)
    • Change the default for preserveEntrySignatures to "exports-only" so that by default, empty facades for entry chunks are no longer created (#​4576)
    • Change the default for output.interop to "default" to better align with NodeJS interop (#​4611)
    • Change the default for output.esModule to "if-default-prop", which only adds __esModule when the default export would be a property (#​4611)
    • Change the default for output.systemNullSetters to true, which requires at least SystemJS 6.3.3 (#​4649)
    Plugin API Changes
    • Plugins that add/change/remove imports or exports in renderChunk should make sure to update ChunkInfo.imports/importedBindings/exports accordingly (#​4543)
    • The order of plugin hooks when generating output has changed (#​4543)
    • Chunk information passed to renderChunk now contains names with hash placeholders instead of final names, which will be replaced when used in the returned code or ChunkInfo.imports/importedBindings/exports (#​4543 and #​4631)
    • Hooks defined in output plugins will now run after hooks defined in input plugins (used to be the other way around) (#​3846)
    Features
    • Functions passed to output.banner/footer/intro/outro are now called per-chunk with some chunk information (#​4543)
    • Plugins can access the entire chunk graph via an additional parameter in renderChunk (#​4543)
    • Chunk hashes only depend on the actual content of the chunk and are otherwise stable against things like renamed/moved source files or changed module resolution order (#​4543)
    • The length of generated file hashes can be customized both globally and per-chunk (#​4543)
    • When preserving modules, the regular entryFileNames logic is used and the path is included in the [name] property. This finally gives full control over file names when preserving modules (#​4565)
    • output.entryFileNames now also supports the [hash] placeholder when preserving modules (#​4565)
    • The perf option will now collect (synchronous) timings for all plugin hooks, not just a small selection (#​4566)
    • All errors thrown by Rollup have name: RollupError now to make clearer that those are custom error types (#​4579)
    • Error properties that reference modules (such as id and ids) will now always contain the full ids. Only the error message will use shortened ids (#​4579)
    • Errors that are thrown in response to other errors (e.g. parse errors thrown by acorn) will now use the standardized cause property to reference the original error (#​4579)
    • If sourcemaps are enabled, files will contain the appropriate sourcemap comment in generateBundle and sourcemap files are available as regular assets (#​4605)
    • Returning a Promise from an event handler attached to a RollupWatcher instance will make Rollup wait for the Promise to resolve (#​4609)
    • There is a new value "compat" for output.interop that is similar to "auto" but uses duck-typing to determine if there is a default export (#​4611)
    • There is a new value "if-default-prop" for esModule that only adds an __esModule marker to the bundle if there is a default export that is rendered as a property (#​4611)
    • Rollup can statically resolve checks for foo[Symbol.toStringTag] to "Module" if foo is a namespace (#​4611)
    • There is a new CLI option --bundleConfigAsCjs which will force the configuration to be bundled to CommonJS (#​4621)
    • Import assertions for external imports that are present in the input files will be retained in ESM output (#​4646)
    • Rollup will warn when a module is imported with conflicting import assertions (#​4646)
    • Plugins can add, remove or change import assertions when resolving ids (#​4646)
    • The output.externalImportAssertions option allows to turn off emission of import assertions (#​4646)
    • Use output.dynamicImportInCjs to control if dynamic imports are emitted as import(…) or wrapped require(…) when generating commonjs output (#​4647)
    Bug Fixes
    • Chunk hashes take changes in renderChunk, e.g. minification, into account (#​4543)
    • Hashes of referenced assets are properly reflected in the chunk hash (#​4543)
    • No longer warn about implicitly using default export mode to not tempt users to switch to named export mode and break Node compatibility (#​4624)
    • Avoid performance issues when emitting thousands of assets (#​4644)
    Pull Requests

    Configuration

    πŸ“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    β™» Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
Releases(14.0.0-beta.13)
  • 14.0.0-beta.13(Jan 9, 2023)

    Removing deprecated features

    • Remove the deprecated PouchDB RxStorage.
    • REMOVE old replication-couchdb plugin. Rename replication-couchdb-new to replication-couchdb.
    • Remove depricated skipIfSame from putAttachment()

    API changes

    • CHANGE use plain json errors inside of RxError parameters to make debugging easier.
    • CHANGE Make RxDocuments immutable
    • ADD RxDocument.getLatest()
    • CHANGE RxCollection.findByIds() now returns a RxQuery.
    • REMOVED RxCollection.findByIds$, use RxCollection.findByIds().$ instead.
    • CHANGE Prefix storage plugins with storage- like rxdb/plugins/storage-dexie.
    • RENAME atomicUpdate() to incrementalModify()
    • RENAME atomicPatch() to incrementalPatch()
    • RENAME atomicUpsert() to incrementalUpsert()
    • ADD RxDocument().incrementalUpdate()
    • ADD RxDocument.incrementalRemove()
    • ADD non-incremental RxDocument methods patch() and modify()
    • ADD typings to the query selector
    • CHANGE start replication via pure functions instead of RxCollection methods.

    Performance improvements

    Bugfixes

    • CHANGE (memory RxStorage) do not clean up database state on closing of the storage, only on remove().
    • FIX CouchDB replication: Use correct default fetch method.
    • FIX schema hashing should respect the sort order #4005
    • FIX replication does not provide a ._rev to the storage write when a conflict is resolved.
    • FIX(remote storage) ensure caching works properly even on parallel create-calls
    • FIX(replication) Composite Primary Keys broken on replicated collections #4190

    Other changes

    • REMOVE deprecated babel-plugin-transform-async-to-promises plugin.

    NOTICE: An overview about all releases can be found at the changelog

    Source code(tar.gz)
    Source code(zip)
  • 14.0.0-beta.12(Jan 8, 2023)

    • CHANGE Do not use hash for revisions but use database instance token instead.
    • Remove the deprecated PouchDB RxStorage.
    • CHANGE (memory RxStorage) do not clean up database state on closing of the storage, only on remove().
    • REMOVE old replication-couchdb plugin. Rename replication-couchdb-new to replication-couchdb.
    • FIX CouchDB replication: Use correct default fetch method.
    • CHANGE use plain json errors inside of RxError parameters to make debugging easier.
    • CHANGE crunch multiple incremental (aka 'atomic') operations into a single database write. Also batch writes to multiple documents into a single write.
    • CHANGE Make RxDocuments immutable
    • ADD RxDocument.getLatest()
    • REMOVE deprecated babel-plugin-transform-async-to-promises plugin.
    • CHANGE RxCollection.findByIds() now returns a RxQuery.
    • REMOVED RxCollection.findByIds$, use RxCollection.findByIds().$ instead.
    • FIX schema hashing should respect the sort order #4005
    • CHANGE Prefix storage plugins with storage- like rxdb/plugins/storage-dexie.
    • RENAME atomicUpdate() to incrementalModify()
    • RENAME atomicPatch() to incrementalPatch()
    • RENAME atomicUpsert() to incrementalUpsert()
    • ADD RxDocument().incrementalUpdate()
    • ADD RxDocument.incrementalRemove()
    • ADD non-incremental RxDocument methods patch() and modify()
    • ADD typings to the query selector
    • CHANGE start replication via pure functions instead of RxCollection methods.
    • FIX replication does not provide a ._rev to the storage write when a conflict is resolved.
    • CHANGE to reduce bundle size and improve performance, the following JavaScript features will no longer be transpiled:
    • FIX(remote storage) ensure caching works properly even on parallel create-calls

    NOTICE: An overview about all releases can be found at the changelog

    Source code(tar.gz)
    Source code(zip)
  • 14.0.0-beta.11(Jan 8, 2023)

    • CHANGE Do not use hash for revisions but use database instance token instead.
    • Remove the deprecated PouchDB RxStorage.
    • CHANGE (memory RxStorage) do not clean up database state on closing of the storage, only on remove().
    • REMOVE old replication-couchdb plugin. Rename replication-couchdb-new to replication-couchdb.
    • FIX CouchDB replication: Use correct default fetch method.
    • CHANGE use plain json errors inside of RxError parameters to make debugging easier.
    • CHANGE crunch multiple incremental (aka 'atomic') operations into a single database write. Also batch writes to multiple documents into a single write.
    • CHANGE Make RxDocuments immutable
    • ADD RxDocument.getLatest()
    • REMOVE deprecated babel-plugin-transform-async-to-promises plugin.
    • CHANGE RxCollection.findByIds() now returns a RxQuery.
    • REMOVED RxCollection.findByIds$, use RxCollection.findByIds().$ instead.
    • FIX schema hashing should respect the sort order #4005
    • CHANGE Prefix storage plugins with storage- like rxdb/plugins/storage-dexie.
    • RENAME atomicUpdate() to incrementalModify()
    • RENAME atomicPatch() to incrementalPatch()
    • RENAME atomicUpsert() to incrementalUpsert()
    • ADD RxDocument().incrementalUpdate()
    • ADD RxDocument.incrementalRemove()
    • ADD non-incremental RxDocument methods patch() and modify()
    • ADD typings to the query selector
    • CHANGE start replication via pure functions instead of RxCollection methods.
    • FIX replication does not provide a ._rev to the storage write when a conflict is resolved.
    • CHANGE to reduce bundle size and improve performance, the following JavaScript features will no longer be transpiled:
    • FIX(remote storage) ensure caching works properly even on parallel create-calls

    NOTICE: An overview about all releases can be found at the changelog

    Source code(tar.gz)
    Source code(zip)
  • 14.0.0-beta.9(Jan 7, 2023)

    • CHANGE Do not use hash for revisions but use database instance token instead.
    • Remove the deprecated PouchDB RxStorage.
    • CHANGE (memory RxStorage) do not clean up database state on closing of the storage, only on remove().
    • REMOVE old replication-couchdb plugin. Rename replication-couchdb-new to replication-couchdb.
    • FIX CouchDB replication: Use correct default fetch method.
    • CHANGE use plain json errors inside of RxError parameters to make debugging easier.
    • CHANGE crunch multiple incremental (aka 'atomic') operations into a single database write. Also batch writes to multiple documents into a single write.
    • CHANGE Make RxDocuments immutable
    • ADD RxDocument.getLatest()
    • REMOVE deprecated babel-plugin-transform-async-to-promises plugin.
    • CHANGE RxCollection.findByIds() now returns a RxQuery.
    • REMOVED RxCollection.findByIds$, use RxCollection.findByIds().$ instead.
    • FIX schema hashing should respect the sort order #4005
    • CHANGE Prefix storage plugins with storage- like rxdb/plugins/storage-dexie.
    • RENAME atomicUpdate() to incrementalModify()
    • RENAME atomicPatch() to incrementalPatch()
    • RENAME atomicUpsert() to incrementalUpsert()
    • ADD RxDocument().incrementalUpdate()
    • ADD RxDocument.incrementalRemove()
    • ADD non-incremental RxDocument methods patch() and modify()
    • ADD typings to the query selector
    • CHANGE start replication via pure functions instead of RxCollection methods.
    • FIX replication does not provide a ._rev to the storage write when a conflict is resolved.
    • CHANGE to reduce bundle size and improve performance, the following JavaScript features will no longer be transpiled:

    NOTICE: An overview about all releases can be found at the changelog

    Source code(tar.gz)
    Source code(zip)
  • 14.0.0-beta.10(Jan 7, 2023)

    • CHANGE Do not use hash for revisions but use database instance token instead.
    • Remove the deprecated PouchDB RxStorage.
    • CHANGE (memory RxStorage) do not clean up database state on closing of the storage, only on remove().
    • REMOVE old replication-couchdb plugin. Rename replication-couchdb-new to replication-couchdb.
    • FIX CouchDB replication: Use correct default fetch method.
    • CHANGE use plain json errors inside of RxError parameters to make debugging easier.
    • CHANGE crunch multiple incremental (aka 'atomic') operations into a single database write. Also batch writes to multiple documents into a single write.
    • CHANGE Make RxDocuments immutable
    • ADD RxDocument.getLatest()
    • REMOVE deprecated babel-plugin-transform-async-to-promises plugin.
    • CHANGE RxCollection.findByIds() now returns a RxQuery.
    • REMOVED RxCollection.findByIds$, use RxCollection.findByIds().$ instead.
    • FIX schema hashing should respect the sort order #4005
    • CHANGE Prefix storage plugins with storage- like rxdb/plugins/storage-dexie.
    • RENAME atomicUpdate() to incrementalModify()
    • RENAME atomicPatch() to incrementalPatch()
    • RENAME atomicUpsert() to incrementalUpsert()
    • ADD RxDocument().incrementalUpdate()
    • ADD RxDocument.incrementalRemove()
    • ADD non-incremental RxDocument methods patch() and modify()
    • ADD typings to the query selector
    • CHANGE start replication via pure functions instead of RxCollection methods.
    • FIX replication does not provide a ._rev to the storage write when a conflict is resolved.
    • CHANGE to reduce bundle size and improve performance, the following JavaScript features will no longer be transpiled:

    NOTICE: An overview about all releases can be found at the changelog

    Source code(tar.gz)
    Source code(zip)
  • 14.0.0-beta.8(Jan 4, 2023)

    • CHANGE Do not use hash for revisions but use database instance token instead.
    • Remove the deprecated PouchDB RxStorage.
    • CHANGE (memory RxStorage) do not clean up database state on closing of the storage, only on remove().
    • REMOVE old replication-couchdb plugin. Rename replication-couchdb-new to replication-couchdb.
    • FIX CouchDB replication: Use correct default fetch method.
    • CHANGE use plain json errors inside of RxError parameters to make debugging easier.
    • CHANGE crunch multiple incremental (aka 'atomic') operations into a single database write. Also batch writes to multiple documents into a single write.
    • CHANGE Make RxDocuments immutable
    • ADD RxDocument.getLatest()
    • REMOVE deprecated babel-plugin-transform-async-to-promises plugin.
    • CHANGE RxCollection.findByIds() now returns a RxQuery.
    • REMOVED RxCollection.findByIds$, use RxCollection.findByIds().$ instead.
    • FIX schema hashing should respect the sort order #4005
    • CHANGE Prefix storage plugins with storage- like rxdb/plugins/storage-dexie.
    • RENAME atomicUpdate() to incrementalModify()
    • RENAME atomicPatch() to incrementalPatch()
    • RENAME atomicUpsert() to incrementalUpsert()
    • ADD RxDocument().incrementalUpdate()
    • ADD RxDocument.incrementalRemove()
    • ADD non-incremental RxDocument methods patch() and modify()
    • ADD typings to the query selector
    • CHANGE start replication via pure functions instead of RxCollection methods.
    • FIX replication does not provide a ._rev to the storage write when a conflict is resolved.
    • CHANGE to reduce bundle size and improve performance, the following JavaScript features will no longer be transpiled:

    NOTICE: An overview about all releases can be found at the changelog

    Source code(tar.gz)
    Source code(zip)
  • 14.0.0-beta.7(Jan 4, 2023)

    • CHANGE Do not use hash for revisions but use database instance token instead.
    • Remove the deprecated PouchDB RxStorage.
    • CHANGE (memory RxStorage) do not clean up database state on closing of the storage, only on remove().
    • REMOVE old replication-couchdb plugin. Rename replication-couchdb-new to replication-couchdb.
    • FIX CouchDB replication: Use correct default fetch method.
    • CHANGE use plain json errors inside of RxError parameters to make debugging easier.
    • CHANGE crunch multiple incremental (aka 'atomic') operations into a single database write. Also batch writes to multiple documents into a single write.
    • CHANGE Make RxDocuments immutable
    • ADD RxDocument.getLatest()
    • REMOVE deprecated babel-plugin-transform-async-to-promises plugin.
    • CHANGE RxCollection.findByIds() now returns a RxQuery.
    • REMOVED RxCollection.findByIds$, use RxCollection.findByIds().$ instead.
    • FIX schema hashing should respect the sort order #4005
    • CHANGE Prefix storage plugins with storage- like rxdb/plugins/storage-dexie.
    • RENAME atomicUpdate() to incrementalModify()
    • RENAME atomicPatch() to incrementalPatch()
    • RENAME atomicUpsert() to incrementalUpsert()
    • ADD RxDocument().incrementalUpdate()
    • ADD RxDocument.incrementalRemove()
    • ADD non-incremental RxDocument methods patch() and modify()
    • ADD typings to the query selector
    • CHANGE start replication via pure functions instead of RxCollection methods.
    • FIX replication does not provide a ._rev to the storage write when a conflict is resolved.
    • CHANGE to reduce bundle size and improve performance, the following JavaScript features will no longer be transpiled:

    NOTICE: An overview about all releases can be found at the changelog

    Source code(tar.gz)
    Source code(zip)
  • 14.0.0-beta.6(Jan 3, 2023)

    • CHANGE Do not use hash for revisions but use database instance token instead.
    • Remove the deprecated PouchDB RxStorage.
    • CHANGE (memory RxStorage) do not clean up database state on closing of the storage, only on remove().
    • REMOVE old replication-couchdb plugin. Rename replication-couchdb-new to replication-couchdb.
    • FIX CouchDB replication: Use correct default fetch method.
    • CHANGE use plain json errors inside of RxError parameters to make debugging easier.
    • CHANGE crunch multiple incremental (aka 'atomic') operations into a single database write. Also batch writes to multiple documents into a single write.
    • CHANGE Make RxDocuments immutable
    • ADD RxDocument.getLatest()
    • REMOVE deprecated babel-plugin-transform-async-to-promises plugin.
    • CHANGE RxCollection.findByIds() now returns a RxQuery.
    • REMOVED RxCollection.findByIds$, use RxCollection.findByIds().$ instead.
    • FIX schema hashing should respect the sort order #4005
    • CHANGE Prefix storage plugins with storage- like rxdb/plugins/storage-dexie.
    • RENAME atomicUpdate() to incrementalModify()
    • RENAME atomicPatch() to incrementalPatch()
    • RENAME atomicUpsert() to incrementalUpsert()
    • ADD RxDocument().incrementalUpdate()
    • ADD RxDocument.incrementalRemove()
    • ADD non-incremental RxDocument methods patch() and modify()
    • ADD typings to the query selector
    • CHANGE start replication via pure functions instead of RxCollection methods.
    • FIX replication does not provide a ._rev to the storage write when a conflict is resolved.
    • CHANGE to reduce bundle size and improve performance, the following JavaScript features will no longer be transpiled:

    NOTICE: An overview about all releases can be found at the changelog

    Source code(tar.gz)
    Source code(zip)
  • 14.0.0-beta.5(Jan 3, 2023)

    • CHANGE Do not use hash for revisions but use database instance token instead.
    • Remove the deprecated PouchDB RxStorage.
    • CHANGE (memory RxStorage) do not clean up database state on closing of the storage, only on remove().
    • REMOVE old replication-couchdb plugin. Rename replication-couchdb-new to replication-couchdb.
    • FIX CouchDB replication: Use correct default fetch method.
    • CHANGE use plain json errors inside of RxError parameters to make debugging easier.
    • CHANGE crunch multiple incremental (aka 'atomic') operations into a single database write. Also batch writes to multiple documents into a single write.
    • CHANGE Make RxDocuments immutable
    • ADD RxDocument.getLatest()
    • REMOVE deprecated babel-plugin-transform-async-to-promises plugin.
    • CHANGE RxCollection.findByIds() now returns a RxQuery.
    • REMOVED RxCollection.findByIds$, use RxCollection.findByIds().$ instead.
    • FIX schema hashing should respect the sort order #4005
    • CHANGE Prefix storage plugins with storage- like rxdb/plugins/storage-dexie.
    • RENAME atomicUpdate() to incrementalModify()
    • RENAME atomicPatch() to incrementalPatch()
    • RENAME atomicUpsert() to incrementalUpsert()
    • ADD RxDocument().incrementalUpdate()
    • ADD RxDocument.incrementalRemove()
    • ADD non-incremental RxDocument methods patch() and modify()
    • ADD typings to the query selector
    • CHANGE start replication via pure functions instead of RxCollection methods.
    • FIX replication does not provide a ._rev to the storage write when a conflict is resolved.
    • CHANGE to reduce bundle size and improve performance, the following JavaScript features will no longer be transpiled:

    NOTICE: An overview about all releases can be found at the changelog

    Source code(tar.gz)
    Source code(zip)
  • 14.0.0-beta.4(Jan 3, 2023)

    • CHANGE Do not use hash for revisions but use database instance token instead.
    • Remove the deprecated PouchDB RxStorage.
    • CHANGE (memory RxStorage) do not clean up database state on closing of the storage, only on remove().
    • REMOVE old replication-couchdb plugin. Rename replication-couchdb-new to replication-couchdb.
    • FIX CouchDB replication: Use correct default fetch method.
    • CHANGE use plain json errors inside of RxError parameters to make debugging easier.
    • CHANGE crunch multiple incremental (aka 'atomic') operations into a single database write. Also batch writes to multiple documents into a single write.
    • CHANGE Make RxDocuments immutable
    • ADD RxDocument.getLatest()
    • REMOVE deprecated babel-plugin-transform-async-to-promises plugin.
    • CHANGE RxCollection.findByIds() now returns a RxQuery.
    • REMOVED RxCollection.findByIds$, use RxCollection.findByIds().$ instead.
    • FIX schema hashing should respect the sort order #4005
    • CHANGE Prefix storage plugins with storage- like rxdb/plugins/storage-dexie.
    • RENAME atomicUpdate() to incrementalModify()
    • RENAME atomicPatch() to incrementalPatch()
    • RENAME atomicUpsert() to incrementalUpsert()
    • ADD RxDocument().incrementalUpdate()
    • ADD RxDocument.incrementalRemove()
    • ADD non-incremental RxDocument methods patch() and modify()
    • ADD typings to the query selector
    • CHANGE start replication via pure functions instead of RxCollection methods.
    • FIX replication does not provide a ._rev to the storage write when a conflict is resolved.

    NOTICE: An overview about all releases can be found at the changelog

    Source code(tar.gz)
    Source code(zip)
  • 14.0.0-beta.3(Jan 3, 2023)

    • CHANGE Do not use hash for revisions but use database instance token instead.
    • Remove the deprecated PouchDB RxStorage.
    • CHANGE (memory RxStorage) do not clean up database state on closing of the storage, only on remove().
    • REMOVE old replication-couchdb plugin. Rename replication-couchdb-new to replication-couchdb.
    • FIX CouchDB replication: Use correct default fetch method.
    • CHANGE use plain json errors inside of RxError parameters to make debugging easier.
    • CHANGE crunch multiple incremental (aka 'atomic') operations into a single database write. Also batch writes to multiple documents into a single write.
    • CHANGE Make RxDocuments immutable
    • ADD RxDocument.getLatest()
    • REMOVE deprecated babel-plugin-transform-async-to-promises plugin.
    • CHANGE RxCollection.findByIds() now returns a RxQuery.
    • REMOVED RxCollection.findByIds$, use RxCollection.findByIds().$ instead.
    • FIX schema hashing should respect the sort order #4005
    • CHANGE Prefix storage plugins with storage- like rxdb/plugins/storage-dexie.
    • RENAME atomicUpdate() to incrementalModify()
    • RENAME atomicPatch() to incrementalPatch()
    • RENAME atomicUpsert() to incrementalUpsert()
    • ADD RxDocument().incrementalUpdate()
    • ADD RxDocument.incrementalRemove()
    • ADD non-incremental RxDocument methods patch() and modify()
    • ADD typings to the query selector
    • CHANGE start replication via pure functions instead of RxCollection methods.

    NOTICE: An overview about all releases can be found at the changelog

    Source code(tar.gz)
    Source code(zip)
  • 14.0.0-beta.2(Jan 2, 2023)

    • CHANGE Do not use hash for revisions but use database instance token instead.
    • Remove the deprecated PouchDB RxStorage.
    • CHANGE (memory RxStorage) do not clean up database state on closing of the storage, only on remove().
    • REMOVE old replication-couchdb plugin. Rename replication-couchdb-new to replication-couchdb.
    • FIX CouchDB replication: Use correct default fetch method.
    • CHANGE use plain json errors inside of RxError parameters to make debugging easier.
    • CHANGE crunch multiple incremental (aka 'atomic') operations into a single database write. Also batch writes to multiple documents into a single write.
    • CHANGE Make RxDocuments immutable
    • ADD RxDocument.getLatest()
    • REMOVE deprecated babel-plugin-transform-async-to-promises plugin.
    • CHANGE RxCollection.findByIds() now returns a RxQuery.
    • REMOVED RxCollection.findByIds$, use RxCollection.findByIds().$ instead.
    • FIX schema hashing should respect the sort order #4005
    • CHANGE Prefix storage plugins with storage- like rxdb/plugins/storage-dexie.
    • RENAME atomicUpdate() to incrementalModify()
    • RENAME atomicPatch() to incrementalPatch()
    • RENAME atomicUpsert() to incrementalUpsert()
    • ADD RxDocument().incrementalUpdate()
    • ADD RxDocument.incrementalRemove()
    • ADD non-incremental RxDocument methods patch() and modify()
    • ADD typings to the query selector
    • CHANGE start replication via pure functions instead of RxCollection methods.

    NOTICE: An overview about all releases can be found at the changelog

    Source code(tar.gz)
    Source code(zip)
  • 14.0.0-beta.1(Jan 2, 2023)

    • CHANGE Do not use hash for revisions but use database instance token instead.
    • Remove the deprecated PouchDB RxStorage.
    • CHANGE (memory RxStorage) do not clean up database state on closing of the storage, only on remove().
    • REMOVE old replication-couchdb plugin. Rename replication-couchdb-new to replication-couchdb.
    • FIX CouchDB replication: Use correct default fetch method.
    • CHANGE use plain json errors inside of RxError parameters to make debugging easier.
    • CHANGE crunch multiple incremental (aka 'atomic') operations into a single database write. Also batch writes to multiple documents into a single write.
    • CHANGE Make RxDocuments immutable
    • ADD RxDocument.getLatest()
    • REMOVE deprecated babel-plugin-transform-async-to-promises plugin.
    • CHANGE RxCollection.findByIds() now returns a RxQuery.
    • REMOVED RxCollection.findByIds$, use RxCollection.findByIds().$ instead.
    • FIX schema hashing should respect the sort order #4005
    • CHANGE Prefix storage plugins with storage- like rxdb/plugins/storage-dexie.
    • RENAME atomicUpdate() to incrementalModify()
    • RENAME atomicPatch() to incrementalPatch()
    • RENAME atomicUpsert() to incrementalUpsert()
    • ADD RxDocument().incrementalUpdate()
    • ADD RxDocument.incrementalRemove()
    • ADD non-incremental RxDocument methods patch() and modify()
    • ADD typings to the query selector
    • CHANGE start replication via pure functions instead of RxCollection methods.

    NOTICE: An overview about all releases can be found at the changelog

    Source code(tar.gz)
    Source code(zip)
  • 13.17.1(Dec 30, 2022)

  • 13.17.0(Dec 29, 2022)

  • 13.16.1(Dec 27, 2022)

  • 13.16.0(Dec 26, 2022)

  • 13.15.3(Dec 13, 2022)

  • 13.15.2(Dec 11, 2022)

  • 13.15.1(Dec 11, 2022)

  • 13.15.0(Dec 10, 2022)

  • 13.14.3(Dec 9, 2022)

  • 13.14.2(Dec 9, 2022)

  • 13.14.1(Dec 9, 2022)

  • 13.14.0(Dec 9, 2022)

  • 13.13.7(Dec 6, 2022)

  • 13.13.6(Dec 5, 2022)

  • 13.13.5(Dec 2, 2022)

  • 13.13.4(Dec 2, 2022)

  • 13.13.3(Dec 2, 2022)

Owner
Daniel Meyer
git push origin hamster
Daniel Meyer
DolphinDB JavaScript API is a JavaScript library that encapsulates the ability to operate the DolphinDB database, such as: connecting to the database, executing scripts, calling functions, uploading variables, etc.

DolphinDB JavaScript API English | δΈ­ζ–‡ Overview DolphinDB JavaScript API is a JavaScript library that encapsulates the ability to operate the DolphinDB

DolphinDB 6 Dec 12, 2022
A transparent, in-memory, streaming write-on-update JavaScript database for Small Web applications that persists to a JavaScript transaction log.

JavaScript Database (JSDB) A zero-dependency, transparent, in-memory, streaming write-on-update JavaScript database for the Small Web that persists to

Small Technology Foundation 237 Nov 13, 2022
πŸ”₯ Dreamy-db - A Powerful database for storing, accessing, and managing multiple database.

Dreamy-db About Dreamy-db - A Powerful database for storing, accessing, and managing multiple databases. A powerful node.js module that allows you to

Dreamy Developer 24 Dec 22, 2022
A Gmail Clone which built with ReactJS and Redux. You can sign in with your Google Account, compose a new e-mail and send realtime emails to the project.

Gmail Clone with ReactJS A Gmail Clone that you can sign in with your Google Account, compose a new e-mail and send realtime emails to the project. Cl

Γ–zge Coşkun GΓΌrsucu 49 Nov 14, 2022
Thin Backend is a Blazing Fast, Universal Web App Backend for Making Realtime Single Page Apps

Website | Documentation About Thin Thin Backend is a blazing fast, universal web app backend for making realtime single page apps. Instead of manually

digitally induced GmbH 1.1k Dec 25, 2022
Lovefield is a relational database for web apps. Written in JavaScript, works cross-browser. Provides SQL-like APIs that are fast, safe, and easy to use.

Lovefield Lovefield is a relational database written in pure JavaScript. It provides SQL-like syntax and works cross-browser (currently supporting Chr

Google 6.8k Jan 3, 2023
AlaSQL.js - JavaScript SQL database for browser and Node.js. Handles both traditional relational tables and nested JSON data (NoSQL). Export, store, and import data from localStorage, IndexedDB, or Excel.

Please use version 1.x as prior versions has a security flaw if you use user generated data to concat your SQL strings instead of providing them as a

Andrey Gershun 6.1k Jan 9, 2023
The JavaScript Database, for Node.js, nw.js, electron and the browser

The JavaScript Database Embedded persistent or in memory database for Node.js, nw.js, Electron and browsers, 100% JavaScript, no binary dependency. AP

Louis Chatriot 13.2k Jan 2, 2023
⚑️ lowdb is a small local JSON database powered by Lodash (supports Node, Electron and the browser)

Lowdb Small JSON database for Node, Electron and the browser. Powered by Lodash. ⚑ db.get('posts') .push({ id: 1, title: 'lowdb is awesome'}) .wri

null 18.9k Dec 30, 2022
:koala: - PouchDB is a pocket-sized database.

PouchDB – The Database that Syncs! PouchDB is an open-source JavaScript database inspired by Apache CouchDB that is designed to run well within the br

PouchDB 15.4k Dec 30, 2022
Execute one command (or mount one Node.js middleware) and get an instant high-performance GraphQL API for your PostgreSQL database!

PostGraphile Instant lightning-fast GraphQL API backed primarily by your PostgreSQL database. Highly customisable and extensible thanks to incredibly

Graphile 11.7k Jan 4, 2023
πŸ‰ Reactive & asynchronous database for powerful React and React Native apps ⚑️

A reactive database framework Build powerful React and React Native apps that scale from hundreds to tens of thousands of records and remain fast ⚑️ W

Nozbe 8.8k Jan 5, 2023
Realm is a mobile database: an alternative to SQLite & key-value stores

Realm is a mobile database that runs directly inside phones, tablets or wearables. This project hosts the JavaScript versions of Realm. Currently we s

Realm 5.1k Jan 3, 2023
:rocket: One command to generate REST APIs for any MySql Database.

Xmysql : One command to generate REST APIs for any MySql database Why this ? Generating REST APIs for a MySql database which does not follow conventio

null 129 Dec 30, 2022
Bluzelle is a smart, in-memory data store. It can be used as a cache or as a database.

SwarmDB ABOUT SWARMDB Bluzelle brings together the sharing economy and token economy. Bluzelle enables people to rent out their computer storage space

Bluzelle 225 Dec 31, 2022
The ultimate solution for populating your MongoDB database.

Mongo Seeding The ultimate solution for populating your MongoDB database ?? Define MongoDB documents in JSON, JavaScript or even TypeScript files. Use

PaweΕ‚ Kosiec 494 Dec 29, 2022
Node.js client for the Aerospike database

Aerospike Node.js Client An Aerospike add-on module for Node.js. The client is compatible with Node.js v8.x, v10.x (LTS), v12.x (LTS), and v14.x (LTS)

Aerospike 198 Dec 30, 2022
Common Database Interface for Node

database-js Wrapper for multiple databases with a JDBC-like connection Database-js implements a common, promise-based interface for SQL database acces

null 57 Dec 3, 2022
NodeJS PostgreSQL database performance insights. Locks, index usage, buffer cache hit ratios, vacuum stats and more.

Node Postgres Extras NodeJS port of Heroku PG Extras with several additions and improvements. The goal of this project is to provide powerful insights

PaweΕ‚ Urbanek 68 Nov 14, 2022