From a253722a3658589d99d2f722b02381dd29e65de7 Mon Sep 17 00:00:00 2001 From: Richard Littauer Date: Wed, 8 Jul 2015 13:12:35 -0400 Subject: [PATCH] Checking in build. #208 #210 --- build/main.min.js | 18702 ++++++++++++++++++++++---------------------- 1 file changed, 9479 insertions(+), 9223 deletions(-) diff --git a/build/main.min.js b/build/main.min.js index 55c7d85..df77181 100644 --- a/build/main.min.js +++ b/build/main.min.js @@ -208,7 +208,7 @@ function buildView (options) { var displayHighlights = function () { if (highlightsExist !== false) { - db.get(fingerprint, function (err, response) { + db.allDocs({include_docs: true, keys: [fingerprint]}, function (err, response) { if (err) { highlightsExist = false return console.log('Fingerprint not found in db', err) @@ -217,7 +217,7 @@ function buildView (options) { // console.log('Fingerprint found in db', fingerprint, response) if (!window.beagle.highlights) { - window.beagle.highlights = response.selections + window.beagle.highlights = response.rows[0].doc.selections } _.forEach(window.beagle.highlights, function (selection, i) { @@ -242,15 +242,21 @@ function buildView (options) { displayHighlights() }) } + + React.render( + App(options), + parent.getElementById('react') + ) }) + } else { + // If not a PDF or if PDF broken, no fingerprint will be added. + // Deal with any issues in data in the React app. + React.render( + App(options), + parent.getElementById('react') + ) } - // If not a PDF or if PDF broken, no fingerprint will be added. - // Deal with any issues in data in the React app. - React.render( - App(options), - parent.getElementById('react') - ) linkHandler() @@ -755,27 +761,35 @@ var Highlight = React.createClass({ } function saveSelection (selection) { - db.get(documentId, function (err, value) { + db.allDocs({include_docs: true, key: documentId}, function (err, value) { if (err && err.name !== 'not_found') { return console.log('Failed to get ' + documentId + 'from db', err) + } else if (err) { + return console.log(err) } + + var row = value.rows[0] + /* Instantiate the object if it doesn't exist yet */ - value = value || {} - value._id = documentId + var doc = row.doc || {} + doc._id = documentId + if (row.value && row.value.rev) { + doc._rev = row.value.rev + } /* Add in the selection to the selections array */ - value.selections = value.selections || [] - value.selections.push(selection) + doc.selections = doc.selections || [] + doc.selections.push(selection) /* Get rid of prototypes so we can put this to the database */ - value = JSON.parse(JSON.stringify(value)) - - db.put(value, function (err, response) { - if (err) { console.log('Failed to save selection', err) } - console.log('Stored ' + response.id + ' away...', response) - - // PouchDB.sync('test', PouchDBUrl) + doc = JSON.parse(JSON.stringify(doc)) + db.put(doc, function (err, response) { + if (err) { + console.log('Failed to save selection', err) + } else { + console.log('Stored ' + response.id + ' away...', response) + } }) }) } @@ -919,7 +933,7 @@ var Login = React.createClass({ // OAauth Code goes here. OAuth.initialize('IHLK6uDxpnuH1S71dCwbf30bjBM') // Using popup - OAuth.popup('google').done(function (result) { + OAuth.popup('google', {cache: true}).done(function (result) { console.log(result) result.me().done(function (me) { console.log('Console me: ', me) @@ -1332,7 +1346,7 @@ module.exports.ContactForm = exports.ContactForm = ContactForm module.exports.SendSlack = exports.SendSlack = SendSlack },{"../utilities/classNames.js":"/Users/richard/src/beagle/js/utilities/classNames.js","browser-node-slack":"/Users/richard/src/beagle/node_modules/browser-node-slack/slack.js","react":"/Users/richard/src/beagle/node_modules/react/react.js","react-bootstrap":"/Users/richard/src/beagle/node_modules/react-bootstrap/lib/index.js"}],"/Users/richard/src/beagle/js/data/schema.js":[function(require,module,exports){ -/*globals emit */ +/*globals emit, localStorage */ var crypto = require('crypto') var validator = require('validator') @@ -1347,7 +1361,7 @@ var PouchDB = require('pouchdb') PouchDB.plugin(require('pouchdb-authentication')) var db = new PouchDB(PouchDBUrl) -var request = require('request') +var request = require('request').defaults({jar: true}) // // Create a local DB for testing and usage offline, but use the other DB as much as possible // // TODO Check what happens on connection loss. @@ -1700,155 +1714,112 @@ module.exports.LinkObject = exports.LinkObject = LinkObject // Both the signup and the login functions module.exports.logIn = exports.logIn = function logIn (oauthInfo, cb) { + // Get current session using getSession currently does not work. See issue: + // db.getSession(function (err, response) { - // Get current session - db.getSession(function (err, response) { - if (err) { - // network error - console.log('err', err) - } else if (!response.userCtx.name) { - // Nobody's logged in. - console.log('No one is logged in') - // Bug: Naming the anonymous function as `function map ()` will break CouchDB. - db.query({map: function (doc) { - if (doc.type === 'LINK') { - emit(doc) - } - }}).then(function (result) { - // If there are no results, create a user object with an id and oauth arr - if (result.total_rows === 0) { - request({ - uri: BeagleProxyAPI + '/signUp', - method: 'POST', - form: { - userId: oauthInfo.email, - oauthInfo: oauthInfo - } - }, function (err, res, body) { - if (err) { - console.log('Err with getting user info', err, res) - } else if (res.statusCode !== 200) { - console.log(res.statusCode, body) - } else { - console.log('Result of signing up:', body) - - var user = new LinkObject(oauthInfo) - - // Create the link document - db.put(user).then(function (response) { - console.log('Created link object', response) - }).then(function (response) { - db.getSession(function (err, response) { - if (err) { - console.log('Err', err) - } else if (!response.userCtx.name) { - console.log('Nobody is logged in, still', err, response) - } else { - console.log('User', response.userCtx) - } - }) - }).catch(function (err) { - console.log(err) - }) - } - }) - // If there are results, sign in with given ID as beagleUsername - } else { - console.log('Log the user in', result) - result.rows.some(function (link) { - console.log('Hello', link) - if (oauthInfo.email === link.key.email) { - request({ - uri: BeagleProxyAPI + '/login', - method: 'POST', - form: { - userId: oauthInfo.email, - oauthInfo: oauthInfo - } - }, function (err, res, body) { - if (err) { - console.log('Error logging in', err) - } else { - console.log('Result of logging in', err, res, body) - - db.getSession(function (err, response) { - if (err) { - console.log('Err', err) - } else if (!response.userCtx.name) { - console.log('Nobody is logged in, still,', err, response) - } else { - console.log('User', response.userCtx) - } - }) - - // Add the Oauth token to the link object - // db.get(oauth.email). - } - return true - }) - } - return false - }) - } - }).catch(function (err) { - // Catch errors - console.log('Err', err) - }) - } else { - console.log('User', response.userCtx) - // response.userCtx.name is the current user - } - }) - // If not logged in, log in - // If not exist, create - // If exists, authenticate and log in -} - -// var user = new LinkObject({ -// provider: 'google', -// account: '117598722553782441947', -// email: 'richard.littauer@gmail.com', -// token: 'ya29.owF9ALI87lYi6LBeUmVnPI5vGqrWX970Q0STGzBFccvSnZQk9svCQJc3DJkVrYXDTuPcynBGd_XyFg' -// }) - -// // Create the link document -// db.put(user).then(function (response) { -// console.log('Created link object', response) -// }).catch(function (err) { -// console.log(err) -// }) - -// db.get('599c8ebd244182506db8687de3b4ae6de81b1756').then(function (response) { -// console.log('response', response) -// }) - -// db.getUser('richard.littauer@gmail.com').then(function(response) { -// console.log(response) -// }).catch(function(err){ -// console.log(err) -// }) - -// exports.logIn({ -// provider: 'google', -// account: '117598722553782441947', -// email: 'richard.littauer@gmail.com', -// token: 'ya29.owF9ALI87lYi6LBeUmVnPI5vGqrWX970Q0STGzBFccvSnZQk9svCQJc3DJkVrYXDTuPcynBGd_XyFg' -// }, function (err, res, body) { -// if (err) { -// console.log('Err with getting user info', err) -// } else if (res.statusCode !== 200) { -// console.log(res.statusCode, body) -// } else { -// console.log('Result of signing up:', body) - -// // Create the link document -// // db.put(user).then(function (response) { -// // console.log('Created link object') -// // }).catch(function (err) { -// // console.log(err) -// // }) -// } -// }) + if (localStorage.userId !== 'undefined') { + console.log(localStorage.userId) + return localStorage.userId + } else { + // Bug: Naming the anonymous function as `function map ()` will break CouchDB. + db.query({map: function (doc) { + if (doc.type === 'LINK') { + emit(doc) + } + }}).then(function (result) { + // If there is a link object, sign in with given ID as beagleUsername + if (result.total_rows !== 0) { + // console.log('Log the user in', result) + result.rows.some(function (link) { + // console.log('Hello', link) + if (oauthInfo.email === link.key.email) { + request({ + uri: BeagleProxyAPI + '/login', + method: 'POST', + form: { + userId: oauthInfo.email, + oauthInfo: oauthInfo + } + }, function (err, res, body) { + if (err) { + console.log('Error logging in', err) + } else if (res.statusCode !== 200) { + console.log('Invalid status code from server', res) + } else { + console.log('Result of logging in', body) + + console.log('body.name', oauthInfo.email) + + // TODO Cache this instead of just popping it on window + localStorage.userId = oauthInfo.email + return localStorage.userId + + // Again, db.getSession is not working right now. + // db.getSession(function (err, response) { + // if (err) { + // console.log('Err', err) + // } else if (!response.userCtx.name) { + // console.log('Nobody is logged in, still,', err, response) + // } else { + // console.log('User', response.userCtx) + // } + // }) + + // Add the Oauth token to the link object + // TODO Do this - right now, the OAuth tokens aren't even being used. + // db.get(oauth.email). + } + return true + }) + } + return false + }) + // If there are no results, create a user object with an id and oauth arr + } else { + request({ + uri: BeagleProxyAPI + '/signUp', + method: 'POST', + form: { + userId: oauthInfo.email, + oauthInfo: oauthInfo + } + }, function (err, res, body) { + if (err) { + console.log('Err with getting user info', err, res) + } else if (res.statusCode !== 200) { + console.log(res.statusCode, body) + } else { + console.log('Result of signing up:', body) + + var user = new LinkObject(oauthInfo) + + // Create the link document + db.put(user).then(function (response) { + console.log('Created link object', response) + + localStorage.userId = oauthInfo.email + return localStorage.userId + // db.getSession(function (err, response) { + // if (err) { + // console.log('Err', err) + // } else if (!response.userCtx.name) { + // console.log('Nobody is logged in, still', err, response) + // } else { + // console.log('User', response.userCtx) + // } + // }) + }).catch(function (err) { + console.log(err) + }) + } + }) + } + }).catch(function (err) { + // Catch errors + console.log('Err', err) + }) + } +} module.exports.login = module.exports.logIn @@ -2098,7 +2069,7 @@ module.exports.permissionMatch = exports.permissionMatch = function permissionMa },{"../env.js":"/Users/richard/src/beagle/js/env.js","../utilities/galapagos.js":"/Users/richard/src/beagle/js/utilities/galapagos.js","crypto":"/Users/richard/src/beagle/node_modules/browserify/node_modules/crypto-browserify/index.js","lodash":"/Users/richard/src/beagle/node_modules/lodash/index.js","pouchdb":"/Users/richard/src/beagle/node_modules/pouchdb/lib/index.js","pouchdb-authentication":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/lib/index.js","request":"/Users/richard/src/beagle/node_modules/request/index.js","validator":"/Users/richard/src/beagle/node_modules/validator/validator.js"}],"/Users/richard/src/beagle/js/env.js":[function(require,module,exports){ // For all intents and purposes, these are global vars // TODO: Find a better way to do this -var PouchDBUrl = 'http://54.164.111.240:5984/test' +var PouchDBUrl = 'http://54.164.111.240:5984/dev' module.exports.PouchDBUrl = PouchDBUrl },{}],"/Users/richard/src/beagle/js/lib/url-checks.js":[function(require,module,exports){ @@ -5368,7 +5339,7 @@ var showHighlight = function (selected, cb) { 'left:' + Math.min(bounds[0], bounds[2]) + 'px; top:' + Math.min(bounds[1], bounds[3]) + 'px;' + 'width:' + Math.abs(bounds[0] - bounds[2]) + 'px; height:' + Math.abs(bounds[1] - bounds[3]) + 'px;') pageElement.appendChild(el) - return cb() + return cb && cb() }) } return @@ -187242,11 +187213,15 @@ function getBaseUrl(db) { } exports.getUsersUrl = function (db) { var url = getBaseUrl(db) + '/_users'; - return url.replace('\/\/\/', '/'); + url = url.replace('\/\/\/', '/') + console.log('User URL: ', url) + return url; }; exports.getSessionUrl = function (db) { var url = getBaseUrl(db) + '/_session'; - return url.replace('\/\/\/', '/'); + // url = url.replace('\/\/\/', '/') + console.log('Session URL: ', url) + return url; }; exports.once = function (fun) { var called = false; @@ -187327,7 +187302,7 @@ exports.uuid = require('./uuid'); exports.Promise = Promise; }).call(this,require('_process')) -},{"./uuid":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/lib/uuid.js","_process":"/Users/richard/src/beagle/node_modules/browserify/node_modules/process/browser.js","inherits":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/inherits/inherits_browser.js","pouchdb-extend":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/pouchdb-extend/index.js","pouchdb/extras/ajax":"/Users/richard/src/beagle/node_modules/pouchdb/extras/ajax.js","pouchdb/extras/promise":"/Users/richard/src/beagle/node_modules/pouchdb/extras/promise.js"}],"/Users/richard/src/beagle/node_modules/pouchdb-authentication/lib/uuid.js":[function(require,module,exports){ +},{"./uuid":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/lib/uuid.js","_process":"/Users/richard/src/beagle/node_modules/browserify/node_modules/process/browser.js","inherits":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/inherits/inherits_browser.js","pouchdb-extend":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/pouchdb-extend/index.js","pouchdb/extras/ajax":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/pouchdb/extras/ajax.js","pouchdb/extras/promise":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/pouchdb/extras/promise.js"}],"/Users/richard/src/beagle/node_modules/pouchdb-authentication/lib/uuid.js":[function(require,module,exports){ "use strict"; // BEGIN Math.uuid.js @@ -187414,6 +187389,477 @@ module.exports = uuid; },{}],"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/inherits/inherits_browser.js":[function(require,module,exports){ arguments[4]["/Users/richard/src/beagle/node_modules/beagle-altmetrics/node_modules/accum-transform/node_modules/through2/node_modules/readable-stream/node_modules/inherits/inherits_browser.js"][0].apply(exports,arguments) +},{}],"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/INTERNAL.js":[function(require,module,exports){ +'use strict'; + +module.exports = INTERNAL; + +function INTERNAL() {} +},{}],"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/all.js":[function(require,module,exports){ +'use strict'; +var Promise = require('./promise'); +var reject = require('./reject'); +var resolve = require('./resolve'); +var INTERNAL = require('./INTERNAL'); +var handlers = require('./handlers'); +module.exports = all; +function all(iterable) { + if (Object.prototype.toString.call(iterable) !== '[object Array]') { + return reject(new TypeError('must be an array')); + } + + var len = iterable.length; + var called = false; + if (!len) { + return resolve([]); + } + + var values = new Array(len); + var resolved = 0; + var i = -1; + var promise = new Promise(INTERNAL); + + while (++i < len) { + allResolver(iterable[i], i); + } + return promise; + function allResolver(value, i) { + resolve(value).then(resolveFromAll, function (error) { + if (!called) { + called = true; + handlers.reject(promise, error); + } + }); + function resolveFromAll(outValue) { + values[i] = outValue; + if (++resolved === len & !called) { + called = true; + handlers.resolve(promise, values); + } + } + } +} +},{"./INTERNAL":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/INTERNAL.js","./handlers":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/handlers.js","./promise":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/promise.js","./reject":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/reject.js","./resolve":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/resolve.js"}],"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/handlers.js":[function(require,module,exports){ +'use strict'; +var tryCatch = require('./tryCatch'); +var resolveThenable = require('./resolveThenable'); +var states = require('./states'); + +exports.resolve = function (self, value) { + var result = tryCatch(getThen, value); + if (result.status === 'error') { + return exports.reject(self, result.value); + } + var thenable = result.value; + + if (thenable) { + resolveThenable.safely(self, thenable); + } else { + self.state = states.FULFILLED; + self.outcome = value; + var i = -1; + var len = self.queue.length; + while (++i < len) { + self.queue[i].callFulfilled(value); + } + } + return self; +}; +exports.reject = function (self, error) { + self.state = states.REJECTED; + self.outcome = error; + var i = -1; + var len = self.queue.length; + while (++i < len) { + self.queue[i].callRejected(error); + } + return self; +}; + +function getThen(obj) { + // Make sure we only access the accessor once as required by the spec + var then = obj && obj.then; + if (obj && typeof obj === 'object' && typeof then === 'function') { + return function appyThen() { + then.apply(obj, arguments); + }; + } +} + +},{"./resolveThenable":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/resolveThenable.js","./states":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/states.js","./tryCatch":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/tryCatch.js"}],"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/index.js":[function(require,module,exports){ +module.exports = exports = require('./promise'); + +exports.resolve = require('./resolve'); +exports.reject = require('./reject'); +exports.all = require('./all'); +exports.race = require('./race'); + +},{"./all":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/all.js","./promise":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/promise.js","./race":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/race.js","./reject":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/reject.js","./resolve":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/resolve.js"}],"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/promise.js":[function(require,module,exports){ +'use strict'; + +var unwrap = require('./unwrap'); +var INTERNAL = require('./INTERNAL'); +var resolveThenable = require('./resolveThenable'); +var states = require('./states'); +var QueueItem = require('./queueItem'); + +module.exports = Promise; +function Promise(resolver) { + if (!(this instanceof Promise)) { + return new Promise(resolver); + } + if (typeof resolver !== 'function') { + throw new TypeError('resolver must be a function'); + } + this.state = states.PENDING; + this.queue = []; + this.outcome = void 0; + if (resolver !== INTERNAL) { + resolveThenable.safely(this, resolver); + } +} + +Promise.prototype['catch'] = function (onRejected) { + return this.then(null, onRejected); +}; +Promise.prototype.then = function (onFulfilled, onRejected) { + if (typeof onFulfilled !== 'function' && this.state === states.FULFILLED || + typeof onRejected !== 'function' && this.state === states.REJECTED) { + return this; + } + var promise = new Promise(INTERNAL); + if (this.state !== states.PENDING) { + var resolver = this.state === states.FULFILLED ? onFulfilled : onRejected; + unwrap(promise, resolver, this.outcome); + } else { + this.queue.push(new QueueItem(promise, onFulfilled, onRejected)); + } + + return promise; +}; + +},{"./INTERNAL":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/INTERNAL.js","./queueItem":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/queueItem.js","./resolveThenable":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/resolveThenable.js","./states":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/states.js","./unwrap":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/unwrap.js"}],"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/queueItem.js":[function(require,module,exports){ +'use strict'; +var handlers = require('./handlers'); +var unwrap = require('./unwrap'); + +module.exports = QueueItem; +function QueueItem(promise, onFulfilled, onRejected) { + this.promise = promise; + if (typeof onFulfilled === 'function') { + this.onFulfilled = onFulfilled; + this.callFulfilled = this.otherCallFulfilled; + } + if (typeof onRejected === 'function') { + this.onRejected = onRejected; + this.callRejected = this.otherCallRejected; + } +} +QueueItem.prototype.callFulfilled = function (value) { + handlers.resolve(this.promise, value); +}; +QueueItem.prototype.otherCallFulfilled = function (value) { + unwrap(this.promise, this.onFulfilled, value); +}; +QueueItem.prototype.callRejected = function (value) { + handlers.reject(this.promise, value); +}; +QueueItem.prototype.otherCallRejected = function (value) { + unwrap(this.promise, this.onRejected, value); +}; + +},{"./handlers":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/handlers.js","./unwrap":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/unwrap.js"}],"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/race.js":[function(require,module,exports){ +'use strict'; +var Promise = require('./promise'); +var reject = require('./reject'); +var resolve = require('./resolve'); +var INTERNAL = require('./INTERNAL'); +var handlers = require('./handlers'); +module.exports = race; +function race(iterable) { + if (Object.prototype.toString.call(iterable) !== '[object Array]') { + return reject(new TypeError('must be an array')); + } + + var len = iterable.length; + var called = false; + if (!len) { + return resolve([]); + } + + var i = -1; + var promise = new Promise(INTERNAL); + + while (++i < len) { + resolver(iterable[i]); + } + return promise; + function resolver(value) { + resolve(value).then(function (response) { + if (!called) { + called = true; + handlers.resolve(promise, response); + } + }, function (error) { + if (!called) { + called = true; + handlers.reject(promise, error); + } + }); + } +} + +},{"./INTERNAL":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/INTERNAL.js","./handlers":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/handlers.js","./promise":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/promise.js","./reject":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/reject.js","./resolve":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/resolve.js"}],"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/reject.js":[function(require,module,exports){ +'use strict'; + +var Promise = require('./promise'); +var INTERNAL = require('./INTERNAL'); +var handlers = require('./handlers'); +module.exports = reject; + +function reject(reason) { + var promise = new Promise(INTERNAL); + return handlers.reject(promise, reason); +} +},{"./INTERNAL":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/INTERNAL.js","./handlers":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/handlers.js","./promise":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/promise.js"}],"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/resolve.js":[function(require,module,exports){ +'use strict'; + +var Promise = require('./promise'); +var INTERNAL = require('./INTERNAL'); +var handlers = require('./handlers'); +module.exports = resolve; + +var FALSE = handlers.resolve(new Promise(INTERNAL), false); +var NULL = handlers.resolve(new Promise(INTERNAL), null); +var UNDEFINED = handlers.resolve(new Promise(INTERNAL), void 0); +var ZERO = handlers.resolve(new Promise(INTERNAL), 0); +var EMPTYSTRING = handlers.resolve(new Promise(INTERNAL), ''); + +function resolve(value) { + if (value) { + if (value instanceof Promise) { + return value; + } + return handlers.resolve(new Promise(INTERNAL), value); + } + var valueType = typeof value; + switch (valueType) { + case 'boolean': + return FALSE; + case 'undefined': + return UNDEFINED; + case 'object': + return NULL; + case 'number': + return ZERO; + case 'string': + return EMPTYSTRING; + } +} +},{"./INTERNAL":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/INTERNAL.js","./handlers":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/handlers.js","./promise":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/promise.js"}],"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/resolveThenable.js":[function(require,module,exports){ +'use strict'; +var handlers = require('./handlers'); +var tryCatch = require('./tryCatch'); +function safelyResolveThenable(self, thenable) { + // Either fulfill, reject or reject with error + var called = false; + function onError(value) { + if (called) { + return; + } + called = true; + handlers.reject(self, value); + } + + function onSuccess(value) { + if (called) { + return; + } + called = true; + handlers.resolve(self, value); + } + + function tryToUnwrap() { + thenable(onSuccess, onError); + } + + var result = tryCatch(tryToUnwrap); + if (result.status === 'error') { + onError(result.value); + } +} +exports.safely = safelyResolveThenable; +},{"./handlers":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/handlers.js","./tryCatch":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/tryCatch.js"}],"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/states.js":[function(require,module,exports){ +// Lazy man's symbols for states + +exports.REJECTED = ['REJECTED']; +exports.FULFILLED = ['FULFILLED']; +exports.PENDING = ['PENDING']; + +},{}],"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/tryCatch.js":[function(require,module,exports){ +'use strict'; + +module.exports = tryCatch; + +function tryCatch(func, value) { + var out = {}; + try { + out.value = func(value); + out.status = 'success'; + } catch (e) { + out.status = 'error'; + out.value = e; + } + return out; +} +},{}],"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/unwrap.js":[function(require,module,exports){ +'use strict'; + +var immediate = require('immediate'); +var handlers = require('./handlers'); +module.exports = unwrap; + +function unwrap(promise, func, value) { + immediate(function () { + var returnValue; + try { + returnValue = func(value); + } catch (e) { + return handlers.reject(promise, e); + } + if (returnValue === promise) { + handlers.reject(promise, new TypeError('Cannot resolve promise with itself')); + } else { + handlers.resolve(promise, returnValue); + } + }); +} +},{"./handlers":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/lib/handlers.js","immediate":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/node_modules/immediate/lib/index.js"}],"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/node_modules/immediate/lib/index.js":[function(require,module,exports){ +'use strict'; +var types = [ + require('./nextTick'), + require('./mutation.js'), + require('./messageChannel'), + require('./stateChange'), + require('./timeout') +]; +var draining; +var queue = []; +//named nextTick for less confusing stack traces +function nextTick() { + draining = true; + var i, oldQueue; + var len = queue.length; + while (len) { + oldQueue = queue; + queue = []; + i = -1; + while (++i < len) { + oldQueue[i](); + } + len = queue.length; + } + draining = false; +} +var scheduleDrain; +var i = -1; +var len = types.length; +while (++ i < len) { + if (types[i] && types[i].test && types[i].test()) { + scheduleDrain = types[i].install(nextTick); + break; + } +} +module.exports = immediate; +function immediate(task) { + if (queue.push(task) === 1 && !draining) { + scheduleDrain(); + } +} +},{"./messageChannel":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/node_modules/immediate/lib/messageChannel.js","./mutation.js":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/node_modules/immediate/lib/mutation.js","./nextTick":"/Users/richard/src/beagle/node_modules/browserify/node_modules/browser-resolve/empty.js","./stateChange":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/node_modules/immediate/lib/stateChange.js","./timeout":"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/node_modules/immediate/lib/timeout.js"}],"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/node_modules/immediate/lib/messageChannel.js":[function(require,module,exports){ +(function (global){ +'use strict'; + +exports.test = function () { + if (global.setImmediate) { + // we can only get here in IE10 + // which doesn't handel postMessage well + return false; + } + return typeof global.MessageChannel !== 'undefined'; +}; + +exports.install = function (func) { + var channel = new global.MessageChannel(); + channel.port1.onmessage = func; + return function () { + channel.port2.postMessage(0); + }; +}; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/node_modules/immediate/lib/mutation.js":[function(require,module,exports){ +(function (global){ +'use strict'; +//based off rsvp https://github.com/tildeio/rsvp.js +//license https://github.com/tildeio/rsvp.js/blob/master/LICENSE +//https://github.com/tildeio/rsvp.js/blob/master/lib/rsvp/asap.js + +var Mutation = global.MutationObserver || global.WebKitMutationObserver; + +exports.test = function () { + return Mutation; +}; + +exports.install = function (handle) { + var called = 0; + var observer = new Mutation(handle); + var element = global.document.createTextNode(''); + observer.observe(element, { + characterData: true + }); + return function () { + element.data = (called = ++called % 2); + }; +}; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],"/Users/richard/src/beagle/node_modules/pouchdb-authentication/node_modules/lie/node_modules/immediate/lib/stateChange.js":[function(require,module,exports){ +(function (global){ +'use strict'; + +exports.test = function () { + return 'document' in global && 'onreadystatechange' in global.document.createElement('script'); +}; + +exports.install = function (handle) { + return function () { + + // Create a