stuff
This commit is contained in:
23
buildfiles/app/node_modules/localforage/bower_components/assert/.bower.json
generated
vendored
Normal file
23
buildfiles/app/node_modules/localforage/bower_components/assert/.bower.json
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"name": "assert",
|
||||
"main": "assert.js",
|
||||
"version": "0.1.0",
|
||||
"homepage": "https://github.com/jgallen23/assert",
|
||||
"license": "MIT",
|
||||
"ignore": [
|
||||
"**/.*",
|
||||
"node_modules",
|
||||
"bower_components",
|
||||
"test",
|
||||
"tests"
|
||||
],
|
||||
"_release": "0.1.0",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "0.1.0",
|
||||
"commit": "6a955e68d0dceba3e682faa895ef54828623e27a"
|
||||
},
|
||||
"_source": "https://github.com/jgallen23/assert.git",
|
||||
"_target": "~0.1.0",
|
||||
"_originalSource": "assert"
|
||||
}
|
50
buildfiles/app/node_modules/localforage/bower_components/assert/HISTORY.md
generated
vendored
Normal file
50
buildfiles/app/node_modules/localforage/bower_components/assert/HISTORY.md
generated
vendored
Normal file
@ -0,0 +1,50 @@
|
||||
|
||||
0.1.0 / 2014-05-11
|
||||
==================
|
||||
|
||||
* Merge branch 'master' of github.com:Jxck/assert
|
||||
* fix captureStackTrace #8
|
||||
* add compatible node version to README.md
|
||||
* add lint to test/index-amd.html to test/index.html
|
||||
* update to Node v0.11.10
|
||||
* Merge pull request #7 from DavidBruant/patch-1
|
||||
* ! is as good as !!!
|
||||
* Merge pull request #6 from remy/master
|
||||
* Attempt to get captureStackTrace support in other browsers
|
||||
* Merge pull request #4 from OscarGodson/master
|
||||
* Typo in package.json
|
||||
* Add package.json file so it can be used with NPM
|
||||
* add Object_keys from deep-equal for fix #3
|
||||
* update to Node v0.9.9 assert.js
|
||||
* update to 0.9.5
|
||||
* remove require.js src file from test
|
||||
* Merge pull request #2 from shovon/amd-support
|
||||
* Added amd support.
|
||||
|
||||
0.0.2 / 2014-01-17
|
||||
==================
|
||||
|
||||
* Switching component.json to bower.json to avoid deprecation warnings
|
||||
|
||||
0.0.1 / 2012-12-06
|
||||
==================
|
||||
|
||||
* added component.json for bower
|
||||
* add Object.create comatibile for issue #1
|
||||
* update assert to v0.8.1
|
||||
* fix README.md
|
||||
* to make it perfect: s/the both-sides/both sides/
|
||||
* Assert to assert
|
||||
* updates README
|
||||
* add README.md
|
||||
* add index.html for browser test
|
||||
* fix replace for browser
|
||||
* mod copyright
|
||||
* add common object instead of require('common')
|
||||
* semmicolon
|
||||
* add test-assert.js
|
||||
* remove case of buffer(browser dosen't has)
|
||||
* define util.inherits instead of require('util')
|
||||
* export assert to global or module
|
||||
* modefy license
|
||||
* initial commit
|
40
buildfiles/app/node_modules/localforage/bower_components/assert/README.md
generated
vendored
Normal file
40
buildfiles/app/node_modules/localforage/bower_components/assert/README.md
generated
vendored
Normal file
@ -0,0 +1,40 @@
|
||||
# assert.js
|
||||
|
||||
**LATEST COMPATIBLE VERSION:** [node v0.11.10](https://github.com/joyent/node/blob/v0.11.10-release/lib/assert.js)
|
||||
|
||||
assert.js is a port of the Node.js standard assertion library for the browser.
|
||||
The original code and tests are from Node.js, and have been modified to be browser compatible.
|
||||
|
||||
For example, you can use it with [Mocha](http://visionmedia.github.com/mocha/) to perform tests
|
||||
on the **both sides** (server-side and client-side). Mocha does not supply it's own assertion library.
|
||||
|
||||
## run the same tests on both the client-side and server-side
|
||||
|
||||
You can use the standard assert module when running mocha on Node.js.
|
||||
|
||||
The same tests will run in the browser if you use this library.
|
||||
|
||||
## how to use
|
||||
|
||||
```html
|
||||
<script src="assert.js"></script>
|
||||
<script src="path/to/testing-framework.js"></script>
|
||||
<script src="path/to/your/test.js"></script>
|
||||
```
|
||||
|
||||
## running test of this library
|
||||
|
||||
### browser
|
||||
open ```test/index.html``` in your browser,
|
||||
and see the console.
|
||||
|
||||
### node.js
|
||||
|
||||
```shell
|
||||
> node test/test-assert.js
|
||||
All OK
|
||||
```
|
||||
|
||||
## license
|
||||
|
||||
MIT (same as Node.js)
|
436
buildfiles/app/node_modules/localforage/bower_components/assert/assert.js
generated
vendored
Normal file
436
buildfiles/app/node_modules/localforage/bower_components/assert/assert.js
generated
vendored
Normal file
@ -0,0 +1,436 @@
|
||||
// http://wiki.commonjs.org/wiki/Unit_Testing/1.0
|
||||
//
|
||||
// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
|
||||
//
|
||||
// Copyright (c) 2011 Jxck
|
||||
//
|
||||
// Originally from node.js (http://nodejs.org)
|
||||
// Copyright Joyent, Inc.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the 'Software'), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
||||
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
(function(global) {
|
||||
|
||||
// Object.create compatible in IE
|
||||
var create = Object.create || function(p) {
|
||||
if (!p) throw Error('no type');
|
||||
function f() {};
|
||||
f.prototype = p;
|
||||
return new f();
|
||||
};
|
||||
|
||||
// UTILITY
|
||||
var util = {
|
||||
inherits: function(ctor, superCtor) {
|
||||
ctor.super_ = superCtor;
|
||||
ctor.prototype = create(superCtor.prototype, {
|
||||
constructor: {
|
||||
value: ctor,
|
||||
enumerable: false,
|
||||
writable: true,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
},
|
||||
isArray: function(ar) {
|
||||
return Array.isArray(ar);
|
||||
},
|
||||
isBoolean: function(arg) {
|
||||
return typeof arg === 'boolean';
|
||||
},
|
||||
isNull: function(arg) {
|
||||
return arg === null;
|
||||
},
|
||||
isNullOrUndefined: function(arg) {
|
||||
return arg == null;
|
||||
},
|
||||
isNumber: function(arg) {
|
||||
return typeof arg === 'number';
|
||||
},
|
||||
isString: function(arg) {
|
||||
return typeof arg === 'string';
|
||||
},
|
||||
isSymbol: function(arg) {
|
||||
return typeof arg === 'symbol';
|
||||
},
|
||||
isUndefined: function(arg) {
|
||||
return arg === void 0;
|
||||
},
|
||||
isRegExp: function(re) {
|
||||
return util.isObject(re) && util.objectToString(re) === '[object RegExp]';
|
||||
},
|
||||
isObject: function(arg) {
|
||||
return typeof arg === 'object' && arg !== null;
|
||||
},
|
||||
isDate: function(d) {
|
||||
return util.isObject(d) && util.objectToString(d) === '[object Date]';
|
||||
},
|
||||
isError: function(e) {
|
||||
return isObject(e) &&
|
||||
(objectToString(e) === '[object Error]' || e instanceof Error);
|
||||
},
|
||||
isFunction: function(arg) {
|
||||
return typeof arg === 'function';
|
||||
},
|
||||
isPrimitive: function(arg) {
|
||||
return arg === null ||
|
||||
typeof arg === 'boolean' ||
|
||||
typeof arg === 'number' ||
|
||||
typeof arg === 'string' ||
|
||||
typeof arg === 'symbol' || // ES6 symbol
|
||||
typeof arg === 'undefined';
|
||||
},
|
||||
objectToString: function(o) {
|
||||
return Object.prototype.toString.call(o);
|
||||
}
|
||||
};
|
||||
|
||||
var pSlice = Array.prototype.slice;
|
||||
|
||||
// from https://github.com/substack/node-deep-equal
|
||||
var Object_keys = typeof Object.keys === 'function'
|
||||
? Object.keys
|
||||
: function (obj) {
|
||||
var keys = [];
|
||||
for (var key in obj) keys.push(key);
|
||||
return keys;
|
||||
}
|
||||
;
|
||||
|
||||
// 1. The assert module provides functions that throw
|
||||
// AssertionError's when particular conditions are not met. The
|
||||
// assert module must conform to the following interface.
|
||||
|
||||
var assert = ok;
|
||||
|
||||
global['assert'] = assert;
|
||||
|
||||
if (typeof module === 'object' && typeof module.exports === 'object') {
|
||||
module.exports = assert;
|
||||
};
|
||||
|
||||
// 2. The AssertionError is defined in assert.
|
||||
// new assert.AssertionError({ message: message,
|
||||
// actual: actual,
|
||||
// expected: expected })
|
||||
|
||||
assert.AssertionError = function AssertionError(options) {
|
||||
this.name = 'AssertionError';
|
||||
this.actual = options.actual;
|
||||
this.expected = options.expected;
|
||||
this.operator = options.operator;
|
||||
if (options.message) {
|
||||
this.message = options.message;
|
||||
this.generatedMessage = false;
|
||||
} else {
|
||||
this.message = getMessage(this);
|
||||
this.generatedMessage = true;
|
||||
}
|
||||
var stackStartFunction = options.stackStartFunction || fail;
|
||||
|
||||
if (Error.captureStackTrace) {
|
||||
Error.captureStackTrace(this, stackStartFunction);
|
||||
} else {
|
||||
// try to throw an error now, and from the stack property
|
||||
// work out the line that called in to assert.js.
|
||||
try {
|
||||
this.stack = (new Error).stack.toString();
|
||||
} catch (e) {}
|
||||
}
|
||||
};
|
||||
|
||||
// assert.AssertionError instanceof Error
|
||||
util.inherits(assert.AssertionError, Error);
|
||||
|
||||
function replacer(key, value) {
|
||||
if (util.isUndefined(value)) {
|
||||
return '' + value;
|
||||
}
|
||||
if (util.isNumber(value) && (isNaN(value) || !isFinite(value))) {
|
||||
return value.toString();
|
||||
}
|
||||
if (util.isFunction(value) || util.isRegExp(value)) {
|
||||
return value.toString();
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
function truncate(s, n) {
|
||||
if (util.isString(s)) {
|
||||
return s.length < n ? s : s.slice(0, n);
|
||||
} else {
|
||||
return s;
|
||||
}
|
||||
}
|
||||
|
||||
function getMessage(self) {
|
||||
return truncate(JSON.stringify(self.actual, replacer), 128) + ' ' +
|
||||
self.operator + ' ' +
|
||||
truncate(JSON.stringify(self.expected, replacer), 128);
|
||||
}
|
||||
|
||||
// At present only the three keys mentioned above are used and
|
||||
// understood by the spec. Implementations or sub modules can pass
|
||||
// other keys to the AssertionError's constructor - they will be
|
||||
// ignored.
|
||||
|
||||
// 3. All of the following functions must throw an AssertionError
|
||||
// when a corresponding condition is not met, with a message that
|
||||
// may be undefined if not provided. All assertion methods provide
|
||||
// both the actual and expected values to the assertion error for
|
||||
// display purposes.
|
||||
|
||||
function fail(actual, expected, message, operator, stackStartFunction) {
|
||||
throw new assert.AssertionError({
|
||||
message: message,
|
||||
actual: actual,
|
||||
expected: expected,
|
||||
operator: operator,
|
||||
stackStartFunction: stackStartFunction
|
||||
});
|
||||
}
|
||||
|
||||
// EXTENSION! allows for well behaved errors defined elsewhere.
|
||||
assert.fail = fail;
|
||||
|
||||
// 4. Pure assertion tests whether a value is truthy, as determined
|
||||
// by !!guard.
|
||||
// assert.ok(guard, message_opt);
|
||||
// This statement is equivalent to assert.equal(true, !!guard,
|
||||
// message_opt);. To test strictly for the value true, use
|
||||
// assert.strictEqual(true, guard, message_opt);.
|
||||
|
||||
function ok(value, message) {
|
||||
if (!value) fail(value, true, message, '==', assert.ok);
|
||||
}
|
||||
assert.ok = ok;
|
||||
|
||||
// 5. The equality assertion tests shallow, coercive equality with
|
||||
// ==.
|
||||
// assert.equal(actual, expected, message_opt);
|
||||
|
||||
assert.equal = function equal(actual, expected, message) {
|
||||
if (actual != expected) fail(actual, expected, message, '==', assert.equal);
|
||||
};
|
||||
|
||||
// 6. The non-equality assertion tests for whether two objects are not equal
|
||||
// with != assert.notEqual(actual, expected, message_opt);
|
||||
|
||||
assert.notEqual = function notEqual(actual, expected, message) {
|
||||
if (actual == expected) {
|
||||
fail(actual, expected, message, '!=', assert.notEqual);
|
||||
}
|
||||
};
|
||||
|
||||
// 7. The equivalence assertion tests a deep equality relation.
|
||||
// assert.deepEqual(actual, expected, message_opt);
|
||||
|
||||
assert.deepEqual = function deepEqual(actual, expected, message) {
|
||||
if (!_deepEqual(actual, expected)) {
|
||||
fail(actual, expected, message, 'deepEqual', assert.deepEqual);
|
||||
}
|
||||
};
|
||||
|
||||
function _deepEqual(actual, expected) {
|
||||
// 7.1. All identical values are equivalent, as determined by ===.
|
||||
if (actual === expected) {
|
||||
return true;
|
||||
|
||||
// } else if (util.isBuffer(actual) && util.isBuffer(expected)) {
|
||||
// if (actual.length != expected.length) return false;
|
||||
//
|
||||
// for (var i = 0; i < actual.length; i++) {
|
||||
// if (actual[i] !== expected[i]) return false;
|
||||
// }
|
||||
//
|
||||
// return true;
|
||||
|
||||
// 7.2. If the expected value is a Date object, the actual value is
|
||||
// equivalent if it is also a Date object that refers to the same time.
|
||||
} else if (util.isDate(actual) && util.isDate(expected)) {
|
||||
return actual.getTime() === expected.getTime();
|
||||
|
||||
// 7.3 If the expected value is a RegExp object, the actual value is
|
||||
// equivalent if it is also a RegExp object with the same source and
|
||||
// properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
|
||||
} else if (util.isRegExp(actual) && util.isRegExp(expected)) {
|
||||
return actual.source === expected.source &&
|
||||
actual.global === expected.global &&
|
||||
actual.multiline === expected.multiline &&
|
||||
actual.lastIndex === expected.lastIndex &&
|
||||
actual.ignoreCase === expected.ignoreCase;
|
||||
|
||||
// 7.4. Other pairs that do not both pass typeof value == 'object',
|
||||
// equivalence is determined by ==.
|
||||
} else if (!util.isObject(actual) && !util.isObject(expected)) {
|
||||
return actual == expected;
|
||||
|
||||
// 7.5 For all other Object pairs, including Array objects, equivalence is
|
||||
// determined by having the same number of owned properties (as verified
|
||||
// with Object.prototype.hasOwnProperty.call), the same set of keys
|
||||
// (although not necessarily the same order), equivalent values for every
|
||||
// corresponding key, and an identical 'prototype' property. Note: this
|
||||
// accounts for both named and indexed properties on Arrays.
|
||||
} else {
|
||||
return objEquiv(actual, expected);
|
||||
}
|
||||
}
|
||||
|
||||
function isArguments(object) {
|
||||
return Object.prototype.toString.call(object) == '[object Arguments]';
|
||||
}
|
||||
|
||||
function objEquiv(a, b) {
|
||||
if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b))
|
||||
return false;
|
||||
// an identical 'prototype' property.
|
||||
if (a.prototype !== b.prototype) return false;
|
||||
//~~~I've managed to break Object.keys through screwy arguments passing.
|
||||
// Converting to array solves the problem.
|
||||
if (isArguments(a)) {
|
||||
if (!isArguments(b)) {
|
||||
return false;
|
||||
}
|
||||
a = pSlice.call(a);
|
||||
b = pSlice.call(b);
|
||||
return _deepEqual(a, b);
|
||||
}
|
||||
try {
|
||||
var ka = Object_keys(a),
|
||||
kb = Object_keys(b),
|
||||
key, i;
|
||||
} catch (e) {//happens when one is a string literal and the other isn't
|
||||
return false;
|
||||
}
|
||||
// having the same number of owned properties (keys incorporates
|
||||
// hasOwnProperty)
|
||||
if (ka.length != kb.length)
|
||||
return false;
|
||||
//the same set of keys (although not necessarily the same order),
|
||||
ka.sort();
|
||||
kb.sort();
|
||||
//~~~cheap key test
|
||||
for (i = ka.length - 1; i >= 0; i--) {
|
||||
if (ka[i] != kb[i])
|
||||
return false;
|
||||
}
|
||||
//equivalent values for every corresponding key, and
|
||||
//~~~possibly expensive deep test
|
||||
for (i = ka.length - 1; i >= 0; i--) {
|
||||
key = ka[i];
|
||||
if (!_deepEqual(a[key], b[key])) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// 8. The non-equivalence assertion tests for any deep inequality.
|
||||
// assert.notDeepEqual(actual, expected, message_opt);
|
||||
|
||||
assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
|
||||
if (_deepEqual(actual, expected)) {
|
||||
fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
|
||||
}
|
||||
};
|
||||
|
||||
// 9. The strict equality assertion tests strict equality, as determined by ===.
|
||||
// assert.strictEqual(actual, expected, message_opt);
|
||||
|
||||
assert.strictEqual = function strictEqual(actual, expected, message) {
|
||||
if (actual !== expected) {
|
||||
fail(actual, expected, message, '===', assert.strictEqual);
|
||||
}
|
||||
};
|
||||
|
||||
// 10. The strict non-equality assertion tests for strict inequality, as
|
||||
// determined by !==. assert.notStrictEqual(actual, expected, message_opt);
|
||||
|
||||
assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
|
||||
if (actual === expected) {
|
||||
fail(actual, expected, message, '!==', assert.notStrictEqual);
|
||||
}
|
||||
};
|
||||
|
||||
function expectedException(actual, expected) {
|
||||
if (!actual || !expected) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Object.prototype.toString.call(expected) == '[object RegExp]') {
|
||||
return expected.test(actual);
|
||||
} else if (actual instanceof expected) {
|
||||
return true;
|
||||
} else if (expected.call({}, actual) === true) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function _throws(shouldThrow, block, expected, message) {
|
||||
var actual;
|
||||
|
||||
if (util.isString(expected)) {
|
||||
message = expected;
|
||||
expected = null;
|
||||
}
|
||||
|
||||
try {
|
||||
block();
|
||||
} catch (e) {
|
||||
actual = e;
|
||||
}
|
||||
|
||||
message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
|
||||
(message ? ' ' + message : '.');
|
||||
|
||||
if (shouldThrow && !actual) {
|
||||
fail(actual, expected, 'Missing expected exception' + message);
|
||||
}
|
||||
|
||||
if (!shouldThrow && expectedException(actual, expected)) {
|
||||
fail(actual, expected, 'Got unwanted exception' + message);
|
||||
}
|
||||
|
||||
if ((shouldThrow && actual && expected &&
|
||||
!expectedException(actual, expected)) || (!shouldThrow && actual)) {
|
||||
throw actual;
|
||||
}
|
||||
}
|
||||
|
||||
// 11. Expected to throw an error:
|
||||
// assert.throws(block, Error_opt, message_opt);
|
||||
|
||||
assert.throws = function(block, /*optional*/error, /*optional*/message) {
|
||||
_throws.apply(this, [true].concat(pSlice.call(arguments)));
|
||||
};
|
||||
|
||||
// EXTENSION! This is annoying to write outside this module.
|
||||
assert.doesNotThrow = function(block, /*optional*/message) {
|
||||
_throws.apply(this, [false].concat(pSlice.call(arguments)));
|
||||
};
|
||||
|
||||
assert.ifError = function(err) { if (err) {throw err;}};
|
||||
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
define('assert', function () {
|
||||
return assert;
|
||||
});
|
||||
}
|
||||
|
||||
})(this);
|
||||
|
14
buildfiles/app/node_modules/localforage/bower_components/assert/bower.json
generated
vendored
Normal file
14
buildfiles/app/node_modules/localforage/bower_components/assert/bower.json
generated
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"name": "assert",
|
||||
"main": "assert.js",
|
||||
"version": "0.1.0",
|
||||
"homepage": "https://github.com/jgallen23/assert",
|
||||
"license": "MIT",
|
||||
"ignore": [
|
||||
"**/.*",
|
||||
"node_modules",
|
||||
"bower_components",
|
||||
"test",
|
||||
"tests"
|
||||
]
|
||||
}
|
12
buildfiles/app/node_modules/localforage/bower_components/assert/package.json
generated
vendored
Normal file
12
buildfiles/app/node_modules/localforage/bower_components/assert/package.json
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"name": "assert",
|
||||
"version": "1.0.0",
|
||||
"author": "Jxck <block.rxckin.beats@gmail.com>",
|
||||
"description": "Porting Node.js assert.js to browser",
|
||||
"contributors": [
|
||||
"Jxck <block.rxckin.beats@gmail.com>",
|
||||
"Oscar Godson <oscargodson@gmail.com>",
|
||||
"Remy Sharp <remy@remysharp.com>"
|
||||
],
|
||||
"repository": "git@github.com:Jxck/assert.git"
|
||||
}
|
15
buildfiles/app/node_modules/localforage/bower_components/es6-promise/.bower.json
generated
vendored
Normal file
15
buildfiles/app/node_modules/localforage/bower_components/es6-promise/.bower.json
generated
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "es6-promise",
|
||||
"version": "1.0.0",
|
||||
"main": "./promise.js",
|
||||
"homepage": "https://github.com/components/es6-promise",
|
||||
"_release": "1.0.0",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "v1.0.0",
|
||||
"commit": "c95149ffaa2e8162601c57d4282362eac84f929b"
|
||||
},
|
||||
"_source": "https://github.com/components/es6-promise.git",
|
||||
"_target": "~1.0.0",
|
||||
"_originalSource": "es6-promise"
|
||||
}
|
5
buildfiles/app/node_modules/localforage/bower_components/es6-promise/bower.json
generated
vendored
Normal file
5
buildfiles/app/node_modules/localforage/bower_components/es6-promise/bower.json
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"name": "es6-promise",
|
||||
"version": "1.0.0",
|
||||
"main": "./promise.js"
|
||||
}
|
684
buildfiles/app/node_modules/localforage/bower_components/es6-promise/promise.js
generated
vendored
Normal file
684
buildfiles/app/node_modules/localforage/bower_components/es6-promise/promise.js
generated
vendored
Normal file
@ -0,0 +1,684 @@
|
||||
(function() {
|
||||
var define, requireModule, require, requirejs;
|
||||
|
||||
(function() {
|
||||
var registry = {}, seen = {};
|
||||
|
||||
define = function(name, deps, callback) {
|
||||
registry[name] = { deps: deps, callback: callback };
|
||||
};
|
||||
|
||||
requirejs = require = requireModule = function(name) {
|
||||
requirejs._eak_seen = registry;
|
||||
|
||||
if (seen[name]) { return seen[name]; }
|
||||
seen[name] = {};
|
||||
|
||||
if (!registry[name]) {
|
||||
throw new Error("Could not find module " + name);
|
||||
}
|
||||
|
||||
var mod = registry[name],
|
||||
deps = mod.deps,
|
||||
callback = mod.callback,
|
||||
reified = [],
|
||||
exports;
|
||||
|
||||
for (var i=0, l=deps.length; i<l; i++) {
|
||||
if (deps[i] === 'exports') {
|
||||
reified.push(exports = {});
|
||||
} else {
|
||||
reified.push(requireModule(resolve(deps[i])));
|
||||
}
|
||||
}
|
||||
|
||||
var value = callback.apply(this, reified);
|
||||
return seen[name] = exports || value;
|
||||
|
||||
function resolve(child) {
|
||||
if (child.charAt(0) !== '.') { return child; }
|
||||
var parts = child.split("/");
|
||||
var parentBase = name.split("/").slice(0, -1);
|
||||
|
||||
for (var i=0, l=parts.length; i<l; i++) {
|
||||
var part = parts[i];
|
||||
|
||||
if (part === '..') { parentBase.pop(); }
|
||||
else if (part === '.') { continue; }
|
||||
else { parentBase.push(part); }
|
||||
}
|
||||
|
||||
return parentBase.join("/");
|
||||
}
|
||||
};
|
||||
})();
|
||||
|
||||
define("promise/all",
|
||||
["./utils","exports"],
|
||||
function(__dependency1__, __exports__) {
|
||||
"use strict";
|
||||
/* global toString */
|
||||
|
||||
var isArray = __dependency1__.isArray;
|
||||
var isFunction = __dependency1__.isFunction;
|
||||
|
||||
/**
|
||||
Returns a promise that is fulfilled when all the given promises have been
|
||||
fulfilled, or rejected if any of them become rejected. The return promise
|
||||
is fulfilled with an array that gives all the values in the order they were
|
||||
passed in the `promises` array argument.
|
||||
|
||||
Example:
|
||||
|
||||
```javascript
|
||||
var promise1 = RSVP.resolve(1);
|
||||
var promise2 = RSVP.resolve(2);
|
||||
var promise3 = RSVP.resolve(3);
|
||||
var promises = [ promise1, promise2, promise3 ];
|
||||
|
||||
RSVP.all(promises).then(function(array){
|
||||
// The array here would be [ 1, 2, 3 ];
|
||||
});
|
||||
```
|
||||
|
||||
If any of the `promises` given to `RSVP.all` are rejected, the first promise
|
||||
that is rejected will be given as an argument to the returned promises's
|
||||
rejection handler. For example:
|
||||
|
||||
Example:
|
||||
|
||||
```javascript
|
||||
var promise1 = RSVP.resolve(1);
|
||||
var promise2 = RSVP.reject(new Error("2"));
|
||||
var promise3 = RSVP.reject(new Error("3"));
|
||||
var promises = [ promise1, promise2, promise3 ];
|
||||
|
||||
RSVP.all(promises).then(function(array){
|
||||
// Code here never runs because there are rejected promises!
|
||||
}, function(error) {
|
||||
// error.message === "2"
|
||||
});
|
||||
```
|
||||
|
||||
@method all
|
||||
@for RSVP
|
||||
@param {Array} promises
|
||||
@param {String} label
|
||||
@return {Promise} promise that is fulfilled when all `promises` have been
|
||||
fulfilled, or rejected if any of them become rejected.
|
||||
*/
|
||||
function all(promises) {
|
||||
/*jshint validthis:true */
|
||||
var Promise = this;
|
||||
|
||||
if (!isArray(promises)) {
|
||||
throw new TypeError('You must pass an array to all.');
|
||||
}
|
||||
|
||||
return new Promise(function(resolve, reject) {
|
||||
var results = [], remaining = promises.length,
|
||||
promise;
|
||||
|
||||
if (remaining === 0) {
|
||||
resolve([]);
|
||||
}
|
||||
|
||||
function resolver(index) {
|
||||
return function(value) {
|
||||
resolveAll(index, value);
|
||||
};
|
||||
}
|
||||
|
||||
function resolveAll(index, value) {
|
||||
results[index] = value;
|
||||
if (--remaining === 0) {
|
||||
resolve(results);
|
||||
}
|
||||
}
|
||||
|
||||
for (var i = 0; i < promises.length; i++) {
|
||||
promise = promises[i];
|
||||
|
||||
if (promise && isFunction(promise.then)) {
|
||||
promise.then(resolver(i), reject);
|
||||
} else {
|
||||
resolveAll(i, promise);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
__exports__.all = all;
|
||||
});
|
||||
define("promise/asap",
|
||||
["exports"],
|
||||
function(__exports__) {
|
||||
"use strict";
|
||||
var browserGlobal = (typeof window !== 'undefined') ? window : {};
|
||||
var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;
|
||||
var local = (typeof global !== 'undefined') ? global : (this === undefined? window:this);
|
||||
|
||||
// node
|
||||
function useNextTick() {
|
||||
return function() {
|
||||
process.nextTick(flush);
|
||||
};
|
||||
}
|
||||
|
||||
function useMutationObserver() {
|
||||
var iterations = 0;
|
||||
var observer = new BrowserMutationObserver(flush);
|
||||
var node = document.createTextNode('');
|
||||
observer.observe(node, { characterData: true });
|
||||
|
||||
return function() {
|
||||
node.data = (iterations = ++iterations % 2);
|
||||
};
|
||||
}
|
||||
|
||||
function useSetTimeout() {
|
||||
return function() {
|
||||
local.setTimeout(flush, 1);
|
||||
};
|
||||
}
|
||||
|
||||
var queue = [];
|
||||
function flush() {
|
||||
for (var i = 0; i < queue.length; i++) {
|
||||
var tuple = queue[i];
|
||||
var callback = tuple[0], arg = tuple[1];
|
||||
callback(arg);
|
||||
}
|
||||
queue = [];
|
||||
}
|
||||
|
||||
var scheduleFlush;
|
||||
|
||||
// Decide what async method to use to triggering processing of queued callbacks:
|
||||
if (typeof process !== 'undefined' && {}.toString.call(process) === '[object process]') {
|
||||
scheduleFlush = useNextTick();
|
||||
} else if (BrowserMutationObserver) {
|
||||
scheduleFlush = useMutationObserver();
|
||||
} else {
|
||||
scheduleFlush = useSetTimeout();
|
||||
}
|
||||
|
||||
function asap(callback, arg) {
|
||||
var length = queue.push([callback, arg]);
|
||||
if (length === 1) {
|
||||
// If length is 1, that means that we need to schedule an async flush.
|
||||
// If additional callbacks are queued before the queue is flushed, they
|
||||
// will be processed by this flush that we are scheduling.
|
||||
scheduleFlush();
|
||||
}
|
||||
}
|
||||
|
||||
__exports__.asap = asap;
|
||||
});
|
||||
define("promise/config",
|
||||
["exports"],
|
||||
function(__exports__) {
|
||||
"use strict";
|
||||
var config = {
|
||||
instrument: false
|
||||
};
|
||||
|
||||
function configure(name, value) {
|
||||
if (arguments.length === 2) {
|
||||
config[name] = value;
|
||||
} else {
|
||||
return config[name];
|
||||
}
|
||||
}
|
||||
|
||||
__exports__.config = config;
|
||||
__exports__.configure = configure;
|
||||
});
|
||||
define("promise/polyfill",
|
||||
["./promise","./utils","exports"],
|
||||
function(__dependency1__, __dependency2__, __exports__) {
|
||||
"use strict";
|
||||
/*global self*/
|
||||
var RSVPPromise = __dependency1__.Promise;
|
||||
var isFunction = __dependency2__.isFunction;
|
||||
|
||||
function polyfill() {
|
||||
var local;
|
||||
|
||||
if (typeof global !== 'undefined') {
|
||||
local = global;
|
||||
} else if (typeof window !== 'undefined' && window.document) {
|
||||
local = window;
|
||||
} else {
|
||||
local = self;
|
||||
}
|
||||
|
||||
var es6PromiseSupport =
|
||||
"Promise" in local &&
|
||||
// Some of these methods are missing from
|
||||
// Firefox/Chrome experimental implementations
|
||||
"resolve" in local.Promise &&
|
||||
"reject" in local.Promise &&
|
||||
"all" in local.Promise &&
|
||||
"race" in local.Promise &&
|
||||
// Older version of the spec had a resolver object
|
||||
// as the arg rather than a function
|
||||
(function() {
|
||||
var resolve;
|
||||
new local.Promise(function(r) { resolve = r; });
|
||||
return isFunction(resolve);
|
||||
}());
|
||||
|
||||
if (!es6PromiseSupport) {
|
||||
local.Promise = RSVPPromise;
|
||||
}
|
||||
}
|
||||
|
||||
__exports__.polyfill = polyfill;
|
||||
});
|
||||
define("promise/promise",
|
||||
["./config","./utils","./all","./race","./resolve","./reject","./asap","exports"],
|
||||
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __exports__) {
|
||||
"use strict";
|
||||
var config = __dependency1__.config;
|
||||
var configure = __dependency1__.configure;
|
||||
var objectOrFunction = __dependency2__.objectOrFunction;
|
||||
var isFunction = __dependency2__.isFunction;
|
||||
var now = __dependency2__.now;
|
||||
var all = __dependency3__.all;
|
||||
var race = __dependency4__.race;
|
||||
var staticResolve = __dependency5__.resolve;
|
||||
var staticReject = __dependency6__.reject;
|
||||
var asap = __dependency7__.asap;
|
||||
|
||||
var counter = 0;
|
||||
|
||||
config.async = asap; // default async is asap;
|
||||
|
||||
function Promise(resolver) {
|
||||
if (!isFunction(resolver)) {
|
||||
throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');
|
||||
}
|
||||
|
||||
if (!(this instanceof Promise)) {
|
||||
throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");
|
||||
}
|
||||
|
||||
this._subscribers = [];
|
||||
|
||||
invokeResolver(resolver, this);
|
||||
}
|
||||
|
||||
function invokeResolver(resolver, promise) {
|
||||
function resolvePromise(value) {
|
||||
resolve(promise, value);
|
||||
}
|
||||
|
||||
function rejectPromise(reason) {
|
||||
reject(promise, reason);
|
||||
}
|
||||
|
||||
try {
|
||||
resolver(resolvePromise, rejectPromise);
|
||||
} catch(e) {
|
||||
rejectPromise(e);
|
||||
}
|
||||
}
|
||||
|
||||
function invokeCallback(settled, promise, callback, detail) {
|
||||
var hasCallback = isFunction(callback),
|
||||
value, error, succeeded, failed;
|
||||
|
||||
if (hasCallback) {
|
||||
try {
|
||||
value = callback(detail);
|
||||
succeeded = true;
|
||||
} catch(e) {
|
||||
failed = true;
|
||||
error = e;
|
||||
}
|
||||
} else {
|
||||
value = detail;
|
||||
succeeded = true;
|
||||
}
|
||||
|
||||
if (handleThenable(promise, value)) {
|
||||
return;
|
||||
} else if (hasCallback && succeeded) {
|
||||
resolve(promise, value);
|
||||
} else if (failed) {
|
||||
reject(promise, error);
|
||||
} else if (settled === FULFILLED) {
|
||||
resolve(promise, value);
|
||||
} else if (settled === REJECTED) {
|
||||
reject(promise, value);
|
||||
}
|
||||
}
|
||||
|
||||
var PENDING = void 0;
|
||||
var SEALED = 0;
|
||||
var FULFILLED = 1;
|
||||
var REJECTED = 2;
|
||||
|
||||
function subscribe(parent, child, onFulfillment, onRejection) {
|
||||
var subscribers = parent._subscribers;
|
||||
var length = subscribers.length;
|
||||
|
||||
subscribers[length] = child;
|
||||
subscribers[length + FULFILLED] = onFulfillment;
|
||||
subscribers[length + REJECTED] = onRejection;
|
||||
}
|
||||
|
||||
function publish(promise, settled) {
|
||||
var child, callback, subscribers = promise._subscribers, detail = promise._detail;
|
||||
|
||||
for (var i = 0; i < subscribers.length; i += 3) {
|
||||
child = subscribers[i];
|
||||
callback = subscribers[i + settled];
|
||||
|
||||
invokeCallback(settled, child, callback, detail);
|
||||
}
|
||||
|
||||
promise._subscribers = null;
|
||||
}
|
||||
|
||||
Promise.prototype = {
|
||||
constructor: Promise,
|
||||
|
||||
_state: undefined,
|
||||
_detail: undefined,
|
||||
_subscribers: undefined,
|
||||
|
||||
then: function(onFulfillment, onRejection) {
|
||||
var promise = this;
|
||||
|
||||
var thenPromise = new this.constructor(function() {});
|
||||
|
||||
if (this._state) {
|
||||
var callbacks = arguments;
|
||||
config.async(function invokePromiseCallback() {
|
||||
invokeCallback(promise._state, thenPromise, callbacks[promise._state - 1], promise._detail);
|
||||
});
|
||||
} else {
|
||||
subscribe(this, thenPromise, onFulfillment, onRejection);
|
||||
}
|
||||
|
||||
return thenPromise;
|
||||
},
|
||||
|
||||
'catch': function(onRejection) {
|
||||
return this.then(null, onRejection);
|
||||
}
|
||||
};
|
||||
|
||||
Promise.all = all;
|
||||
Promise.race = race;
|
||||
Promise.resolve = staticResolve;
|
||||
Promise.reject = staticReject;
|
||||
|
||||
function handleThenable(promise, value) {
|
||||
var then = null,
|
||||
resolved;
|
||||
|
||||
try {
|
||||
if (promise === value) {
|
||||
throw new TypeError("A promises callback cannot return that same promise.");
|
||||
}
|
||||
|
||||
if (objectOrFunction(value)) {
|
||||
then = value.then;
|
||||
|
||||
if (isFunction(then)) {
|
||||
then.call(value, function(val) {
|
||||
if (resolved) { return true; }
|
||||
resolved = true;
|
||||
|
||||
if (value !== val) {
|
||||
resolve(promise, val);
|
||||
} else {
|
||||
fulfill(promise, val);
|
||||
}
|
||||
}, function(val) {
|
||||
if (resolved) { return true; }
|
||||
resolved = true;
|
||||
|
||||
reject(promise, val);
|
||||
});
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
if (resolved) { return true; }
|
||||
reject(promise, error);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function resolve(promise, value) {
|
||||
if (promise === value) {
|
||||
fulfill(promise, value);
|
||||
} else if (!handleThenable(promise, value)) {
|
||||
fulfill(promise, value);
|
||||
}
|
||||
}
|
||||
|
||||
function fulfill(promise, value) {
|
||||
if (promise._state !== PENDING) { return; }
|
||||
promise._state = SEALED;
|
||||
promise._detail = value;
|
||||
|
||||
config.async(publishFulfillment, promise);
|
||||
}
|
||||
|
||||
function reject(promise, reason) {
|
||||
if (promise._state !== PENDING) { return; }
|
||||
promise._state = SEALED;
|
||||
promise._detail = reason;
|
||||
|
||||
config.async(publishRejection, promise);
|
||||
}
|
||||
|
||||
function publishFulfillment(promise) {
|
||||
publish(promise, promise._state = FULFILLED);
|
||||
}
|
||||
|
||||
function publishRejection(promise) {
|
||||
publish(promise, promise._state = REJECTED);
|
||||
}
|
||||
|
||||
__exports__.Promise = Promise;
|
||||
});
|
||||
define("promise/race",
|
||||
["./utils","exports"],
|
||||
function(__dependency1__, __exports__) {
|
||||
"use strict";
|
||||
/* global toString */
|
||||
var isArray = __dependency1__.isArray;
|
||||
|
||||
/**
|
||||
`RSVP.race` allows you to watch a series of promises and act as soon as the
|
||||
first promise given to the `promises` argument fulfills or rejects.
|
||||
|
||||
Example:
|
||||
|
||||
```javascript
|
||||
var promise1 = new RSVP.Promise(function(resolve, reject){
|
||||
setTimeout(function(){
|
||||
resolve("promise 1");
|
||||
}, 200);
|
||||
});
|
||||
|
||||
var promise2 = new RSVP.Promise(function(resolve, reject){
|
||||
setTimeout(function(){
|
||||
resolve("promise 2");
|
||||
}, 100);
|
||||
});
|
||||
|
||||
RSVP.race([promise1, promise2]).then(function(result){
|
||||
// result === "promise 2" because it was resolved before promise1
|
||||
// was resolved.
|
||||
});
|
||||
```
|
||||
|
||||
`RSVP.race` is deterministic in that only the state of the first completed
|
||||
promise matters. For example, even if other promises given to the `promises`
|
||||
array argument are resolved, but the first completed promise has become
|
||||
rejected before the other promises became fulfilled, the returned promise
|
||||
will become rejected:
|
||||
|
||||
```javascript
|
||||
var promise1 = new RSVP.Promise(function(resolve, reject){
|
||||
setTimeout(function(){
|
||||
resolve("promise 1");
|
||||
}, 200);
|
||||
});
|
||||
|
||||
var promise2 = new RSVP.Promise(function(resolve, reject){
|
||||
setTimeout(function(){
|
||||
reject(new Error("promise 2"));
|
||||
}, 100);
|
||||
});
|
||||
|
||||
RSVP.race([promise1, promise2]).then(function(result){
|
||||
// Code here never runs because there are rejected promises!
|
||||
}, function(reason){
|
||||
// reason.message === "promise2" because promise 2 became rejected before
|
||||
// promise 1 became fulfilled
|
||||
});
|
||||
```
|
||||
|
||||
@method race
|
||||
@for RSVP
|
||||
@param {Array} promises array of promises to observe
|
||||
@param {String} label optional string for describing the promise returned.
|
||||
Useful for tooling.
|
||||
@return {Promise} a promise that becomes fulfilled with the value the first
|
||||
completed promises is resolved with if the first completed promise was
|
||||
fulfilled, or rejected with the reason that the first completed promise
|
||||
was rejected with.
|
||||
*/
|
||||
function race(promises) {
|
||||
/*jshint validthis:true */
|
||||
var Promise = this;
|
||||
|
||||
if (!isArray(promises)) {
|
||||
throw new TypeError('You must pass an array to race.');
|
||||
}
|
||||
return new Promise(function(resolve, reject) {
|
||||
var results = [], promise;
|
||||
|
||||
for (var i = 0; i < promises.length; i++) {
|
||||
promise = promises[i];
|
||||
|
||||
if (promise && typeof promise.then === 'function') {
|
||||
promise.then(resolve, reject);
|
||||
} else {
|
||||
resolve(promise);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
__exports__.race = race;
|
||||
});
|
||||
define("promise/reject",
|
||||
["exports"],
|
||||
function(__exports__) {
|
||||
"use strict";
|
||||
/**
|
||||
`RSVP.reject` returns a promise that will become rejected with the passed
|
||||
`reason`. `RSVP.reject` is essentially shorthand for the following:
|
||||
|
||||
```javascript
|
||||
var promise = new RSVP.Promise(function(resolve, reject){
|
||||
reject(new Error('WHOOPS'));
|
||||
});
|
||||
|
||||
promise.then(function(value){
|
||||
// Code here doesn't run because the promise is rejected!
|
||||
}, function(reason){
|
||||
// reason.message === 'WHOOPS'
|
||||
});
|
||||
```
|
||||
|
||||
Instead of writing the above, your code now simply becomes the following:
|
||||
|
||||
```javascript
|
||||
var promise = RSVP.reject(new Error('WHOOPS'));
|
||||
|
||||
promise.then(function(value){
|
||||
// Code here doesn't run because the promise is rejected!
|
||||
}, function(reason){
|
||||
// reason.message === 'WHOOPS'
|
||||
});
|
||||
```
|
||||
|
||||
@method reject
|
||||
@for RSVP
|
||||
@param {Any} reason value that the returned promise will be rejected with.
|
||||
@param {String} label optional string for identifying the returned promise.
|
||||
Useful for tooling.
|
||||
@return {Promise} a promise that will become rejected with the given
|
||||
`reason`.
|
||||
*/
|
||||
function reject(reason) {
|
||||
/*jshint validthis:true */
|
||||
var Promise = this;
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
reject(reason);
|
||||
});
|
||||
}
|
||||
|
||||
__exports__.reject = reject;
|
||||
});
|
||||
define("promise/resolve",
|
||||
["exports"],
|
||||
function(__exports__) {
|
||||
"use strict";
|
||||
function resolve(value) {
|
||||
/*jshint validthis:true */
|
||||
if (value && typeof value === 'object' && value.constructor === this) {
|
||||
return value;
|
||||
}
|
||||
|
||||
var Promise = this;
|
||||
|
||||
return new Promise(function(resolve) {
|
||||
resolve(value);
|
||||
});
|
||||
}
|
||||
|
||||
__exports__.resolve = resolve;
|
||||
});
|
||||
define("promise/utils",
|
||||
["exports"],
|
||||
function(__exports__) {
|
||||
"use strict";
|
||||
function objectOrFunction(x) {
|
||||
return isFunction(x) || (typeof x === "object" && x !== null);
|
||||
}
|
||||
|
||||
function isFunction(x) {
|
||||
return typeof x === "function";
|
||||
}
|
||||
|
||||
function isArray(x) {
|
||||
return Object.prototype.toString.call(x) === "[object Array]";
|
||||
}
|
||||
|
||||
// Date.now is not available in browsers < IE9
|
||||
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now#Compatibility
|
||||
var now = Date.now || function() { return new Date().getTime(); };
|
||||
|
||||
|
||||
__exports__.objectOrFunction = objectOrFunction;
|
||||
__exports__.isFunction = isFunction;
|
||||
__exports__.isArray = isArray;
|
||||
__exports__.now = now;
|
||||
});
|
||||
requireModule('promise/polyfill').polyfill();
|
||||
}());
|
1
buildfiles/app/node_modules/localforage/bower_components/es6-promise/promise.min.js
generated
vendored
Normal file
1
buildfiles/app/node_modules/localforage/bower_components/es6-promise/promise.min.js
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
14
buildfiles/app/node_modules/localforage/bower_components/expect/.bower.json
generated
vendored
Normal file
14
buildfiles/app/node_modules/localforage/bower_components/expect/.bower.json
generated
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"name": "expect",
|
||||
"homepage": "https://github.com/LearnBoost/expect.js",
|
||||
"version": "0.3.1",
|
||||
"_release": "0.3.1",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "0.3.1",
|
||||
"commit": "68ce6a98a5008ec0a11298e026ee00ad0142f118"
|
||||
},
|
||||
"_source": "https://github.com/LearnBoost/expect.js.git",
|
||||
"_target": "~0.3.1",
|
||||
"_originalSource": "expect"
|
||||
}
|
54
buildfiles/app/node_modules/localforage/bower_components/expect/History.md
generated
vendored
Normal file
54
buildfiles/app/node_modules/localforage/bower_components/expect/History.md
generated
vendored
Normal file
@ -0,0 +1,54 @@
|
||||
|
||||
0.3.0 / 2014-02-20
|
||||
==================
|
||||
|
||||
* renmaed to `index.js`
|
||||
* added repository to package.json
|
||||
* remove unused variable and merge
|
||||
* simpify isDate() and remove unnecessary semicolon.
|
||||
* Add .withArgs() syntax for building scenario
|
||||
* eql(): fix wrong order of actual vs. expected.
|
||||
* Added formatting for Error objects
|
||||
* Add support for 'regexp' type and eql comparison of regular expressions.
|
||||
* Better to follow the same coding style
|
||||
* Use 'showDiff' flag
|
||||
* Add 'actual' & 'expected' property to the thrown error
|
||||
* Pass .fail() unit test
|
||||
* Ignore 'script*' global leak in chrome
|
||||
* Exposed object stringification function
|
||||
* Use isRegExp in Assertion::throwException. Fix #25
|
||||
* Cleaned up local variables
|
||||
|
||||
0.2.0 / 2012-10-19
|
||||
==================
|
||||
|
||||
* fix isRegExp bug in some edge cases
|
||||
* add closure to all assertion messages deferring costly inspects
|
||||
until there is actually a failure
|
||||
* fix `make test` for recent mochas
|
||||
* add inspect() case for DOM elements
|
||||
* relax failure msg null check
|
||||
* add explicit failure through `expect().fail()`
|
||||
* clarified all `empty` functionality in README example
|
||||
* added docs for throwException fn/regexp signatures
|
||||
|
||||
0.1.2 / 2012-02-04
|
||||
==================
|
||||
|
||||
* Added regexp matching support for exceptions.
|
||||
* Added support for throwException callback.
|
||||
* Added `throwError` synonym to `throwException`.
|
||||
* Added object support for `.empty`.
|
||||
* Fixed `.a('object')` with nulls, and english error in error message.
|
||||
* Fix bug `indexOf` (IE). [hokaccha]
|
||||
* Fixed object property checking with `undefined` as value. [vovik]
|
||||
|
||||
0.1.1 / 2011-12-18
|
||||
==================
|
||||
|
||||
* Fixed typo
|
||||
|
||||
0.1.0 / 2011-12-18
|
||||
==================
|
||||
|
||||
* Initial import
|
263
buildfiles/app/node_modules/localforage/bower_components/expect/README.md
generated
vendored
Normal file
263
buildfiles/app/node_modules/localforage/bower_components/expect/README.md
generated
vendored
Normal file
@ -0,0 +1,263 @@
|
||||
# Expect
|
||||
|
||||
Minimalistic BDD assertion toolkit based on
|
||||
[should.js](http://github.com/visionmedia/should.js)
|
||||
|
||||
```js
|
||||
expect(window.r).to.be(undefined);
|
||||
expect({ a: 'b' }).to.eql({ a: 'b' })
|
||||
expect(5).to.be.a('number');
|
||||
expect([]).to.be.an('array');
|
||||
expect(window).not.to.be.an(Image);
|
||||
```
|
||||
|
||||
## Features
|
||||
|
||||
- Cross-browser: works on IE6+, Firefox, Safari, Chrome, Opera.
|
||||
- Compatible with all test frameworks.
|
||||
- Node.JS ready (`require('expect.js')`).
|
||||
- Standalone. Single global with no prototype extensions or shims.
|
||||
|
||||
## How to use
|
||||
|
||||
### Node
|
||||
|
||||
Install it with NPM or add it to your `package.json`:
|
||||
|
||||
```
|
||||
$ npm install expect.js
|
||||
```
|
||||
|
||||
Then:
|
||||
|
||||
```js
|
||||
var expect = require('expect.js');
|
||||
```
|
||||
|
||||
### Browser
|
||||
|
||||
Expose the `expect.js` found at the top level of this repository.
|
||||
|
||||
```html
|
||||
<script src="expect.js"></script>
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
**ok**: asserts that the value is _truthy_ or not
|
||||
|
||||
```js
|
||||
expect(1).to.be.ok();
|
||||
expect(true).to.be.ok();
|
||||
expect({}).to.be.ok();
|
||||
expect(0).to.not.be.ok();
|
||||
```
|
||||
|
||||
**be** / **equal**: asserts `===` equality
|
||||
|
||||
```js
|
||||
expect(1).to.be(1)
|
||||
expect(NaN).not.to.equal(NaN);
|
||||
expect(1).not.to.be(true)
|
||||
expect('1').to.not.be(1);
|
||||
```
|
||||
|
||||
**eql**: asserts loose equality that works with objects
|
||||
|
||||
```js
|
||||
expect({ a: 'b' }).to.eql({ a: 'b' });
|
||||
expect(1).to.eql('1');
|
||||
```
|
||||
|
||||
**a**/**an**: asserts `typeof` with support for `array` type and `instanceof`
|
||||
|
||||
```js
|
||||
// typeof with optional `array`
|
||||
expect(5).to.be.a('number');
|
||||
expect([]).to.be.an('array'); // works
|
||||
expect([]).to.be.an('object'); // works too, since it uses `typeof`
|
||||
|
||||
// constructors
|
||||
expect(5).to.be.a(Number);
|
||||
expect([]).to.be.an(Array);
|
||||
expect(tobi).to.be.a(Ferret);
|
||||
expect(person).to.be.a(Mammal);
|
||||
```
|
||||
|
||||
**match**: asserts `String` regular expression match
|
||||
|
||||
```js
|
||||
expect(program.version).to.match(/[0-9]+\.[0-9]+\.[0-9]+/);
|
||||
```
|
||||
|
||||
**contain**: asserts indexOf for an array or string
|
||||
|
||||
```js
|
||||
expect([1, 2]).to.contain(1);
|
||||
expect('hello world').to.contain('world');
|
||||
```
|
||||
|
||||
**length**: asserts array `.length`
|
||||
|
||||
```js
|
||||
expect([]).to.have.length(0);
|
||||
expect([1,2,3]).to.have.length(3);
|
||||
```
|
||||
|
||||
**empty**: asserts that an array is empty or not
|
||||
|
||||
```js
|
||||
expect([]).to.be.empty();
|
||||
expect({}).to.be.empty();
|
||||
expect({ length: 0, duck: 'typing' }).to.be.empty();
|
||||
expect({ my: 'object' }).to.not.be.empty();
|
||||
expect([1,2,3]).to.not.be.empty();
|
||||
```
|
||||
|
||||
**property**: asserts presence of an own property (and value optionally)
|
||||
|
||||
```js
|
||||
expect(window).to.have.property('expect')
|
||||
expect(window).to.have.property('expect', expect)
|
||||
expect({a: 'b'}).to.have.property('a');
|
||||
```
|
||||
|
||||
**key**/**keys**: asserts the presence of a key. Supports the `only` modifier
|
||||
|
||||
```js
|
||||
expect({ a: 'b' }).to.have.key('a');
|
||||
expect({ a: 'b', c: 'd' }).to.only.have.keys('a', 'c');
|
||||
expect({ a: 'b', c: 'd' }).to.only.have.keys(['a', 'c']);
|
||||
expect({ a: 'b', c: 'd' }).to.not.only.have.key('a');
|
||||
```
|
||||
|
||||
**throwException**/**throwError**: asserts that the `Function` throws or not when called
|
||||
|
||||
```js
|
||||
expect(fn).to.throwError(); // synonym of throwException
|
||||
expect(fn).to.throwException(function (e) { // get the exception object
|
||||
expect(e).to.be.a(SyntaxError);
|
||||
});
|
||||
expect(fn).to.throwException(/matches the exception message/);
|
||||
expect(fn2).to.not.throwException();
|
||||
```
|
||||
|
||||
**withArgs**: creates anonymous function to call fn with arguments
|
||||
|
||||
```js
|
||||
expect(fn).withArgs(invalid, arg).to.throwException();
|
||||
expect(fn).withArgs(valid, arg).to.not.throwException();
|
||||
```
|
||||
|
||||
**within**: asserts a number within a range
|
||||
|
||||
```js
|
||||
expect(1).to.be.within(0, Infinity);
|
||||
```
|
||||
|
||||
**greaterThan**/**above**: asserts `>`
|
||||
|
||||
```js
|
||||
expect(3).to.be.above(0);
|
||||
expect(5).to.be.greaterThan(3);
|
||||
```
|
||||
|
||||
**lessThan**/**below**: asserts `<`
|
||||
|
||||
```js
|
||||
expect(0).to.be.below(3);
|
||||
expect(1).to.be.lessThan(3);
|
||||
```
|
||||
|
||||
**fail**: explicitly forces failure.
|
||||
|
||||
```js
|
||||
expect().fail()
|
||||
expect().fail("Custom failure message")
|
||||
```
|
||||
|
||||
## Using with a test framework
|
||||
|
||||
For example, if you create a test suite with
|
||||
[mocha](http://github.com/visionmedia/mocha).
|
||||
|
||||
Let's say we wanted to test the following program:
|
||||
|
||||
**math.js**
|
||||
|
||||
```js
|
||||
function add (a, b) { return a + b; };
|
||||
```
|
||||
|
||||
Our test file would look like this:
|
||||
|
||||
```js
|
||||
describe('test suite', function () {
|
||||
it('should expose a function', function () {
|
||||
expect(add).to.be.a('function');
|
||||
});
|
||||
|
||||
it('should do math', function () {
|
||||
expect(add(1, 3)).to.equal(4);
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
If a certain expectation fails, an exception will be raised which gets captured
|
||||
and shown/processed by the test runner.
|
||||
|
||||
## Differences with should.js
|
||||
|
||||
- No need for static `should` methods like `should.strictEqual`. For example,
|
||||
`expect(obj).to.be(undefined)` works well.
|
||||
- Some API simplifications / changes.
|
||||
- API changes related to browser compatibility.
|
||||
|
||||
## Running tests
|
||||
|
||||
Clone the repository and install the developer dependencies:
|
||||
|
||||
```
|
||||
git clone git://github.com/LearnBoost/expect.js.git expect
|
||||
cd expect && npm install
|
||||
```
|
||||
|
||||
### Node
|
||||
|
||||
`make test`
|
||||
|
||||
### Browser
|
||||
|
||||
`make test-browser`
|
||||
|
||||
and point your browser(s) to `http://localhost:3000/test/`
|
||||
|
||||
## Credits
|
||||
|
||||
(The MIT License)
|
||||
|
||||
Copyright (c) 2011 Guillermo Rauch <guillermo@learnboost.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
'Software'), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
### 3rd-party
|
||||
|
||||
Heavily borrows from [should.js](http://github.com/visionmedia/should.js) by TJ
|
||||
Holowaychuck - MIT.
|
1284
buildfiles/app/node_modules/localforage/bower_components/expect/index.js
generated
vendored
Normal file
1284
buildfiles/app/node_modules/localforage/bower_components/expect/index.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
13
buildfiles/app/node_modules/localforage/bower_components/expect/package.json
generated
vendored
Normal file
13
buildfiles/app/node_modules/localforage/bower_components/expect/package.json
generated
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"name": "expect.js"
|
||||
, "version": "0.3.1"
|
||||
, "description": "BDD style assertions for node and the browser."
|
||||
, "repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/LearnBoost/expect.js.git"
|
||||
}
|
||||
, "devDependencies": {
|
||||
"mocha": "*"
|
||||
, "serve": "*"
|
||||
}
|
||||
}
|
48
buildfiles/app/node_modules/localforage/bower_components/mocha/.bower.json
generated
vendored
Normal file
48
buildfiles/app/node_modules/localforage/bower_components/mocha/.bower.json
generated
vendored
Normal file
@ -0,0 +1,48 @@
|
||||
{
|
||||
"name": "mocha",
|
||||
"homepage": "https://mochajs.org",
|
||||
"description": "simple, flexible, fun test framework",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/mochajs/mocha.git"
|
||||
},
|
||||
"main": [
|
||||
"mocha.js",
|
||||
"mocha.css"
|
||||
],
|
||||
"ignore": [
|
||||
"bin",
|
||||
"editors",
|
||||
"images",
|
||||
"lib",
|
||||
"scripts",
|
||||
"test",
|
||||
"assets",
|
||||
"media",
|
||||
".*",
|
||||
"index.js",
|
||||
"karma.conf.js",
|
||||
"browser-entry.js",
|
||||
"Makefile",
|
||||
"package.json",
|
||||
"appveyor.yml"
|
||||
],
|
||||
"keywords": [
|
||||
"mocha",
|
||||
"test",
|
||||
"bdd",
|
||||
"tdd",
|
||||
"tap"
|
||||
],
|
||||
"license": "MIT",
|
||||
"version": "3.4.2",
|
||||
"_release": "3.4.2",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "v3.4.2",
|
||||
"commit": "800963464bc4e0e09c2e85e8a9edd8d20a0bbf57"
|
||||
},
|
||||
"_source": "https://github.com/mochajs/mocha.git",
|
||||
"_target": "~3.4.2",
|
||||
"_originalSource": "mocha"
|
||||
}
|
1635
buildfiles/app/node_modules/localforage/bower_components/mocha/CHANGELOG.md
generated
vendored
Normal file
1635
buildfiles/app/node_modules/localforage/bower_components/mocha/CHANGELOG.md
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
84
buildfiles/app/node_modules/localforage/bower_components/mocha/CONTRIBUTING.md
generated
vendored
Normal file
84
buildfiles/app/node_modules/localforage/bower_components/mocha/CONTRIBUTING.md
generated
vendored
Normal file
@ -0,0 +1,84 @@
|
||||
# Contributing to Mocha
|
||||
|
||||
> Please read these guidelines before submitting an issue, filing a feature request, or contributing code.
|
||||
|
||||
## :question: Got a Question?
|
||||
|
||||
If you have a question about using Mocha, please use the [mailing list](https://groups.google.com/group/mochajs), [StackOverflow](https://stackoverflow.com), or ask the friendly people in our [chat room](https://gitter.im/mochajs/mocha).
|
||||
|
||||
## :bug: I Found a Bug
|
||||
|
||||
Sorry! It happens to the best of us. If you've found a bug in Mocha, **please [search](https://github.com/mochajs/mocha/issues/) to see if it's already been reported**. Otherwise, create a [new issue](https://github.com/mochajs/mocha/issues/new). If you can fix the bug yourself, feel free to create a [pull request](#propose-a-change) thereafter.
|
||||
|
||||
Please include *as much detail as possible* to help us reproduce and diagnose the bug. Most importantly:
|
||||
|
||||
- Let us know *how* you're running Mocha (options, flags, environment, browser or Node.js, etc.)
|
||||
- Include your test code or file(s). If large, please provide a link to a repository or [gist](https://gist.github.com).
|
||||
- Please show code in JavaScript only (any version)
|
||||
|
||||
If we need more information from you, we'll let you know. If you don't within a reasonable time frame (TBD), your issue will be automatically closed for inactivity.
|
||||
|
||||
## :exclamation: Propose a Change
|
||||
|
||||
Before you get your hands dirty, please [search](https://github.com/mochajs/mocha/issues/) for a related issue, or [create a new one](https://github.com/mochajs/mocha/issues/new). If you wish to contribute a new feature, this is doubly important! Let's discuss your proposed changes first; we don't want you to waste time implementing a change that is at odds with the project's direction. That said, we'll happily consider any contribution, no matter how great or small.
|
||||
|
||||
*This paragraph would contain information about Mocha's roadmap, but it doesn't yet exist.* :poop:
|
||||
|
||||
It's also important to understand some overarching goals of Mocha, detailed below.
|
||||
|
||||
### :soccer: About Project Goals
|
||||
|
||||
Mocha is a test framework. Developers use it against anything from legacy spaghetti in IE7 to stage-0 TC39 features in Electron. While still staying current, Mocha will only drop support for old platforms as a last resort. If and only if Mocha cannot move forward as a project, support will be dropped. If workarounds exist, they are preferred.
|
||||
|
||||
Mocha adheres strictly to [semantic versioning](https://semver.org). We are *extremely cautious* with changes that have the potential to break; given the size of Mocha's user base, it's *highly unlikely* a breaking change will slide by.
|
||||
|
||||
Mocha's usage far outweighs its resources. If a proposed feature would incur a maintenance penalty, it could be a hard sell.
|
||||
|
||||
We ask you please keep these goals in mind when making or proposing changes.
|
||||
|
||||
### :shoe: Contributing Code: Step-by-Step
|
||||
|
||||
Follow these steps to get going. If you are having trouble, don't be afraid to [ask for help](#got-a-question).
|
||||
|
||||
1. [Install Node.js 4.x or newer](https://nodejs.org/download).
|
||||
1. Install [GNU Make](https://www.gnu.org/software/make/) or equivalent.
|
||||
1. Follow [Github's documentation](https://help.github.com/articles/fork-a-repo/) on setting up Git, forking and cloning.
|
||||
1. Create a new branch in your working copy. Give your branch a descriptive name, such as `issue/12345`: `git checkout -b issue/12345`.
|
||||
1. Execute `npm install` to install the development dependencies.
|
||||
1. Make your changes and add them via `git add`.
|
||||
- **Do not modify** the root `mocha.js` file directly; it is automatically generated.
|
||||
- Your changes will likely be somewhere in `lib/`, `bin/` or `browser-entry.js` if your changes are browser-specific.
|
||||
- Please add unit and/or integration tests (depending on the nature of your changes).
|
||||
- Keep your PR focused. Don't fix two things at once, or make formatting changes alongside bug fixes.
|
||||
1. Before committing, run `npm test`.
|
||||
- This will run unit tests, Node.js and browser integration tests, and lint the source code.
|
||||
- The "browser" tests use Mocha to test itself; it will rebuild the root `mocha.js` file with your changes.
|
||||
- **Please avoid committing changes to `mocha.js`**.
|
||||
- Ultimately, your pull request will be built on our continuous integration servers ([Travis CI](https://travis-ci.org/mochajs/mocha) and [AppVeyor](https://ci.appveyor.com/project/boneskull/mocha)). The first step to ensuring these checks pass is to test on your own machine.
|
||||
1. Commit your changes.
|
||||
- Use a brief message on the first line, referencing a relevant issue (e.g. `#12345`).
|
||||
- Add detail in subsequent lines.
|
||||
1. Push your changes to your fork.
|
||||
1. Navigate to the source repository. You should see a notification about your recent changes in your fork's branch, with a button to create a pull request. Click it.
|
||||
1. Describe your changes in detail here. Once you're satisfied, submit the form.
|
||||
- *PRO TIP*: If you've used a multi-line commit message, Github will pre-fill the PR's description with it.
|
||||
1. If you have not signed our Contributor License Agreement, a friendly robot will prompt you to do so. A CLA (electronic) signature is **required** for all contributions of code to Mocha.
|
||||
1. CI will run against your changes.
|
||||
- If the changes fail the checks, you will need to address those before merging.
|
||||
- You don't need to make a new PR to make changes. Instead, commit on top of your changes, and push these to your fork's branch. The PR will be updated, and CI will re-run.
|
||||
- Github will indicate if there's a conflict. If this happens, you will need to [rebase](https://help.github.com/articles/about-git-rebase/) your branch onto the `master` branch of the source repository. *Don't merge.*
|
||||
- It's no longer necessary to "squash" your changes.
|
||||
1. Be patient while your PR is reviewed. This can take awhile ([why?](https://github.com/orgs/mochajs/projects/4)). We may request changes; don't be afraid to question them.
|
||||
|
||||
## :angel: I Just Want To Help
|
||||
|
||||
*Excellent.* Here's how:
|
||||
|
||||
- **Handy with JavaScript?** Please check out the issues labeled [`pr-please`](https://git.io/vXYu2).
|
||||
- **Can you write good (and do other stuff good too)?** Help with the documentation. See the [issues for our site](https://github.com/mochajs/mochajs.github.io/issues).
|
||||
- **Design your thing?** [Our site](https://github.com/mochajs/mochajs.github.io) needs your magic touch.
|
||||
- **Know Mocha's codebase?** We could use your help triaging issues and/or reviewing pull requests. Please contact an [org member](https://github.com/orgs/mochajs/people), and we'll chat.
|
||||
- **Want to build our community?** Mocha has a *lot* of users. We could use your help bringing everyone together in peace and harmony. Please contact an [org member](https://github.com/mochajs/people).
|
||||
- **You can sell dirt to worms?** Let's raise Mocha's profile in the JavaScript and OSS communities. Please contact an [org member](https://github.com/mochajs/people)!
|
||||
- **Wait--you write unit tests for *fun*?** A PR which increases coverage is unlikely to be turned down.
|
||||
- **Are you experienced?** If you're a seasoned Mocha user, why not help answer some questions in the [chat room](https://gitter.im/mochajs/mocha)?
|
22
buildfiles/app/node_modules/localforage/bower_components/mocha/LICENSE
generated
vendored
Normal file
22
buildfiles/app/node_modules/localforage/bower_components/mocha/LICENSE
generated
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
(The MIT License)
|
||||
|
||||
Copyright (c) 2011-2017 JS Foundation and contributors, https://js.foundation
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
'Software'), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
123
buildfiles/app/node_modules/localforage/bower_components/mocha/README.md
generated
vendored
Normal file
123
buildfiles/app/node_modules/localforage/bower_components/mocha/README.md
generated
vendored
Normal file
@ -0,0 +1,123 @@
|
||||
# Mocha needs YOU!
|
||||
|
||||
*Did you know* Mocha [is a dependency of over 100,000 projects](https://libraries.io/npm/mocha) published to npm alone?
|
||||
|
||||
**Despite this, we're currently unable to merge most pull requests due to lack of maintenance resources.**
|
||||
|
||||
**Are you interested in triaging issues or reviewing open PRs? Have some time to hack on its codebase?** If you would like to help maintain Mocha, please contact `@boneskull` on [Gitter](https://gitter.im/mochajs/mocha).
|
||||
|
||||
*Thank you* :kissing_heart: to all of you interested in helping. These are Mocha's immediate needs:
|
||||
|
||||
1. Increase test coverage on Node.js and browser
|
||||
- Increase integration coverage for all reporters
|
||||
- `html` reporter must be tested in browser
|
||||
- Basic console reporters (*not* `nyan`, `landing`, etc.) must be tested in **both** browser and Node.js contexts; PhantomJS can consume all console reporters
|
||||
- Filesystem-based reporters must be tested in Node.js context
|
||||
- Increase coverage against all interfaces (`exports` in particular). Ideally this becomes a "matrix" where we repeat sets of integration tests across all interfaces.
|
||||
- Refactor non-Node.js-specific tests to allow them to run in a browser context. Node.js-specific tests include those which *require* the CLI or filesystem. Most everything else is fair game.
|
||||
2. Review current open pull requests
|
||||
- We need individuals familiar with Mocha's codebase. Got questions? Ask them in [our chat room](https://gitter.im/mochajs/mocha).
|
||||
- Pull requests **must** have supporting tests. The only exceptions are pure cosmetic or non-functional changes.
|
||||
- Pull request contributors must sign the CLA.
|
||||
3. Close old, inactive issues and pull requests
|
||||
- A bot should do this. We need a bot. Got a bot?
|
||||
4. Triage issues
|
||||
- If we run into "critical" bugs, they need fixing.
|
||||
- "Critical" means Mocha is broken w/o workarounds for a *large percentage* of users
|
||||
- Otherwise: respond to issues, close new dupe issues, confirm bugs, ask for more info, etc.
|
||||
|
||||
Once we gain ground on the above items, we can work together formalize our contribution guidelines and governance. For further info & ideas, please see our [projects](https://github.com/mochajs/mocha/projects/).
|
||||
|
||||
*You needn't be a maintainer to submit a pull request for test coverage!*
|
||||
|
||||
-- @boneskull, *Jan 17 2016*
|
||||
|
||||
<br><br>
|
||||
<p align="center">
|
||||
<img src="https://cldup.com/xFVFxOioAU.svg" alt="Mocha test framework"/>
|
||||
</p>
|
||||
|
||||
[](http://travis-ci.org/mochajs/mocha)
|
||||
[](https://coveralls.io/github/mochajs/mocha)
|
||||
[](https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fmochajs%2Fmocha?ref=badge_shield)
|
||||
[](https://gitter.im/mochajs/mocha?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
[](#backers)
|
||||
[](#sponsors)
|
||||
<br><img alt="Mocha Browser Support h/t SauceLabs" src="https://saucelabs.com/browser-matrix/mochajs.svg" width="354">
|
||||
|
||||
Mocha is a simple, flexible, fun JavaScript test framework for node.js and the browser. For more information view the [documentation](http://mochajs.org).
|
||||
|
||||
## Links
|
||||
|
||||
- [Changelog](https://github.com/mochajs/mocha/blob/master/CHANGELOG.md)
|
||||
- [Google Group](http://groups.google.com/group/mochajs)
|
||||
- [Wiki](https://github.com/mochajs/mocha/wiki)
|
||||
- Mocha [Extensions and reporters](https://github.com/mochajs/mocha/wiki)
|
||||
|
||||
|
||||
## Backers
|
||||
|
||||
[Become a backer]((https://opencollective.com/mochajs#backer)) and show your support to our open source project.
|
||||
|
||||
<a href="https://opencollective.com/mochajs/backer/0/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/0/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/1/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/1/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/2/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/2/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/3/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/3/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/4/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/4/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/5/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/5/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/6/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/6/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/7/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/7/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/8/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/8/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/9/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/9/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/10/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/10/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/11/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/11/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/12/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/12/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/13/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/13/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/14/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/14/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/15/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/15/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/16/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/16/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/17/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/17/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/18/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/18/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/19/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/19/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/20/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/20/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/21/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/21/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/22/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/22/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/23/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/23/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/24/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/24/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/25/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/25/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/26/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/26/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/27/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/27/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/28/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/28/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/backer/29/website" target="_blank"><img src="https://opencollective.com/mochajs/backer/29/avatar"></a>
|
||||
|
||||
|
||||
## Sponsors
|
||||
|
||||
Does your company use Mocha? Ask your manager or marketing team if your company would be interested in supporting our project. Support will allow the maintainers to dedicate more time for maintenance and new features for everyone. Also, your company's logo will show [on GitHub](https://github.com/mochajs/mocha#readme) and on [our site](https://mochajs.org)--who doesn't want a little extra exposure? [Here's the info](https://opencollective.com/mochajs#sponsor).
|
||||
|
||||
<a href="https://opencollective.com/mochajs/sponsor/0/website" target="_blank"><img src="https://opencollective.com/mochajs/sponsor/0/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/sponsor/1/website" target="_blank"><img src="https://opencollective.com/mochajs/sponsor/1/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/sponsor/2/website" target="_blank"><img src="https://opencollective.com/mochajs/sponsor/2/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/sponsor/3/website" target="_blank"><img src="https://opencollective.com/mochajs/sponsor/3/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/sponsor/4/website" target="_blank"><img src="https://opencollective.com/mochajs/sponsor/4/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/sponsor/5/website" target="_blank"><img src="https://opencollective.com/mochajs/sponsor/5/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/sponsor/6/website" target="_blank"><img src="https://opencollective.com/mochajs/sponsor/6/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/sponsor/7/website" target="_blank"><img src="https://opencollective.com/mochajs/sponsor/7/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/sponsor/8/website" target="_blank"><img src="https://opencollective.com/mochajs/sponsor/8/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/sponsor/9/website" target="_blank"><img src="https://opencollective.com/mochajs/sponsor/9/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/sponsor/10/website" target="_blank"><img src="https://opencollective.com/mochajs/sponsor/10/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/sponsor/11/website" target="_blank"><img src="https://opencollective.com/mochajs/sponsor/11/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/sponsor/12/website" target="_blank"><img src="https://opencollective.com/mochajs/sponsor/12/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/sponsor/13/website" target="_blank"><img src="https://opencollective.com/mochajs/sponsor/13/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/sponsor/14/website" target="_blank"><img src="https://opencollective.com/mochajs/sponsor/14/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/sponsor/15/website" target="_blank"><img src="https://opencollective.com/mochajs/sponsor/15/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/sponsor/16/website" target="_blank"><img src="https://opencollective.com/mochajs/sponsor/16/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/sponsor/17/website" target="_blank"><img src="https://opencollective.com/mochajs/sponsor/17/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/sponsor/18/website" target="_blank"><img src="https://opencollective.com/mochajs/sponsor/18/avatar"></a>
|
||||
<a href="https://opencollective.com/mochajs/sponsor/19/website" target="_blank"><img src="https://opencollective.com/mochajs/sponsor/19/avatar"></a>
|
||||
|
||||
## License
|
||||
|
||||
[MIT](LICENSE)
|
||||
|
||||
[](https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fmochajs%2Fmocha?ref=badge_large)
|
38
buildfiles/app/node_modules/localforage/bower_components/mocha/bower.json
generated
vendored
Normal file
38
buildfiles/app/node_modules/localforage/bower_components/mocha/bower.json
generated
vendored
Normal file
@ -0,0 +1,38 @@
|
||||
{
|
||||
"name": "mocha",
|
||||
"homepage": "https://mochajs.org",
|
||||
"description": "simple, flexible, fun test framework",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/mochajs/mocha.git"
|
||||
},
|
||||
"main": [
|
||||
"mocha.js",
|
||||
"mocha.css"
|
||||
],
|
||||
"ignore": [
|
||||
"bin",
|
||||
"editors",
|
||||
"images",
|
||||
"lib",
|
||||
"scripts",
|
||||
"test",
|
||||
"assets",
|
||||
"media",
|
||||
".*",
|
||||
"index.js",
|
||||
"karma.conf.js",
|
||||
"browser-entry.js",
|
||||
"Makefile",
|
||||
"package.json",
|
||||
"appveyor.yml"
|
||||
],
|
||||
"keywords": [
|
||||
"mocha",
|
||||
"test",
|
||||
"bdd",
|
||||
"tdd",
|
||||
"tap"
|
||||
],
|
||||
"license": "MIT"
|
||||
}
|
326
buildfiles/app/node_modules/localforage/bower_components/mocha/mocha.css
generated
vendored
Normal file
326
buildfiles/app/node_modules/localforage/bower_components/mocha/mocha.css
generated
vendored
Normal file
@ -0,0 +1,326 @@
|
||||
@charset "utf-8";
|
||||
|
||||
body {
|
||||
margin:0;
|
||||
}
|
||||
|
||||
#mocha {
|
||||
font: 20px/1.5 "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
margin: 60px 50px;
|
||||
}
|
||||
|
||||
#mocha ul,
|
||||
#mocha li {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#mocha ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
#mocha h1,
|
||||
#mocha h2 {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#mocha h1 {
|
||||
margin-top: 15px;
|
||||
font-size: 1em;
|
||||
font-weight: 200;
|
||||
}
|
||||
|
||||
#mocha h1 a {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
#mocha h1 a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#mocha .suite .suite h1 {
|
||||
margin-top: 0;
|
||||
font-size: .8em;
|
||||
}
|
||||
|
||||
#mocha .hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#mocha h2 {
|
||||
font-size: 12px;
|
||||
font-weight: normal;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#mocha .suite {
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
#mocha .test {
|
||||
margin-left: 15px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#mocha .test.pending:hover h2::after {
|
||||
content: '(pending)';
|
||||
font-family: arial, sans-serif;
|
||||
}
|
||||
|
||||
#mocha .test.pass.medium .duration {
|
||||
background: #c09853;
|
||||
}
|
||||
|
||||
#mocha .test.pass.slow .duration {
|
||||
background: #b94a48;
|
||||
}
|
||||
|
||||
#mocha .test.pass::before {
|
||||
content: '✓';
|
||||
font-size: 12px;
|
||||
display: block;
|
||||
float: left;
|
||||
margin-right: 5px;
|
||||
color: #00d6b2;
|
||||
}
|
||||
|
||||
#mocha .test.pass .duration {
|
||||
font-size: 9px;
|
||||
margin-left: 5px;
|
||||
padding: 2px 5px;
|
||||
color: #fff;
|
||||
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.2);
|
||||
-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.2);
|
||||
box-shadow: inset 0 1px 1px rgba(0,0,0,.2);
|
||||
-webkit-border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-ms-border-radius: 5px;
|
||||
-o-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
#mocha .test.pass.fast .duration {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#mocha .test.pending {
|
||||
color: #0b97c4;
|
||||
}
|
||||
|
||||
#mocha .test.pending::before {
|
||||
content: '◦';
|
||||
color: #0b97c4;
|
||||
}
|
||||
|
||||
#mocha .test.fail {
|
||||
color: #c00;
|
||||
}
|
||||
|
||||
#mocha .test.fail pre {
|
||||
color: black;
|
||||
}
|
||||
|
||||
#mocha .test.fail::before {
|
||||
content: '✖';
|
||||
font-size: 12px;
|
||||
display: block;
|
||||
float: left;
|
||||
margin-right: 5px;
|
||||
color: #c00;
|
||||
}
|
||||
|
||||
#mocha .test pre.error {
|
||||
color: #c00;
|
||||
max-height: 300px;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
#mocha .test .html-error {
|
||||
overflow: auto;
|
||||
color: black;
|
||||
line-height: 1.5;
|
||||
display: block;
|
||||
float: left;
|
||||
clear: left;
|
||||
font: 12px/1.5 monaco, monospace;
|
||||
margin: 5px;
|
||||
padding: 15px;
|
||||
border: 1px solid #eee;
|
||||
max-width: 85%; /*(1)*/
|
||||
max-width: -webkit-calc(100% - 42px);
|
||||
max-width: -moz-calc(100% - 42px);
|
||||
max-width: calc(100% - 42px); /*(2)*/
|
||||
max-height: 300px;
|
||||
word-wrap: break-word;
|
||||
border-bottom-color: #ddd;
|
||||
-webkit-box-shadow: 0 1px 3px #eee;
|
||||
-moz-box-shadow: 0 1px 3px #eee;
|
||||
box-shadow: 0 1px 3px #eee;
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
#mocha .test .html-error pre.error {
|
||||
border: none;
|
||||
-webkit-border-radius: 0;
|
||||
-moz-border-radius: 0;
|
||||
border-radius: 0;
|
||||
-webkit-box-shadow: 0;
|
||||
-moz-box-shadow: 0;
|
||||
box-shadow: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
margin-top: 18px;
|
||||
max-height: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* (1): approximate for browsers not supporting calc
|
||||
* (2): 42 = 2*15 + 2*10 + 2*1 (padding + margin + border)
|
||||
* ^^ seriously
|
||||
*/
|
||||
#mocha .test pre {
|
||||
display: block;
|
||||
float: left;
|
||||
clear: left;
|
||||
font: 12px/1.5 monaco, monospace;
|
||||
margin: 5px;
|
||||
padding: 15px;
|
||||
border: 1px solid #eee;
|
||||
max-width: 85%; /*(1)*/
|
||||
max-width: -webkit-calc(100% - 42px);
|
||||
max-width: -moz-calc(100% - 42px);
|
||||
max-width: calc(100% - 42px); /*(2)*/
|
||||
word-wrap: break-word;
|
||||
border-bottom-color: #ddd;
|
||||
-webkit-box-shadow: 0 1px 3px #eee;
|
||||
-moz-box-shadow: 0 1px 3px #eee;
|
||||
box-shadow: 0 1px 3px #eee;
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
#mocha .test h2 {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#mocha .test a.replay {
|
||||
position: absolute;
|
||||
top: 3px;
|
||||
right: 0;
|
||||
text-decoration: none;
|
||||
vertical-align: middle;
|
||||
display: block;
|
||||
width: 15px;
|
||||
height: 15px;
|
||||
line-height: 15px;
|
||||
text-align: center;
|
||||
background: #eee;
|
||||
font-size: 15px;
|
||||
-webkit-border-radius: 15px;
|
||||
-moz-border-radius: 15px;
|
||||
border-radius: 15px;
|
||||
-webkit-transition:opacity 200ms;
|
||||
-moz-transition:opacity 200ms;
|
||||
-o-transition:opacity 200ms;
|
||||
transition: opacity 200ms;
|
||||
opacity: 0.3;
|
||||
color: #888;
|
||||
}
|
||||
|
||||
#mocha .test:hover a.replay {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
#mocha-report.pass .test.fail {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#mocha-report.fail .test.pass {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#mocha-report.pending .test.pass,
|
||||
#mocha-report.pending .test.fail {
|
||||
display: none;
|
||||
}
|
||||
#mocha-report.pending .test.pass.pending {
|
||||
display: block;
|
||||
}
|
||||
|
||||
#mocha-error {
|
||||
color: #c00;
|
||||
font-size: 1.5em;
|
||||
font-weight: 100;
|
||||
letter-spacing: 1px;
|
||||
}
|
||||
|
||||
#mocha-stats {
|
||||
position: fixed;
|
||||
top: 15px;
|
||||
right: 10px;
|
||||
font-size: 12px;
|
||||
margin: 0;
|
||||
color: #888;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
#mocha-stats .progress {
|
||||
float: right;
|
||||
padding-top: 0;
|
||||
|
||||
/**
|
||||
* Set safe initial values, so mochas .progress does not inherit these
|
||||
* properties from Bootstrap .progress (which causes .progress height to
|
||||
* equal line height set in Bootstrap).
|
||||
*/
|
||||
height: auto;
|
||||
-webkit-box-shadow: none;
|
||||
-moz-box-shadow: none;
|
||||
box-shadow: none;
|
||||
background-color: initial;
|
||||
}
|
||||
|
||||
#mocha-stats em {
|
||||
color: black;
|
||||
}
|
||||
|
||||
#mocha-stats a {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
#mocha-stats a:hover {
|
||||
border-bottom: 1px solid #eee;
|
||||
}
|
||||
|
||||
#mocha-stats li {
|
||||
display: inline-block;
|
||||
margin: 0 5px;
|
||||
list-style: none;
|
||||
padding-top: 11px;
|
||||
}
|
||||
|
||||
#mocha-stats canvas {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
#mocha code .comment { color: #ddd; }
|
||||
#mocha code .init { color: #2f6fad; }
|
||||
#mocha code .string { color: #5890ad; }
|
||||
#mocha code .keyword { color: #8a6343; }
|
||||
#mocha code .number { color: #2f6fad; }
|
||||
|
||||
@media screen and (max-device-width: 480px) {
|
||||
#mocha {
|
||||
margin: 60px 0px;
|
||||
}
|
||||
|
||||
#mocha #stats {
|
||||
position: absolute;
|
||||
}
|
||||
}
|
16205
buildfiles/app/node_modules/localforage/bower_components/mocha/mocha.js
generated
vendored
Normal file
16205
buildfiles/app/node_modules/localforage/bower_components/mocha/mocha.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
14
buildfiles/app/node_modules/localforage/bower_components/modernizr/.bower.json
generated
vendored
Normal file
14
buildfiles/app/node_modules/localforage/bower_components/modernizr/.bower.json
generated
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"name": "modernizr",
|
||||
"homepage": "https://github.com/Modernizr/Modernizr",
|
||||
"version": "2.8.3",
|
||||
"_release": "2.8.3",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "v2.8.3",
|
||||
"commit": "d6bb30c0f12ebb3ddd01e90b0bf435e1c34e6f11"
|
||||
},
|
||||
"_source": "https://github.com/Modernizr/Modernizr.git",
|
||||
"_target": "~2.8.1",
|
||||
"_originalSource": "modernizr"
|
||||
}
|
10
buildfiles/app/node_modules/localforage/bower_components/modernizr/.editorconfig
generated
vendored
Normal file
10
buildfiles/app/node_modules/localforage/bower_components/modernizr/.editorconfig
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
# editorconfig.org
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
8
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/a-download.js
generated
vendored
Normal file
8
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/a-download.js
generated
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
|
||||
// a[download] attribute
|
||||
// When used on an <a>, this attribute signifies that the resource it
|
||||
// points to should be downloaded by the browser rather than navigating to it.
|
||||
// http://developers.whatwg.org/links.html#downloading-resources
|
||||
// By Addy Osmani
|
||||
|
||||
Modernizr.addTest('adownload', 'download' in document.createElement('a'));
|
4
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/audio-audiodata-api.js
generated
vendored
Normal file
4
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/audio-audiodata-api.js
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
// Mozilla Audio Data API
|
||||
// https://wiki.mozilla.org/Audio_Data_API
|
||||
// by Addy Osmani
|
||||
Modernizr.addTest('audiodata', !!(window.Audio));
|
4
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/audio-webaudio-api.js
generated
vendored
Normal file
4
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/audio-webaudio-api.js
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
// Web Audio API
|
||||
// https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html
|
||||
// By Addy Osmani
|
||||
Modernizr.addTest('webaudio', !!(window.webkitAudioContext || window.AudioContext));
|
8
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/battery-api.js
generated
vendored
Normal file
8
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/battery-api.js
generated
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
|
||||
// Battery API
|
||||
// https://developer.mozilla.org/en/DOM/window.navigator.mozBattery
|
||||
// By: Paul Sayre
|
||||
|
||||
Modernizr.addTest('battery',
|
||||
!!Modernizr.prefixed('battery', navigator)
|
||||
);
|
11
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/battery-level.js
generated
vendored
Normal file
11
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/battery-level.js
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
|
||||
// Low Battery Level
|
||||
// Enable a developer to remove CPU intensive CSS/JS when battery is low
|
||||
// developer.mozilla.org/en/DOM/window.navigator.mozBattery
|
||||
// By: Paul Sayre
|
||||
|
||||
Modernizr.addTest('lowbattery', function () {
|
||||
var minLevel = 0.20,
|
||||
battery = Modernizr.prefixed('battery', navigator);
|
||||
return !!(battery && !battery.charging && battery.level <= minLevel);
|
||||
});
|
10
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/blob-constructor.js
generated
vendored
Normal file
10
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/blob-constructor.js
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
// Blob constructor
|
||||
// http://dev.w3.org/2006/webapi/FileAPI/#constructorBlob
|
||||
|
||||
Modernizr.addTest('blobconstructor', function () {
|
||||
try {
|
||||
return !!new Blob();
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
});
|
28
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/canvas-todataurl-type.js
generated
vendored
Normal file
28
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/canvas-todataurl-type.js
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
// canvas.toDataURL type support
|
||||
// http://www.w3.org/TR/html5/the-canvas-element.html#dom-canvas-todataurl
|
||||
|
||||
// This test is asynchronous. Watch out.
|
||||
|
||||
(function () {
|
||||
|
||||
if (!Modernizr.canvas) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var image = new Image(),
|
||||
canvas = document.createElement('canvas'),
|
||||
ctx = canvas.getContext('2d');
|
||||
|
||||
image.onload = function() {
|
||||
ctx.drawImage(image, 0, 0);
|
||||
|
||||
Modernizr.addTest('todataurljpeg', function() {
|
||||
return canvas.toDataURL('image/jpeg').indexOf('data:image/jpeg') === 0;
|
||||
});
|
||||
Modernizr.addTest('todataurlwebp', function() {
|
||||
return canvas.toDataURL('image/webp').indexOf('data:image/webp') === 0;
|
||||
});
|
||||
};
|
||||
|
||||
image.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACklEQVR4nGMAAQAABQABDQottAAAAABJRU5ErkJggg==';
|
||||
}());
|
9
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/contenteditable.js
generated
vendored
Normal file
9
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/contenteditable.js
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
// contentEditable
|
||||
// http://www.whatwg.org/specs/web-apps/current-work/multipage/editing.html#contenteditable
|
||||
|
||||
// this is known to false positive in some mobile browsers
|
||||
// here is a whitelist of verified working browsers:
|
||||
// https://github.com/NielsLeenheer/html5test/blob/549f6eac866aa861d9649a0707ff2c0157895706/scripts/engine.js#L2083
|
||||
|
||||
Modernizr.addTest('contenteditable',
|
||||
'contentEditable' in document.documentElement);
|
10
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/contentsecuritypolicy.js
generated
vendored
Normal file
10
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/contentsecuritypolicy.js
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
// Test for (experimental) Content Security Policy 1.1 support.
|
||||
//
|
||||
// This feature is still quite experimental, but is available now in Chrome 22.
|
||||
// If the `SecurityPolicy` property is available, you can be sure the browser
|
||||
// supports CSP. If it's not available, the browser still might support an
|
||||
// earlier version of the CSP spec.
|
||||
//
|
||||
// Editor's Draft: https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html
|
||||
|
||||
Modernizr.addTest('contentsecuritypolicy', ('securityPolicy' in document || 'SecurityPolicy' in document));
|
11
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/contextmenu.js
generated
vendored
Normal file
11
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/contextmenu.js
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
// http://www.w3.org/TR/html5/interactive-elements.html#context-menus
|
||||
// Demo at http://thewebrocks.com/demos/context-menu/
|
||||
Modernizr.addTest(
|
||||
'contextmenu',
|
||||
('contextMenu' in document.documentElement && 'HTMLMenuItemElement' in window)
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
15
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/cookies.js
generated
vendored
Normal file
15
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/cookies.js
generated
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
|
||||
// by tauren
|
||||
// https://github.com/Modernizr/Modernizr/issues/191
|
||||
|
||||
Modernizr.addTest('cookies', function () {
|
||||
// Quick test if browser has cookieEnabled host property
|
||||
if (navigator.cookieEnabled) return true;
|
||||
// Create cookie
|
||||
document.cookie = "cookietest=1";
|
||||
var ret = document.cookie.indexOf("cookietest=") != -1;
|
||||
// Delete cookie
|
||||
document.cookie = "cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT";
|
||||
return ret;
|
||||
});
|
||||
|
3
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/cors.js
generated
vendored
Normal file
3
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/cors.js
generated
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
// cors
|
||||
// By Theodoor van Donge
|
||||
Modernizr.addTest('cors', !!(window.XMLHttpRequest && 'withCredentials' in new XMLHttpRequest()));
|
19
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-backgroundposition-shorthand.js
generated
vendored
Normal file
19
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-backgroundposition-shorthand.js
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
/*
|
||||
https://developer.mozilla.org/en/CSS/background-position
|
||||
http://www.w3.org/TR/css3-background/#background-position
|
||||
|
||||
Example: http://jsfiddle.net/Blink/bBXvt/
|
||||
*/
|
||||
|
||||
(function() {
|
||||
|
||||
var elem = document.createElement('a'),
|
||||
eStyle = elem.style,
|
||||
val = "right 10px bottom 10px";
|
||||
|
||||
Modernizr.addTest('bgpositionshorthand', function(){
|
||||
eStyle.cssText = "background-position: " + val + ";";
|
||||
return (eStyle.backgroundPosition === val);
|
||||
});
|
||||
|
||||
}());
|
15
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-backgroundposition-xy.js
generated
vendored
Normal file
15
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-backgroundposition-xy.js
generated
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
/*
|
||||
Allan Lei https://github.com/allanlei
|
||||
|
||||
Check adapted from https://github.com/brandonaaron/jquery-cssHooks/blob/master/bgpos.js
|
||||
|
||||
Test: http://jsfiddle.net/allanlei/R8AYS/
|
||||
*/
|
||||
Modernizr.addTest('bgpositionxy', function() {
|
||||
return Modernizr.testStyles('#modernizr {background-position: 3px 5px;}', function(elem) {
|
||||
var cssStyleDeclaration = window.getComputedStyle ? getComputedStyle(elem, null) : elem.currentStyle;
|
||||
var xSupport = (cssStyleDeclaration.backgroundPositionX == '3px') || (cssStyleDeclaration['background-position-x'] == '3px');
|
||||
var ySupport = (cssStyleDeclaration.backgroundPositionY == '5px') || (cssStyleDeclaration['background-position-y'] == '5px');
|
||||
return xSupport && ySupport;
|
||||
});
|
||||
});
|
31
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-backgroundrepeat.js
generated
vendored
Normal file
31
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-backgroundrepeat.js
generated
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
// developer.mozilla.org/en/CSS/background-repeat
|
||||
|
||||
// test page: jsbin.com/uzesun/
|
||||
// http://jsfiddle.net/ryanseddon/yMLTQ/6/
|
||||
|
||||
(function(){
|
||||
|
||||
|
||||
function getBgRepeatValue(elem){
|
||||
return (window.getComputedStyle ?
|
||||
getComputedStyle(elem, null).getPropertyValue('background') :
|
||||
elem.currentStyle['background']);
|
||||
}
|
||||
|
||||
|
||||
Modernizr.testStyles(' #modernizr { background-repeat: round; } ', function(elem, rule){
|
||||
|
||||
Modernizr.addTest('bgrepeatround', getBgRepeatValue(elem) == 'round');
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
Modernizr.testStyles(' #modernizr { background-repeat: space; } ', function(elem, rule){
|
||||
|
||||
Modernizr.addTest('bgrepeatspace', getBgRepeatValue(elem) == 'space');
|
||||
|
||||
});
|
||||
|
||||
|
||||
})();
|
10
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-backgroundsizecover.js
generated
vendored
Normal file
10
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-backgroundsizecover.js
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
|
||||
// developer.mozilla.org/en/CSS/background-size
|
||||
|
||||
Modernizr.testStyles( '#modernizr{background-size:cover}', function( elem ) {
|
||||
var style = window.getComputedStyle ?
|
||||
window.getComputedStyle( elem, null )
|
||||
: elem.currentStyle;
|
||||
|
||||
Modernizr.addTest( 'bgsizecover', style.backgroundSize == 'cover' );
|
||||
});
|
9
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-boxsizing.js
generated
vendored
Normal file
9
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-boxsizing.js
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
|
||||
// developer.mozilla.org/en/CSS/box-sizing
|
||||
// github.com/Modernizr/Modernizr/issues/248
|
||||
|
||||
Modernizr.addTest("boxsizing",function(){
|
||||
return Modernizr.testAllProps("boxSizing") && (document.documentMode === undefined || document.documentMode > 7);
|
||||
});
|
||||
|
||||
|
12
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-calc.js
generated
vendored
Normal file
12
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-calc.js
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
// Method of allowing calculated values for length units, i.e. width: calc(100%-3em) http://caniuse.com/#search=calc
|
||||
// By @calvein
|
||||
|
||||
Modernizr.addTest('csscalc', function() {
|
||||
var prop = 'width:';
|
||||
var value = 'calc(10px);';
|
||||
var el = document.createElement('div');
|
||||
|
||||
el.style.cssText = prop + Modernizr._prefixes.join(value + prop);
|
||||
|
||||
return !!el.style.length;
|
||||
});
|
8
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-cubicbezierrange.js
generated
vendored
Normal file
8
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-cubicbezierrange.js
generated
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
// cubic-bezier values can't be > 1 for Webkit until bug #45761 (https://bugs.webkit.org/show_bug.cgi?id=45761) is fixed
|
||||
// By @calvein
|
||||
|
||||
Modernizr.addTest('cubicbezierrange', function() {
|
||||
var el = document.createElement('div');
|
||||
el.style.cssText = Modernizr._prefixes.join('transition-timing-function' + ':cubic-bezier(1,0,0,1.1); ');
|
||||
return !!el.style.length;
|
||||
});
|
18
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-displayrunin.js
generated
vendored
Normal file
18
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-displayrunin.js
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
|
||||
// by alanhogan
|
||||
|
||||
// https://github.com/Modernizr/Modernizr/issues/198
|
||||
// http://css-tricks.com/596-run-in/
|
||||
|
||||
|
||||
|
||||
Modernizr.testStyles(' #modernizr { display: run-in; } ', function(elem, rule){
|
||||
|
||||
var ret = (window.getComputedStyle ?
|
||||
getComputedStyle(elem, null).getPropertyValue('display') :
|
||||
elem.currentStyle['display']);
|
||||
|
||||
Modernizr.addTest('display-runin', ret == 'run-in');
|
||||
|
||||
});
|
||||
|
27
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-displaytable.js
generated
vendored
Normal file
27
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-displaytable.js
generated
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
// display: table and table-cell test. (both are tested under one name "table-cell" )
|
||||
// By @scottjehl
|
||||
|
||||
// all additional table display values are here: http://pastebin.com/Gk9PeVaQ though Scott has seen some IE false positives with that sort of weak detection.
|
||||
// more testing neccessary perhaps.
|
||||
|
||||
Modernizr.addTest( "display-table",function(){
|
||||
|
||||
var doc = window.document,
|
||||
docElem = doc.documentElement,
|
||||
parent = doc.createElement( "div" ),
|
||||
child = doc.createElement( "div" ),
|
||||
childb = doc.createElement( "div" ),
|
||||
ret;
|
||||
|
||||
parent.style.cssText = "display: table";
|
||||
child.style.cssText = childb.style.cssText = "display: table-cell; padding: 10px";
|
||||
|
||||
parent.appendChild( child );
|
||||
parent.appendChild( childb );
|
||||
docElem.insertBefore( parent, docElem.firstChild );
|
||||
|
||||
ret = child.offsetLeft < childb.offsetLeft;
|
||||
docElem.removeChild(parent);
|
||||
return ret;
|
||||
});
|
||||
|
7
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-filters.js
generated
vendored
Normal file
7
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-filters.js
generated
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
// https://github.com/Modernizr/Modernizr/issues/615
|
||||
// documentMode is needed for false positives in oldIE, please see issue above
|
||||
Modernizr.addTest('cssfilters', function() {
|
||||
var el = document.createElement('div');
|
||||
el.style.cssText = Modernizr._prefixes.join('filter' + ':blur(2px); ');
|
||||
return !!el.style.length && ((document.documentMode === undefined || document.documentMode > 9));
|
||||
});
|
205
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-hyphens.js
generated
vendored
Normal file
205
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-hyphens.js
generated
vendored
Normal file
@ -0,0 +1,205 @@
|
||||
/* see http://davidnewton.ca/the-current-state-of-hyphenation-on-the-web
|
||||
http://davidnewton.ca/demos/hyphenation/test.html
|
||||
|
||||
|
||||
There are three tests:
|
||||
1. csshyphens - tests hyphens:auto actually adds hyphens to text
|
||||
2. softhyphens - tests that ­ does its job
|
||||
3. softhyphensfind - tests that in-browser Find functionality still works correctly with ­
|
||||
|
||||
These tests currently require document.body to be present
|
||||
|
||||
Hyphenation is language specific, sometimes.
|
||||
See for more details: http://code.google.com/p/hyphenator/source/diff?spec=svn975&r=975&format=side&path=/trunk/Hyphenator.js#sc_svn975_313
|
||||
|
||||
If loading Hyphenator.js via Modernizr.load, be cautious of issue 158: http://code.google.com/p/hyphenator/issues/detail?id=158
|
||||
|
||||
More details at https://github.com/Modernizr/Modernizr/issues/312
|
||||
|
||||
*/
|
||||
|
||||
(function() {
|
||||
|
||||
if (!document.body){
|
||||
window.console && console.warn('document.body doesn\'t exist. Modernizr hyphens test needs it.');
|
||||
return;
|
||||
}
|
||||
|
||||
// functional test of adding hyphens:auto
|
||||
function test_hyphens_css() {
|
||||
try {
|
||||
/* create a div container and a span within that
|
||||
* these have to be appended to document.body, otherwise some browsers can give false negative */
|
||||
var div = document.createElement('div'),
|
||||
span = document.createElement('span'),
|
||||
divStyle = div.style,
|
||||
spanHeight = 0,
|
||||
spanWidth = 0,
|
||||
result = false,
|
||||
firstChild = document.body.firstElementChild || document.body.firstChild;
|
||||
|
||||
div.appendChild(span);
|
||||
span.innerHTML = 'Bacon ipsum dolor sit amet jerky velit in culpa hamburger et. Laborum dolor proident, enim dolore duis commodo et strip steak. Salami anim et, veniam consectetur dolore qui tenderloin jowl velit sirloin. Et ad culpa, fatback cillum jowl ball tip ham hock nulla short ribs pariatur aute. Pig pancetta ham bresaola, ut boudin nostrud commodo flank esse cow tongue culpa. Pork belly bresaola enim pig, ea consectetur nisi. Fugiat officia turkey, ea cow jowl pariatur ullamco proident do laborum velit sausage. Magna biltong sint tri-tip commodo sed bacon, esse proident aliquip. Ullamco ham sint fugiat, velit in enim sed mollit nulla cow ut adipisicing nostrud consectetur. Proident dolore beef ribs, laborum nostrud meatball ea laboris rump cupidatat labore culpa. Shankle minim beef, velit sint cupidatat fugiat tenderloin pig et ball tip. Ut cow fatback salami, bacon ball tip et in shank strip steak bresaola. In ut pork belly sed mollit tri-tip magna culpa veniam, short ribs qui in andouille ham consequat. Dolore bacon t-bone, velit short ribs enim strip steak nulla. Voluptate labore ut, biltong swine irure jerky. Cupidatat excepteur aliquip salami dolore. Ball tip strip steak in pork dolor. Ad in esse biltong. Dolore tenderloin exercitation ad pork loin t-bone, dolore in chicken ball tip qui pig. Ut culpa tongue, sint ribeye dolore ex shank voluptate hamburger. Jowl et tempor, boudin pork chop labore ham hock drumstick consectetur tri-tip elit swine meatball chicken ground round. Proident shankle mollit dolore. Shoulder ut duis t-bone quis reprehenderit. Meatloaf dolore minim strip steak, laboris ea aute bacon beef ribs elit shank in veniam drumstick qui. Ex laboris meatball cow tongue pork belly. Ea ball tip reprehenderit pig, sed fatback boudin dolore flank aliquip laboris eu quis. Beef ribs duis beef, cow corned beef adipisicing commodo nisi deserunt exercitation. Cillum dolor t-bone spare ribs, ham hock est sirloin. Brisket irure meatloaf in, boudin pork belly sirloin ball tip. Sirloin sint irure nisi nostrud aliqua. Nostrud nulla aute, enim officia culpa ham hock. Aliqua reprehenderit dolore sunt nostrud sausage, ea boudin pork loin ut t-bone ham tempor. Tri-tip et pancetta drumstick laborum. Ham hock magna do nostrud in proident. Ex ground round fatback, venison non ribeye in.';
|
||||
|
||||
document.body.insertBefore(div, firstChild);
|
||||
|
||||
/* get size of unhyphenated text */
|
||||
divStyle.cssText = 'position:absolute;top:0;left:0;width:5em;text-align:justify;text-justification:newspaper;';
|
||||
spanHeight = span.offsetHeight;
|
||||
spanWidth = span.offsetWidth;
|
||||
|
||||
/* compare size with hyphenated text */
|
||||
divStyle.cssText = 'position:absolute;top:0;left:0;width:5em;text-align:justify;'+
|
||||
'text-justification:newspaper;'+
|
||||
Modernizr._prefixes.join('hyphens:auto; ');
|
||||
|
||||
result = (span.offsetHeight != spanHeight || span.offsetWidth != spanWidth);
|
||||
|
||||
/* results and cleanup */
|
||||
document.body.removeChild(div);
|
||||
div.removeChild(span);
|
||||
|
||||
return result;
|
||||
} catch(e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// for the softhyphens test
|
||||
function test_hyphens(delimiter, testWidth) {
|
||||
try {
|
||||
/* create a div container and a span within that
|
||||
* these have to be appended to document.body, otherwise some browsers can give false negative */
|
||||
var div = document.createElement('div'),
|
||||
span = document.createElement('span'),
|
||||
divStyle = div.style,
|
||||
spanSize = 0,
|
||||
result = false,
|
||||
result1 = false,
|
||||
result2 = false,
|
||||
firstChild = document.body.firstElementChild || document.body.firstChild;
|
||||
|
||||
divStyle.cssText = 'position:absolute;top:0;left:0;overflow:visible;width:1.25em;';
|
||||
div.appendChild(span);
|
||||
document.body.insertBefore(div, firstChild);
|
||||
|
||||
|
||||
/* get height of unwrapped text */
|
||||
span.innerHTML = 'mm';
|
||||
spanSize = span.offsetHeight;
|
||||
|
||||
/* compare height w/ delimiter, to see if it wraps to new line */
|
||||
span.innerHTML = 'm' + delimiter + 'm';
|
||||
result1 = (span.offsetHeight > spanSize);
|
||||
|
||||
/* if we're testing the width too (i.e. for soft-hyphen, not zws),
|
||||
* this is because tested Blackberry devices will wrap the text but not display the hyphen */
|
||||
if (testWidth) {
|
||||
/* get width of wrapped, non-hyphenated text */
|
||||
span.innerHTML = 'm<br />m';
|
||||
spanSize = span.offsetWidth;
|
||||
|
||||
/* compare width w/ wrapped w/ delimiter to see if hyphen is present */
|
||||
span.innerHTML = 'm' + delimiter + 'm';
|
||||
result2 = (span.offsetWidth > spanSize);
|
||||
} else {
|
||||
result2 = true;
|
||||
}
|
||||
|
||||
/* results and cleanup */
|
||||
if (result1 === true && result2 === true) { result = true; }
|
||||
document.body.removeChild(div);
|
||||
div.removeChild(span);
|
||||
|
||||
return result;
|
||||
} catch(e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// testing if in-browser Find functionality will work on hyphenated text
|
||||
function test_hyphens_find(delimiter) {
|
||||
try {
|
||||
/* create a dummy input for resetting selection location, and a div container
|
||||
* these have to be appended to document.body, otherwise some browsers can give false negative
|
||||
* div container gets the doubled testword, separated by the delimiter
|
||||
* Note: giving a width to div gives false positive in iOS Safari */
|
||||
var dummy = document.createElement('input'),
|
||||
div = document.createElement('div'),
|
||||
testword = 'lebowski',
|
||||
result = false,
|
||||
textrange,
|
||||
firstChild = document.body.firstElementChild || document.body.firstChild;
|
||||
|
||||
div.innerHTML = testword + delimiter + testword;
|
||||
|
||||
document.body.insertBefore(div, firstChild);
|
||||
document.body.insertBefore(dummy, div);
|
||||
|
||||
|
||||
/* reset the selection to the dummy input element, i.e. BEFORE the div container
|
||||
* stackoverflow.com/questions/499126/jquery-set-cursor-position-in-text-area */
|
||||
if (dummy.setSelectionRange) {
|
||||
dummy.focus();
|
||||
dummy.setSelectionRange(0,0);
|
||||
} else if (dummy.createTextRange) {
|
||||
textrange = dummy.createTextRange();
|
||||
textrange.collapse(true);
|
||||
textrange.moveEnd('character', 0);
|
||||
textrange.moveStart('character', 0);
|
||||
textrange.select();
|
||||
}
|
||||
|
||||
/* try to find the doubled testword, without the delimiter */
|
||||
if (window.find) {
|
||||
result = window.find(testword + testword);
|
||||
} else {
|
||||
try {
|
||||
textrange = window.self.document.body.createTextRange();
|
||||
result = textrange.findText(testword + testword);
|
||||
} catch(e) {
|
||||
result = false;
|
||||
}
|
||||
}
|
||||
|
||||
document.body.removeChild(div);
|
||||
document.body.removeChild(dummy);
|
||||
|
||||
return result;
|
||||
} catch(e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Modernizr.addTest("csshyphens", function() {
|
||||
|
||||
if (!Modernizr.testAllProps('hyphens')) return false;
|
||||
|
||||
/* Chrome lies about its hyphens support so we need a more robust test
|
||||
crbug.com/107111
|
||||
*/
|
||||
try {
|
||||
return test_hyphens_css();
|
||||
} catch(e) {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
Modernizr.addTest("softhyphens", function() {
|
||||
try {
|
||||
// use numeric entity instead of ­ in case it's XHTML
|
||||
return test_hyphens('­', true) && test_hyphens('​', false);
|
||||
} catch(e) {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
Modernizr.addTest("softhyphensfind", function() {
|
||||
try {
|
||||
return test_hyphens_find('­') && test_hyphens_find('​');
|
||||
} catch(e) {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
})();
|
11
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-lastchild.js
generated
vendored
Normal file
11
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-lastchild.js
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
// last-child pseudo selector
|
||||
// https://github.com/Modernizr/Modernizr/pull/304
|
||||
|
||||
|
||||
Modernizr.addTest('lastchild', function(){
|
||||
|
||||
return Modernizr.testStyles("#modernizr div {width:100px} #modernizr :last-child{width:200px;display:block}", function (elem) {
|
||||
return elem.lastChild.offsetWidth > elem.firstChild.offsetWidth;
|
||||
}, 2);
|
||||
|
||||
});
|
12
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-mask.js
generated
vendored
Normal file
12
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-mask.js
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
// this tests passes for webkit's proprietary `-webkit-mask` feature
|
||||
// www.webkit.org/blog/181/css-masks/
|
||||
// developer.apple.com/library/safari/#documentation/InternetWeb/Conceptual/SafariVisualEffectsProgGuide/Masks/Masks.html
|
||||
|
||||
// it does not pass mozilla's implementation of `mask` for SVG
|
||||
|
||||
// developer.mozilla.org/en/CSS/mask
|
||||
// developer.mozilla.org/En/Applying_SVG_effects_to_HTML_content
|
||||
|
||||
// Can combine with clippaths for awesomeness: http://generic.cx/for/webkit/test.html
|
||||
|
||||
Modernizr.addTest('cssmask', Modernizr.testAllProps('maskRepeat'));
|
3
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-mediaqueries.js
generated
vendored
Normal file
3
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-mediaqueries.js
generated
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
|
||||
|
||||
Modernizr.addTest('mediaqueries', Modernizr.mq('only all'));
|
6
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-objectfit.js
generated
vendored
Normal file
6
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-objectfit.js
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
|
||||
// dev.opera.com/articles/view/css3-object-fit-object-position/
|
||||
|
||||
Modernizr.addTest('object-fit',
|
||||
!!Modernizr.prefixed('objectFit')
|
||||
);
|
9
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-overflow-scrolling.js
generated
vendored
Normal file
9
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-overflow-scrolling.js
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
|
||||
// johanbrook.com/browsers/native-momentum-scrolling-ios-5/
|
||||
// introduced in iOS5b2. Possible API may change...
|
||||
|
||||
Modernizr.addTest("overflowscrolling",function(){
|
||||
return Modernizr.testAllProps("overflowScrolling");
|
||||
});
|
||||
|
||||
|
25
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-pointerevents.js
generated
vendored
Normal file
25
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-pointerevents.js
generated
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
|
||||
// developer.mozilla.org/en/CSS/pointer-events
|
||||
|
||||
// Test and project pages:
|
||||
// ausi.github.com/Feature-detection-technique-for-pointer-events/
|
||||
// github.com/ausi/Feature-detection-technique-for-pointer-events/wiki
|
||||
// github.com/Modernizr/Modernizr/issues/80
|
||||
|
||||
|
||||
Modernizr.addTest('pointerevents', function(){
|
||||
var element = document.createElement('x'),
|
||||
documentElement = document.documentElement,
|
||||
getComputedStyle = window.getComputedStyle,
|
||||
supports;
|
||||
if(!('pointerEvents' in element.style)){
|
||||
return false;
|
||||
}
|
||||
element.style.pointerEvents = 'auto';
|
||||
element.style.pointerEvents = 'x';
|
||||
documentElement.appendChild(element);
|
||||
supports = getComputedStyle &&
|
||||
getComputedStyle(element, '').pointerEvents === 'auto';
|
||||
documentElement.removeChild(element);
|
||||
return !!supports;
|
||||
});
|
13
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-positionsticky.js
generated
vendored
Normal file
13
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-positionsticky.js
generated
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
// Sticky positioning - constrains an element to be positioned inside the
|
||||
// intersection of its container box, and the viewport.
|
||||
Modernizr.addTest('csspositionsticky', function () {
|
||||
|
||||
var prop = 'position:';
|
||||
var value = 'sticky';
|
||||
var el = document.createElement('modernizr');
|
||||
var mStyle = el.style;
|
||||
|
||||
mStyle.cssText = prop + Modernizr._prefixes.join(value + ';' + prop).slice(0, -prop.length);
|
||||
|
||||
return mStyle.position.indexOf(value) !== -1;
|
||||
});
|
55
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-regions.js
generated
vendored
Normal file
55
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-regions.js
generated
vendored
Normal file
@ -0,0 +1,55 @@
|
||||
// CSS Regions
|
||||
// http://www.w3.org/TR/css3-regions/
|
||||
// By: Mihai Balan
|
||||
|
||||
// We start with a CSS parser test then we check page geometry to see if it's affected by regions
|
||||
// Later we might be able to retire the second part, as WebKit builds with the false positives die out
|
||||
|
||||
Modernizr.addTest('regions', function() {
|
||||
|
||||
/* Get the 'flowFrom' property name available in the browser. Either default or vendor prefixed.
|
||||
If the property name can't be found we'll get Boolean 'false' and fail quickly */
|
||||
var flowFromProperty = Modernizr.prefixed("flowFrom"),
|
||||
flowIntoProperty = Modernizr.prefixed("flowInto");
|
||||
|
||||
if (!flowFromProperty || !flowIntoProperty){
|
||||
return false;
|
||||
}
|
||||
|
||||
/* If CSS parsing is there, try to determine if regions actually work. */
|
||||
var container = document.createElement('div'),
|
||||
content = document.createElement('div'),
|
||||
region = document.createElement('div'),
|
||||
|
||||
/* we create a random, unlikely to be generated flow number to make sure we don't
|
||||
clash with anything more vanilla, like 'flow', or 'article', or 'f1' */
|
||||
flowName = 'modernizr_flow_for_regions_check';
|
||||
|
||||
/* First create a div with two adjacent divs inside it. The first will be the
|
||||
content, the second will be the region. To be able to distinguish between the two,
|
||||
we'll give the region a particular padding */
|
||||
content.innerText = 'M';
|
||||
container.style.cssText = 'top: 150px; left: 150px; padding: 0px;';
|
||||
region.style.cssText = 'width: 50px; height: 50px; padding: 42px;';
|
||||
|
||||
region.style[flowFromProperty] = flowName;
|
||||
container.appendChild(content);
|
||||
container.appendChild(region);
|
||||
document.documentElement.appendChild(container);
|
||||
|
||||
/* Now compute the bounding client rect, before and after attempting to flow the
|
||||
content div in the region div. If regions are enabled, the after bounding rect
|
||||
should reflect the padding of the region div.*/
|
||||
var flowedRect, delta,
|
||||
plainRect = content.getBoundingClientRect();
|
||||
|
||||
|
||||
content.style[flowIntoProperty] = flowName;
|
||||
flowedRect = content.getBoundingClientRect();
|
||||
|
||||
delta = flowedRect.left - plainRect.left;
|
||||
document.documentElement.removeChild(container);
|
||||
content = region = container = undefined;
|
||||
|
||||
return (delta == 42);
|
||||
});
|
19
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-remunit.js
generated
vendored
Normal file
19
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-remunit.js
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
|
||||
// test by github.com/nsfmc
|
||||
|
||||
// "The 'rem' unit ('root em') is relative to the computed
|
||||
// value of the 'font-size' value of the root element."
|
||||
// http://www.w3.org/TR/css3-values/#relative0
|
||||
// you can test by checking if the prop was ditched
|
||||
|
||||
// http://snook.ca/archives/html_and_css/font-size-with-rem
|
||||
|
||||
Modernizr.addTest('cssremunit', function(){
|
||||
|
||||
var div = document.createElement('div');
|
||||
try {
|
||||
div.style.fontSize = '3rem';
|
||||
} catch(er){}
|
||||
return (/rem/).test(div.style.fontSize);
|
||||
|
||||
});
|
8
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-resize.js
generated
vendored
Normal file
8
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-resize.js
generated
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
|
||||
// Test for CSS 3 UI "resize" property
|
||||
// http://www.w3.org/TR/css3-ui/#resize
|
||||
// https://developer.mozilla.org/en/CSS/resize
|
||||
|
||||
Modernizr.addTest('cssresize', Modernizr.testAllProps('resize'));
|
||||
|
||||
|
19
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-scrollbars.js
generated
vendored
Normal file
19
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-scrollbars.js
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
// Stylable scrollbars detection
|
||||
Modernizr.addTest('cssscrollbar', function() {
|
||||
|
||||
var bool,
|
||||
|
||||
styles = "#modernizr{overflow: scroll; width: 40px }#" +
|
||||
Modernizr._prefixes
|
||||
.join("scrollbar{width:0px}"+' #modernizr::')
|
||||
.split('#')
|
||||
.slice(1)
|
||||
.join('#') + "scrollbar{width:0px}";
|
||||
|
||||
Modernizr.testStyles(styles, function(node) {
|
||||
bool = 'scrollWidth' in node && node.scrollWidth == 40;
|
||||
});
|
||||
|
||||
return bool;
|
||||
|
||||
});
|
4
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-shapes.js
generated
vendored
Normal file
4
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-shapes.js
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
|
||||
// http://html.adobe.com/webplatform/layout/shapes
|
||||
|
||||
Modernizr.addTest('shapes', Modernizr.testAllProps('shapeOutside', 'content-box', true));
|
23
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-subpixelfont.js
generated
vendored
Normal file
23
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-subpixelfont.js
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
/*
|
||||
* Test for SubPixel Font Rendering
|
||||
* (to infer if GDI or DirectWrite is used on Windows)
|
||||
* Authors: @derSchepp, @gerritvanaaken, @rodneyrehm, @yatil, @ryanseddon
|
||||
* Web: https://github.com/gerritvanaaken/subpixeldetect
|
||||
*/
|
||||
Modernizr.addTest('subpixelfont', function() {
|
||||
var bool,
|
||||
styles = "#modernizr{position: absolute; top: -10em; visibility:hidden; font: normal 10px arial;}#subpixel{float: left; font-size: 33.3333%;}";
|
||||
|
||||
// see https://github.com/Modernizr/Modernizr/blob/master/modernizr.js#L97
|
||||
Modernizr.testStyles(styles, function(elem) {
|
||||
var subpixel = elem.firstChild;
|
||||
|
||||
subpixel.innerHTML = 'This is a text written in Arial';
|
||||
|
||||
bool = window.getComputedStyle ?
|
||||
window.getComputedStyle(subpixel, null).getPropertyValue("width") !== '44px'
|
||||
: false;
|
||||
}, 1, ['subpixel']);
|
||||
|
||||
return bool;
|
||||
});
|
6
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-supports.js
generated
vendored
Normal file
6
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-supports.js
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
// http://dev.w3.org/csswg/css3-conditional/#at-supports
|
||||
// github.com/Modernizr/Modernizr/issues/648
|
||||
// Relies on the fact that a browser vendor should expose the CSSSupportsRule interface
|
||||
// http://dev.w3.org/csswg/css3-conditional/#the-csssupportsrule-interface
|
||||
|
||||
Modernizr.addTest("supports","CSSSupportsRule" in window);
|
10
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-userselect.js
generated
vendored
Normal file
10
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-userselect.js
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
// -moz-user-select:none test.
|
||||
|
||||
// by ryan seddon
|
||||
//https://github.com/Modernizr/Modernizr/issues/250
|
||||
|
||||
|
||||
Modernizr.addTest("userselect",function(){
|
||||
return Modernizr.testAllProps("user-select");
|
||||
});
|
||||
|
14
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-vhunit.js
generated
vendored
Normal file
14
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-vhunit.js
generated
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
// https://github.com/Modernizr/Modernizr/issues/572
|
||||
// Similar to http://jsfiddle.net/FWeinb/etnYC/
|
||||
Modernizr.addTest('cssvhunit', function() {
|
||||
var bool;
|
||||
Modernizr.testStyles("#modernizr { height: 50vh; }", function(elem, rule) {
|
||||
var height = parseInt(window.innerHeight/2,10),
|
||||
compStyle = parseInt((window.getComputedStyle ?
|
||||
getComputedStyle(elem, null) :
|
||||
elem.currentStyle)["height"],10);
|
||||
|
||||
bool= (compStyle == height);
|
||||
});
|
||||
return bool;
|
||||
});
|
14
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-vmaxunit.js
generated
vendored
Normal file
14
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-vmaxunit.js
generated
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
// https://github.com/Modernizr/Modernizr/issues/572
|
||||
// http://jsfiddle.net/glsee/JDsWQ/4/
|
||||
Modernizr.addTest('cssvmaxunit', function(){
|
||||
var bool;
|
||||
Modernizr.testStyles("#modernizr { width: 50vmax; }", function(elem, rule) {
|
||||
var one_vw = window.innerWidth/100,
|
||||
one_vh = window.innerHeight/100,
|
||||
compWidth = parseInt((window.getComputedStyle ?
|
||||
getComputedStyle(elem, null) :
|
||||
elem.currentStyle)['width'],10);
|
||||
bool = ( parseInt(Math.max(one_vw, one_vh)*50,10) == compWidth );
|
||||
});
|
||||
return bool;
|
||||
});
|
14
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-vminunit.js
generated
vendored
Normal file
14
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-vminunit.js
generated
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
// https://github.com/Modernizr/Modernizr/issues/572
|
||||
// http://jsfiddle.net/glsee/JRmdq/8/
|
||||
Modernizr.addTest('cssvminunit', function(){
|
||||
var bool;
|
||||
Modernizr.testStyles("#modernizr { width: 50vmin; }", function(elem, rule) {
|
||||
var one_vw = window.innerWidth/100,
|
||||
one_vh = window.innerHeight/100,
|
||||
compWidth = parseInt((window.getComputedStyle ?
|
||||
getComputedStyle(elem, null) :
|
||||
elem.currentStyle)['width'],10);
|
||||
bool = ( parseInt(Math.min(one_vw, one_vh)*50,10) == compWidth );
|
||||
});
|
||||
return bool;
|
||||
});
|
14
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-vwunit.js
generated
vendored
Normal file
14
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/css-vwunit.js
generated
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
// https://github.com/Modernizr/Modernizr/issues/572
|
||||
// http://jsfiddle.net/FWeinb/etnYC/
|
||||
Modernizr.addTest('cssvwunit', function(){
|
||||
var bool;
|
||||
Modernizr.testStyles("#modernizr { width: 50vw; }", function(elem, rule) {
|
||||
var width = parseInt(window.innerWidth/2,10),
|
||||
compStyle = parseInt((window.getComputedStyle ?
|
||||
getComputedStyle(elem, null) :
|
||||
elem.currentStyle)["width"],10);
|
||||
|
||||
bool= (compStyle == width);
|
||||
});
|
||||
return bool;
|
||||
});
|
10
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/custom-protocol-handler.js
generated
vendored
Normal file
10
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/custom-protocol-handler.js
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
/*
|
||||
Custom protocol handler support
|
||||
http://developers.whatwg.org/timers.html#custom-handlers
|
||||
|
||||
Added by @benschwarz
|
||||
*/
|
||||
|
||||
Modernizr.addTest('customprotocolhandler', function () {
|
||||
return !!navigator.registerProtocolHandler;
|
||||
});
|
6
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/dart.js
generated
vendored
Normal file
6
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/dart.js
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
// Dart
|
||||
// By Theodoor van Donge
|
||||
|
||||
// https://chromiumcodereview.appspot.com/9232049/
|
||||
|
||||
Modernizr.addTest('dart', !!Modernizr.prefixed('startDart', navigator));
|
4
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/dataview-api.js
generated
vendored
Normal file
4
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/dataview-api.js
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
// DataView
|
||||
// https://developer.mozilla.org/en/JavaScript_typed_arrays/DataView
|
||||
// By Addy Osmani
|
||||
Modernizr.addTest('dataview', (typeof DataView !== 'undefined' && 'getFloat64' in DataView.prototype));
|
4
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/dom-classlist.js
generated
vendored
Normal file
4
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/dom-classlist.js
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
// classList
|
||||
// https://developer.mozilla.org/en/DOM/element.classList
|
||||
// By Addy Osmani
|
||||
Modernizr.addTest('classlist', 'classList' in document.documentElement);
|
11
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/dom-createElement-attrs.js
generated
vendored
Normal file
11
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/dom-createElement-attrs.js
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
// by james a rosen.
|
||||
// https://github.com/Modernizr/Modernizr/issues/258
|
||||
|
||||
Modernizr.addTest('createelement-attrs', function() {
|
||||
try {
|
||||
return document.createElement("<input name='test' />").getAttribute('name') == 'test';
|
||||
} catch(e) {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
9
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/dom-dataset.js
generated
vendored
Normal file
9
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/dom-dataset.js
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
|
||||
// dataset API for data-* attributes
|
||||
// test by @phiggins42
|
||||
|
||||
Modernizr.addTest('dataset', function(){
|
||||
var n = document.createElement("div");
|
||||
n.setAttribute("data-a-b", "c");
|
||||
return !!(n.dataset && n.dataset.aB === "c");
|
||||
});
|
4
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/dom-microdata.js
generated
vendored
Normal file
4
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/dom-microdata.js
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
// Microdata support
|
||||
// http://www.w3.org/TR/html5/microdata.html
|
||||
// By Addy Osmani
|
||||
Modernizr.addTest('microdata', !!(document['getItems']));
|
12
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/elem-datalist.js
generated
vendored
Normal file
12
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/elem-datalist.js
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
|
||||
|
||||
// lol. we already have a test for datalist built in! silly you.
|
||||
|
||||
|
||||
// Helpful links while you're here, though..
|
||||
|
||||
// http://css-tricks.com/15346-relevant-dropdowns-polyfill-for-datalist/
|
||||
// http://miketaylr.com/test/datalist.html
|
||||
// http://miketaylr.com/code/datalist.html
|
||||
|
||||
Modernizr.addTest('datalistelem', Modernizr.input.list );
|
25
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/elem-details.js
generated
vendored
Normal file
25
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/elem-details.js
generated
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
// By @mathias, based on http://mths.be/axh
|
||||
Modernizr.addTest('details', function() {
|
||||
var doc = document,
|
||||
el = doc.createElement('details'),
|
||||
fake,
|
||||
root,
|
||||
diff;
|
||||
if (!('open' in el)) { // return early if possible; thanks @aFarkas!
|
||||
return false;
|
||||
}
|
||||
root = doc.body || (function() {
|
||||
var de = doc.documentElement;
|
||||
fake = true;
|
||||
return de.insertBefore(doc.createElement('body'), de.firstElementChild || de.firstChild);
|
||||
}());
|
||||
el.innerHTML = '<summary>a</summary>b';
|
||||
el.style.display = 'block';
|
||||
root.appendChild(el);
|
||||
diff = el.offsetHeight;
|
||||
el.open = true;
|
||||
diff = diff != el.offsetHeight;
|
||||
root.removeChild(el);
|
||||
fake && root.parentNode.removeChild(root);
|
||||
return diff;
|
||||
});
|
4
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/elem-output.js
generated
vendored
Normal file
4
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/elem-output.js
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
// <output>
|
||||
// http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#the-output-element
|
||||
// by Addy Osmani
|
||||
Modernizr.addTest('outputelem', 'value' in document.createElement('output'));
|
11
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/elem-progress-meter.js
generated
vendored
Normal file
11
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/elem-progress-meter.js
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
//By Stefan Wallin
|
||||
|
||||
//tests for progressbar-support. All browsers that don't support progressbar returns undefined =)
|
||||
Modernizr.addTest("progressbar",function(){
|
||||
return document.createElement('progress').max !== undefined;
|
||||
});
|
||||
|
||||
//tests for meter-support. All browsers that don't support meters returns undefined =)
|
||||
Modernizr.addTest("meter",function(){
|
||||
return document.createElement('meter').max !== undefined;
|
||||
});
|
53
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/elem-ruby.js
generated
vendored
Normal file
53
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/elem-ruby.js
generated
vendored
Normal file
@ -0,0 +1,53 @@
|
||||
// Browser support test for the HTML5 <ruby>, <rt> and <rp> elements
|
||||
// http://www.whatwg.org/specs/web-apps/current-work/multipage/text-level-semantics.html#the-ruby-element
|
||||
//
|
||||
// by @alrra
|
||||
|
||||
Modernizr.addTest('ruby', function () {
|
||||
|
||||
var ruby = document.createElement('ruby'),
|
||||
rt = document.createElement('rt'),
|
||||
rp = document.createElement('rp'),
|
||||
docElement = document.documentElement,
|
||||
displayStyleProperty = 'display',
|
||||
fontSizeStyleProperty = 'fontSize'; // 'fontSize' - because it`s only used for IE6 and IE7
|
||||
|
||||
ruby.appendChild(rp);
|
||||
ruby.appendChild(rt);
|
||||
docElement.appendChild(ruby);
|
||||
|
||||
// browsers that support <ruby> hide the <rp> via "display:none"
|
||||
if ( getStyle(rp, displayStyleProperty) == 'none' || // for non-IE browsers
|
||||
// but in IE browsers <rp> has "display:inline" so, the test needs other conditions:
|
||||
getStyle(ruby, displayStyleProperty) == 'ruby' && getStyle(rt, displayStyleProperty) == 'ruby-text' || // for IE8 & IE9
|
||||
getStyle(rp, fontSizeStyleProperty) == '6pt' && getStyle(rt, fontSizeStyleProperty) == '6pt' ) { // for IE6 & IE7
|
||||
|
||||
cleanUp();
|
||||
return true;
|
||||
|
||||
} else {
|
||||
cleanUp();
|
||||
return false;
|
||||
}
|
||||
|
||||
function getStyle( element, styleProperty ) {
|
||||
var result;
|
||||
|
||||
if ( window.getComputedStyle ) { // for non-IE browsers
|
||||
result = document.defaultView.getComputedStyle(element,null).getPropertyValue(styleProperty);
|
||||
} else if ( element.currentStyle ) { // for IE
|
||||
result = element.currentStyle[styleProperty];
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
function cleanUp() {
|
||||
docElement.removeChild(ruby);
|
||||
// the removed child node still exists in memory, so ...
|
||||
ruby = null;
|
||||
rt = null;
|
||||
rp = null;
|
||||
}
|
||||
|
||||
});
|
4
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/elem-time.js
generated
vendored
Normal file
4
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/elem-time.js
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
// <time> element
|
||||
// http://www.whatwg.org/specs/web-apps/current-work/multipage/rendering.html#the-time-element-0
|
||||
// by Addy Osmani
|
||||
Modernizr.addTest('time', 'valueAsDate' in document.createElement('time'));
|
11
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/elem-track.js
generated
vendored
Normal file
11
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/elem-track.js
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
// Track element + Timed Text Track API
|
||||
// http://www.w3.org/TR/html5/video.html#the-track-element
|
||||
// http://www.w3.org/TR/html5/media-elements.html#text-track-api
|
||||
//
|
||||
// While IE10 has implemented the track element, IE10 does not expose the underlying APIs to create timed text tracks by JS (really sad)
|
||||
// By Addy Osmani
|
||||
Modernizr.addTest({
|
||||
texttrackapi: (typeof (document.createElement('video').addTextTrack) === 'function'),
|
||||
// a more strict test for track including UI support: document.createElement('track').kind === 'subtitles'
|
||||
track: ('kind' in document.createElement('track'))
|
||||
});
|
11
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/emoji.js
generated
vendored
Normal file
11
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/emoji.js
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
// Requires a Modernizr build with `canvastext` included
|
||||
// http://www.modernizr.com/download/#-canvas-canvastext
|
||||
Modernizr.addTest('emoji', function() {
|
||||
if (!Modernizr.canvastext) return false;
|
||||
var node = document.createElement('canvas'),
|
||||
ctx = node.getContext('2d');
|
||||
ctx.textBaseline = 'top';
|
||||
ctx.font = '32px Arial';
|
||||
ctx.fillText('\ud83d\ude03', 0, 0); // "smiling face with open mouth" emoji
|
||||
return ctx.getImageData(16, 16, 1, 1).data[0] !== 0;
|
||||
});
|
7
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/es5-strictmode.js
generated
vendored
Normal file
7
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/es5-strictmode.js
generated
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
// strict mode
|
||||
|
||||
// test by @kangax
|
||||
|
||||
Modernizr.addTest('strictmode', function(){
|
||||
return (function(){ "use strict"; return !this; })();
|
||||
});
|
11
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/event-deviceorientation-motion.js
generated
vendored
Normal file
11
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/event-deviceorientation-motion.js
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
//By Shi Chuan
|
||||
//Part of Device Access aspect of HTML5, same category as geolocation
|
||||
//W3C Editor's Draft at http://dev.w3.org/geo/api/spec-source-orientation.html
|
||||
//Implementation by iOS Safari at http://goo.gl/fhce3 and http://goo.gl/rLKz8
|
||||
|
||||
|
||||
//test for Device Motion Event support, returns boolean value true/false
|
||||
Modernizr.addTest('devicemotion', ('DeviceMotionEvent' in window) );
|
||||
|
||||
//test for Device Orientation Event support, returns boolean value true/false
|
||||
Modernizr.addTest('deviceorientation', ('DeviceOrientationEvent' in window) );
|
32
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/exif-orientation.js
generated
vendored
Normal file
32
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/exif-orientation.js
generated
vendored
Normal file
@ -0,0 +1,32 @@
|
||||
// EXIF Orientation test
|
||||
|
||||
// iOS looks at the EXIF Orientation flag in jpgs and rotates the image
|
||||
// accordingly. Looks like most desktop browsers just ignore this data.
|
||||
|
||||
// description: www.impulseadventure.com/photo/exif-orientation.html
|
||||
|
||||
// Bug trackers:
|
||||
// bugzil.la/298619 (unimplemented)
|
||||
// crbug.com/56845 (looks incomplete)
|
||||
// webk.it/19688 (available upstream but its up all ports to turn on individually)
|
||||
//
|
||||
|
||||
// detect by Paul Sayre
|
||||
|
||||
|
||||
(function(){
|
||||
|
||||
var img = new Image();
|
||||
|
||||
img.onerror = function() {
|
||||
Modernizr.addTest('exif-orientation', function () { return false; });
|
||||
};
|
||||
|
||||
img.onload = function() {
|
||||
Modernizr.addTest('exif-orientation', function () { return img.width !== 2; });
|
||||
};
|
||||
|
||||
// There may be a way to shrink this more, it's a 1x2 white jpg with the orientation flag set to 6
|
||||
img.src = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QAiRXhpZgAASUkqAAgAAAABABIBAwABAAAABgASAAAAAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAABAAIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+/iiiigD/2Q==";
|
||||
|
||||
})();
|
12
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/file-api.js
generated
vendored
Normal file
12
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/file-api.js
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
/**
|
||||
* file tests for the File API specification
|
||||
* Tests for objects specific to the File API W3C specification without
|
||||
* being redundant (don't bother testing for Blob since it is assumed
|
||||
* to be the File object's prototype.
|
||||
*
|
||||
* Will fail in Safari 5 due to its lack of support for the standards
|
||||
* defined FileReader object
|
||||
*/
|
||||
Modernizr.addTest('filereader', function () {
|
||||
return !!(window.File && window.FileList && window.FileReader);
|
||||
});
|
9
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/file-filesystem.js
generated
vendored
Normal file
9
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/file-filesystem.js
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
// Filesystem API
|
||||
// dev.w3.org/2009/dap/file-system/file-dir-sys.html
|
||||
|
||||
// The API will be present in Chrome incognito, but will throw an exception.
|
||||
// See crbug.com/93417
|
||||
//
|
||||
// By Eric Bidelman (@ebidel)
|
||||
|
||||
Modernizr.addTest('filesystem', !!Modernizr.prefixed('requestFileSystem', window));
|
13
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/forms-fileinput.js
generated
vendored
Normal file
13
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/forms-fileinput.js
generated
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
|
||||
|
||||
// Detects whether input type="file" is available on the platform
|
||||
// E.g. iOS < 6 and some android version don't support this
|
||||
|
||||
// It's useful if you want to hide the upload feature of your app on devices that
|
||||
// don't support it (iphone, ipad, etc).
|
||||
|
||||
Modernizr.addTest('fileinput', function() {
|
||||
var elem = document.createElement('input');
|
||||
elem.type = 'file';
|
||||
return !elem.disabled;
|
||||
});
|
29
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/forms-formattribute.js
generated
vendored
Normal file
29
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/forms-formattribute.js
generated
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
// Detects whether input form="form_id" is available on the platform
|
||||
// E.g. IE 10 (and below), don't support this
|
||||
Modernizr.addTest("formattribute", function() {
|
||||
var form = document.createElement("form"),
|
||||
input = document.createElement("input"),
|
||||
div = document.createElement("div"),
|
||||
id = "formtest"+(new Date().getTime()),
|
||||
attr,
|
||||
bool = false;
|
||||
|
||||
form.id = id;
|
||||
|
||||
//IE6/7 confuses the form idl attribute and the form content attribute
|
||||
if(document.createAttribute){
|
||||
attr = document.createAttribute("form");
|
||||
attr.nodeValue = id;
|
||||
input.setAttributeNode(attr);
|
||||
div.appendChild(form);
|
||||
div.appendChild(input);
|
||||
|
||||
document.documentElement.appendChild(div);
|
||||
|
||||
bool = form.elements.length === 1 && input.form == form;
|
||||
|
||||
div.parentNode.removeChild(div);
|
||||
}
|
||||
|
||||
return bool;
|
||||
});
|
32
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/forms-inputnumber-l10n.js
generated
vendored
Normal file
32
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/forms-inputnumber-l10n.js
generated
vendored
Normal file
@ -0,0 +1,32 @@
|
||||
// input[type="number"] localized input/output
|
||||
// // Detects whether input type="number" is capable of receiving and
|
||||
// // displaying localized numbers, e.g. with comma separator
|
||||
// // https://bugs.webkit.org/show_bug.cgi?id=42484
|
||||
// // Based on http://trac.webkit.org/browser/trunk/LayoutTests/fast/forms/script-tests/input-number-keyoperation.js?rev=80096#L9
|
||||
// // By Peter Janes
|
||||
|
||||
Modernizr.addTest('localizedNumber', function() {
|
||||
var doc = document,
|
||||
el = document.createElement('div'),
|
||||
fake,
|
||||
root,
|
||||
input,
|
||||
diff;
|
||||
root = doc.body || (function() {
|
||||
var de = doc.documentElement;
|
||||
fake = true;
|
||||
return de.insertBefore(doc.createElement('body'), de.firstElementChild || de.firstChild);
|
||||
}());
|
||||
el.innerHTML = '<input type="number" value="1.0" step="0.1"/>';
|
||||
input = el.childNodes[0];
|
||||
root.appendChild(el);
|
||||
input.focus();
|
||||
try {
|
||||
doc.execCommand('InsertText', false, '1,1');
|
||||
} catch(e) { // prevent warnings in IE
|
||||
}
|
||||
diff = input.type === 'number' && input.valueAsNumber === 1.1 && input.checkValidity();
|
||||
root.removeChild(el);
|
||||
fake && root.parentNode.removeChild(root);
|
||||
return diff;
|
||||
});
|
10
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/forms-placeholder.js
generated
vendored
Normal file
10
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/forms-placeholder.js
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
// testing for placeholder attribute in inputs and textareas
|
||||
// re-using Modernizr.input if available
|
||||
|
||||
Modernizr.addTest('placeholder', function(){
|
||||
|
||||
return !!( 'placeholder' in ( Modernizr.input || document.createElement('input') ) &&
|
||||
'placeholder' in ( Modernizr.textarea || document.createElement('textarea') )
|
||||
);
|
||||
|
||||
});
|
19
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/forms-speechinput.js
generated
vendored
Normal file
19
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/forms-speechinput.js
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
// speech input for inputs
|
||||
// by @alrra
|
||||
|
||||
|
||||
// `webkitSpeech` in elem
|
||||
// doesn`t work correctly in all versions of Chromium based browsers.
|
||||
// It can return false even if they have support for speech i.imgur.com/2Y40n.png
|
||||
// Testing with 'onwebkitspeechchange' seems to fix this problem
|
||||
|
||||
// this detect only checks the webkit version because
|
||||
// the speech attribute is likely to be deprecated in favor of a JavaScript API.
|
||||
// http://lists.w3.org/Archives/Public/public-webapps/2011OctDec/att-1696/speechapi.html
|
||||
|
||||
// FIXME: add support for detecting the new spec'd behavior
|
||||
|
||||
Modernizr.addTest('speechinput', function(){
|
||||
var elem = document.createElement('input');
|
||||
return 'speech' in elem || 'onwebkitspeechchange' in elem;
|
||||
});
|
62
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/forms-validation.js
generated
vendored
Normal file
62
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/forms-validation.js
generated
vendored
Normal file
@ -0,0 +1,62 @@
|
||||
// This implementation only tests support for interactive form validation.
|
||||
// To check validation for a specific type or a specific other constraint,
|
||||
// the test can be combined:
|
||||
// - Modernizr.inputtypes.numer && Modernizr.formvalidation (browser supports rangeOverflow, typeMismatch etc. for type=number)
|
||||
// - Modernizr.input.required && Modernizr.formvalidation (browser supports valueMissing)
|
||||
//
|
||||
(function(document, Modernizr){
|
||||
|
||||
|
||||
Modernizr.formvalidationapi = false;
|
||||
Modernizr.formvalidationmessage = false;
|
||||
|
||||
Modernizr.addTest('formvalidation', function() {
|
||||
var form = document.createElement('form');
|
||||
if ( !('checkValidity' in form) || !('addEventListener' in form) ) {
|
||||
return false;
|
||||
}
|
||||
if ('reportValidity' in form) {
|
||||
return true;
|
||||
}
|
||||
var invalidFired = false;
|
||||
var input;
|
||||
|
||||
Modernizr.formvalidationapi = true;
|
||||
|
||||
// Prevent form from being submitted
|
||||
form.addEventListener('submit', function(e) {
|
||||
//Opera does not validate form, if submit is prevented
|
||||
if ( !window.opera ) {
|
||||
e.preventDefault();
|
||||
}
|
||||
e.stopPropagation();
|
||||
}, false);
|
||||
|
||||
// Calling form.submit() doesn't trigger interactive validation,
|
||||
// use a submit button instead
|
||||
//older opera browsers need a name attribute
|
||||
form.innerHTML = '<input name="modTest" required><button></button>';
|
||||
|
||||
Modernizr.testStyles('#modernizr form{position:absolute;top:-99999em}', function( node ) {
|
||||
node.appendChild(form);
|
||||
|
||||
input = form.getElementsByTagName('input')[0];
|
||||
|
||||
// Record whether "invalid" event is fired
|
||||
input.addEventListener('invalid', function(e) {
|
||||
invalidFired = true;
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
}, false);
|
||||
|
||||
//Opera does not fully support the validationMessage property
|
||||
Modernizr.formvalidationmessage = !!input.validationMessage;
|
||||
|
||||
// Submit form by clicking submit button
|
||||
form.getElementsByTagName('button')[0].click();
|
||||
});
|
||||
|
||||
return invalidFired;
|
||||
});
|
||||
|
||||
})(document, window.Modernizr);
|
10
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/fullscreen-api.js
generated
vendored
Normal file
10
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/fullscreen-api.js
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
Modernizr.addTest('fullscreen',function(){
|
||||
for(var i = 0; i < Modernizr._domPrefixes.length; i++) {
|
||||
if( document[Modernizr._domPrefixes[i].toLowerCase() + 'CancelFullScreen'])
|
||||
return true;
|
||||
}
|
||||
return !!document['cancelFullScreen'] || false;
|
||||
});
|
||||
|
||||
// http://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/ControllingMediaWithJavaScript/ControllingMediaWithJavaScript.html#//apple_ref/doc/uid/TP40009523-CH3-SW20
|
||||
// https://developer.mozilla.org/en/API/Fullscreen
|
12
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/gamepad.js
generated
vendored
Normal file
12
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/gamepad.js
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
// GamePad API
|
||||
// https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html
|
||||
// By Eric Bidelman
|
||||
|
||||
// FF has Gamepad API support only in special builds, but not in any release (even behind a flag)
|
||||
// Their current implementation has no way to feature detect, only events to bind to.
|
||||
// http://www.html5rocks.com/en/tutorials/doodles/gamepad/#toc-featuredetect
|
||||
|
||||
// but a patch will bring them up to date with the spec when it lands (and they'll pass this test)
|
||||
// https://bugzilla.mozilla.org/show_bug.cgi?id=690935
|
||||
|
||||
Modernizr.addTest('gamepads', !!Modernizr.prefixed('getGamepads', navigator));
|
5
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/getusermedia.js
generated
vendored
Normal file
5
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/getusermedia.js
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
// getUserMedia
|
||||
// http://www.whatwg.org/specs/web-apps/current-work/multipage/video-conferencing-and-peer-to-peer-communication.html
|
||||
// By Eric Bidelman
|
||||
|
||||
Modernizr.addTest('getusermedia', !!Modernizr.prefixed('getUserMedia', navigator));
|
12
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/ie8compat.js
generated
vendored
Normal file
12
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/ie8compat.js
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
|
||||
// IE8 compat mode aka Fake IE7
|
||||
// by Erich Ocean
|
||||
|
||||
// In this case, IE8 will be acting as IE7. You may choose to remove features in this case.
|
||||
|
||||
// related:
|
||||
// james.padolsey.com/javascript/detect-ie-in-js-using-conditional-comments/
|
||||
|
||||
Modernizr.addTest('ie8compat',function(){
|
||||
return (!window.addEventListener && document.documentMode && document.documentMode === 7);
|
||||
});
|
5
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/iframe-sandbox.js
generated
vendored
Normal file
5
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/iframe-sandbox.js
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
// Test for `sandbox` attribute in iframes.
|
||||
//
|
||||
// Spec: http://www.whatwg.org/specs/web-apps/current-work/multipage/the-iframe-element.html#attr-iframe-sandbox
|
||||
|
||||
Modernizr.addTest('sandbox', 'sandbox' in document.createElement('iframe'));
|
5
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/iframe-seamless.js
generated
vendored
Normal file
5
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/iframe-seamless.js
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
// Test for `seamless` attribute in iframes.
|
||||
//
|
||||
// Spec: http://www.whatwg.org/specs/web-apps/current-work/multipage/the-iframe-element.html#attr-iframe-seamless
|
||||
|
||||
Modernizr.addTest('seamless', 'seamless' in document.createElement('iframe'));
|
5
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/iframe-srcdoc.js
generated
vendored
Normal file
5
buildfiles/app/node_modules/localforage/bower_components/modernizr/feature-detects/iframe-srcdoc.js
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
// Test for `srcdoc` attribute in iframes.
|
||||
//
|
||||
// Spec: http://www.whatwg.org/specs/web-apps/current-work/multipage/the-iframe-element.html#attr-iframe-srcdoc
|
||||
|
||||
Modernizr.addTest('srcdoc', 'srcdoc' in document.createElement('iframe'));
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user