Convert from Q -> $q

Project: http://git-wip-us.apache.org/repos/asf/cordova-app-harness/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/cordova-app-harness/commit/029d36bb
Tree: http://git-wip-us.apache.org/repos/asf/cordova-app-harness/tree/029d36bb
Diff: http://git-wip-us.apache.org/repos/asf/cordova-app-harness/diff/029d36bb

Branch: refs/heads/master
Commit: 029d36bb0d6ea137512038ad97e027fc28a83f4e
Parents: c3939e0
Author: Andrew Grieve <[email protected]>
Authored: Thu Oct 17 17:12:49 2013 -0400
Committer: Andrew Grieve <[email protected]>
Committed: Wed Oct 23 21:55:18 2013 -0400

----------------------------------------------------------------------
 www/cdvah_js/AddCtrl.js            |   3 +-
 www/cdvah_js/AppBundleAlias.js     |  10 +--
 www/cdvah_js/AppsService.js        |  18 +++---
 www/cdvah_js/CdvhPackageHandler.js |   4 +-
 www/cdvah_js/CrxPackageHandler.js  |   4 +-
 www/cdvah_js/Installer.js          |  14 ++---
 www/cdvah_js/ResourcesLoader.js    | 105 +++++++++++++++-----------------
 www/cdvah_js/app.js                |   2 -
 www/cdvah_js/libs/q.min.js         |  19 ------
 9 files changed, 73 insertions(+), 106 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-app-harness/blob/029d36bb/www/cdvah_js/AddCtrl.js
----------------------------------------------------------------------
diff --git a/www/cdvah_js/AddCtrl.js b/www/cdvah_js/AddCtrl.js
index e004f21..2066ca5 100644
--- a/www/cdvah_js/AddCtrl.js
+++ b/www/cdvah_js/AddCtrl.js
@@ -16,8 +16,7 @@
             serviceCall.then(function(handler) {
                 console.log('successfully installed');
                 notifier.success('Successfully installed');
-                return AppsService.updateApp(handler)
-                .done();
+                return AppsService.updateApp(handler);
             }, function(error) {
                 console.error(error);
                 notifier.error('Unable to add application because: ' + 
error.message);

http://git-wip-us.apache.org/repos/asf/cordova-app-harness/blob/029d36bb/www/cdvah_js/AppBundleAlias.js
----------------------------------------------------------------------
diff --git a/www/cdvah_js/AppBundleAlias.js b/www/cdvah_js/AppBundleAlias.js
index bad75f2..a06b1d4 100644
--- a/www/cdvah_js/AppBundleAlias.js
+++ b/www/cdvah_js/AppBundleAlias.js
@@ -1,13 +1,13 @@
 (function() {
     "use strict";
     /* global myApp */
-    myApp.factory("AppBundle", ['$window', function($window) {
+    myApp.factory("AppBundle", ['$q', '$window', function($q, $window) {
 
         // URI aliasing : the ability to launch an app in the harness, query 
the document.location and get the same location as would have been got if you 
run the app separately
         // Without URI aliasing, document.location in the harness would give 
something like file:///APP_HARNESS_INSTALLED_APPS_LOCATION/www/index.html
 
         function aliasUri(sourceUriMatchRegex, sourceUriReplaceRegex, 
replaceString, redirectToReplacedUrl){
-            var deferred = Q.defer();
+            var deferred = $q.defer();
             cordova.plugins.appBundle.addAlias(sourceUriMatchRegex, 
sourceUriReplaceRegex, replaceString, redirectToReplacedUrl, function(succeded) 
{
                 if (succeded){
                     deferred.resolve();
@@ -19,19 +19,19 @@
         }
 
         function setResetUrl(url) {
-            var deferred = Q.defer();
+            var deferred = $q.defer();
             cordova.plugins.appBundle.setResetUrl(url, deferred.resolve);
             return deferred.promise;
         }
 
         function injectJsForUrl(url, js) {
-            var deferred = Q.defer();
+            var deferred = $q.defer();
             cordova.plugins.appBundle.injectJsForUrl(url, js, 
deferred.resolve);
             return deferred.promise;
         }
 
         function reset() {
-            var deferred = Q.defer();
+            var deferred = $q.defer();
             cordova.plugins.appBundle.clearAllAliases(deferred.resolve);
             return deferred.promise;
         }

http://git-wip-us.apache.org/repos/asf/cordova-app-harness/blob/029d36bb/www/cdvah_js/AppsService.js
----------------------------------------------------------------------
diff --git a/www/cdvah_js/AppsService.js b/www/cdvah_js/AppsService.js
index 4d152a2..6b14e08 100644
--- a/www/cdvah_js/AppsService.js
+++ b/www/cdvah_js/AppsService.js
@@ -1,7 +1,7 @@
 (function() {
     "use strict";
     /* global myApp */
-    myApp.factory("AppsService", [ "ResourcesLoader", "INSTALL_DIRECTORY", 
"APPS_JSON", function(ResourcesLoader, INSTALL_DIRECTORY, APPS_JSON) {
+    myApp.factory("AppsService", ["$q", "ResourcesLoader", 
"INSTALL_DIRECTORY", "APPS_JSON", function($q, ResourcesLoader, 
INSTALL_DIRECTORY, APPS_JSON) {
 
         var platformId = cordova.platformId;
         // Map of type -> installer.
@@ -24,7 +24,7 @@
         }
 
         function readAppsJson() {
-            var deferred = Q.defer();
+            var deferred = $q.defer();
             ResourcesLoader.readJSONFileContents(APPS_JSON)
             .then(function(result) {
                 deferred.resolve(result);
@@ -37,7 +37,7 @@
 
         function initHandlers() {
             if (_installers) {
-                return Q();
+                return $q.when();
             }
 
             return readAppsJson()
@@ -90,9 +90,7 @@
 
             addApp : function(installerType, appUrl) {
                 var installerFactory = _installerFactories[installerType];
-                return Q.fcall(function(){
-                    return installerFactory.createFromUrl(appUrl);
-                })
+                return installerFactory.createFromUrl(appUrl)
                 .then(function(installer) {
                     _installers.push(installer);
                     return writeAppsJson()
@@ -115,11 +113,9 @@
             },
 
             updateApp : function(installer){
-                return Q.fcall(function() {
-                    var installPath = INSTALL_DIRECTORY + '/' + 
installer.appId;
-                    return installer.updateApp(installPath)
-                    .then(writeAppsJson);
-                });
+                var installPath = INSTALL_DIRECTORY + '/' + installer.appId;
+                return installer.updateApp(installPath)
+                .then(writeAppsJson);
             },
 
             registerInstallerFactory : function(installerFactory) {

http://git-wip-us.apache.org/repos/asf/cordova-app-harness/blob/029d36bb/www/cdvah_js/CdvhPackageHandler.js
----------------------------------------------------------------------
diff --git a/www/cdvah_js/CdvhPackageHandler.js 
b/www/cdvah_js/CdvhPackageHandler.js
index a5dc56a..a37ba86 100644
--- a/www/cdvah_js/CdvhPackageHandler.js
+++ b/www/cdvah_js/CdvhPackageHandler.js
@@ -1,7 +1,7 @@
 (function(){
     "use strict";
     /* global myApp */
-    myApp.run(["AppsService", "ResourcesLoader", "ContextMenuInjectScript", 
function(AppsService, ResourcesLoader, ContextMenuInjectScript){
+    myApp.run(["$q", "AppsService", "ResourcesLoader", 
"ContextMenuInjectScript", function($q, AppsService, ResourcesLoader, 
ContextMenuInjectScript){
 
         var platformId = cordova.require("cordova/platform").id;
 
@@ -37,7 +37,7 @@
                 })
                 .then(function(fileExists){
                     if(fileExists){
-                        return Q.all([
+                        return $q.all([
                             ResourcesLoader.appendFileContents(cordovaFile, 
dataToAppend),
                             
copyFile("app-bundle:///cdvh_files/www/cordova_plugins.js", pluginsFile)
                         ]);

http://git-wip-us.apache.org/repos/asf/cordova-app-harness/blob/029d36bb/www/cdvah_js/CrxPackageHandler.js
----------------------------------------------------------------------
diff --git a/www/cdvah_js/CrxPackageHandler.js 
b/www/cdvah_js/CrxPackageHandler.js
index 9c4500c..5ac73c4 100644
--- a/www/cdvah_js/CrxPackageHandler.js
+++ b/www/cdvah_js/CrxPackageHandler.js
@@ -1,7 +1,7 @@
 (function(){
     "use strict";
     /* global myApp */
-    myApp.run(["AppsService", "ResourcesLoader", "ContextMenuInjectScript", 
function(AppsService, ResourcesLoader, ContextMenuInjectScript){
+    myApp.run(["$q", "AppsService", "ResourcesLoader", 
"ContextMenuInjectScript", function($q, AppsService, ResourcesLoader, 
ContextMenuInjectScript){
 
         var platformId = cordova.require("cordova/platform").id;
 
@@ -53,7 +53,7 @@
                         copies.push(copyFile("app-bundle:///" + 
plugins[i].file, platformWWWDirectory + plugins[i].file));
                     }
 
-                    return Q.all(copies);
+                    return $q.all(copies);
                 })
                 .then(function(){
                     return ResourcesLoader.appendFileContents(cordovaFile, 
dataToAppend);

http://git-wip-us.apache.org/repos/asf/cordova-app-harness/blob/029d36bb/www/cdvah_js/Installer.js
----------------------------------------------------------------------
diff --git a/www/cdvah_js/Installer.js b/www/cdvah_js/Installer.js
index d77971c..9aff2de 100644
--- a/www/cdvah_js/Installer.js
+++ b/www/cdvah_js/Installer.js
@@ -1,7 +1,7 @@
 (function(){
     "use strict";
     /* global myApp */
-    myApp.factory("Installer", ["AppBundle", "ResourcesLoader", 
"ContextMenuInjectScript", function(AppBundle, ResourcesLoader, 
ContextMenuInjectScript) {
+    myApp.factory("Installer", ["$q", "AppBundle", "ResourcesLoader", 
"ContextMenuInjectScript", function($q, AppBundle, ResourcesLoader, 
ContextMenuInjectScript) {
 
         function getAppStartPageFromConfig(configFile) {
             return ResourcesLoader.readFileContents(configFile)
@@ -46,13 +46,11 @@
         };
 
         Installer.prototype.deleteFiles = function() {
-            var self = this;
-            return Q.fcall(function() {
-                self.lastUpdated = null;
-                if (self.installPath) {
-                    return ResourcesLoader.deleteDirectory(self.installPath);
-                }
-            });
+            this.lastUpdated = null;
+            if (this.installPath) {
+                return ResourcesLoader.deleteDirectory(this.installPath);
+            }
+            return $q.when();
         };
 
         Installer.prototype.launch = function() {

http://git-wip-us.apache.org/repos/asf/cordova-app-harness/blob/029d36bb/www/cdvah_js/ResourcesLoader.js
----------------------------------------------------------------------
diff --git a/www/cdvah_js/ResourcesLoader.js b/www/cdvah_js/ResourcesLoader.js
index 9a3e1ea..34fdbc8 100644
--- a/www/cdvah_js/ResourcesLoader.js
+++ b/www/cdvah_js/ResourcesLoader.js
@@ -2,17 +2,17 @@
     "use strict";
 
     /* global myApp */
-    myApp.factory("ResourcesLoader", [ "$window", function ($window) {
+    myApp.factory("ResourcesLoader", ["$q", "$window", function($q, $window) {
         var rootDir;
 
         function initialiseFileSystem() {
             // HACK: Need to discuss better way to get the root entry.
-            return Q(rootDir = new $window.DirectoryEntry('/', '/'));
+            return $q.when(rootDir = new $window.DirectoryEntry('/', '/'));
         }
 
         //promise returns full path to downloaded file
         function downloadFromUrl(url, fullFilePath) {
-            var deferred = Q.defer();
+            var deferred = $q.defer();
 
             var downloadFail = function(error) {
                 var str = "There was an error while downloading the file " + 
JSON.stringify(error);
@@ -49,7 +49,7 @@
 
         //promise returns the directory entry
         function getDirectoryEntry(directoryName) {
-            var deferred = Q.defer();
+            var deferred = $q.defer();
 
             var errorWhileGettingDirectoryEntry = function(error) {
                 var str = "There was an error while getting the directory 
entry for directory " + directoryName + " " + JSON.stringify(error);
@@ -64,7 +64,7 @@
 
         //promise returns the file entry
         function getFileEntry(fileName, createFlag) {
-            var deferred = Q.defer();
+            var deferred = $q.defer();
 
             var errorWhileGettingFileEntry = function(error) {
                 var str = "There was an error while getting the file entry for 
file " + fileName + " " + JSON.stringify(error);
@@ -82,7 +82,7 @@
         function getFile(fileName) {
             return getFileEntry(fileName, true  /* create */).
             then(function(fileEntry){
-                var deferred = Q.defer();
+                var deferred = $q.defer();
 
                 var errorWhileGettingFile = function(error) {
                     var str = "There was an error while getting the file for 
file " + fileName + " " + JSON.stringify(error);
@@ -111,7 +111,7 @@
         }
 
         function ensureSingleDirectoryExists(directory){
-            var deferred = Q.defer();
+            var deferred = $q.defer();
 
             var gotDirEntry = function(dirEntry) {
                 deferred.resolve(dirEntry.fullPath);
@@ -127,18 +127,16 @@
         }
 
         function ensureDirectoryExists(directory){
-            return Q.fcall(function(){
-                directory = truncateToDirectoryPath(directory);
-                directory = fixFilePath(directory);
-                var segments = getPathSegments(directory);
-                var currentDir = directory.charAt(0) === "/"? "/" : "";
-                var promiseArr = [];
-                while(segments.length !== 0) {
-                    currentDir +=  segments.shift() + "/";
-                    promiseArr.push(ensureSingleDirectoryExists(currentDir));
-                }
-                return Q.all(promiseArr);
-            })
+            directory = truncateToDirectoryPath(directory);
+            directory = fixFilePath(directory);
+            var segments = getPathSegments(directory);
+            var currentDir = directory.charAt(0) === "/"? "/" : "";
+            var promiseArr = [];
+            while(segments.length !== 0) {
+                currentDir +=  segments.shift() + "/";
+                promiseArr.push(ensureSingleDirectoryExists(currentDir));
+            }
+            return $q.all(promiseArr)
             .then(function(paths){
                 return paths[paths.length - 1];
             });
@@ -147,7 +145,7 @@
         function writeToFile(fileName, contents, append) {
             return getFileEntry(fileName, true)
             .then(function(fileEntry){
-                var deferred = Q.defer();
+                var deferred = $q.defer();
 
                 var errorGettingFileWriter = function(error) {
                     var str = "There was an error writing the file." + 
JSON.stringify(error);
@@ -170,7 +168,7 @@
         }
 
         function xhrGet(url){
-            var deferred = Q.defer();
+            var deferred = $q.defer();
             var xhr = new XMLHttpRequest();
             xhr.onreadystatechange = function() {
                 if (xhr.readyState === 4) {
@@ -212,38 +210,35 @@
 
             //returns a promise with the contents of the file
             readFileContents : function(fileName) {
-                return Q.fcall(function(){
-                    var scheme = getScheme(fileName);
-                    // assume file scheme by default
-                    if(!scheme || scheme === "file") {
-                        return initialiseFileSystem()
-                        .then(function(){
-                            return getFile(fileName);
-                        })
-                        .then(function(file){
-                            var deferred = Q.defer();
-
-                            var reader = new $window.FileReader();
-                            reader.onload = function(evt) {
-                                var text = evt.target.result;
-                                deferred.resolve(text);
-                            };
-                            reader.onerror = function(evt) {
-                                deferred.reject(new Error(evt));
-                            };
-                            reader.readAsText(file);
-
-                            return deferred.promise;
-                        });
-                    } else if(scheme === "http" || scheme === "https") {
-                        return xhrGet(fileName)
-                        .then(function(xhr){
-                            return xhr.responseText;
-                        });
-                    } else {
-                        throw new Error("Cannot read file " + fileName);
-                    }
-                });
+                var scheme = getScheme(fileName);
+                // assume file scheme by default
+                if (!scheme || scheme === "file") {
+                    return initialiseFileSystem()
+                    .then(function(){
+                        return getFile(fileName);
+                    })
+                    .then(function(file){
+                        var deferred = $q.defer();
+
+                        var reader = new $window.FileReader();
+                        reader.onload = function(evt) {
+                            var text = evt.target.result;
+                            deferred.resolve(text);
+                        };
+                        reader.onerror = function(evt) {
+                            deferred.reject(new Error(evt));
+                        };
+                        reader.readAsText(file);
+
+                        return deferred.promise;
+                    });
+                } else if(scheme === "http" || scheme === "https") {
+                    return xhrGet(fileName)
+                    .then(function(xhr){
+                        return xhr.responseText;
+                    });
+                }
+                throw new Error("Cannot read file " + fileName);
             },
 
             //returns a promise with the json contents of the file
@@ -287,7 +282,7 @@
                     return getDirectoryEntry(directoryName);
                 })
                 .then(function(dirEntry){
-                    var deferred = Q.defer();
+                    var deferred = $q.defer();
                     var failedToDeleteDirectory = function(error) {
                         var str = "There was an error deleting the directory: 
" + directoryName + " " + JSON.stringify(error);
                         deferred.reject(new Error(str));
@@ -303,7 +298,7 @@
                     return ensureDirectoryExists(outputDirectory);
                 })
                 .then(function(){
-                    var deferred = Q.defer();
+                    var deferred = $q.defer();
 
                     var onZipDone = function(returnCode) {
                         if(returnCode !== 0) {

http://git-wip-us.apache.org/repos/asf/cordova-app-harness/blob/029d36bb/www/cdvah_js/app.js
----------------------------------------------------------------------
diff --git a/www/cdvah_js/app.js b/www/cdvah_js/app.js
index 9aa5429..6873a57 100644
--- a/www/cdvah_js/app.js
+++ b/www/cdvah_js/app.js
@@ -1,6 +1,4 @@
 
-Q.longStackSupport = true;
-
 var myApp = angular.module("CordovaAppHarness", ['ngRoute']);
 
 

http://git-wip-us.apache.org/repos/asf/cordova-app-harness/blob/029d36bb/www/cdvah_js/libs/q.min.js
----------------------------------------------------------------------
diff --git a/www/cdvah_js/libs/q.min.js b/www/cdvah_js/libs/q.min.js
deleted file mode 100644
index 7a27b9a..0000000
--- a/www/cdvah_js/libs/q.min.js
+++ /dev/null
@@ -1,19 +0,0 @@
-(function(k){"function"===typeof 
bootstrap?bootstrap("promise",k):"object"===typeof 
exports?module.exports=k():"function"===typeof 
define&&define.amd?define(k):"undefined"!==typeof 
ses?ses.ok()&&(ses.makeQ=k):Q=k()})(function(){function k(a){var 
b=Function.call;return function(){return b.apply(a,arguments)}}function 
L(a,b){b.stack&&("object"===typeof 
a&&null!==a&&a.stack&&-1===a.stack.indexOf(M))&&(a.stack=N(a.stack)+"\n"+M+"\n"+N(b.stack))}function
 N(a){for(var a=a.split("\n"),b=[],d=0;d<a.length;++d){var j=
-a[d],c;if(c=/at .+ \((.*):(\d+):\d+\)/.exec(j)){var 
g=c[2];c=c[1]===O&&g>=aa&&g<=ba}else 
c=!1;!c&&!(-1!==j.indexOf("(module.js:")||-1!==j.indexOf("(node.js:"))&&b.push(j)}return
 b.join("\n")}function P(){if(Error.captureStackTrace){var 
a,b,d=Error.prepareStackTrace;Error.prepareStackTrace=function(d,c){a=c[1].getFileName();b=c[1].getLineNumber()};Error().stack;Error.prepareStackTrace=d;O=a;return
 b}}function c(a){return p(a)}function i(){function 
a(a){b&&(j=p(a),t(b,function(a,b){l(function(){j.promiseDispatch.apply(j,
-b)})},void 0),d=b=void 0)}var 
b=[],d=[],j,e=C(i.prototype),g=C(m.prototype);g.promiseDispatch=function(a,c,g){var
 
e=h(arguments);b?(b.push(e),"when"===c&&g[1]&&d.push(g[1])):l(function(){j.promiseDispatch.apply(j,e)})};g.valueOf=function(){if(b)return
 g;var a=o(j);u(a)&&(j=a);return 
a};Error.captureStackTrace&&0<c.longStackJumpLimit&&(Error.captureStackTrace(g,i),g.stack=g.stack.substring(g.stack.indexOf("\n")+1));e.promise=g;e.resolve=a;e.fulfill=function(b){a(D(b))};e.reject=function(b){a(n(b))};
-e.notify=function(a){b&&t(d,function(b,d){l(function(){d(a)})},void 0)};return 
e}function m(a,b,d,c,e){void 0===b&&(b=function(a){return n(Error("Promise does 
not support operation: "+a))});var 
g=C(m.prototype);g.promiseDispatch=function(d,c,j){var 
e;try{e=a[c]?a[c].apply(g,j):b.call(g,c,j)}catch(f){e=n(f)}d&&d(e)};d&&(g.valueOf=d);e&&(g.exception=c);return
 g}function o(a){return u(a)?a.valueOf():a}function u(a){return 
a&&"function"===typeof a.promiseDispatch}function E(a){return a&&"function"===
-typeof a.then}function F(a){return!E(o(a))}function R(a){a=o(a);return 
u(a)&&"exception"in a}function n(a){var b=m({when:function(b){if(b){var 
c=ca(G,this);-1!==c&&(v.splice(c,1),G.splice(c,1))}return 
b?b(a):this}},function(){return n(a)},function(){return 
this},a,!0);!S&&("undefined"!==typeof 
window&&!window.Touch&&window.console)&&console.log("Should be 
empty:",v);S=!0;G.push(b);v.push(a);return b}function D(a){return 
m({when:function(){return a},get:function(b){return 
a[b]},set:function(b,d){a[b]=
-d},"delete":function(b){delete a[b]},post:function(b,d){return null===b||void 
0===b?a.apply(void 0,d):a[b].apply(a,d)},apply:function(b,d){return 
a.apply(b,d)},keys:function(){return da(a)}},void 0,function(){return 
a})}function p(a){if(u(a))return a;a=o(a);if(E(a)){var 
b=a,d=i();l(function(){try{b.then(d.resolve,d.reject,d.notify)}catch(a){d.reject(a)}});return
 d.promise}return D(a)}function f(a,b,d,j){function 
e(a){try{return"function"===typeof b?b(a):a}catch(d){return n(d)}}function 
g(a){if("function"===
-typeof d){L(a,k);try{return d(a)}catch(b){return n(b)}}return n(a)}var 
f=i(),h=!1,k=p(a);l(function(){k.promiseDispatch(function(a){h||(h=!0,f.resolve(e(a)))},"when",[function(a){h||(h=!0,f.resolve(g(a)))}])});k.promiseDispatch(void
 0,"when",[void 0,function(a){var b,d=!1;try{b="function"===typeof 
j?j(a):a}catch(e){if(d=!0,c.onerror)c.onerror(e);else throw 
e;}d||f.notify(b)}]);return f.promise}function T(a,b,d){return 
f(a,function(a){return A(a).then(function(a){return b.apply(void 
0,a)},d)},d)}function w(a,
-b,d){var c=i();l(function(){p(a).promiseDispatch(c.resolve,b,d)});return 
c.promise}function q(a){return function(b){var d=h(arguments,1);return 
w(b,a,d)}}function U(a,b){var d=h(arguments,2);return H(a,b,d)}function 
r(a,b){return w(a,"apply",[void 0,b])}function I(a){var b=h(arguments,1);return 
r(a,b)}function A(a){return f(a,function(a){var 
d=0,c=i();t(a,function(e,g,h){F(g)?a[h]=o(g):(++d,f(g,function(e){a[h]=e;0===--d&&c.resolve(a)},c.reject))},void
 0);0===d&&c.resolve(a);return c.promise})}function V(a,
-b){return f(a,void 0,b)}var aa=P(),O,W=function(){},l;if("undefined"!==typeof 
process)l=process.nextTick;else if("function"===typeof 
setImmediate)l="undefined"!==typeof 
window?setImmediate.bind(window):setImmediate;else{var 
X=function(){--s;if(++J>=x){J=0;x*=4;for(var 
a=y&&Math.min(y-1,x);s<a;)++s,B()}for(;y;)--y,z=z.next,a=z.task,z.task=void 
0,a();J=0},z={task:void 
0,next:null},Y=z,x=2,s=0,y=0,J=0,B;l=function(a){Y=Y.next={task:a,next:null};s<++y&&s<x&&(++s,B())};if("undefined"!==typeof
 MessageChannel){var Z=
-new 
MessageChannel;Z.port1.onmessage=X;B=function(){Z.port2.postMessage(0)}}else 
B=function(){setTimeout(X,0)}}var 
h=k(Array.prototype.slice),t=k(Array.prototype.reduce||function(a,b){var 
d=0,c=this.length;if(1===arguments.length){do{if(d in 
this){b=this[d++];break}if(++d>=c)throw new TypeError;}while(1)}for(;d<c;d++)d 
in this&&(b=a(b,this[d],d));return 
b}),ca=k(Array.prototype.indexOf||function(a){for(var 
b=0;b<this.length;b++)if(this[b]===a)return 
b;return-1}),$=k(Array.prototype.map||function(a,
-b){var d=this,c=[];t(d,function(e,g,f){c.push(a.call(b,g,f,d))},void 0);return 
c}),C=Object.create||function(a){function b(){}b.prototype=a;return new 
b},ea=k(Object.prototype.hasOwnProperty),da=Object.keys||function(a){var 
b=[],d;for(d in a)ea(a,d)&&b.push(d);return 
b},fa=k(Object.prototype.toString),K;K="undefined"!==typeof 
ReturnValue?ReturnValue:function(a){this.value=a};c.longStackJumpLimit=1;var 
M="From previous 
event:";c.nextTick=l;c.defer=i;i.prototype.makeNodeResolver=function(){var 
a=this;
-return 
function(b,d){b?a.reject(b):2<arguments.length?a.resolve(h(arguments,1)):a.resolve(d)}};c.promise=function(a){var
 b=i();I(a,b.resolve,b.reject,b.notify).fail(b.reject);return 
b.promise};c.makePromise=m;m.prototype.then=function(a,b,d){return 
f(this,a,b,d)};m.prototype.thenResolve=function(a){return 
f(this,function(){return a})};m.prototype.thenReject=function(a){return 
f(this,function(){throw a;})};t("isFulfilled isRejected isPending dispatch when 
spread get put set del delete post send invoke keys fapply fcall fbind all 
allResolved timeout delay catch finally fail fin progress done nfcall nfapply 
nfbind denodeify nbind ncall napply nbind npost nsend ninvoke nodeify".split(" 
"),
-function(a,b){m.prototype[b]=function(){return 
c[b].apply(c,[this].concat(h(arguments)))}},void 
0);m.prototype.toSource=function(){return 
this.toString()};m.prototype.toString=function(){return"[object 
Promise]"};c.nearer=o;c.isPromise=u;c.isPromiseAlike=E;c.isPending=function(a){return!F(a)&&!R(a)};c.isFulfilled=F;c.isRejected=R;var
 G=[],v=[],S;if("undefined"!==typeof 
process&&process.on)process.on("exit",function(){for(var 
a=0;a<v.length;a++){var b=v[a];b&&"undefined"!==typeof 
b.stack?console.warn("Unhandled rejected promise:",
-b.stack):console.warn("Unhandled rejected promise (no 
stack):",b)}});c.reject=n;c.fulfill=D;c.resolve=p;c.master=function(a){return 
m({isDef:function(){}},function(b,d){return w(a,b,d)},function(){return 
o(a)})};c.when=f;c.spread=T;c.async=function(a){return function(){function 
b(a,b){var h;try{h=d[a](b)}catch(i){return"[object StopIteration]"===fa(i)||i 
instanceof K?i.value:n(i)}return f(h,c,e)}var 
d=a.apply(this,arguments),c=b.bind(b,"send"),e=b.bind(b,"throw");return 
c()}};c["return"]=function(a){throw new K(a);
-};c.promised=function(a){return function(){return 
T([this,A(arguments)],function(b,d){return 
a.apply(b,d)})}};c.dispatch=w;c.dispatcher=q;c.get=q("get");c.set=q("set");c["delete"]=c.del=q("delete");var
 
H=c.post=q("post");c.send=U;c.invoke=U;c.fapply=r;c["try"]=I;c.fcall=I;c.fbind=function(a){var
 b=h(arguments,1);return function(){var d=b.concat(h(arguments));return 
w(a,"apply",[this,d])}};c.keys=q("keys");c.all=A;c.allResolved=function(a){return
 f(a,function(a){a=$(a,p);return f(A($(a,function(a){return f(a,
-W,W)})),function(){return 
a})})};c["catch"]=c.fail=V;c.progress=function(a,b){return f(a,void 0,void 
0,b)};c["finally"]=c.fin=function(a,b){return f(a,function(a){return 
f(b(),function(){return a})},function(a){return f(b(),function(){return 
n(a)})})};c.done=function(a,b,d,j){var 
e=function(b){l(function(){L(b,a);if(c.onerror)c.onerror(b);else throw 
b;})},b=b||d||j?f(a,b,d,j):a;"object"===typeof 
process&&(process&&process.domain)&&(e=process.domain.bind(e));V(b,e)};c.timeout=function(a,b){var
 d=i(),
-c=setTimeout(function(){d.reject(Error("Timed out after "+b+" 
ms"))},b);f(a,function(a){clearTimeout(c);d.resolve(a)},function(a){clearTimeout(c);d.reject(a)},d.notify);return
 d.promise};c.delay=function(a,b){void 0===b&&(b=a,a=void 0);var d=i();f(a,void 
0,void 0,d.notify);setTimeout(function(){d.resolve(a)},b);return 
d.promise};c.nfapply=function(a,b){var 
d=h(b),c=i();d.push(c.makeNodeResolver());r(a,d).fail(c.reject);return 
c.promise};c.nfcall=function(a){var 
b=h(arguments,1),d=i();b.push(d.makeNodeResolver());
-r(a,b).fail(d.reject);return d.promise};c.nfbind=function(a){var 
b=h(arguments,1);return function(){var 
d=b.concat(h(arguments)),c=i();d.push(c.makeNodeResolver());r(a,d).fail(c.reject);return
 c.promise}};c.denodeify=c.nfbind;c.nbind=function(a,b){var 
d=h(arguments,2);return function(){var 
c=d.concat(h(arguments)),e=i();c.push(e.makeNodeResolver());r(function(){return 
a.apply(b,arguments)},c).fail(e.reject);return 
e.promise}};c.npost=function(a,b,d){var 
d=h(d||[]),c=i();d.push(c.makeNodeResolver());
-H(a,b,d).fail(c.reject);return c.promise};c.nsend=function(a,b){var 
c=h(arguments,2),f=i();c.push(f.makeNodeResolver());H(a,b,c).fail(f.reject);return
 
f.promise};c.ninvoke=c.nsend;c.nodeify=function(a,b){if(b)a.then(function(a){l(function(){b(null,a)})},function(a){l(function(){b(a)})});else
 return a};var ba=P();return c});

Reply via email to