AeroGear.js 2.0.0

Recently our iOS library announced their 2.0 release.

Today, i’m happy to announce the release of AeroGear.js 2.0!!

Since this is a Major release, there are changes that will likely break existing code as well as some things that have been removed.

I know you are excited to see what this release is all about, so lets check it out.

Deprecation

Pipeline

It is with a heavy heart and even heavier delete key finger, that I say good-bye to our friend, the begining of it all, the underused and overally duplicated, Pipeline.

It was determined that Pipeline and pipes did not add much value since it was basically a wrapper on top of jQuery Ajax.

So Pipeline and pipes have been completely removed in 2.0

If this was something that you used, they will still live on in the 1.X branch

If you would like to move off of them, then you can still use jQuery.Ajax. You can find that documentation here

Authentication

Similar to Pipeline, the Auth module didn’t really add any value to the library, so this has also been removed.

Again It will live on in the 1.X branch

Changes

One big change that i’m excited about is that we decided to fully embrace Promises, specifically ES6 Promises*, where it made sense to through out the library.

Another change is that some of the modules are no longer dependent on the use of jQuery.

Depending on the Module, there have been other specific changes/updates, lets check it out.

*We use this es6 polyfill in the absence of a native implementation

Datamanager

DataManager has fully embraced the Promise. This means that the callback pattern has been removed.

So for example, in the past you could do something like this:

dmStore.read({success: function (result) { ... }});

Now, you would do this:

dmStore.read().then(function (result) {...});

Another cool change is that for the IndexedDB and WebSQL adapters, the auto param has now been updated to default to true. This means that you no longer have to excplitly call open.

So instead of doing something like this:

idbStore.open(...).then(function () {
	idbStore.read(...)
});

You can now just do

idbStore.read(...)

And finally, DataManager is no longer dependent on jQuery.

Ajax Promises

We also updated the internal Ajax library to just use promises also.

This is used by both the UnifiedPush SDK and the Authz OAuth2 module.

Since ES6 promises only have 1 return value we return an object with this signature:

{
    data: dataOrError, - the data or an error
    statusText: statusText, - the status of the response
    
    agXHR: request - the xhr request object
};

Cookbook Examples

The cookbook examples have all been updated with either the 2.0 library or a deprecation notice

Integration Tests

Last but not least the Integration tests have been completely reworked, thanks to lfryc!!!

This allows us to squash those bugs, that should never happen but when they do, much easier.

Code

As always, you can view the source code here

If bower is your thing:

$ bower install aerogear

Or if you want to create a custom build, JS Custom Builder

or use can use the custom grunt command!!

Up Next

For the latest, check out our roadmap here

But a spoiler alert: A Start on DataSync/Revision Control and converting to ES6 modules is next!!

So Stay Tuned

I leave you with this:


Release Notes - AeroGear JavaScript - Version 2.0.0

Bug

  • [AGJS-184] - Vertx and SimplePush integration tests execution issues

Feature Request

  • [AGJS-201] - XMLHttpRequest#response not implemented in Sinon.JS lib & authentication unit tests fail
  • [AGJS-251] - DataManager - Auto connect options should default to true

Task

  • [AGJS-189] - Review DevDependencies Versions
  • [AGJS-211] - Rework Integration Tests from the ground up
  • [AGJS-228] - Deprecate Pipeline
  • [AGJS-229] - Deprecate Authentication Module
  • [AGJS-232] - Remove AeroGear.isArray method from core
  • [AGJS-233] - Remove pipeline integration tests
  • [AGJS-234] - Promisify Library
  • [AGJS-242] - Update cookbook examples with deprecation notices, etc...
  • [AGJS-248] - Move the SimplePush and UnifiedPush examples to the real js-cookbook
  • [AGJS-253] - Cleanup Docs for 2.0 release

Sub-task

  • [AGJS-42] - Remove jQuery dependency from DataManager; embrace Promises instead
  • [AGJS-162] - Remove jQuery Dependency from Auth
  • [AGJS-212] - Update to express 4
  • [AGJS-231] - Update Authz cookbook example without pipeline
  • [AGJS-235] - Promisify Datamanager
  • [AGJS-236] - Promisfy Crypto
  • [AGJS-237] - Promisfy Notifier
  • [AGJS-238] - Promisfy UnifiedPush client
  • [AGJS-239] - Promisfy Authorization
  • [AGJS-240] - Promisfy SimplePush
  • [AGJS-243] - Add deprecation Notice for Pipeline Cookbook example
  • [AGJS-244] - Add deprecation notice on Auth cookbook example
  • [AGJS-245] - Promisify AeroGear.ajax
  • [AGJS-246] - Update unified push example to use just promises
  • [AGJS-247] - Update Datamanager example to use promises not callbacks