stuff
This commit is contained in:
5
buildfiles/app/node_modules/localforage/.huskyrc
generated
vendored
Normal file
5
buildfiles/app/node_modules/localforage/.huskyrc
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"hooks": {
|
||||
"pre-commit": "lint-staged"
|
||||
}
|
||||
}
|
||||
6
buildfiles/app/node_modules/localforage/.lintstagedrc
generated
vendored
Normal file
6
buildfiles/app/node_modules/localforage/.lintstagedrc
generated
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"{src,test}/**/*.js": [
|
||||
"prettier --write",
|
||||
"git add"
|
||||
]
|
||||
}
|
||||
0
buildfiles/app/node_modules/localforage/.tscache/typing_tests/timestamp
generated
vendored
Normal file
0
buildfiles/app/node_modules/localforage/.tscache/typing_tests/timestamp
generated
vendored
Normal file
157
buildfiles/app/node_modules/localforage/CHANGELOG.md
generated
vendored
Normal file
157
buildfiles/app/node_modules/localforage/CHANGELOG.md
generated
vendored
Normal file
@@ -0,0 +1,157 @@
|
||||
# About this CHANGELOG
|
||||
|
||||
This file will include all API breakage, new features, and upgrade info in
|
||||
localForage's lifetime.
|
||||
|
||||
### [1.9.0](https://github.com/mozilla/localForage/releases/tag/1.9.0)
|
||||
|
||||
* Fixed TypeScript definition for `getItem`. It now notes that `getItem` can return `null`, so this change may cause TypeScript code that didn't account for `null` values to fail. See #980.
|
||||
|
||||
### [1.8.1](https://github.com/mozilla/localForage/releases/tag/1.8.1)
|
||||
|
||||
* Reverted the ESM/`module` field change in #940, which broke many builds. See: #979. Sorry about that! 😓
|
||||
|
||||
### [1.8.0](https://github.com/mozilla/localForage/releases/tag/1.8.0)
|
||||
|
||||
* No changes to code, but added a `module` field in `package.json` for better ESM support. See: #940.
|
||||
|
||||
### [1.7.4](https://github.com/mozilla/localForage/releases/tag/1.7.4)
|
||||
|
||||
* Use `openKeyCursor` instead of `openCursor` for `key()` retrieval. Props to @MeMark2 for the fix, and thanks to @lincolnthree and @f for additional testing!
|
||||
|
||||
### [1.7.3](https://github.com/mozilla/localForage/releases/tag/1.7.3)
|
||||
|
||||
* Add `.npmignore` file to reduce package size when installed via npm.
|
||||
|
||||
### [1.6](https://github.com/mozilla/localForage/releases/tag/1.6.0)
|
||||
|
||||
* Add `dropInstance()` method to localforage.
|
||||
* Improve IDB driver reliability when a connection gets closed.
|
||||
|
||||
### [1.5.7]
|
||||
|
||||
* Fix IE8 localStorage support detection.
|
||||
|
||||
### [1.5.6]
|
||||
|
||||
* Upgrade lie to 3.1.1 to work with yarn.
|
||||
|
||||
### [1.5.5]
|
||||
|
||||
* Roll back dropInstance breaking change.
|
||||
|
||||
### [1.5.4]
|
||||
|
||||
* Set `null` as `undefined` (for Edge).
|
||||
|
||||
### [1.5.3]
|
||||
|
||||
* Check whether localStorage is actually usable.
|
||||
|
||||
### [1.5.2]
|
||||
|
||||
* Prevent some unnecessary logs when calling `createInstance()`.
|
||||
|
||||
### [1.5.1]
|
||||
|
||||
* Try to re-establish IDB connection after an InvalidStateError.
|
||||
* Added Generics to `iterate()` TS Typings.
|
||||
* Define custom drivers syncronously when `_support` isn't a function.
|
||||
* Use the custom driver API for internal drivers, which makes possible to override parts of their implementation.
|
||||
|
||||
### [1.5](https://github.com/mozilla/localForage/releases/tag/1.5.0)
|
||||
* **Major storage engine change for Safari**: We now use IndexedDB as the storage engine for Safari v10.1 (and above). This means that **pre-existing Safari** `>= 10.1` users will experience "data loss" **after upgrading your site from a previous version of localForage to v1.5**. In fact no data is lost but the engine will change so localForage will seem empty.
|
||||
* You can use the [localForage 1.4 compatibility plugin](https://github.com/localForage/localForage-compatibility-1-4) after the upgrade so that all your Safari users (both old & new) continue to use the WebSQL driver.
|
||||
* Alternativelly you can force a connection to WebSQL using [localForage's config](https://localforage.github.io/localForage/#settings-api-setdriver) to either keep using your existing WebSQL database or migrate to IndexedDB.
|
||||
|
||||
### [1.4.2](https://github.com/mozilla/localForage/releases/tag/1.4.2)
|
||||
* Fixes #562.
|
||||
|
||||
### [1.4.1](https://github.com/mozilla/localForage/releases/tag/1.4.1)
|
||||
* Fixes #520; browserify builds work properly
|
||||
|
||||
### [1.4](https://github.com/mozilla/localForage/releases/tag/1.4.0)
|
||||
* Fixes #516; this version should always load the correct driver without that bug.
|
||||
|
||||
### [1.3](https://github.com/mozilla/localForage/releases/tag/1.3.0)
|
||||
* We now use ES6 for our source code and `webpack` to bundle the `dist/` files.
|
||||
|
||||
### [1.2](https://github.com/mozilla/localForage/releases/tag/1.2.0)
|
||||
* Iterate through the entire database using `iterate()`. ([#283](https://github.com/mozilla/localForage/pull/283); fixes [#186](https://github.com/mozilla/localForage/pull/186))
|
||||
|
||||
### [1.1](https://github.com/mozilla/localForage/releases/tag/1.1.0)
|
||||
* Custom drivers can be created using `defineDriver()`. ([#282](https://github.com/mozilla/localForage/pull/282); fixes [#267](https://github.com/mozilla/localForage/pull/267))
|
||||
|
||||
### [1.0.3](https://github.com/mozilla/localForage/releases/tag/1.0.3)
|
||||
* `config()` accepts a new option: `driver`, so users can set the driver during config rather than using `setDriver()`. ([#273](https://github.com/mozilla/localForage/pull/273); fixes [#168](https://github.com/mozilla/localForage/pull/168))
|
||||
|
||||
### [1.0](https://github.com/mozilla/localForage/releases/tag/1.0.0)
|
||||
|
||||
* It is no longer necessary to queue commands using `ready()` when using RequireJS. ([723cc94e06](https://github.com/mozilla/localForage/commit/723cc94e06af4f5ba4c53fa65524ccd5f6c4432e))
|
||||
* `setDriver` now accepts an array of drivers to be used, in order of preference, instead of simply a string. The string option is still supported. (eg. now one can use `setDriver(['WebSQL', 'localStorage'])` instead of `setDriver('WebSQL')`)
|
||||
* node-style, error-first argument method signatures are used for callbacks. Promises don't use error-first method signatures; instead they supply an error to the promise's `reject()` function.
|
||||
|
||||
### [0.9](https://github.com/mozilla/localForage/releases/tag/0.9.1)
|
||||
|
||||
This release drops support for some legacy browsers, though not actually the
|
||||
ones you might think. localForage's new policy is to support the current
|
||||
version of all major browsers plus up to three versions back.
|
||||
|
||||
* Add built versions without the Promises polyfill to `dist/` directory. ([#172](https://github.com/mozilla/localForage/pull/172))
|
||||
* **Drop support for Firefox 3.5. Minimum version is now Firefox 25.** (Technically, Firefox 4+ seems to work.)
|
||||
* **Drop support for Chrome 31 and below. Minimum version is now Chrome 32.**
|
||||
* Fix a **lot** of bugs. Especially in Internet Exploder.
|
||||
* Switch to Mocha tests and test on [Sauce Labs](https://saucelabs.com/).
|
||||
* Add a `keys()` method. ([#180](https://github.com/mozilla/localForage/pull/180))
|
||||
* Check for localStorage instead of assuming it's available. ([#183](https://github.com/mozilla/localForage/pull/183))
|
||||
|
||||
### [Version 0.8](https://github.com/mozilla/localForage/releases/tag/0.8.1)
|
||||
|
||||
* Add support for web workers. ([#144](https://github.com/mozilla/localForage/pull/144), [#147](https://github.com/mozilla/localForage/pull/147)).
|
||||
|
||||
### [Version 0.6.1](https://github.com/mozilla/localForage/releases/tag/0.6.1)
|
||||
|
||||
* Put built versions back in `dist/` directory.
|
||||
|
||||
### [Version 0.6.0](https://github.com/mozilla/localForage/releases/tag/0.6.0)
|
||||
|
||||
* Add `localforage.config`. ([#40](https://github.com/mozilla/localForage/pull/140))
|
||||
* Fix iFrame bug in WebKit. ([#78](https://github.com/mozilla/localForage/issues/78))
|
||||
* Improve error handling. ([#60](https://github.com/mozilla/localForage/issues/60))
|
||||
* Remove support for `window.localForageConfig`. ([#135](https://github.com/mozilla/localForage/issues/135))
|
||||
|
||||
### [Version 0.4](https://github.com/mozilla/localForage/releases/tag/0.4.0)
|
||||
|
||||
* Built versions of localForage are now in the top-level directory. ([2d11c90](https://github.com/mozilla/localForage/commit/2d11c90))
|
||||
|
||||
### [Version 0.3](https://github.com/mozilla/localForage/releases/tag/0.3.0)
|
||||
|
||||
* Check code quality in test suite ([#124](https://github.com/mozilla/localForage/pull/124))
|
||||
* `_initDriver()` is called after first public API call ([#119](https://github.com/mozilla/localForage/pull/119))
|
||||
|
||||
### [Version 0.2.1](https://github.com/mozilla/localForage/releases/tag/0.2.1)
|
||||
|
||||
* Allow configuration of WebSQL DB size ([commit](https://github.com/mozilla/localForage/commit/6e78fff51a23e729206a03e5b750e959d8610f8c))
|
||||
* Use bower for JS dependencies instead of `vendor/` folder ([#109](https://github.com/mozilla/localForage/pull/109))
|
||||
|
||||
### [Version 0.2.0](https://github.com/mozilla/localForage/releases/tag/0.2.0)
|
||||
|
||||
* Add support for ArrayBuffer, Blob, and TypedArrays ([#54](https://github.com/mozilla/localForage/pull/54), [#73](https://github.com/mozilla/localForage/pull/73))
|
||||
|
||||
### [Version 0.1.1](https://github.com/mozilla/localForage/releases/tag/0.1.1)
|
||||
|
||||
* Added config options to allow users to set their own database names, etc. ([#100](https://github.com/mozilla/localForage/pull/100))
|
||||
|
||||
---
|
||||
|
||||
### March 16th, 2014
|
||||
|
||||
* Moved Backbone adapter to its own repository ([b7987b3091855379d4908376b668b4b51a6fedfe](https://github.com/mozilla/localForage/commit/b7987b3091855379d4908376b668b4b51a6fedfe))
|
||||
|
||||
### March 13th, 2014
|
||||
|
||||
* Changed `localforage.driver` to a function instead of the string directly ([49415145021b0029d2521182de6e338e048fe5b1](https://github.com/mozilla/localForage/commit/49415145021b0029d2521182de6e338e048fe5b1))
|
||||
|
||||
### March 4th, 2014
|
||||
|
||||
* Changed the IndexedDB database name from `asyncStorage` to `localforage` ([f4e0156a29969a79005ac27b303d7e321a720fc6](https://github.com/mozilla/localForage/commit/f4e0156a29969a79005ac27b303d7e321a720fc6))
|
||||
59
buildfiles/app/node_modules/localforage/CONTRIBUTING.md
generated
vendored
Normal file
59
buildfiles/app/node_modules/localforage/CONTRIBUTING.md
generated
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
# Filing issues
|
||||
|
||||
Please
|
||||
[check the existing issues](https://github.com/mozilla/localForage/issues) to
|
||||
make sure your issue hasn't already been filed.
|
||||
|
||||
If you have a bug to report, please file it.
|
||||
You are also encouraged to create an example (or [edit an existing one](http://codepen.io/thgreasi/pen/ojYKeE)) to showcase your issue.
|
||||
|
||||
If you'd like to see a feature
|
||||
implemented, you can file an issue, but know that pull requests for small
|
||||
things like adding a line in a config file will get more attention than an
|
||||
issue asking someone else to do it.
|
||||
|
||||
See below for [issues that have been discussed and will be rejected](#features-localforage-will-reject).
|
||||
|
||||
# Contributing to localForage
|
||||
|
||||
First off: thanks! Open source software (and thus all software) exists because
|
||||
of people like you. <3
|
||||
|
||||
If you'd like to contribute to localForage, it's as simple as opening a pull
|
||||
request on GitHub. After that someone will code review your work and either
|
||||
ask you to fix any errors or merge the code into master. Here are a few tips:
|
||||
|
||||
* **all drivers must have the same public API**: refer to [the API tests](https://github.com/mozilla/localForage/blob/master/test/test.api.coffee) for how we ensure this, but simply put: all drivers should share the _exact same_ outward-facing API
|
||||
* **do your work on a feature branch**: this keeps things clean and easy
|
||||
* **try to rebase master into your branch**: this keeps the commit history clean and avoids merge commits inside feature branches
|
||||
* **write tests**: if you're adding new features, _please_ write tests; likewise, if you're fixing a bug that wasn't previously caught by a test, please add one
|
||||
* **run `grunt build` before you commit**: this will build out the files in the `dist/` folder and ensure your tests pass
|
||||
|
||||
Please commit changes at the top-level folder along with your changes in the
|
||||
`src/` folder--**do not make these changes separate commits**. These are the
|
||||
built versions of `localforage.js` and `localforage.min.js`, which are
|
||||
used by bower.
|
||||
|
||||
If you have any questions, need some help, or anything else, don't feel shy!
|
||||
The team behind this library is often available on IRC
|
||||
([irc.mozilla.org](https://wiki.mozilla.org/IRC) on the `#apps` channel).
|
||||
|
||||
## Coding Style
|
||||
|
||||
All code can be tested for style by running the unit tests (`npm test`). This will make sure your code conforms to our styleguide. (You can read the rules in `.jshint` and `.jscsrc`.)
|
||||
|
||||
## Features localForage will reject
|
||||
|
||||
### node.js support
|
||||
|
||||
localForage is a browser library with a specific focus on client-side,
|
||||
offline storage. It is not a general-purpose storage library and is not meant
|
||||
to allow for the same API on the client and the server. Implementing the
|
||||
localForage API wouldn't be hard (it's just localStorage with callbacks and
|
||||
ES6 promises), but it's a job for another library.
|
||||
|
||||
### Legacy browser support
|
||||
|
||||
Basically this means anything before IE 8. I know there are hacky ways to
|
||||
support storage with cookies or IE Userdata or whatever, but anything worse
|
||||
than localStorage isn't worth investing into.
|
||||
201
buildfiles/app/node_modules/localforage/LICENSE
generated
vendored
Normal file
201
buildfiles/app/node_modules/localforage/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,201 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "{}"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright 2014 Mozilla
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
258
buildfiles/app/node_modules/localforage/README.md
generated
vendored
Normal file
258
buildfiles/app/node_modules/localforage/README.md
generated
vendored
Normal file
@@ -0,0 +1,258 @@
|
||||
# localForage
|
||||
[](http://travis-ci.org/localForage/localForage)
|
||||
[](http://badge.fury.io/js/localforage)
|
||||
[](https://david-dm.org/localForage/localForage)
|
||||
[](https://npmcharts.com/compare/localforage?minimal=true)
|
||||
[](https://www.jsdelivr.com/package/npm/localforage)
|
||||
[](https://bundlephobia.com/result?p=localforage@1.9.0)
|
||||
|
||||
localForage is a fast and simple storage library for JavaScript. localForage
|
||||
improves the offline experience of your web app by using asynchronous storage
|
||||
(IndexedDB or WebSQL) with a simple, `localStorage`-like API.
|
||||
|
||||
localForage uses localStorage in browsers with no IndexedDB or
|
||||
WebSQL support. See [the wiki for detailed compatibility info][supported browsers].
|
||||
|
||||
To use localForage, just drop a single JavaScript file into your page:
|
||||
|
||||
```html
|
||||
<script src="localforage/dist/localforage.js"></script>
|
||||
<script>localforage.getItem('something', myCallback);</script>
|
||||
```
|
||||
Try the [live example](http://codepen.io/thgreasi/pen/ojYKeE).
|
||||
|
||||
Download the [latest localForage from GitHub](https://github.com/localForage/localForage/releases/latest), or install with
|
||||
[npm](https://www.npmjs.com/):
|
||||
|
||||
```bash
|
||||
npm install localforage
|
||||
```
|
||||
|
||||
[supported browsers]: https://github.com/localForage/localForage/wiki/Supported-Browsers-Platforms
|
||||
|
||||
## Support
|
||||
|
||||
Lost? Need help? Try the
|
||||
[localForage API documentation](https://localforage.github.io/localForage). [localForage API文档也有中文版。](https://localforage.docschina.org)
|
||||
|
||||
If you're having trouble using the library, running the tests, or want to contribute to localForage, please look through the [existing issues](https://github.com/localForage/localForage/issues) for your problem first before creating a new one. If you still need help, [feel free to file an issue](https://github.com/localForage/localForage/issues/new).
|
||||
|
||||
# How to use localForage
|
||||
|
||||
## Callbacks vs Promises
|
||||
|
||||
Because localForage uses async storage, it has an async API.
|
||||
It's otherwise exactly the same as the
|
||||
[localStorage API](https://hacks.mozilla.org/2009/06/localstorage/).
|
||||
|
||||
localForage has a dual API that allows you to either use Node-style callbacks
|
||||
or [Promises](https://www.promisejs.org/). If you are unsure which one is right for you, it's recommended to use Promises.
|
||||
|
||||
Here's an example of the Node-style callback form:
|
||||
|
||||
```js
|
||||
localforage.setItem('key', 'value', function (err) {
|
||||
// if err is non-null, we got an error
|
||||
localforage.getItem('key', function (err, value) {
|
||||
// if err is non-null, we got an error. otherwise, value is the value
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
And the Promise form:
|
||||
|
||||
```js
|
||||
localforage.setItem('key', 'value').then(function () {
|
||||
return localforage.getItem('key');
|
||||
}).then(function (value) {
|
||||
// we got our value
|
||||
}).catch(function (err) {
|
||||
// we got an error
|
||||
});
|
||||
```
|
||||
|
||||
Or, use `async`/`await`:
|
||||
|
||||
```js
|
||||
try {
|
||||
const value = await localforage.getItem('somekey');
|
||||
// This code runs once the value has been loaded
|
||||
// from the offline store.
|
||||
console.log(value);
|
||||
} catch (err) {
|
||||
// This code runs if there were any errors.
|
||||
console.log(err);
|
||||
}
|
||||
```
|
||||
|
||||
For more examples, please visit [the API docs](https://localforage.github.io/localForage).
|
||||
|
||||
## Storing Blobs, TypedArrays, and other JS objects
|
||||
|
||||
You can store any type in localForage; you aren't limited to strings like in
|
||||
localStorage. Even if localStorage is your storage backend, localForage
|
||||
automatically does `JSON.parse()` and `JSON.stringify()` when getting/setting
|
||||
values.
|
||||
|
||||
localForage supports storing all native JS objects that can be serialized to
|
||||
JSON, as well as ArrayBuffers, Blobs, and TypedArrays. Check the
|
||||
[API docs][api] for a full list of types supported by localForage.
|
||||
|
||||
All types are supported in every storage backend, though storage limits in
|
||||
localStorage make storing many large Blobs impossible.
|
||||
|
||||
[api]: https://localforage.github.io/localForage/#data-api-setitem
|
||||
|
||||
## Configuration
|
||||
|
||||
You can set database information with the `config()` method.
|
||||
Available options are `driver`, `name`, `storeName`, `version`, `size`, and
|
||||
`description`.
|
||||
|
||||
Example:
|
||||
```javascript
|
||||
localforage.config({
|
||||
driver : localforage.WEBSQL, // Force WebSQL; same as using setDriver()
|
||||
name : 'myApp',
|
||||
version : 1.0,
|
||||
size : 4980736, // Size of database, in bytes. WebSQL-only for now.
|
||||
storeName : 'keyvaluepairs', // Should be alphanumeric, with underscores.
|
||||
description : 'some description'
|
||||
});
|
||||
```
|
||||
|
||||
**Note:** you must call `config()` _before_ you interact with your data. This
|
||||
means calling `config()` before using `getItem()`, `setItem()`, `removeItem()`,
|
||||
`clear()`, `key()`, `keys()` or `length()`.
|
||||
|
||||
## Multiple instances
|
||||
|
||||
You can create multiple instances of localForage that point to different stores
|
||||
using `createInstance`. All the configuration options used by
|
||||
[`config`](#configuration) are supported.
|
||||
|
||||
``` javascript
|
||||
var store = localforage.createInstance({
|
||||
name: "nameHere"
|
||||
});
|
||||
|
||||
var otherStore = localforage.createInstance({
|
||||
name: "otherName"
|
||||
});
|
||||
|
||||
// Setting the key on one of these doesn't affect the other.
|
||||
store.setItem("key", "value");
|
||||
otherStore.setItem("key", "value2");
|
||||
```
|
||||
|
||||
## RequireJS
|
||||
|
||||
You can use localForage with [RequireJS](http://requirejs.org/):
|
||||
|
||||
```javascript
|
||||
define(['localforage'], function(localforage) {
|
||||
// As a callback:
|
||||
localforage.setItem('mykey', 'myvalue', console.log);
|
||||
|
||||
// With a Promise:
|
||||
localforage.setItem('mykey', 'myvalue').then(console.log);
|
||||
});
|
||||
```
|
||||
|
||||
## TypeScript
|
||||
|
||||
If you have the [`allowSyntheticDefaultImports` compiler option](https://www.typescriptlang.org/docs/handbook/compiler-options.html) set to `true` in your [tsconfig.json](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) (supported in TypeScript v1.8+), you should use:
|
||||
|
||||
```javascript
|
||||
import localForage from "localforage";
|
||||
```
|
||||
|
||||
Otherwise you should use one of the following:
|
||||
|
||||
```javascript
|
||||
import * as localForage from "localforage";
|
||||
// or, in case that the typescript version that you are using
|
||||
// doesn't support ES6 style imports for UMD modules like localForage
|
||||
import localForage = require("localforage");
|
||||
```
|
||||
|
||||
## Framework Support
|
||||
|
||||
If you use a framework listed, there's a localForage storage driver for the
|
||||
models in your framework so you can store data offline with localForage. We
|
||||
have drivers for the following frameworks:
|
||||
|
||||
* [AngularJS](https://github.com/ocombe/angular-localForage)
|
||||
* [Angular 4 and up](https://github.com/Alorel/ngforage/)
|
||||
* [Backbone](https://github.com/localForage/localForage-backbone)
|
||||
* [Ember](https://github.com/genkgo/ember-localforage-adapter)
|
||||
* [Vue](https://github.com/dmlzj/vlf)
|
||||
* [NuxtJS](https://github.com/nuxt-community/localforage-module)
|
||||
|
||||
If you have a driver you'd like listed, please
|
||||
[open an issue](https://github.com/localForage/localForage/issues/new) to have it
|
||||
added to this list.
|
||||
|
||||
## Custom Drivers
|
||||
|
||||
You can create your own driver if you want; see the
|
||||
[`defineDriver`](https://localforage.github.io/localForage/#driver-api-definedriver) API docs.
|
||||
|
||||
There is a [list of custom drivers on the wiki][custom drivers].
|
||||
|
||||
[custom drivers]: https://github.com/localForage/localForage/wiki/Custom-Drivers
|
||||
|
||||
# Working on localForage
|
||||
|
||||
You'll need [node/npm](http://nodejs.org/) and
|
||||
[bower](http://bower.io/#installing-bower).
|
||||
|
||||
To work on localForage, you should start by
|
||||
[forking it](https://github.com/localForage/localForage/fork) and installing its
|
||||
dependencies. Replace `USERNAME` with your GitHub username and run the
|
||||
following:
|
||||
|
||||
```bash
|
||||
# Install bower globally if you don't have it:
|
||||
npm install -g bower
|
||||
|
||||
# Replace USERNAME with your GitHub username:
|
||||
git clone git@github.com:USERNAME/localForage.git
|
||||
cd localForage
|
||||
npm install
|
||||
bower install
|
||||
```
|
||||
|
||||
Omitting the bower dependencies will cause the tests to fail!
|
||||
|
||||
## Running Tests
|
||||
|
||||
You need PhantomJS installed to run local tests. Run `npm test` (or,
|
||||
directly: `grunt test`). Your code must also pass the
|
||||
[linter](http://jshint.com/).
|
||||
|
||||
localForage is designed to run in the browser, so the tests explicitly require
|
||||
a browser environment. Local tests are run on a headless WebKit (using
|
||||
[PhantomJS](http://phantomjs.org)).
|
||||
|
||||
When you submit a pull request, tests will be run against all browsers that
|
||||
localForage supports on Travis CI using [Sauce Labs](https://saucelabs.com/).
|
||||
|
||||
## Library Size
|
||||
As of version 1.7.3 the payload added to your app is rather small. Served using gzip compression, localForage will add less than 10k to your total bundle size:
|
||||
|
||||
<dl>
|
||||
<dt>minified</dt><dd>`~29kB`</dd>
|
||||
<dt>gzipped</dt><dd>`~8.8kB`</dd>
|
||||
<dt>brotli'd</dt><dd>`~7.8kB`</dd>
|
||||
</dl>
|
||||
|
||||
# License
|
||||
|
||||
This program is free software; it is distributed under an
|
||||
[Apache License](https://github.com/localForage/localForage/blob/master/LICENSE).
|
||||
|
||||
---
|
||||
|
||||
Copyright (c) 2013-2016 [Mozilla](https://mozilla.org)
|
||||
([Contributors](https://github.com/localForage/localForage/graphs/contributors)).
|
||||
27
buildfiles/app/node_modules/localforage/bower.json
generated
vendored
Normal file
27
buildfiles/app/node_modules/localforage/bower.json
generated
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"name": "localforage",
|
||||
"main": ["dist/localforage.js"],
|
||||
"ignore": [
|
||||
".travis.yml",
|
||||
"CONTRIBUTING.md",
|
||||
"config.rb",
|
||||
"Gemfile",
|
||||
"Gemfile.lock",
|
||||
"Rakefile",
|
||||
"LICENSE",
|
||||
"docs*",
|
||||
"examples*",
|
||||
"test*",
|
||||
"site*"
|
||||
],
|
||||
"dependencies": {},
|
||||
"devDependencies": {
|
||||
"es6-promise": "~1.0.0",
|
||||
"requirejs": "~2.1.10",
|
||||
"mocha": "~3.4.2",
|
||||
"expect": "~0.3.1",
|
||||
"assert": "~0.1.0",
|
||||
"modernizr": "~2.8.1"
|
||||
},
|
||||
"version": "1.9.0"
|
||||
}
|
||||
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;
|
||||
});
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user