Comparing version 1.2.0 to 1.2.1
@@ -102,74 +102,69 @@ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.blobUtil = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){ | ||
},{}],2:[function(_dereq_,module,exports){ | ||
(function (global){ | ||
'use strict'; | ||
var types = [ | ||
_dereq_(5), | ||
_dereq_(4), | ||
_dereq_(3), | ||
_dereq_(6), | ||
_dereq_(7) | ||
]; | ||
var draining; | ||
var currentQueue; | ||
var queueIndex = -1; | ||
var queue = []; | ||
var scheduled = false; | ||
function cleanUpNextTick() { | ||
draining = false; | ||
if (currentQueue && currentQueue.length) { | ||
queue = currentQueue.concat(queue); | ||
var Mutation = global.MutationObserver || global.WebKitMutationObserver; | ||
var scheduleDrain; | ||
{ | ||
if (Mutation) { | ||
var called = 0; | ||
var observer = new Mutation(nextTick); | ||
var element = global.document.createTextNode(''); | ||
observer.observe(element, { | ||
characterData: true | ||
}); | ||
scheduleDrain = function () { | ||
element.data = (called = ++called % 2); | ||
}; | ||
} else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') { | ||
var channel = new global.MessageChannel(); | ||
channel.port1.onmessage = nextTick; | ||
scheduleDrain = function () { | ||
channel.port2.postMessage(0); | ||
}; | ||
} else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) { | ||
scheduleDrain = function () { | ||
// Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted | ||
// into the document. Do so, thus queuing up the task. Remember to clean up once it's been called. | ||
var scriptEl = global.document.createElement('script'); | ||
scriptEl.onreadystatechange = function () { | ||
nextTick(); | ||
scriptEl.onreadystatechange = null; | ||
scriptEl.parentNode.removeChild(scriptEl); | ||
scriptEl = null; | ||
}; | ||
global.document.documentElement.appendChild(scriptEl); | ||
}; | ||
} else { | ||
queueIndex = -1; | ||
scheduleDrain = function () { | ||
setTimeout(nextTick, 0); | ||
}; | ||
} | ||
if (queue.length) { | ||
nextTick(); | ||
} | ||
} | ||
var draining; | ||
var queue = []; | ||
//named nextTick for less confusing stack traces | ||
function nextTick() { | ||
scheduled = false; | ||
draining = true; | ||
var i, oldQueue; | ||
var len = queue.length; | ||
var timeout = setTimeout(cleanUpNextTick); | ||
while (len) { | ||
currentQueue = queue; | ||
oldQueue = queue; | ||
queue = []; | ||
while (++queueIndex < len) { | ||
currentQueue[queueIndex].run(); | ||
i = -1; | ||
while (++i < len) { | ||
oldQueue[i](); | ||
} | ||
queueIndex = -1; | ||
len = queue.length; | ||
} | ||
queueIndex = -1; | ||
draining = false; | ||
clearTimeout(timeout); | ||
} | ||
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; | ||
} | ||
} | ||
// v8 likes predictible objects | ||
function Item(fun, array) { | ||
this.fun = fun; | ||
this.array = array; | ||
} | ||
Item.prototype.run = function () { | ||
this.fun.apply(null, this.array); | ||
}; | ||
module.exports = immediate; | ||
function immediate(task) { | ||
var args = new Array(arguments.length - 1); | ||
if (arguments.length > 1) { | ||
for (var i = 1; i < arguments.length; i++) { | ||
args[i - 1] = arguments[i]; | ||
} | ||
} | ||
queue.push(new Item(task, args)); | ||
if (!scheduled && !draining) { | ||
scheduled = true; | ||
if (queue.push(task) === 1 && !draining) { | ||
scheduleDrain(); | ||
@@ -179,241 +174,41 @@ } | ||
},{"3":3,"4":4,"5":5,"6":6,"7":7}],3:[function(_dereq_,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 : {}) | ||
},{}],4:[function(_dereq_,module,exports){ | ||
(function (global){ | ||
},{}],3:[function(_dereq_,module,exports){ | ||
'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 immediate = _dereq_(2); | ||
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 : {}) | ||
},{}],5:[function(_dereq_,module,exports){ | ||
(function (process){ | ||
'use strict'; | ||
exports.test = function () { | ||
// Don't get fooled by e.g. browserify environments. | ||
return (typeof process !== 'undefined') && !process.browser; | ||
}; | ||
exports.install = function (func) { | ||
return function () { | ||
process.nextTick(func); | ||
}; | ||
}; | ||
}).call(this,_dereq_(21)) | ||
},{"21":21}],6:[function(_dereq_,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 <script> element; its readystatechange event will be fired asynchronously once it is inserted | ||
// into the document. Do so, thus queuing up the task. Remember to clean up once it's been called. | ||
var scriptEl = global.document.createElement('script'); | ||
scriptEl.onreadystatechange = function () { | ||
handle(); | ||
scriptEl.onreadystatechange = null; | ||
scriptEl.parentNode.removeChild(scriptEl); | ||
scriptEl = null; | ||
}; | ||
global.document.documentElement.appendChild(scriptEl); | ||
return handle; | ||
}; | ||
}; | ||
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) | ||
},{}],7:[function(_dereq_,module,exports){ | ||
'use strict'; | ||
exports.test = function () { | ||
return true; | ||
}; | ||
exports.install = function (t) { | ||
return function () { | ||
setTimeout(t, 0); | ||
}; | ||
}; | ||
},{}],8:[function(_dereq_,module,exports){ | ||
'use strict'; | ||
module.exports = INTERNAL; | ||
/* istanbul ignore next */ | ||
function INTERNAL() {} | ||
},{}],9:[function(_dereq_,module,exports){ | ||
'use strict'; | ||
var Promise = _dereq_(12); | ||
var reject = _dereq_(14); | ||
var resolve = _dereq_(15); | ||
var INTERNAL = _dereq_(8); | ||
var handlers = _dereq_(10); | ||
var noArray = reject(new TypeError('must be an array')); | ||
module.exports = function all(iterable) { | ||
if (Object.prototype.toString.call(iterable) !== '[object Array]') { | ||
return noArray; | ||
} | ||
var len = iterable.length; | ||
var called = false; | ||
if (!len) { | ||
return resolve([]); | ||
} | ||
var handlers = {}; | ||
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); | ||
} | ||
} | ||
} | ||
}; | ||
},{"10":10,"12":12,"14":14,"15":15,"8":8}],10:[function(_dereq_,module,exports){ | ||
'use strict'; | ||
var tryCatch = _dereq_(18); | ||
var resolveThenable = _dereq_(16); | ||
var states = _dereq_(17); | ||
var REJECTED = ['REJECTED']; | ||
var FULFILLED = ['FULFILLED']; | ||
var PENDING = ['PENDING']; | ||
exports.resolve = function (self, value) { | ||
var result = tryCatch(getThen, value); | ||
if (result.status === 'error') { | ||
return exports.reject(self, result.value); | ||
} | ||
var thenable = result.value; | ||
module.exports = exports = Promise; | ||
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); | ||
}; | ||
} | ||
} | ||
},{"16":16,"17":17,"18":18}],11:[function(_dereq_,module,exports){ | ||
module.exports = exports = _dereq_(12); | ||
exports.resolve = _dereq_(15); | ||
exports.reject = _dereq_(14); | ||
exports.all = _dereq_(9); | ||
},{"12":12,"14":14,"15":15,"9":9}],12:[function(_dereq_,module,exports){ | ||
'use strict'; | ||
var unwrap = _dereq_(19); | ||
var INTERNAL = _dereq_(8); | ||
var resolveThenable = _dereq_(16); | ||
var states = _dereq_(17); | ||
var QueueItem = _dereq_(13); | ||
module.exports = Promise; | ||
function Promise(resolver) { | ||
if (!(this instanceof Promise)) { | ||
return new Promise(resolver); | ||
} | ||
if (typeof resolver !== 'function') { | ||
throw new TypeError('reslover must be a function'); | ||
throw new TypeError('resolver must be a function'); | ||
} | ||
this.state = states.PENDING; | ||
this.state = PENDING; | ||
this.queue = []; | ||
this.outcome = void 0; | ||
if (resolver !== INTERNAL) { | ||
resolveThenable.safely(this, resolver); | ||
safelyResolveThenable(this, resolver); | ||
} | ||
} | ||
Promise.prototype['catch'] = function (onRejected) { | ||
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) { | ||
if (typeof onFulfilled !== 'function' && this.state === FULFILLED || | ||
typeof onRejected !== 'function' && this.state === REJECTED) { | ||
return this; | ||
} | ||
var promise = new Promise(INTERNAL); | ||
if (this.state !== states.PENDING) { | ||
var resolver = this.state === states.FULFILLED ? onFulfilled: onRejected; | ||
var promise = new this.constructor(INTERNAL); | ||
if (this.state !== PENDING) { | ||
var resolver = this.state === FULFILLED ? onFulfilled : onRejected; | ||
unwrap(promise, resolver, this.outcome); | ||
@@ -426,9 +221,2 @@ } else { | ||
}; | ||
},{"13":13,"16":16,"17":17,"19":19,"8":8}],13:[function(_dereq_,module,exports){ | ||
'use strict'; | ||
var handlers = _dereq_(10); | ||
var unwrap = _dereq_(19); | ||
module.exports = QueueItem; | ||
function QueueItem(promise, onFulfilled, onRejected) { | ||
@@ -457,53 +245,60 @@ this.promise = promise; | ||
}; | ||
},{"10":10,"19":19}],14:[function(_dereq_,module,exports){ | ||
'use strict'; | ||
var Promise = _dereq_(12); | ||
var INTERNAL = _dereq_(8); | ||
var handlers = _dereq_(10); | ||
module.exports = reject; | ||
function reject(reason) { | ||
var promise = new Promise(INTERNAL); | ||
return handlers.reject(promise, reason); | ||
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); | ||
} | ||
}); | ||
} | ||
},{"10":10,"12":12,"8":8}],15:[function(_dereq_,module,exports){ | ||
'use strict'; | ||
var Promise = _dereq_(12); | ||
var INTERNAL = _dereq_(8); | ||
var handlers = _dereq_(10); | ||
module.exports = resolve; | ||
handlers.resolve = function (self, value) { | ||
var result = tryCatch(getThen, value); | ||
if (result.status === 'error') { | ||
return handlers.reject(self, result.value); | ||
} | ||
var thenable = result.value; | ||
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; | ||
if (thenable) { | ||
safelyResolveThenable(self, thenable); | ||
} else { | ||
self.state = FULFILLED; | ||
self.outcome = value; | ||
var i = -1; | ||
var len = self.queue.length; | ||
while (++i < len) { | ||
self.queue[i].callFulfilled(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; | ||
return self; | ||
}; | ||
handlers.reject = function (self, error) { | ||
self.state = 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); | ||
}; | ||
} | ||
} | ||
},{"10":10,"12":12,"8":8}],16:[function(_dereq_,module,exports){ | ||
'use strict'; | ||
var handlers = _dereq_(10); | ||
var tryCatch = _dereq_(18); | ||
function safelyResolveThenable(self, thenable) { | ||
@@ -531,3 +326,3 @@ // Either fulfill, reject or reject with error | ||
} | ||
var result = tryCatch(tryToUnwrap); | ||
@@ -538,14 +333,3 @@ if (result.status === 'error') { | ||
} | ||
exports.safely = safelyResolveThenable; | ||
},{"10":10,"18":18}],17:[function(_dereq_,module,exports){ | ||
// Lazy man's symbols for states | ||
exports.REJECTED = ['REJECTED']; | ||
exports.FULFILLED = ['FULFILLED']; | ||
exports.PENDING = ['PENDING']; | ||
},{}],18:[function(_dereq_,module,exports){ | ||
'use strict'; | ||
module.exports = tryCatch; | ||
function tryCatch(func, value) { | ||
@@ -562,93 +346,95 @@ var out = {}; | ||
} | ||
},{}],19:[function(_dereq_,module,exports){ | ||
'use strict'; | ||
var immediate = _dereq_(2); | ||
var handlers = _dereq_(10); | ||
module.exports = unwrap; | ||
exports.resolve = resolve; | ||
function resolve(value) { | ||
if (value instanceof this) { | ||
return value; | ||
} | ||
return handlers.resolve(new this(INTERNAL), value); | ||
} | ||
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); | ||
} | ||
}); | ||
exports.reject = reject; | ||
function reject(reason) { | ||
var promise = new this(INTERNAL); | ||
return handlers.reject(promise, reason); | ||
} | ||
},{"10":10,"2":2}],20:[function(_dereq_,module,exports){ | ||
(function (global){ | ||
if (typeof global.Promise === 'function') { | ||
module.exports = global.Promise; | ||
} else { | ||
module.exports = _dereq_(11); | ||
} | ||
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) | ||
},{"11":11}],21:[function(_dereq_,module,exports){ | ||
// shim for using process in browser | ||
var process = module.exports = {}; | ||
var queue = []; | ||
var draining = false; | ||
exports.all = all; | ||
function all(iterable) { | ||
var self = this; | ||
if (Object.prototype.toString.call(iterable) !== '[object Array]') { | ||
return this.reject(new TypeError('must be an array')); | ||
} | ||
function drainQueue() { | ||
if (draining) { | ||
return; | ||
var len = iterable.length; | ||
var called = false; | ||
if (!len) { | ||
return this.resolve([]); | ||
} | ||
var values = new Array(len); | ||
var resolved = 0; | ||
var i = -1; | ||
var promise = new this(INTERNAL); | ||
while (++i < len) { | ||
allResolver(iterable[i], i); | ||
} | ||
return promise; | ||
function allResolver(value, i) { | ||
self.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); | ||
} | ||
} | ||
draining = true; | ||
var currentQueue; | ||
var len = queue.length; | ||
while(len) { | ||
currentQueue = queue; | ||
queue = []; | ||
var i = -1; | ||
while (++i < len) { | ||
currentQueue[i](); | ||
} | ||
len = queue.length; | ||
} | ||
draining = false; | ||
} | ||
} | ||
process.nextTick = function (fun) { | ||
queue.push(fun); | ||
if (!draining) { | ||
setTimeout(drainQueue, 0); | ||
} | ||
}; | ||
process.title = 'browser'; | ||
process.browser = true; | ||
process.env = {}; | ||
process.argv = []; | ||
process.version = ''; // empty string to avoid regexp issues | ||
process.versions = {}; | ||
exports.race = race; | ||
function race(iterable) { | ||
var self = this; | ||
if (Object.prototype.toString.call(iterable) !== '[object Array]') { | ||
return this.reject(new TypeError('must be an array')); | ||
} | ||
function noop() {} | ||
var len = iterable.length; | ||
var called = false; | ||
if (!len) { | ||
return this.resolve([]); | ||
} | ||
process.on = noop; | ||
process.addListener = noop; | ||
process.once = noop; | ||
process.off = noop; | ||
process.removeListener = noop; | ||
process.removeAllListeners = noop; | ||
process.emit = noop; | ||
var i = -1; | ||
var promise = new this(INTERNAL); | ||
process.binding = function (name) { | ||
throw new Error('process.binding is not supported'); | ||
}; | ||
while (++i < len) { | ||
resolver(iterable[i]); | ||
} | ||
return promise; | ||
function resolver(value) { | ||
self.resolve(value).then(function (response) { | ||
if (!called) { | ||
called = true; | ||
handlers.resolve(promise, response); | ||
} | ||
}, function (error) { | ||
if (!called) { | ||
called = true; | ||
handlers.reject(promise, error); | ||
} | ||
}); | ||
} | ||
} | ||
// TODO(shtylman) | ||
process.cwd = function () { return '/' }; | ||
process.chdir = function (dir) { | ||
throw new Error('process.chdir is not supported'); | ||
}; | ||
process.umask = function() { return 0; }; | ||
},{"2":2}],4:[function(_dereq_,module,exports){ | ||
module.exports = typeof Promise === 'function' ? Promise : _dereq_(3); | ||
},{}],22:[function(_dereq_,module,exports){ | ||
},{"3":3}],5:[function(_dereq_,module,exports){ | ||
'use strict'; | ||
@@ -658,3 +444,3 @@ | ||
var Blob = _dereq_(1); | ||
var Promise = _dereq_(20); | ||
var Promise = _dereq_(4); | ||
@@ -965,3 +751,3 @@ // | ||
},{"1":1,"20":20}]},{},[22])(22) | ||
},{"1":1,"4":4}]},{},[5])(5) | ||
}); |
@@ -1,1 +0,1 @@ | ||
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.blobUtil=e()}}(function(){return function e(t,n,r){function o(u,f){if(!n[u]){if(!t[u]){var c="function"==typeof require&&require;if(!f&&c)return c(u,!0);if(i)return i(u,!0);var a=new Error("Cannot find module '"+u+"'");throw a.code="MODULE_NOT_FOUND",a}var s=n[u]={exports:{}};t[u][0].call(s.exports,function(e){var n=t[u][1][e];return o(n?n:e)},s,s.exports,e,t,n,r)}return n[u].exports}for(var i="function"==typeof require&&require,u=0;u<r.length;u++)o(r[u]);return o}({1:[function(e,t,n){(function(e){function n(e){for(var t=0;t<e.length;t++){var n=e[t];if(n.buffer instanceof ArrayBuffer){var r=n.buffer;if(n.byteLength!==r.byteLength){var o=new Uint8Array(n.byteLength);o.set(new Uint8Array(r,n.byteOffset,n.byteLength)),r=o.buffer}e[t]=r}}}function r(e,t){t=t||{};var r=new i;n(e);for(var o=0;o<e.length;o++)r.append(e[o]);return t.type?r.getBlob(t.type):r.getBlob()}function o(e,t){return n(e),new Blob(e,t||{})}var i=e.BlobBuilder||e.WebKitBlobBuilder||e.MSBlobBuilder||e.MozBlobBuilder,u=function(){try{var e=new Blob(["hi"]);return 2===e.size}catch(t){return!1}}(),f=u&&function(){try{var e=new Blob([new Uint8Array([1,2])]);return 2===e.size}catch(t){return!1}}(),c=i&&i.prototype.append&&i.prototype.getBlob;t.exports=function(){return u?f?e.Blob:o:c?r:void 0}()}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],2:[function(e,t,n){"use strict";function r(){f=!1,c&&c.length?d=c.concat(d):l=-1,d.length&&o()}function o(){p=!1,f=!0;for(var e=d.length,t=setTimeout(r);e;){for(c=d,d=[];++l<e;)c[l].run();l=-1,e=d.length}l=-1,f=!1,clearTimeout(t)}function i(e,t){this.fun=e,this.array=t}function u(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];d.push(new i(e,t)),p||f||(p=!0,a())}for(var f,c,a,s=[e(5),e(4),e(3),e(6),e(7)],l=-1,d=[],p=!1,h=-1,v=s.length;++h<v;)if(s[h]&&s[h].test&&s[h].test()){a=s[h].install(o);break}i.prototype.run=function(){this.fun.apply(null,this.array)},t.exports=u},{3:3,4:4,5:5,6:6,7:7}],3:[function(e,t,n){(function(e){"use strict";n.test=function(){return e.setImmediate?!1:"undefined"!=typeof e.MessageChannel},n.install=function(t){var n=new e.MessageChannel;return n.port1.onmessage=t,function(){n.port2.postMessage(0)}}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(e,t,n){(function(e){"use strict";var t=e.MutationObserver||e.WebKitMutationObserver;n.test=function(){return t},n.install=function(n){var r=0,o=new t(n),i=e.document.createTextNode("");return o.observe(i,{characterData:!0}),function(){i.data=r=++r%2}}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],5:[function(e,t,n){(function(e){"use strict";n.test=function(){return"undefined"!=typeof e&&!e.browser},n.install=function(t){return function(){e.nextTick(t)}}}).call(this,e(21))},{21:21}],6:[function(e,t,n){(function(e){"use strict";n.test=function(){return"document"in e&&"onreadystatechange"in e.document.createElement("script")},n.install=function(t){return function(){var n=e.document.createElement("script");return n.onreadystatechange=function(){t(),n.onreadystatechange=null,n.parentNode.removeChild(n),n=null},e.document.documentElement.appendChild(n),t}}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],7:[function(e,t,n){"use strict";n.test=function(){return!0},n.install=function(e){return function(){setTimeout(e,0)}}},{}],8:[function(e,t,n){"use strict";function r(){}t.exports=r},{}],9:[function(e,t,n){"use strict";var r=e(12),o=e(14),i=e(15),u=e(8),f=e(10),c=o(new TypeError("must be an array"));t.exports=function(e){function t(e,t){function r(e){a[t]=e,++s===n&!o&&(o=!0,f.resolve(d,a))}i(e).then(r,function(e){o||(o=!0,f.reject(d,e))})}if("[object Array]"!==Object.prototype.toString.call(e))return c;var n=e.length,o=!1;if(!n)return i([]);for(var a=new Array(n),s=0,l=-1,d=new r(u);++l<n;)t(e[l],l);return d}},{10:10,12:12,14:14,15:15,8:8}],10:[function(e,t,n){"use strict";function r(e){var t=e&&e.then;return e&&"object"==typeof e&&"function"==typeof t?function(){t.apply(e,arguments)}:void 0}var o=e(18),i=e(16),u=e(17);n.resolve=function(e,t){var f=o(r,t);if("error"===f.status)return n.reject(e,f.value);var c=f.value;if(c)i.safely(e,c);else{e.state=u.FULFILLED,e.outcome=t;for(var a=-1,s=e.queue.length;++a<s;)e.queue[a].callFulfilled(t)}return e},n.reject=function(e,t){e.state=u.REJECTED,e.outcome=t;for(var n=-1,r=e.queue.length;++n<r;)e.queue[n].callRejected(t);return e}},{16:16,17:17,18:18}],11:[function(e,t,n){t.exports=n=e(12),n.resolve=e(15),n.reject=e(14),n.all=e(9)},{12:12,14:14,15:15,9:9}],12:[function(e,t,n){"use strict";function r(e){if(!(this instanceof r))return new r(e);if("function"!=typeof e)throw new TypeError("reslover must be a function");this.state=f.PENDING,this.queue=[],this.outcome=void 0,e!==i&&u.safely(this,e)}var o=e(19),i=e(8),u=e(16),f=e(17),c=e(13);t.exports=r,r.prototype["catch"]=function(e){return this.then(null,e)},r.prototype.then=function(e,t){if("function"!=typeof e&&this.state===f.FULFILLED||"function"!=typeof t&&this.state===f.REJECTED)return this;var n=new r(i);if(this.state!==f.PENDING){var u=this.state===f.FULFILLED?e:t;o(n,u,this.outcome)}else this.queue.push(new c(n,e,t));return n}},{13:13,16:16,17:17,19:19,8:8}],13:[function(e,t,n){"use strict";function r(e,t,n){this.promise=e,"function"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),"function"==typeof n&&(this.onRejected=n,this.callRejected=this.otherCallRejected)}var o=e(10),i=e(19);t.exports=r,r.prototype.callFulfilled=function(e){o.resolve(this.promise,e)},r.prototype.otherCallFulfilled=function(e){i(this.promise,this.onFulfilled,e)},r.prototype.callRejected=function(e){o.reject(this.promise,e)},r.prototype.otherCallRejected=function(e){i(this.promise,this.onRejected,e)}},{10:10,19:19}],14:[function(e,t,n){"use strict";function r(e){var t=new o(i);return u.reject(t,e)}var o=e(12),i=e(8),u=e(10);t.exports=r},{10:10,12:12,8:8}],15:[function(e,t,n){"use strict";function r(e){if(e)return e instanceof o?e:u.resolve(new o(i),e);var t=typeof e;switch(t){case"boolean":return f;case"undefined":return a;case"object":return c;case"number":return s;case"string":return l}}var o=e(12),i=e(8),u=e(10);t.exports=r;var f=u.resolve(new o(i),!1),c=u.resolve(new o(i),null),a=u.resolve(new o(i),void 0),s=u.resolve(new o(i),0),l=u.resolve(new o(i),"")},{10:10,12:12,8:8}],16:[function(e,t,n){"use strict";function r(e,t){function n(t){f||(f=!0,o.reject(e,t))}function r(t){f||(f=!0,o.resolve(e,t))}function u(){t(r,n)}var f=!1,c=i(u);"error"===c.status&&n(c.value)}var o=e(10),i=e(18);n.safely=r},{10:10,18:18}],17:[function(e,t,n){n.REJECTED=["REJECTED"],n.FULFILLED=["FULFILLED"],n.PENDING=["PENDING"]},{}],18:[function(e,t,n){"use strict";function r(e,t){var n={};try{n.value=e(t),n.status="success"}catch(r){n.status="error",n.value=r}return n}t.exports=r},{}],19:[function(e,t,n){"use strict";function r(e,t,n){o(function(){var r;try{r=t(n)}catch(o){return i.reject(e,o)}r===e?i.reject(e,new TypeError("Cannot resolve promise with itself")):i.resolve(e,r)})}var o=e(2),i=e(10);t.exports=r},{10:10,2:2}],20:[function(e,t,n){(function(n){"function"==typeof n.Promise?t.exports=n.Promise:t.exports=e(11)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],21:[function(e,t,n){function r(){if(!f){f=!0;for(var e,t=u.length;t;){e=u,u=[];for(var n=-1;++n<t;)e[n]();t=u.length}f=!1}}function o(){}var i=t.exports={},u=[],f=!1;i.nextTick=function(e){u.push(e),f||setTimeout(r,0)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=o,i.addListener=o,i.once=o,i.off=o,i.removeListener=o,i.removeAllListeners=o,i.emit=o,i.binding=function(e){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(e){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},{}],22:[function(e,t,n){"use strict";function r(e){for(var t=e.length,n=new ArrayBuffer(t),r=new Uint8Array(n),o=-1;++o<t;)r[o]=e.charCodeAt(o);return n}function o(e){for(var t="",n=new Uint8Array(e),r=n.byteLength,o=-1;++o<r;)t+=String.fromCharCode(n[o]);return t}function i(e,t){return new L(function(n,r){var o=new Image;t&&(o.crossOrigin=t),o.onload=function(){n(o)},o.onerror=r,o.src=e})}function u(e){var t=document.createElement("canvas");t.width=e.width,t.height=e.height;var n=t.getContext("2d");return n.drawImage(e,0,0,e.width,e.height,0,0,e.width,e.height),t}function f(e,t){return t=t||{},"string"==typeof t&&(t={type:t}),new m(e,t)}function c(e){return(window.URL||window.webkitURL).createObjectURL(e)}function a(e){return(window.URL||window.webkitURL).revokeObjectURL(e)}function s(e){return new L(function(t,n){var r=new FileReader,i="function"==typeof r.readAsBinaryString;r.onloadend=function(e){var n=e.target.result||"";return i?t(n):void t(o(n))},r.onerror=n,i?r.readAsBinaryString(e):r.readAsArrayBuffer(e)})}function l(e,t){return L.resolve().then(function(){var n=[r(atob(e))];return t?f(n,{type:t}):f(n)})}function d(e,t){return L.resolve().then(function(){return l(btoa(e),t)})}function p(e){return s(e).then(function(e){return btoa(e)})}function h(e){return L.resolve().then(function(){var t=e.match(/data:([^;]+)/)[1],n=e.replace(/^[^,]+,/,""),o=r(atob(n));return f([o],{type:t})})}function v(e,t,n,r){return t=t||"image/png",i(e,n).then(function(e){return u(e)}).then(function(e){return e.toDataURL(t,r)})}function y(e,t,n){return L.resolve().then(function(){return"function"==typeof e.toBlob?new L(function(r){e.toBlob(r,t,n)}):h(e.toDataURL(t,n))})}function w(e,t,n,r){return t=t||"image/png",i(e,n).then(function(e){return u(e)}).then(function(e){return y(e,t,r)})}function b(e,t){return L.resolve().then(function(){return f([e],t)})}function g(e){return new L(function(t,n){var r=new FileReader;r.onloadend=function(e){var n=e.target.result||new ArrayBuffer(0);t(n)},r.onerror=n,r.readAsArrayBuffer(e)})}var m=e(1),L=e(20);t.exports={createBlob:f,createObjectURL:c,revokeObjectURL:a,imgSrcToBlob:w,imgSrcToDataURL:v,canvasToBlob:y,dataURLToBlob:h,blobToBase64String:p,base64StringToBlob:l,binaryStringToBlob:d,blobToBinaryString:s,arrayBufferToBlob:b,blobToArrayBuffer:g}},{1:1,20:20}]},{},[22])(22)}); | ||
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.blobUtil=e()}}(function(){return function e(t,n,r){function o(u,f){if(!n[u]){if(!t[u]){var a="function"==typeof require&&require;if(!f&&a)return a(u,!0);if(i)return i(u,!0);var c=new Error("Cannot find module '"+u+"'");throw c.code="MODULE_NOT_FOUND",c}var l=n[u]={exports:{}};t[u][0].call(l.exports,function(e){var n=t[u][1][e];return o(n?n:e)},l,l.exports,e,t,n,r)}return n[u].exports}for(var i="function"==typeof require&&require,u=0;u<r.length;u++)o(r[u]);return o}({1:[function(e,t,n){(function(e){function n(e){for(var t=0;t<e.length;t++){var n=e[t];if(n.buffer instanceof ArrayBuffer){var r=n.buffer;if(n.byteLength!==r.byteLength){var o=new Uint8Array(n.byteLength);o.set(new Uint8Array(r,n.byteOffset,n.byteLength)),r=o.buffer}e[t]=r}}}function r(e,t){t=t||{};var r=new i;n(e);for(var o=0;o<e.length;o++)r.append(e[o]);return t.type?r.getBlob(t.type):r.getBlob()}function o(e,t){return n(e),new Blob(e,t||{})}var i=e.BlobBuilder||e.WebKitBlobBuilder||e.MSBlobBuilder||e.MozBlobBuilder,u=function(){try{var e=new Blob(["hi"]);return 2===e.size}catch(t){return!1}}(),f=u&&function(){try{var e=new Blob([new Uint8Array([1,2])]);return 2===e.size}catch(t){return!1}}(),a=i&&i.prototype.append&&i.prototype.getBlob;t.exports=function(){return u?f?e.Blob:o:a?r:void 0}()}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],2:[function(e,t,n){(function(e){"use strict";function n(){l=!0;for(var e,t,n=s.length;n;){for(t=s,s=[],e=-1;++e<n;)t[e]();n=s.length}l=!1}function r(e){1!==s.push(e)||l||o()}var o,i=e.MutationObserver||e.WebKitMutationObserver;if(i){var u=0,f=new i(n),a=e.document.createTextNode("");f.observe(a,{characterData:!0}),o=function(){a.data=u=++u%2}}else if(e.setImmediate||"undefined"==typeof e.MessageChannel)o="document"in e&&"onreadystatechange"in e.document.createElement("script")?function(){var t=e.document.createElement("script");t.onreadystatechange=function(){n(),t.onreadystatechange=null,t.parentNode.removeChild(t),t=null},e.document.documentElement.appendChild(t)}:function(){setTimeout(n,0)};else{var c=new e.MessageChannel;c.port1.onmessage=n,o=function(){c.port2.postMessage(0)}}var l,s=[];t.exports=r}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],3:[function(e,t,n){"use strict";function r(){}function o(e){if("function"!=typeof e)throw new TypeError("resolver must be a function");this.state=w,this.queue=[],this.outcome=void 0,e!==r&&a(this,e)}function i(e,t,n){this.promise=e,"function"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),"function"==typeof n&&(this.onRejected=n,this.callRejected=this.otherCallRejected)}function u(e,t,n){p(function(){var r;try{r=t(n)}catch(o){return v.reject(e,o)}r===e?v.reject(e,new TypeError("Cannot resolve promise with itself")):v.resolve(e,r)})}function f(e){var t=e&&e.then;return e&&"object"==typeof e&&"function"==typeof t?function(){t.apply(e,arguments)}:void 0}function a(e,t){function n(t){i||(i=!0,v.reject(e,t))}function r(t){i||(i=!0,v.resolve(e,t))}function o(){t(r,n)}var i=!1,u=c(o);"error"===u.status&&n(u.value)}function c(e,t){var n={};try{n.value=e(t),n.status="success"}catch(r){n.status="error",n.value=r}return n}function l(e){return e instanceof this?e:v.resolve(new this(r),e)}function s(e){var t=new this(r);return v.reject(t,e)}function h(e){function t(e,t){function r(e){u[t]=e,++f!==o||i||(i=!0,v.resolve(c,u))}n.resolve(e).then(r,function(e){i||(i=!0,v.reject(c,e))})}var n=this;if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var o=e.length,i=!1;if(!o)return this.resolve([]);for(var u=new Array(o),f=0,a=-1,c=new this(r);++a<o;)t(e[a],a);return c}function d(e){function t(e){n.resolve(e).then(function(e){i||(i=!0,v.resolve(f,e))},function(e){i||(i=!0,v.reject(f,e))})}var n=this;if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var o=e.length,i=!1;if(!o)return this.resolve([]);for(var u=-1,f=new this(r);++u<o;)t(e[u]);return f}var p=e(2),v={},y=["REJECTED"],b=["FULFILLED"],w=["PENDING"];t.exports=n=o,o.prototype["catch"]=function(e){return this.then(null,e)},o.prototype.then=function(e,t){if("function"!=typeof e&&this.state===b||"function"!=typeof t&&this.state===y)return this;var n=new this.constructor(r);if(this.state!==w){var o=this.state===b?e:t;u(n,o,this.outcome)}else this.queue.push(new i(n,e,t));return n},i.prototype.callFulfilled=function(e){v.resolve(this.promise,e)},i.prototype.otherCallFulfilled=function(e){u(this.promise,this.onFulfilled,e)},i.prototype.callRejected=function(e){v.reject(this.promise,e)},i.prototype.otherCallRejected=function(e){u(this.promise,this.onRejected,e)},v.resolve=function(e,t){var n=c(f,t);if("error"===n.status)return v.reject(e,n.value);var r=n.value;if(r)a(e,r);else{e.state=b,e.outcome=t;for(var o=-1,i=e.queue.length;++o<i;)e.queue[o].callFulfilled(t)}return e},v.reject=function(e,t){e.state=y,e.outcome=t;for(var n=-1,r=e.queue.length;++n<r;)e.queue[n].callRejected(t);return e},n.resolve=l,n.reject=s,n.all=h,n.race=d},{2:2}],4:[function(e,t,n){t.exports="function"==typeof Promise?Promise:e(3)},{3:3}],5:[function(e,t,n){"use strict";function r(e){for(var t=e.length,n=new ArrayBuffer(t),r=new Uint8Array(n),o=-1;++o<t;)r[o]=e.charCodeAt(o);return n}function o(e){for(var t="",n=new Uint8Array(e),r=n.byteLength,o=-1;++o<r;)t+=String.fromCharCode(n[o]);return t}function i(e,t){return new B(function(n,r){var o=new Image;t&&(o.crossOrigin=t),o.onload=function(){n(o)},o.onerror=r,o.src=e})}function u(e){var t=document.createElement("canvas");t.width=e.width,t.height=e.height;var n=t.getContext("2d");return n.drawImage(e,0,0,e.width,e.height,0,0,e.width,e.height),t}function f(e,t){return t=t||{},"string"==typeof t&&(t={type:t}),new m(e,t)}function a(e){return(window.URL||window.webkitURL).createObjectURL(e)}function c(e){return(window.URL||window.webkitURL).revokeObjectURL(e)}function l(e){return new B(function(t,n){var r=new FileReader,i="function"==typeof r.readAsBinaryString;r.onloadend=function(e){var n=e.target.result||"";return i?t(n):void t(o(n))},r.onerror=n,i?r.readAsBinaryString(e):r.readAsArrayBuffer(e)})}function s(e,t){return B.resolve().then(function(){var n=[r(atob(e))];return t?f(n,{type:t}):f(n)})}function h(e,t){return B.resolve().then(function(){return s(btoa(e),t)})}function d(e){return l(e).then(function(e){return btoa(e)})}function p(e){return B.resolve().then(function(){var t=e.match(/data:([^;]+)/)[1],n=e.replace(/^[^,]+,/,""),o=r(atob(n));return f([o],{type:t})})}function v(e,t,n,r){return t=t||"image/png",i(e,n).then(function(e){return u(e)}).then(function(e){return e.toDataURL(t,r)})}function y(e,t,n){return B.resolve().then(function(){return"function"==typeof e.toBlob?new B(function(r){e.toBlob(r,t,n)}):p(e.toDataURL(t,n))})}function b(e,t,n,r){return t=t||"image/png",i(e,n).then(function(e){return u(e)}).then(function(e){return y(e,t,r)})}function w(e,t){return B.resolve().then(function(){return f([e],t)})}function g(e){return new B(function(t,n){var r=new FileReader;r.onloadend=function(e){var n=e.target.result||new ArrayBuffer(0);t(n)},r.onerror=n,r.readAsArrayBuffer(e)})}var m=e(1),B=e(4);t.exports={createBlob:f,createObjectURL:a,revokeObjectURL:c,imgSrcToBlob:b,imgSrcToDataURL:v,canvasToBlob:y,dataURLToBlob:p,blobToBase64String:d,base64StringToBlob:s,binaryStringToBlob:h,blobToBinaryString:l,arrayBufferToBlob:w,blobToArrayBuffer:g}},{1:1,4:4}]},{},[5])(5)}); |
@@ -5,3 +5,3 @@ 'use strict'; | ||
var Blob = require('blob'); | ||
var Promise = require('pouchdb-promise'); | ||
var Promise = require('native-or-lie'); | ||
@@ -8,0 +8,0 @@ // |
{ | ||
"name": "blob-util", | ||
"version": "1.2.0", | ||
"version": "1.2.1", | ||
"description": "Utilities for working with Blob objects in the browser", | ||
@@ -23,12 +23,9 @@ "main": "lib/index.js", | ||
"scripts": { | ||
"test-node": "echo 'node tests disabled'", | ||
"test-browser": "./bin/test-browser.js", | ||
"jshint": "jshint -c .jshintrc lib/*.js test/test.js", | ||
"test": "npm run jshint && ./bin/run-test.sh", | ||
"test": "npm run jshint && zuul ./test/test.js", | ||
"test-local": "zuul ./test/test.js --local 9000", | ||
"test-phantom": "zuul ./test/test.js --phantom", | ||
"build": "mkdirp dist && npm run browserify && npm run min", | ||
"browserify": "browserify . -p bundle-collapser/plugin -s blobUtil | ./bin/es3ify.js | derequire > dist/blob-util.js", | ||
"min": "uglifyjs dist/blob-util.js -mc > dist/blob-util.min.js", | ||
"dev": "browserify test/test.js > test/test-bundle.js && npm run dev-server", | ||
"dev-server": "./bin/dev-server.js", | ||
"coverage": "npm test --coverage && istanbul check-coverage --lines 100 --function 100 --statements 100 --branches 100", | ||
"jsdoc2md": "jsdoc2md --heading-depth 3 ./lib/index.js > api.md", | ||
@@ -39,6 +36,5 @@ "jsdoc": "jsdoc -d doc ./lib/index.js" | ||
"blob": "0.0.4", | ||
"pouchdb-promise": "0.0.0" | ||
"native-or-lie": "1.0.0" | ||
}, | ||
"devDependencies": { | ||
"bluebird": "^1.0.7", | ||
"browserify": "^9.0.3", | ||
@@ -50,3 +46,2 @@ "bundle-collapser": "^1.1.4", | ||
"es3ify": "^0.1.3", | ||
"http-server": "~0.5.5", | ||
"istanbul": "^0.2.7", | ||
@@ -59,9 +54,11 @@ "jsdoc": "^3.3.0-alpha10", | ||
"phantomjs": "^1.9.7-5", | ||
"phantomjs-polyfill": "0.0.1", | ||
"request": "^2.36.0", | ||
"sauce-connect-launcher": "^0.4.2", | ||
"selenium-standalone": "3.0.2", | ||
"uglify-js": "^2.4.13", | ||
"watchify": "^2.4.0", | ||
"wd": "^0.2.21" | ||
} | ||
"zuul": "^3.10.1" | ||
}, | ||
"files": [ | ||
"lib", | ||
"dist" | ||
] | ||
} |
@@ -1,6 +0,4 @@ | ||
blob-util | ||
blob-util [![Build Status](https://travis-ci.org/nolanlawson/blob-util.svg)](https://travis-ci.org/nolanlawson/blob-util) | ||
===== | ||
[![Build Status](https://travis-ci.org/nolanlawson/blob-util.svg)](https://travis-ci.org/nolanlawson/blob-util) | ||
`blob-util` is a [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob?redirectlocale=en-US&redirectslug=DOM%2FBlob) library for busy people. | ||
@@ -60,3 +58,3 @@ | ||
* iOS 6+ | ||
* Android 4+ | ||
* Android 4.4+ | ||
* Any browser with either `Blob` or the older `BlobBuilder`; see [caniuse](http://caniuse.com/#search=blob) for details. | ||
@@ -474,15 +472,14 @@ | ||
### In the browser | ||
npm install | ||
Run `npm run dev` and then point your favorite browser to [http://127.0.0.1:8001/test/index.html](http://127.0.0.1:8001/test/index.html). | ||
Then to test in the browser using Saucelabs: | ||
The query param `?grep=mysearch` will search for tests matching `mysearch`. | ||
npm test | ||
### Automated browser tests | ||
Or to test locally in your browser of choice: | ||
You can run e.g. | ||
npm run test-local | ||
CLIENT=selenium:firefox npm test | ||
CLIENT=selenium:phantomjs npm test | ||
Or to test in PhantomJS: | ||
This will run the tests automatically and the process will exit with a 0 or a 1 when it's done. Firefox uses IndexedDB, and PhantomJS uses WebSQL. | ||
npm run test-phantom |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 2 instances in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 11 instances in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
17
4
1
64404
6
977
484
+ Addednative-or-lie@1.0.0
+ Addedimmediate@3.0.6(transitive)
+ Addedlie@3.3.0(transitive)
+ Addednative-or-lie@1.0.0(transitive)
- Removedpouchdb-promise@0.0.0
- Removedbluebird@1.2.4(transitive)
- Removedimmediate@3.3.0(transitive)
- Removedlie@2.7.7(transitive)
- Removedpouchdb-promise@0.0.0(transitive)