summaryrefslogtreecommitdiffstats
path: root/js/vendor/es6-shim/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'js/vendor/es6-shim/README.md')
-rw-r--r--js/vendor/es6-shim/README.md221
1 files changed, 221 insertions, 0 deletions
diff --git a/js/vendor/es6-shim/README.md b/js/vendor/es6-shim/README.md
new file mode 100644
index 000000000..7d08f3525
--- /dev/null
+++ b/js/vendor/es6-shim/README.md
@@ -0,0 +1,221 @@
+# ES6 Shim
+Provides compatibility shims so that legacy JavaScript engines behave as
+closely as possible to ECMAScript 6 (Harmony).
+
+[![Build Status][1]][2] [![dependency status][3]][4] [![dev dependency status][5]][6]
+
+[![browser support](https://ci.testling.com/paulmillr/es6-shim.png)](https://ci.testling.com/paulmillr/es6-shim)
+
+[![Sauce Test Status](https://saucelabs.com/browser-matrix/es6-shim.svg)](https://saucelabs.com/u/es6-shim)
+
+## Installation
+If you want to use it in browser:
+
+* Just include es6-shim before your scripts.
+* Include [es5-shim](https://github.com/kriskowal/es5-shim) if your browser doesn't support ECMAScript 5.
+* `component install paulmillr/es6-shim` if you’re using [component(1)](https://github.com/component/component).
+* `bower install es6-shim` if you’re using [Twitter Bower](http://bower.io/).
+
+For node.js:
+
+ npm install es6-shim
+
+In both browser and node you may also want to include `unorm`; see the
+[`String.prototype.normalize`](#stringprototypenormalize) section for
+details.
+
+## Safe shims
+
+* `Map`, `Set` (requires ES5)
+* `Promise`
+* `String`:
+ * `fromCodePoint()` ([a standalone shim is also available](http://mths.be/fromcodepoint))
+ * `raw()`
+* `String.prototype`:
+ * `codePointAt()` ([a standalone shim is also available](http://mths.be/codepointat))
+ * `repeat()` ([a standalone shim is also available](http://mths.be/repeat))
+ * `startsWith()` ([a standalone shim is also available](http://mths.be/startswith))
+ * `endsWith()` ([a standalone shim is also available](http://mths.be/endswith))
+ * `contains()` ([a standalone shim is also available](http://mths.be/contains))
+* `Number`:
+ * `MAX_SAFE_INTEGER`
+ * `MIN_SAFE_INTEGER`
+ * `EPSILON`
+ * `parseInt()`
+ * `parseFloat()`
+ * `isNaN()`([a standalone shim is also available](https://npmjs.org/package/is-nan))
+ * `isInteger()`
+ * `isSafeInteger()`
+ * `isFinite()`
+* `Array`:
+ * `from()` ([a standalone shim is also available](https://npmjs.org/package/array.from))
+ * `of()` ([a standalone shim is also available](https://npmjs.org/package/array.of))
+* `Array.prototype`:
+ * `copyWithin()`
+ * `fill()`
+ * `find()` ([a standalone shim is also available](https://github.com/paulmillr/Array.prototype.find))
+ * `findIndex()` ([a standalone shim is also available](https://github.com/paulmillr/Array.prototype.findIndex))
+ * `keys()` (note: keys/values/entries return an `ArrayIterator` object)
+ * `entries()`
+ * `values()`
+* `Object`:
+ * `getPropertyDescriptor()` (ES5)
+ * `getPropertyNames()` (ES5)
+ * `getPropertyKeys()` (ES5)
+ * `keys()` (ES5, but no longer throws on non-object non-null/undefined values in ES6)
+ * `is()` ([a standalone shim is also available](https://github.com/ljharb/object-is))
+ * `assign()` ([a standalone shim is also available](https://github.com/ljharb/object.assign))
+ * `setPrototypeOf()` (IE >= 11)
+* `Math`:
+ * `acosh()`
+ * `asinh()`
+ * `atanh()`
+ * `cbrt()`
+ * `clz32()`
+ * `cosh()`
+ * `expm1()`
+ * `hypot()`
+ * `log2()`
+ * `log10()`
+ * `log1p()`
+ * `sign()`
+ * `sinh()`
+ * `tanh()`
+ * `trunc()`
+ * `imul()`
+ * `fround()`
+
+Math functions accuracy is 1e-11.
+
+## Subclassing
+The `Map`, `Set`, and `Promise` implementations are subclassable.
+You should use the following pattern to create a subclass in ES5 which
+will continue to work in ES6:
+```javascript
+function MyPromise(exec) {
+ Promise.call(this, exec);
+ // ...
+}
+Object.setPrototypeOf(MyPromise, Promise);
+MyPromise.prototype = Object.create(Promise.prototype, {
+ constructor: { value: MyPromise }
+});
+```
+
+## String.prototype.normalize
+Including a proper shim for `String.prototype.normalize` would
+increase the size of this library by a factor of more than 4.
+So instead we recommend that you install the
+[`unorm`](https://github.com/walling/unorm)
+package alongside `es6-shim` if you need `String.prototype.normalize`.
+See https://github.com/paulmillr/es6-shim/issues/134 for more
+discussion.
+
+
+## WeakMap shim
+It is not possible to implement WeakMap in pure javascript.
+The [es6-collections](https://github.com/WebReflection/es6-collections)
+implementation doesn't hold values strongly, which is critical
+for the collection. es6-shim decided to not include an incorrect shim.
+
+WeakMap has a very unusual use-case so you probably won't need it at all
+(use simple `Map` instead).
+
+## Getting started
+
+```javascript
+'abc'.startsWith('a') // true
+'abc'.endsWith('a') // false
+'john alice'.contains('john') // true
+'123'.repeat(2) // '123123'
+
+Object.is(NaN, NaN) // Fixes ===. 0 isnt -0, NaN is NaN
+Object.assign({a: 1}, {b: 2}) // {a: 1, b: 2}
+
+Number.isNaN('123') // false. isNaN('123') will give true.
+Number.isFinite('asd') // false. Global isFinite() will give true.
+// Tests if value is a number, finite,
+// >= -9007199254740992 && <= 9007199254740992 and floor(value) === value
+Number.isInteger(2.4) // false.
+
+Math.sign(400) // 1, 0 or -1 depending on sign. In this case 1.
+
+[5, 10, 15, 10].find(function(item) {return item / 2 === 5;}) // 10
+[5, 10, 15, 10].findIndex(function(item) {return item / 2 === 5;}) // 1
+
+// Replacement for `{}` key-value storage.
+// Keys can be anything.
+var map = new Map()
+map.set('John', 25)
+map.set('Alice', 400)
+map.set(['meh'], 555)
+map.get(['meh']) // undefined because you need to use exactly the same object.
+map.delete('Alice')
+map.keys()
+map.values()
+map.size // 2
+
+// Useful for storing unique items.
+var set = new Set()
+set.add(1)
+set.add(5)
+set.has(1)
+set.has(4) // => false
+set.delete(5)
+
+// Promises, see
+// http://www.slideshare.net/domenicdenicola/callbacks-promises-and-coroutines-oh-my-the-evolution-of-asynchronicity-in-javascript
+// https://github.com/petkaantonov/bluebird/#what-are-promises-and-why-should-i-use-them
+Promise.resolve(5).then(function(value) {
+ if ( ... ) throw new Error("whoops!");
+ // do some stuff
+ return anotherPromise();
+}).catch(function(e) {
+ // any errors thrown asynchronously end up here
+});
+```
+
+Note that the ES6 `Promise` specification includes very few methods.
+For a more useful set of utility methods
+(`map`/`reduce`/`bind`/`guard`/etc), you might want to look into the
+[`prfun`](https://github.com/cscott/prfun) package.
+
+Other stuff:
+
+* [ECMAScript 6 drafts](http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts)
+* [Harmony proposals](http://wiki.ecmascript.org/doku.php?id=harmony:harmony)
+
+## License
+The project was initially based on [es6-shim by Axel Rauschmayer](https://github.com/rauschma/es6-shim).
+
+Current maintainers are: [Paul Miller](http://paulmillr.com), [Jordan Harband](https://github.com/ljharb), and [C. Scott Ananian](http://cscott.net).
+
+The MIT License (MIT)
+
+Copyright (c) 2013-2014 Paul Miller (http://paulmillr.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.
+
+[1]: https://travis-ci.org/paulmillr/es6-shim.svg
+[2]: https://travis-ci.org/paulmillr/es6-shim
+[3]: https://david-dm.org/paulmillr/es6-shim.svg
+[4]: https://david-dm.org/paulmillr/es6-shim
+[5]: https://david-dm.org/paulmillr/es6-shim/dev-status.svg
+[6]: https://david-dm.org/paulmillr/es6-shim#info=devDependencies
+