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