diff --git a/.gitignore b/.gitignore
index f31703fb..b3aa7557 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,7 @@
# git diff files
*.diff
-dist/
+dist/build
node_modules/
website/*.html
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 00000000..86077b5a
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,5 @@
+{
+ "editor.defaultFormatter": "standard.vscode-standard",
+ "standard.enable": true,
+ "standard.autoFixOnSave": true
+}
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c0c6b2fe..167df36e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,17 @@
All notable changes to this project will be documented in this file.
+## [1.1.0] - 2022-07-13
+- Available as an npm module (both ES6 and CommonJS) with instructions
+- Specify number of spares available to be placed
+- Bug fixes and optimizations
+- Works better on mobile
+- Default piece images from CDN
+- Internal position is updated before firing onChange
+- Dragged piece can be magnified
+- Accessibility improvements (alt tag)
+- Can preload piece images
+
## [1.0.0] - 2019-06-11
- Orientation methods now return current orientation. [Issue #64]
- Drop support for IE8
diff --git a/README.md b/README.md
index 70df69f5..b2a41923 100644
--- a/README.md
+++ b/README.md
@@ -4,6 +4,26 @@ chessboard.js is a JavaScript chessboard component. It depends on [jQuery] v3.4.
Please see [chessboardjs.com] for documentation and examples.
+## Usage
+
+Installation: `npm i @discape/chessboardjs`
+
+```js
+import { Chessboard, fenToObj, objToFen } from "@discape/chessboardjs";
+```
+
+```js
+const { Chessboard, fenToObj, objToFen } = require("@discape/chessboardjs");
+```
+
+Be sure to include the css:
+
+```html
+
+```
+
## What is chessboard.js?
chessboard.js is a standalone JavaScript Chess Board. It is designed to be "just
diff --git a/data/releases.json b/data/releases.json
index dbcec679..1b9f5933 100644
--- a/data/releases.json
+++ b/data/releases.json
@@ -1,53 +1,53 @@
-[
-"-----------------------------------------------------------------",
-{
- "released":false,
- "version":"0.3.1",
- "date":"10 Aug 2013",
- "changes":[
- "Orientation methods now return current orientation (GitHub Issue #64)"
- ],
- "files":[
- { "name":"chessboardjs-0.3.1.zip", "size":"44.6 KB" }
- ]
-},
-"-----------------------------------------------------------------",
-{
- "version":"0.3.0",
- "date":"10 Aug 2013",
- "changes":[
- "Added appearSpeed animation config",
- "Added onSnapbackEnd event",
- "Added onMoveEnd event"
- ],
- "files":[
- { "name":"chessboardjs-0.3.0.zip", "size":"44.6 KB" }
- ]
-},
-"-----------------------------------------------------------------",
-{
- "version":"0.2.0",
- "date":"05 Aug 2013",
- "changes":[
- "Added onMouseoverSquare and onMouseoutSquare events",
- "Added onSnapEnd event",
- "Added square code as CSS class on the squares",
- "chess.js integration examples"
- ],
- "files":[
- { "name":"chessboardjs-0.2.0.zip", "size":"44.6 KB" }
- ]
-},
-"-----------------------------------------------------------------",
-{
- "version":"0.1.0",
- "date":"21 Jul 2013",
- "changes":[
- "Initial release"
- ],
- "files":[
- { "name":"chessboard-0.1.0.zip", "size":"44.0 KB" }
- ]
-},
-"-----------------------------------------------------------------"
+[
+"-----------------------------------------------------------------",
+{
+ "released":false,
+ "version":"0.3.1",
+ "date":"10 Aug 2013",
+ "changes":[
+ "Orientation methods now return current orientation (GitHub Issue #64)"
+ ],
+ "files":[
+ { "name":"chessboardjs-0.3.1.zip", "size":"44.6 KB" }
+ ]
+},
+"-----------------------------------------------------------------",
+{
+ "version":"0.3.0",
+ "date":"10 Aug 2013",
+ "changes":[
+ "Added appearSpeed animation config",
+ "Added onSnapbackEnd event",
+ "Added onMoveEnd event"
+ ],
+ "files":[
+ { "name":"chessboardjs-0.3.0.zip", "size":"44.6 KB" }
+ ]
+},
+"-----------------------------------------------------------------",
+{
+ "version":"0.2.0",
+ "date":"05 Aug 2013",
+ "changes":[
+ "Added onMouseoverSquare and onMouseoutSquare events",
+ "Added onSnapEnd event",
+ "Added square code as CSS class on the squares",
+ "chess.js integration examples"
+ ],
+ "files":[
+ { "name":"chessboardjs-0.2.0.zip", "size":"44.6 KB" }
+ ]
+},
+"-----------------------------------------------------------------",
+{
+ "version":"0.1.0",
+ "date":"21 Jul 2013",
+ "changes":[
+ "Initial release"
+ ],
+ "files":[
+ { "name":"chessboard-0.1.0.zip", "size":"44.0 KB" }
+ ]
+},
+"-----------------------------------------------------------------"
]
\ No newline at end of file
diff --git a/dist/img/chesspieces/alpha/bB.png b/dist/img/chesspieces/alpha/bB.png
new file mode 100644
index 00000000..c5852f4c
Binary files /dev/null and b/dist/img/chesspieces/alpha/bB.png differ
diff --git a/dist/img/chesspieces/alpha/bK.png b/dist/img/chesspieces/alpha/bK.png
new file mode 100644
index 00000000..0d3a674a
Binary files /dev/null and b/dist/img/chesspieces/alpha/bK.png differ
diff --git a/dist/img/chesspieces/alpha/bN.png b/dist/img/chesspieces/alpha/bN.png
new file mode 100644
index 00000000..0eaf5e14
Binary files /dev/null and b/dist/img/chesspieces/alpha/bN.png differ
diff --git a/dist/img/chesspieces/alpha/bP.png b/dist/img/chesspieces/alpha/bP.png
new file mode 100644
index 00000000..b680532b
Binary files /dev/null and b/dist/img/chesspieces/alpha/bP.png differ
diff --git a/dist/img/chesspieces/alpha/bQ.png b/dist/img/chesspieces/alpha/bQ.png
new file mode 100644
index 00000000..05d5a63a
Binary files /dev/null and b/dist/img/chesspieces/alpha/bQ.png differ
diff --git a/dist/img/chesspieces/alpha/bR.png b/dist/img/chesspieces/alpha/bR.png
new file mode 100644
index 00000000..ffb85380
Binary files /dev/null and b/dist/img/chesspieces/alpha/bR.png differ
diff --git a/dist/img/chesspieces/alpha/wB.png b/dist/img/chesspieces/alpha/wB.png
new file mode 100644
index 00000000..4197efe1
Binary files /dev/null and b/dist/img/chesspieces/alpha/wB.png differ
diff --git a/dist/img/chesspieces/alpha/wK.png b/dist/img/chesspieces/alpha/wK.png
new file mode 100644
index 00000000..6cf305e5
Binary files /dev/null and b/dist/img/chesspieces/alpha/wK.png differ
diff --git a/dist/img/chesspieces/alpha/wN.png b/dist/img/chesspieces/alpha/wN.png
new file mode 100644
index 00000000..28079d47
Binary files /dev/null and b/dist/img/chesspieces/alpha/wN.png differ
diff --git a/dist/img/chesspieces/alpha/wP.png b/dist/img/chesspieces/alpha/wP.png
new file mode 100644
index 00000000..1294256a
Binary files /dev/null and b/dist/img/chesspieces/alpha/wP.png differ
diff --git a/dist/img/chesspieces/alpha/wQ.png b/dist/img/chesspieces/alpha/wQ.png
new file mode 100644
index 00000000..02fba2bf
Binary files /dev/null and b/dist/img/chesspieces/alpha/wQ.png differ
diff --git a/dist/img/chesspieces/alpha/wR.png b/dist/img/chesspieces/alpha/wR.png
new file mode 100644
index 00000000..33013501
Binary files /dev/null and b/dist/img/chesspieces/alpha/wR.png differ
diff --git a/dist/img/chesspieces/uscf/bB.png b/dist/img/chesspieces/uscf/bB.png
new file mode 100644
index 00000000..85f75647
Binary files /dev/null and b/dist/img/chesspieces/uscf/bB.png differ
diff --git a/dist/img/chesspieces/uscf/bK.png b/dist/img/chesspieces/uscf/bK.png
new file mode 100644
index 00000000..e5540c3a
Binary files /dev/null and b/dist/img/chesspieces/uscf/bK.png differ
diff --git a/dist/img/chesspieces/uscf/bN.png b/dist/img/chesspieces/uscf/bN.png
new file mode 100644
index 00000000..31493090
Binary files /dev/null and b/dist/img/chesspieces/uscf/bN.png differ
diff --git a/dist/img/chesspieces/uscf/bP.png b/dist/img/chesspieces/uscf/bP.png
new file mode 100644
index 00000000..5e36d10b
Binary files /dev/null and b/dist/img/chesspieces/uscf/bP.png differ
diff --git a/dist/img/chesspieces/uscf/bQ.png b/dist/img/chesspieces/uscf/bQ.png
new file mode 100644
index 00000000..15281c8d
Binary files /dev/null and b/dist/img/chesspieces/uscf/bQ.png differ
diff --git a/dist/img/chesspieces/uscf/bR.png b/dist/img/chesspieces/uscf/bR.png
new file mode 100644
index 00000000..00f22428
Binary files /dev/null and b/dist/img/chesspieces/uscf/bR.png differ
diff --git a/dist/img/chesspieces/uscf/wB.png b/dist/img/chesspieces/uscf/wB.png
new file mode 100644
index 00000000..9e5b59e1
Binary files /dev/null and b/dist/img/chesspieces/uscf/wB.png differ
diff --git a/dist/img/chesspieces/uscf/wK.png b/dist/img/chesspieces/uscf/wK.png
new file mode 100644
index 00000000..e55f81ad
Binary files /dev/null and b/dist/img/chesspieces/uscf/wK.png differ
diff --git a/dist/img/chesspieces/uscf/wN.png b/dist/img/chesspieces/uscf/wN.png
new file mode 100644
index 00000000..ff0af41b
Binary files /dev/null and b/dist/img/chesspieces/uscf/wN.png differ
diff --git a/dist/img/chesspieces/uscf/wP.png b/dist/img/chesspieces/uscf/wP.png
new file mode 100644
index 00000000..d4f73663
Binary files /dev/null and b/dist/img/chesspieces/uscf/wP.png differ
diff --git a/dist/img/chesspieces/uscf/wQ.png b/dist/img/chesspieces/uscf/wQ.png
new file mode 100644
index 00000000..54a9efae
Binary files /dev/null and b/dist/img/chesspieces/uscf/wQ.png differ
diff --git a/dist/img/chesspieces/uscf/wR.png b/dist/img/chesspieces/uscf/wR.png
new file mode 100644
index 00000000..6ded7b33
Binary files /dev/null and b/dist/img/chesspieces/uscf/wR.png differ
diff --git a/dist/img/chesspieces/wikipedia/bB.png b/dist/img/chesspieces/wikipedia/bB.png
new file mode 100644
index 00000000..be3007dd
Binary files /dev/null and b/dist/img/chesspieces/wikipedia/bB.png differ
diff --git a/dist/img/chesspieces/wikipedia/bK.png b/dist/img/chesspieces/wikipedia/bK.png
new file mode 100644
index 00000000..de9880ce
Binary files /dev/null and b/dist/img/chesspieces/wikipedia/bK.png differ
diff --git a/dist/img/chesspieces/wikipedia/bK.svg b/dist/img/chesspieces/wikipedia/bK.svg
new file mode 100644
index 00000000..ba2ac9fb
--- /dev/null
+++ b/dist/img/chesspieces/wikipedia/bK.svg
@@ -0,0 +1,12 @@
+
+
+
diff --git a/dist/img/chesspieces/wikipedia/bN.png b/dist/img/chesspieces/wikipedia/bN.png
new file mode 100644
index 00000000..e31a6d02
Binary files /dev/null and b/dist/img/chesspieces/wikipedia/bN.png differ
diff --git a/dist/img/chesspieces/wikipedia/bP.png b/dist/img/chesspieces/wikipedia/bP.png
new file mode 100644
index 00000000..afa0c9d4
Binary files /dev/null and b/dist/img/chesspieces/wikipedia/bP.png differ
diff --git a/dist/img/chesspieces/wikipedia/bQ.png b/dist/img/chesspieces/wikipedia/bQ.png
new file mode 100644
index 00000000..4649bb8b
Binary files /dev/null and b/dist/img/chesspieces/wikipedia/bQ.png differ
diff --git a/dist/img/chesspieces/wikipedia/bR.png b/dist/img/chesspieces/wikipedia/bR.png
new file mode 100644
index 00000000..c7eb127a
Binary files /dev/null and b/dist/img/chesspieces/wikipedia/bR.png differ
diff --git a/dist/img/chesspieces/wikipedia/wB.png b/dist/img/chesspieces/wikipedia/wB.png
new file mode 100644
index 00000000..70e0e140
Binary files /dev/null and b/dist/img/chesspieces/wikipedia/wB.png differ
diff --git a/dist/img/chesspieces/wikipedia/wK.png b/dist/img/chesspieces/wikipedia/wK.png
new file mode 100644
index 00000000..bbf56649
Binary files /dev/null and b/dist/img/chesspieces/wikipedia/wK.png differ
diff --git a/dist/img/chesspieces/wikipedia/wN.png b/dist/img/chesspieces/wikipedia/wN.png
new file mode 100644
index 00000000..237250c1
Binary files /dev/null and b/dist/img/chesspieces/wikipedia/wN.png differ
diff --git a/dist/img/chesspieces/wikipedia/wP.png b/dist/img/chesspieces/wikipedia/wP.png
new file mode 100644
index 00000000..5f9315c7
Binary files /dev/null and b/dist/img/chesspieces/wikipedia/wP.png differ
diff --git a/dist/img/chesspieces/wikipedia/wQ.png b/dist/img/chesspieces/wikipedia/wQ.png
new file mode 100644
index 00000000..c3dfc15e
Binary files /dev/null and b/dist/img/chesspieces/wikipedia/wQ.png differ
diff --git a/dist/img/chesspieces/wikipedia/wR.png b/dist/img/chesspieces/wikipedia/wR.png
new file mode 100644
index 00000000..cc697603
Binary files /dev/null and b/dist/img/chesspieces/wikipedia/wR.png differ
diff --git a/examples/1000-empty-board.example b/examples/1000-empty-board.example
index b065604c..19c7f32c 100644
--- a/examples/1000-empty-board.example
+++ b/examples/1000-empty-board.example
@@ -2,13 +2,13 @@
1000
===== Name
-Empty Board
-
+Empty Board
+
===== Description
Chessboard.js initializes to an empty board with no second argument.
-
+
===== HTML
-
+
===== JS
var board = Chessboard('myBoard')
diff --git a/examples/1001-start-position.example b/examples/1001-start-position.example
index d95b132b..d1ac9cee 100644
--- a/examples/1001-start-position.example
+++ b/examples/1001-start-position.example
@@ -1,15 +1,15 @@
===== id
1001
-===== Name
-Start Position
-
+===== Name
+Start Position
+
===== Description
Pass 'start' as the second argument to initialize
the board to the start position.
-
+
===== HTML
-
+
===== JS
var board = Chessboard('myBoard', 'start')
diff --git a/examples/1002-fen.example b/examples/1002-fen.example
index fa7718a2..a3776e05 100644
--- a/examples/1002-fen.example
+++ b/examples/1002-fen.example
@@ -1,16 +1,16 @@
===== id
1002
-===== Name
-FEN String
-
+===== Name
+FEN String
+
===== Description
Pass a FEN String as the second argument to
initialize the board to a specific position.
-
+
===== HTML
-
+
===== JS
var ruyLopez = 'r1bqkbnr/pppp1ppp/2n5/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R'
var board = Chessboard('myBoard', ruyLopez)
diff --git a/examples/1003-position-object.example b/examples/1003-position-object.example
index 6bfa237e..f5926f03 100644
--- a/examples/1003-position-object.example
+++ b/examples/1003-position-object.example
@@ -1,16 +1,16 @@
===== id
1003
-===== Name
-Position Object
-
-===== Description
-Pass a Position Object as the second argument to initialize the board to a specific position.
-
-===== HTML
-
-
-===== JS
+===== Name
+Position Object
+
+===== Description
+Pass a Position Object as the second argument to initialize the board to a specific position.
+
+===== HTML
+
+
+===== JS
var position = {
d6: 'bK',
d4: 'wP',
diff --git a/examples/1004-multiple-boards.example b/examples/1004-multiple-boards.example
index 54c45e6d..88e7ddd3 100644
--- a/examples/1004-multiple-boards.example
+++ b/examples/1004-multiple-boards.example
@@ -1,25 +1,25 @@
===== id
1004
-===== Name
-Multiple Boards
-
-===== Description
-You can have multiple boards on the same page.
-
+===== Name
+Multiple Boards
+
+===== Description
+You can have multiple boards on the same page.
+
===== CSS
.small-board {
display: inline-block;
margin-right: 5px;
width: 200px;
}
-
+
===== HTML
-
-===== JS
+
+===== JS
var board1 = Chessboard('board1', {
position: 'start',
showNotation: false
diff --git a/examples/2000-config-position.example b/examples/2000-config-position.example
index ed5ba568..81e0d661 100644
--- a/examples/2000-config-position.example
+++ b/examples/2000-config-position.example
@@ -1,17 +1,17 @@
===== id
2000
-===== Name
-Start Position
-
-===== Description
-Set the position property to 'start' to initialize the board to the start position.
-
-===== HTML
-
-
-===== JS
-var config = {
- position: 'start'
+===== Name
+Start Position
+
+===== Description
+Set the position property to 'start' to initialize the board to the start position.
+
+===== HTML
+
+
+===== JS
+var config = {
+ position: 'start'
}
-var board = Chessboard('myBoard', config)
+var board = Chessboard('myBoard', config)
diff --git a/examples/2001-config-orientation.example b/examples/2001-config-orientation.example
index 1ce4048b..e8ec9cdc 100644
--- a/examples/2001-config-orientation.example
+++ b/examples/2001-config-orientation.example
@@ -1,18 +1,18 @@
===== id
2001
-===== Name
-Orientation
-
-===== Description
-Use the orientation property to set board orientation.
-
-===== HTML
-
-
-===== JS
-var config = {
- orientation: 'black',
- position: 'start'
+===== Name
+Orientation
+
+===== Description
+Use the orientation property to set board orientation.
+
+===== HTML
+
+
+===== JS
+var config = {
+ orientation: 'black',
+ position: 'start'
}
-var board = Chessboard('myBoard', config)
+var board = Chessboard('myBoard', config)
diff --git a/examples/2002-config-notation.example b/examples/2002-config-notation.example
index a4585bed..c188ce44 100644
--- a/examples/2002-config-notation.example
+++ b/examples/2002-config-notation.example
@@ -1,18 +1,18 @@
===== id
2002
-===== Name
-Notation
-
-===== Description
-Use the showNotation property to turn board notation on or off.
-
-===== HTML
-
-
-===== JS
-var config = {
- showNotation: false,
- position: 'start'
+===== Name
+Notation
+
+===== Description
+Use the showNotation property to turn board notation on or off.
+
+===== HTML
+
+
+===== JS
+var config = {
+ showNotation: false,
+ position: 'start'
}
-var board = Chessboard('myBoard', config)
+var board = Chessboard('myBoard', config)
diff --git a/examples/2003-draggable-snapback.example b/examples/2003-draggable-snapback.example
index 194e8580..71ffedb9 100644
--- a/examples/2003-draggable-snapback.example
+++ b/examples/2003-draggable-snapback.example
@@ -1,19 +1,19 @@
===== id
2003
-===== Name
-Draggable Snapback
-
-===== Description
-Set draggable to true to allow drag and drop of pieces. Pieces will return to their original square when dropped off the board (ie: the default for dropOffBoard is 'snapback').
-
-===== HTML
-
-
-===== JS
-var config = {
- draggable: true,
- dropOffBoard: 'snapback', // this is the default
- position: 'start'
+===== Name
+Draggable Snapback
+
+===== Description
+Set draggable to true to allow drag and drop of pieces. Pieces will return to their original square when dropped off the board (ie: the default for dropOffBoard is 'snapback').
+
+===== HTML
+
+
+===== JS
+var config = {
+ draggable: true,
+ dropOffBoard: 'snapback', // this is the default
+ position: 'start'
}
-var board = Chessboard('myBoard', config)
+var board = Chessboard('myBoard', config)
diff --git a/examples/3000-get-position.example b/examples/3000-get-position.example
index 6aadc63d..eecf76fe 100644
--- a/examples/3000-get-position.example
+++ b/examples/3000-get-position.example
@@ -1,17 +1,17 @@
===== id
3000
-===== Name
-Get Position
-
-===== Description
-Use the position and fen methods to retrieve the current position of the board.
-
-===== HTML
-
+===== Name
+Get Position
+
+===== Description
+Use the position and fen methods to retrieve the current position of the board.
+
+===== HTML
+
-
-===== JS
+
+===== JS
var config = {
draggable: true,
position: 'start'
diff --git a/examples/3001-set-position.example b/examples/3001-set-position.example
index e999f107..3194466b 100644
--- a/examples/3001-set-position.example
+++ b/examples/3001-set-position.example
@@ -1,19 +1,19 @@
===== id
3001
-===== Name
-Set Position
-
-===== Description
-Use the start and position methods to set the board position.
-
-===== HTML
-
+===== Name
+Set Position
+
+===== Description
+Use the start and position methods to set the board position.
+
+===== HTML
+
-
-===== JS
+
+===== JS
var board = Chessboard('myBoard')
$('#setRuyLopezBtn').on('click', function () {
diff --git a/examples/3002-set-position-instant.example b/examples/3002-set-position-instant.example
index 08e5ad15..283e4d44 100644
--- a/examples/3002-set-position-instant.example
+++ b/examples/3002-set-position-instant.example
@@ -1,19 +1,19 @@
===== id
3002
-===== Name
-Set Position Instantly
-
-===== Description
-Pass false as the second argument to the start and position methods to set the board position instantly.
-
-===== HTML
-
+===== Name
+Set Position Instantly
+
+===== Description
+Pass false as the second argument to the start and position methods to set the board position instantly.
+
+===== HTML
+
-
-===== JS
+
+===== JS
var board = Chessboard('myBoard')
$('#setRuyLopezBtn').on('click', function () {
diff --git a/examples/3003-clear.example b/examples/3003-clear.example
index d1243b68..2effbb08 100644
--- a/examples/3003-clear.example
+++ b/examples/3003-clear.example
@@ -1,19 +1,19 @@
===== id
3003
-===== Name
-Clear Board
-
-===== Description
-Use the clear method to remove all the pieces from the board.
-
-===== HTML
-
+===== Name
+Clear Board
+
+===== Description
+Use the clear method to remove all the pieces from the board.
+
+===== HTML
+
-
-===== JS
+
+===== JS
var board = Chessboard('myBoard', 'start')
$('#clearBoardBtn').on('click', board.clear)
diff --git a/examples/3004-move-pieces.example b/examples/3004-move-pieces.example
index c380527d..89956e59 100644
--- a/examples/3004-move-pieces.example
+++ b/examples/3004-move-pieces.example
@@ -1,19 +1,19 @@
===== id
3004
-===== Name
-Move Pieces
-
-===== Description
-Use the move method to make one or more moves on the board.
-
-===== HTML
-
+===== Name
+Move Pieces
+
+===== Description
+Use the move method to make one or more moves on the board.
+
+===== HTML
+
-===== JS
+===== JS
var board = Chessboard('myBoard', 'start')
$('#move1Btn').on('click', function () {
diff --git a/examples/3005-orientation.example b/examples/3005-orientation.example
index b3221564..a64101f2 100644
--- a/examples/3005-orientation.example
+++ b/examples/3005-orientation.example
@@ -1,21 +1,21 @@
===== id
3005
-===== Name
-Orientation
-
-===== Description
-Use the orientation method to retrieve and set the orientation. Use the flip method to flip orientation.
-
-===== HTML
-
+===== Name
+Orientation
+
+===== Description
+Use the orientation method to retrieve and set the orientation. Use the flip method to flip orientation.
+
+===== HTML
+
-===== JS
+===== JS
var ruyLopez = 'r1bqkbnr/pppp1ppp/2n5/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R'
var board = Chessboard('myBoard', ruyLopez)
diff --git a/examples/4000-onchange.example b/examples/4000-onchange.example
index bc8c60da..ca06e63e 100644
--- a/examples/4000-onchange.example
+++ b/examples/4000-onchange.example
@@ -1,18 +1,18 @@
===== id
4000
-===== Name
-onChange
-
-===== Description
+===== Name
+onChange
+
+===== Description
The onChange event fires when the board position changes.
-
-===== HTML
+
+===== HTML
-===== JS
+===== JS
function onChange (oldPos, newPos) {
console.log('Position changed:')
console.log('Old position: ' + Chessboard.objToFen(oldPos))
diff --git a/examples/5004-piece-highlight1.example b/examples/5004-piece-highlight1.example
index 5195335f..2536f59f 100644
--- a/examples/5004-piece-highlight1.example
+++ b/examples/5004-piece-highlight1.example
@@ -1,23 +1,23 @@
===== id
5004
-===== Name
-Piece Highlighting 1
-
-===== Description
-Use CSS to show piece highlighting.
-
-===== HTML
-
-
-
+
+
===== JS
// NOTE: this example uses the chess.js library:
// https://github.com/jhlywa/chess.js
diff --git a/lib/chessboard.cjs b/lib/chessboard.cjs
new file mode 100644
index 00000000..11f3cf2a
--- /dev/null
+++ b/lib/chessboard.cjs
@@ -0,0 +1,16 @@
+// chessboard.js v@VERSION
+// https://github.com/oakmac/chessboardjs/
+//
+// Portion Copyright (c) 2019, Chris Oakman
+// Portion Copyright (c) 2022, Miika Tuominen
+// Released under the MIT license
+// https://github.com/oakmac/chessboardjs/blob/master/LICENSE.md
+
+const $ = require('jquery')
+module.exports = {
+ Chessboard: constructor,
+ fenToObj,
+ objToFen
+}
+
+INSERTSOURCE
diff --git a/lib/chessboard.css b/lib/chessboard.css
index 27ffdccb..f0a70197 100644
--- a/lib/chessboard.css
+++ b/lib/chessboard.css
@@ -1,54 +1,75 @@
/*! chessboard.js v@VERSION | (c) 2019 Chris Oakman | MIT License chessboardjs.com/license */
-
+
.clearfix-7da63 {
- clear: both;
-}
-
+ clear: both;
+}
+
.board-b72b1 {
border: 2px solid #404040;
box-sizing: content-box;
-}
-
+}
+
.square-55d63 {
- float: left;
- position: relative;
-
- /* disable any native browser highlighting */
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-}
-
+ float: left;
+ position: relative;
+
+ /* disable any native browser highlighting */
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
.white-1e1d7 {
- background-color: #f0d9b5;
- color: #b58863;
-}
-
+ background-color: #f0d9b5;
+ color: #b58863;
+}
+
.black-3c85d {
- background-color: #b58863;
- color: #f0d9b5;
-}
+ background-color: #b58863;
+ color: #f0d9b5;
+}
.highlight1-32417, .highlight2-9c5d2 {
- box-shadow: inset 0 0 3px 3px yellow;
-}
+ box-shadow: inset 0 0 3px 3px yellow;
+}
+
+.notation-322f9 {
+ cursor: default;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 14px;
+ position: absolute;
+}
+
+.alpha-d2270 {
+ bottom: 1px;
+ right: 3px;
+}
-.notation-322f9 {
- cursor: default;
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- font-size: 14px;
- position: absolute;
+.numeric-fc462 {
+ top: 2px;
+ left: 2px;
}
-.alpha-d2270 {
- bottom: 1px;
- right: 3px;
+.piece-wrapper {
+ z-index: 2;
}
-.numeric-fc462 {
- top: 2px;
- left: 2px;
+.spare-count {
+ border: 1px solid #ccc;
+ padding: 0 4px;
+ border-radius: 37%;
+ font-size: 12px;
+ position: absolute;
+ z-index: 1;
+ background: #fff;
+ right: 0;
+ bottom: 1px;
}
+
+.spare-pieces-7492f {
+ display: flex;
+ justify-content: center;
+}
\ No newline at end of file
diff --git a/lib/chessboard.js b/lib/chessboard.js
index ed27db18..07e90cbe 100644
--- a/lib/chessboard.js
+++ b/lib/chessboard.js
@@ -1,1823 +1,2015 @@
// chessboard.js v@VERSION
// https://github.com/oakmac/chessboardjs/
//
-// Copyright (c) 2019, Chris Oakman
+// Portion Copyright (c) 2019, Chris Oakman
+// Portion Copyright (c) 2022, Miika Tuominen
// Released under the MIT license
// https://github.com/oakmac/chessboardjs/blob/master/LICENSE.md
-
-// start anonymous scope
-;(function () {
- 'use strict'
-
- var $ = window['jQuery']
-
- // ---------------------------------------------------------------------------
- // Constants
- // ---------------------------------------------------------------------------
-
- var COLUMNS = 'abcdefgh'.split('')
- var DEFAULT_DRAG_THROTTLE_RATE = 20
- var ELLIPSIS = '…'
- var MINIMUM_JQUERY_VERSION = '1.8.3'
- var RUN_ASSERTS = true
- var START_FEN = 'rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR'
- var START_POSITION = fenToObj(START_FEN)
-
- // default animation speeds
- var DEFAULT_APPEAR_SPEED = 200
- var DEFAULT_MOVE_SPEED = 200
- var DEFAULT_SNAPBACK_SPEED = 60
- var DEFAULT_SNAP_SPEED = 30
- var DEFAULT_TRASH_SPEED = 100
-
- // use unique class names to prevent clashing with anything else on the page
- // and simplify selectors
- // NOTE: these should never change
- var CSS = {}
- CSS['alpha'] = 'alpha-d2270'
- CSS['black'] = 'black-3c85d'
- CSS['board'] = 'board-b72b1'
- CSS['chessboard'] = 'chessboard-63f37'
- CSS['clearfix'] = 'clearfix-7da63'
- CSS['highlight1'] = 'highlight1-32417'
- CSS['highlight2'] = 'highlight2-9c5d2'
- CSS['notation'] = 'notation-322f9'
- CSS['numeric'] = 'numeric-fc462'
- CSS['piece'] = 'piece-417db'
- CSS['row'] = 'row-5277c'
- CSS['sparePieces'] = 'spare-pieces-7492f'
- CSS['sparePiecesBottom'] = 'spare-pieces-bottom-ae20f'
- CSS['sparePiecesTop'] = 'spare-pieces-top-4028b'
- CSS['square'] = 'square-55d63'
- CSS['white'] = 'white-1e1d7'
-
- // ---------------------------------------------------------------------------
- // Misc Util Functions
- // ---------------------------------------------------------------------------
-
- function throttle (f, interval, scope) {
- var timeout = 0
- var shouldFire = false
- var args = []
-
- var handleTimeout = function () {
- timeout = 0
- if (shouldFire) {
- shouldFire = false
- fire()
- }
- }
- var fire = function () {
- timeout = window.setTimeout(handleTimeout, interval)
- f.apply(scope, args)
+// start anonymous scope
+
+// ---------------------------------------------------------------------------
+// Constants
+// ---------------------------------------------------------------------------
+
+const COLUMNS = 'abcdefgh'.split('')
+const DEFAULT_DRAG_THROTTLE_RATE = 20
+const ELLIPSIS = '…'
+const MINIMUM_JQUERY_VERSION = '1.8.3'
+const RUN_ASSERTS = true
+const START_FEN = 'rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR'
+const START_POSITION = fenToObj(START_FEN)
+
+// default animation speeds
+const DEFAULT_APPEAR_SPEED = 200
+const DEFAULT_MOVE_SPEED = 200
+const DEFAULT_SNAPBACK_SPEED = 60
+const DEFAULT_SNAP_SPEED = 30
+const DEFAULT_TRASH_SPEED = 100
+
+// use unique class names to prevent clashing with anything else on the page
+// and simplify selectors
+// NOTE: these should never change
+let CSS = {}
+CSS['alpha'] = 'alpha-d2270'
+CSS['black'] = 'black-3c85d'
+CSS['board'] = 'board-b72b1'
+CSS['chessboard'] = 'chessboard-63f37'
+CSS['clearfix'] = 'clearfix-7da63'
+CSS['highlight1'] = 'highlight1-32417'
+CSS['highlight2'] = 'highlight2-9c5d2'
+CSS['notation'] = 'notation-322f9'
+CSS['numeric'] = 'numeric-fc462'
+CSS['piece'] = 'piece-417db'
+CSS['row'] = 'row-5277c'
+CSS['sparePieces'] = 'spare-pieces-7492f'
+CSS['sparePiecesBottom'] = 'spare-pieces-bottom-ae20f'
+CSS['sparePiecesTop'] = 'spare-pieces-top-4028b'
+CSS['square'] = 'square-55d63'
+CSS['white'] = 'white-1e1d7'
+
+// ---------------------------------------------------------------------------
+// Misc Util Functions
+// ---------------------------------------------------------------------------
+
+function throttle (f, interval, scope) {
+ var timeout = 0
+ var shouldFire = false
+ var args = []
+
+ var handleTimeout = function () {
+ timeout = 0
+ if (shouldFire) {
+ shouldFire = false
+ fire()
}
+ }
- return function (_args) {
- args = arguments
- if (!timeout) {
- fire()
- } else {
- shouldFire = true
- }
+ var fire = function () {
+ timeout = window.setTimeout(handleTimeout, interval)
+ f.apply(scope, args)
+ }
+
+ return function (_args) {
+ args = arguments
+ if (!timeout) {
+ fire()
+ } else {
+ shouldFire = true
}
}
+}
- // function debounce (f, interval, scope) {
- // var timeout = 0
- // return function (_args) {
- // window.clearTimeout(timeout)
- // var args = arguments
- // timeout = window.setTimeout(function () {
- // f.apply(scope, args)
- // }, interval)
- // }
- // }
+// function debounce (f, interval, scope) {
+// var timeout = 0
+// return function (_args) {
+// window.clearTimeout(timeout)
+// var args = arguments
+// timeout = window.setTimeout(function () {
+// f.apply(scope, args)
+// }, interval)
+// }
+// }
+
+function uuid () {
+ return 'xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx'.replace(/x/g, function (c) {
+ var r = (Math.random() * 16) | 0
+ return r.toString(16)
+ })
+}
- function uuid () {
- return 'xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx'.replace(/x/g, function (c) {
- var r = (Math.random() * 16) | 0
- return r.toString(16)
- })
+function deepCopy (thing) {
+ return JSON.parse(JSON.stringify(thing))
+}
+
+function parseSemVer (version) {
+ var tmp = version.split('.')
+ return {
+ major: parseInt(tmp[0], 10),
+ minor: parseInt(tmp[1], 10),
+ patch: parseInt(tmp[2], 10)
+ }
+}
+
+// returns true if version is >= minimum
+function validSemanticVersion (version, minimum) {
+ version = parseSemVer(version)
+ minimum = parseSemVer(minimum)
+
+ var versionNum =
+ version.major * 100000 * 100000 + version.minor * 100000 + version.patch
+ var minimumNum =
+ minimum.major * 100000 * 100000 + minimum.minor * 100000 + minimum.patch
+
+ return versionNum >= minimumNum
+}
+
+function interpolateTemplate (str, obj) {
+ for (var key in obj) {
+ if (!obj.hasOwnProperty(key)) continue
+ var keyTemplateStr = '{' + key + '}'
+ var value = obj[key]
+ while (str.indexOf(keyTemplateStr) !== -1) {
+ str = str.replace(keyTemplateStr, value)
+ }
}
+ return str
+}
+
+if (RUN_ASSERTS) {
+ console.assert(interpolateTemplate('abc', { a: 'x' }) === 'abc')
+ console.assert(interpolateTemplate('{a}bc', {}) === '{a}bc')
+ console.assert(interpolateTemplate('{a}bc', { p: 'q' }) === '{a}bc')
+ console.assert(interpolateTemplate('{a}bc', { a: 'x' }) === 'xbc')
+ console.assert(interpolateTemplate('{a}bc{a}bc', { a: 'x' }) === 'xbcxbc')
+ console.assert(interpolateTemplate('{a}{a}{b}', { a: 'x', b: 'y' }) === 'xxy')
+}
+
+// ---------------------------------------------------------------------------
+// Predicates
+// ---------------------------------------------------------------------------
+
+function isString (s) {
+ return typeof s === 'string'
+}
+
+function isFunction (f) {
+ return typeof f === 'function'
+}
+
+function isInteger (n) {
+ return typeof n === 'number' && isFinite(n) && Math.floor(n) === n
+}
- function deepCopy (thing) {
- return JSON.parse(JSON.stringify(thing))
+function validAnimationSpeed (speed) {
+ if (speed === 'fast' || speed === 'slow') return true
+ if (!isInteger(speed)) return false
+ return speed >= 0
+}
+
+function validThrottleRate (rate) {
+ return isInteger(rate) && rate >= 1
+}
+
+function validMove (move) {
+ // move should be a string
+ if (!isString(move)) return false
+
+ // move should be in the form of "e2-e4", "f6-d5"
+ var squares = move.split('-')
+ if (squares.length !== 2) return false
+
+ return validSquare(squares[0]) && validSquare(squares[1])
+}
+
+function validSquare (square) {
+ return isString(square) && square.search(/^[a-h][1-8]$/) !== -1
+}
+
+if (RUN_ASSERTS) {
+ console.assert(validSquare('a1'))
+ console.assert(validSquare('e2'))
+ console.assert(!validSquare('D2'))
+ console.assert(!validSquare('g9'))
+ console.assert(!validSquare('a'))
+ console.assert(!validSquare(true))
+ console.assert(!validSquare(null))
+ console.assert(!validSquare({}))
+}
+
+function validPieceCode (code) {
+ return isString(code) && code.search(/^[bw][KQRNBP]$/) !== -1
+}
+
+if (RUN_ASSERTS) {
+ console.assert(validPieceCode('bP'))
+ console.assert(validPieceCode('bK'))
+ console.assert(validPieceCode('wK'))
+ console.assert(validPieceCode('wR'))
+ console.assert(!validPieceCode('WR'))
+ console.assert(!validPieceCode('Wr'))
+ console.assert(!validPieceCode('a'))
+ console.assert(!validPieceCode(true))
+ console.assert(!validPieceCode(null))
+ console.assert(!validPieceCode({}))
+}
+
+function validFen (fen) {
+ if (!isString(fen)) return false
+
+ // cut off any move, castling, etc info from the end
+ // we're only interested in position information
+ fen = fen.replace(/ .+$/, '')
+
+ // expand the empty square numbers to just 1s
+ fen = expandFenEmptySquares(fen)
+
+ // FEN should be 8 sections separated by slashes
+ var chunks = fen.split('/')
+ if (chunks.length !== 8) return false
+
+ // check each section
+ for (var i = 0; i < 8; i++) {
+ if (chunks[i].length !== 8 || chunks[i].search(/[^kqrnbpKQRNBP1]/) !== -1) {
+ return false
+ }
}
- function parseSemVer (version) {
- var tmp = version.split('.')
- return {
- major: parseInt(tmp[0], 10),
- minor: parseInt(tmp[1], 10),
- patch: parseInt(tmp[2], 10)
+ return true
+}
+
+if (RUN_ASSERTS) {
+ console.assert(validFen(START_FEN))
+ console.assert(validFen('8/8/8/8/8/8/8/8'))
+ console.assert(
+ validFen('r1bqkbnr/pppp1ppp/2n5/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R')
+ )
+ console.assert(
+ validFen('3r3r/1p4pp/2nb1k2/pP3p2/8/PB2PN2/p4PPP/R4RK1 b - - 0 1')
+ )
+ console.assert(
+ !validFen('3r3z/1p4pp/2nb1k2/pP3p2/8/PB2PN2/p4PPP/R4RK1 b - - 0 1')
+ )
+ console.assert(!validFen('anbqkbnr/8/8/8/8/8/PPPPPPPP/8'))
+ console.assert(!validFen('rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/'))
+ console.assert(!validFen('rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBN'))
+ console.assert(!validFen('888888/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR'))
+ console.assert(!validFen('888888/pppppppp/74/8/8/8/PPPPPPPP/RNBQKBNR'))
+ console.assert(!validFen({}))
+}
+
+function validPositionObject (pos) {
+ if (!$.isPlainObject(pos)) return false
+
+ for (var i in pos) {
+ if (!pos.hasOwnProperty(i)) continue
+
+ if (!validSquare(i) || !validPieceCode(pos[i])) {
+ return false
}
}
- // returns true if version is >= minimum
- function validSemanticVersion (version, minimum) {
- version = parseSemVer(version)
- minimum = parseSemVer(minimum)
+ return true
+}
+
+if (RUN_ASSERTS) {
+ console.assert(validPositionObject(START_POSITION))
+ console.assert(validPositionObject({}))
+ console.assert(validPositionObject({ e2: 'wP' }))
+ console.assert(validPositionObject({ e2: 'wP', d2: 'wP' }))
+ console.assert(!validPositionObject({ e2: 'BP' }))
+ console.assert(!validPositionObject({ y2: 'wP' }))
+ console.assert(!validPositionObject(null))
+ console.assert(!validPositionObject('start'))
+ console.assert(!validPositionObject(START_FEN))
+}
+
+function isTouchDevice () {
+ return 'ontouchstart' in document.documentElement
+}
+
+function validJQueryVersion () {
+ return (
+ typeof $ &&
+ $.fn &&
+ $.fn.jquery &&
+ validSemanticVersion($.fn.jquery, MINIMUM_JQUERY_VERSION)
+ )
+}
+
+// ---------------------------------------------------------------------------
+// Chess Util Functions
+// ---------------------------------------------------------------------------
+
+// convert FEN piece code to bP, wK, etc
+function fenToPieceCode (piece) {
+ // black piece
+ if (piece.toLowerCase() === piece) {
+ return 'b' + piece.toUpperCase()
+ }
+
+ // white piece
+ return 'w' + piece.toUpperCase()
+}
+
+// convert bP, wK, etc code to FEN structure
+function pieceCodeToFen (piece) {
+ var pieceCodeLetters = piece.split('')
+
+ // white piece
+ if (pieceCodeLetters[0] === 'w') {
+ return pieceCodeLetters[1].toUpperCase()
+ }
+
+ // black piece
+ return pieceCodeLetters[1].toLowerCase()
+}
- var versionNum = (version.major * 100000 * 100000) +
- (version.minor * 100000) +
- version.patch
- var minimumNum = (minimum.major * 100000 * 100000) +
- (minimum.minor * 100000) +
- minimum.patch
+// convert FEN string to position object
+// returns false if the FEN string is invalid
+function fenToObj (fen) {
+ if (!validFen(fen)) return false
+
+ // cut off any move, castling, etc info from the end
+ // we're only interested in position information
+ fen = fen.replace(/ .+$/, '')
+
+ var rows = fen.split('/')
+ var position = {}
+
+ var currentRow = 8
+ for (var i = 0; i < 8; i++) {
+ var row = rows[i].split('')
+ var colIdx = 0
+
+ // loop through each character in the FEN section
+ for (var j = 0; j < row.length; j++) {
+ // number / empty squares
+ if (row[j].search(/[1-8]/) !== -1) {
+ var numEmptySquares = parseInt(row[j], 10)
+ colIdx = colIdx + numEmptySquares
+ } else {
+ // piece
+ var square = COLUMNS[colIdx] + currentRow
+ position[square] = fenToPieceCode(row[j])
+ colIdx = colIdx + 1
+ }
+ }
- return versionNum >= minimumNum
+ currentRow = currentRow - 1
}
- function interpolateTemplate (str, obj) {
- for (var key in obj) {
- if (!obj.hasOwnProperty(key)) continue
- var keyTemplateStr = '{' + key + '}'
- var value = obj[key]
- while (str.indexOf(keyTemplateStr) !== -1) {
- str = str.replace(keyTemplateStr, value)
+ return position
+}
+
+// position object to FEN string
+// returns false if the obj is not a valid position object
+function objToFen (obj) {
+ if (!validPositionObject(obj)) return false
+
+ var fen = ''
+
+ var currentRow = 8
+ for (var i = 0; i < 8; i++) {
+ for (var j = 0; j < 8; j++) {
+ var square = COLUMNS[j] + currentRow
+
+ // piece exists
+ if (obj.hasOwnProperty(square)) {
+ fen = fen + pieceCodeToFen(obj[square])
+ } else {
+ // empty space
+ fen = fen + '1'
}
}
- return str
+
+ if (i !== 7) {
+ fen = fen + '/'
+ }
+
+ currentRow = currentRow - 1
}
- if (RUN_ASSERTS) {
- console.assert(interpolateTemplate('abc', {a: 'x'}) === 'abc')
- console.assert(interpolateTemplate('{a}bc', {}) === '{a}bc')
- console.assert(interpolateTemplate('{a}bc', {p: 'q'}) === '{a}bc')
- console.assert(interpolateTemplate('{a}bc', {a: 'x'}) === 'xbc')
- console.assert(interpolateTemplate('{a}bc{a}bc', {a: 'x'}) === 'xbcxbc')
- console.assert(interpolateTemplate('{a}{a}{b}', {a: 'x', b: 'y'}) === 'xxy')
+ // squeeze the empty numbers together
+ fen = squeezeFenEmptySquares(fen)
+
+ return fen
+}
+
+if (RUN_ASSERTS) {
+ console.assert(objToFen(START_POSITION) === START_FEN)
+ console.assert(objToFen({}) === '8/8/8/8/8/8/8/8')
+ console.assert(objToFen({ a2: 'wP', b2: 'bP' }) === '8/8/8/8/8/8/Pp6/8')
+}
+
+function squeezeFenEmptySquares (fen) {
+ return fen.replace(/1{2,8}/g, ({ length }) => length)
+}
+
+function expandFenEmptySquares (fen) {
+ return fen.replace(/[2-8]/g, (length) => '1'.repeat(Number(length)))
+}
+
+// returns the distance between two squares
+function squareDistance (squareA, squareB) {
+ var squareAArray = squareA.split('')
+ var squareAx = COLUMNS.indexOf(squareAArray[0]) + 1
+ var squareAy = parseInt(squareAArray[1], 10)
+
+ var squareBArray = squareB.split('')
+ var squareBx = COLUMNS.indexOf(squareBArray[0]) + 1
+ var squareBy = parseInt(squareBArray[1], 10)
+
+ var xDelta = Math.abs(squareAx - squareBx)
+ var yDelta = Math.abs(squareAy - squareBy)
+
+ if (xDelta >= yDelta) return xDelta
+ return yDelta
+}
+
+// returns the square of the closest instance of piece
+// returns false if no instance of piece is found in position
+function findClosestPiece (position, piece, square) {
+ // create array of closest squares from square
+ var closestSquares = createRadius(square)
+
+ // search through the position in order of distance for the piece
+ for (var i = 0; i < closestSquares.length; i++) {
+ var s = closestSquares[i]
+
+ if (position.hasOwnProperty(s) && position[s] === piece) {
+ return s
+ }
}
- // ---------------------------------------------------------------------------
- // Predicates
- // ---------------------------------------------------------------------------
+ return false
+}
+
+// returns an array of closest squares from square
+function createRadius (square) {
+ var squares = []
+
+ // calculate distance of all squares
+ for (var i = 0; i < 8; i++) {
+ for (var j = 0; j < 8; j++) {
+ var s = COLUMNS[i] + (j + 1)
+
+ // skip the square we're starting from
+ if (square === s) continue
- function isString (s) {
- return typeof s === 'string'
+ squares.push({
+ square: s,
+ distance: squareDistance(square, s)
+ })
+ }
}
- function isFunction (f) {
- return typeof f === 'function'
+ // sort by distance
+ squares.sort(function (a, b) {
+ return a.distance - b.distance
+ })
+
+ // just return the square code
+ var surroundingSquares = []
+ for (i = 0; i < squares.length; i++) {
+ surroundingSquares.push(squares[i].square)
}
- function isInteger (n) {
- return typeof n === 'number' &&
- isFinite(n) &&
- Math.floor(n) === n
+ return surroundingSquares
+}
+
+// given a position and a set of moves, return a new position
+// with the moves executed
+function calculatePositionFromMoves (position, moves) {
+ var newPosition = deepCopy(position)
+
+ for (var i in moves) {
+ if (!moves.hasOwnProperty(i)) continue
+
+ // skip the move if the position doesn't have a piece on the source square
+ if (!newPosition.hasOwnProperty(i)) continue
+
+ var piece = newPosition[i]
+ delete newPosition[i]
+ newPosition[moves[i]] = piece
}
- function validAnimationSpeed (speed) {
- if (speed === 'fast' || speed === 'slow') return true
- if (!isInteger(speed)) return false
- return speed >= 0
+ return newPosition
+}
+
+// TODO: add some asserts here for calculatePositionFromMoves
+
+// ---------------------------------------------------------------------------
+// HTML
+// ---------------------------------------------------------------------------
+
+function buildContainerHTML (hasSparePieces) {
+ var html = ''
+
+ if (hasSparePieces) {
+ html += '
'
}
- function validThrottleRate (rate) {
- return isInteger(rate) &&
- rate >= 1
+ html += '
'
+
+ if (hasSparePieces) {
+ html += '
'
}
- function validMove (move) {
- // move should be a string
- if (!isString(move)) return false
-
- // move should be in the form of "e2-e4", "f6-d5"
- var squares = move.split('-')
- if (squares.length !== 2) return false
-
- return validSquare(squares[0]) && validSquare(squares[1])
- }
-
- function validSquare (square) {
- return isString(square) && square.search(/^[a-h][1-8]$/) !== -1
- }
+ html += '
'
+
+ return interpolateTemplate(html, CSS)
+}
- if (RUN_ASSERTS) {
- console.assert(validSquare('a1'))
- console.assert(validSquare('e2'))
- console.assert(!validSquare('D2'))
- console.assert(!validSquare('g9'))
- console.assert(!validSquare('a'))
- console.assert(!validSquare(true))
- console.assert(!validSquare(null))
- console.assert(!validSquare({}))
+// ---------------------------------------------------------------------------
+// Config
+// ---------------------------------------------------------------------------
+
+function expandConfigArgumentShorthand (config) {
+ if (config === 'start') {
+ config = { position: deepCopy(START_POSITION) }
+ } else if (validFen(config)) {
+ config = { position: fenToObj(config) }
+ } else if (validPositionObject(config)) {
+ config = { position: deepCopy(config) }
}
- function validPieceCode (code) {
- return isString(code) && code.search(/^[bw][KQRNBP]$/) !== -1
- }
+ // config must be an object
+ if (!$.isPlainObject(config)) config = {}
+
+ return config
+}
+
+// validate config / set default options
+function expandConfig (config) {
+ // default for orientation is white
+ if (config.orientation !== 'black') config.orientation = 'white'
+
+ // default for showNotation is true
+ if (config.showNotation !== false) config.showNotation = true
- if (RUN_ASSERTS) {
- console.assert(validPieceCode('bP'))
- console.assert(validPieceCode('bK'))
- console.assert(validPieceCode('wK'))
- console.assert(validPieceCode('wR'))
- console.assert(!validPieceCode('WR'))
- console.assert(!validPieceCode('Wr'))
- console.assert(!validPieceCode('a'))
- console.assert(!validPieceCode(true))
- console.assert(!validPieceCode(null))
- console.assert(!validPieceCode({}))
+ // default for draggable is false
+ if (config.draggable !== true) config.draggable = false
+
+ // default for dropOffBoard is 'snapback'
+ if (config.dropOffBoard !== 'trash') config.dropOffBoard = 'snapback'
+
+ // default for sparePieces is false
+ if (config.sparePieces !== true) config.sparePieces = false
+
+ // draggable must be true if sparePieces is enabled
+ if (config.sparePieces) config.draggable = true
+
+ // default piece theme is wikipedia
+ if (
+ !config.hasOwnProperty('pieceTheme') ||
+ (!isString(config.pieceTheme) && !isFunction(config.pieceTheme))
+ ) {
+ config.pieceTheme =
+ 'https://unpkg.com/@discape/chessboardjs/dist/img/chesspieces/wikipedia/{piece}.png'
+ }
+
+ // animation speeds
+ if (!validAnimationSpeed(config.appearSpeed)) {
+ config.appearSpeed = DEFAULT_APPEAR_SPEED
+ }
+ if (!validAnimationSpeed(config.moveSpeed)) {
+ config.moveSpeed = DEFAULT_MOVE_SPEED
+ }
+ if (!validAnimationSpeed(config.snapbackSpeed)) {
+ config.snapbackSpeed = DEFAULT_SNAPBACK_SPEED
+ }
+ if (!validAnimationSpeed(config.snapSpeed)) {
+ config.snapSpeed = DEFAULT_SNAP_SPEED
+ }
+ if (!validAnimationSpeed(config.trashSpeed)) {
+ config.trashSpeed = DEFAULT_TRASH_SPEED
}
- function validFen (fen) {
- if (!isString(fen)) return false
-
- // cut off any move, castling, etc info from the end
- // we're only interested in position information
- fen = fen.replace(/ .+$/, '')
+ // throttle rate
+ if (!validThrottleRate(config.dragThrottleRate)) {
+ config.dragThrottleRate = DEFAULT_DRAG_THROTTLE_RATE
+ }
- // expand the empty square numbers to just 1s
- fen = expandFenEmptySquares(fen)
+ return config
+}
- // FEN should be 8 sections separated by slashes
- var chunks = fen.split('/')
- if (chunks.length !== 8) return false
+// ---------------------------------------------------------------------------
+// Dependencies
+// ---------------------------------------------------------------------------
+
+// check for a compatible version of jQuery
+function checkJQuery () {
+ if (!validJQueryVersion()) {
+ var errorMsg =
+ 'Chessboard Error 1005: Unable to find a valid version of jQuery. ' +
+ 'Please include jQuery ' +
+ MINIMUM_JQUERY_VERSION +
+ ' or higher on the page' +
+ '\n\n' +
+ 'Exiting' +
+ ELLIPSIS
+ window.alert(errorMsg)
+ return false
+ }
- // check each section
- for (var i = 0; i < 8; i++) {
- if (chunks[i].length !== 8 ||
- chunks[i].search(/[^kqrnbpKQRNBP1]/) !== -1) {
- return false
- }
- }
-
- return true
- }
-
- if (RUN_ASSERTS) {
- console.assert(validFen(START_FEN))
- console.assert(validFen('8/8/8/8/8/8/8/8'))
- console.assert(validFen('r1bqkbnr/pppp1ppp/2n5/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R'))
- console.assert(validFen('3r3r/1p4pp/2nb1k2/pP3p2/8/PB2PN2/p4PPP/R4RK1 b - - 0 1'))
- console.assert(!validFen('3r3z/1p4pp/2nb1k2/pP3p2/8/PB2PN2/p4PPP/R4RK1 b - - 0 1'))
- console.assert(!validFen('anbqkbnr/8/8/8/8/8/PPPPPPPP/8'))
- console.assert(!validFen('rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/'))
- console.assert(!validFen('rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBN'))
- console.assert(!validFen('888888/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR'))
- console.assert(!validFen('888888/pppppppp/74/8/8/8/PPPPPPPP/RNBQKBNR'))
- console.assert(!validFen({}))
- }
-
- function validPositionObject (pos) {
- if (!$.isPlainObject(pos)) return false
-
- for (var i in pos) {
- if (!pos.hasOwnProperty(i)) continue
-
- if (!validSquare(i) || !validPieceCode(pos[i])) {
- return false
- }
- }
-
- return true
- }
-
- if (RUN_ASSERTS) {
- console.assert(validPositionObject(START_POSITION))
- console.assert(validPositionObject({}))
- console.assert(validPositionObject({e2: 'wP'}))
- console.assert(validPositionObject({e2: 'wP', d2: 'wP'}))
- console.assert(!validPositionObject({e2: 'BP'}))
- console.assert(!validPositionObject({y2: 'wP'}))
- console.assert(!validPositionObject(null))
- console.assert(!validPositionObject('start'))
- console.assert(!validPositionObject(START_FEN))
- }
-
- function isTouchDevice () {
- return 'ontouchstart' in document.documentElement
- }
-
- function validJQueryVersion () {
- return typeof window.$ &&
- $.fn &&
- $.fn.jquery &&
- validSemanticVersion($.fn.jquery, MINIMUM_JQUERY_VERSION)
- }
-
- // ---------------------------------------------------------------------------
- // Chess Util Functions
- // ---------------------------------------------------------------------------
-
- // convert FEN piece code to bP, wK, etc
- function fenToPieceCode (piece) {
- // black piece
- if (piece.toLowerCase() === piece) {
- return 'b' + piece.toUpperCase()
- }
-
- // white piece
- return 'w' + piece.toUpperCase()
- }
-
- // convert bP, wK, etc code to FEN structure
- function pieceCodeToFen (piece) {
- var pieceCodeLetters = piece.split('')
-
- // white piece
- if (pieceCodeLetters[0] === 'w') {
- return pieceCodeLetters[1].toUpperCase()
- }
-
- // black piece
- return pieceCodeLetters[1].toLowerCase()
- }
-
- // convert FEN string to position object
- // returns false if the FEN string is invalid
- function fenToObj (fen) {
- if (!validFen(fen)) return false
-
- // cut off any move, castling, etc info from the end
- // we're only interested in position information
- fen = fen.replace(/ .+$/, '')
-
- var rows = fen.split('/')
- var position = {}
-
- var currentRow = 8
- for (var i = 0; i < 8; i++) {
- var row = rows[i].split('')
- var colIdx = 0
-
- // loop through each character in the FEN section
- for (var j = 0; j < row.length; j++) {
- // number / empty squares
- if (row[j].search(/[1-8]/) !== -1) {
- var numEmptySquares = parseInt(row[j], 10)
- colIdx = colIdx + numEmptySquares
- } else {
- // piece
- var square = COLUMNS[colIdx] + currentRow
- position[square] = fenToPieceCode(row[j])
- colIdx = colIdx + 1
- }
- }
-
- currentRow = currentRow - 1
- }
-
- return position
- }
-
- // position object to FEN string
- // returns false if the obj is not a valid position object
- function objToFen (obj) {
- if (!validPositionObject(obj)) return false
-
- var fen = ''
-
- var currentRow = 8
- for (var i = 0; i < 8; i++) {
- for (var j = 0; j < 8; j++) {
- var square = COLUMNS[j] + currentRow
-
- // piece exists
- if (obj.hasOwnProperty(square)) {
- fen = fen + pieceCodeToFen(obj[square])
- } else {
- // empty space
- fen = fen + '1'
- }
- }
-
- if (i !== 7) {
- fen = fen + '/'
- }
-
- currentRow = currentRow - 1
- }
-
- // squeeze the empty numbers together
- fen = squeezeFenEmptySquares(fen)
-
- return fen
- }
-
- if (RUN_ASSERTS) {
- console.assert(objToFen(START_POSITION) === START_FEN)
- console.assert(objToFen({}) === '8/8/8/8/8/8/8/8')
- console.assert(objToFen({a2: 'wP', 'b2': 'bP'}) === '8/8/8/8/8/8/Pp6/8')
- }
-
- function squeezeFenEmptySquares (fen) {
- return fen.replace(/11111111/g, '8')
- .replace(/1111111/g, '7')
- .replace(/111111/g, '6')
- .replace(/11111/g, '5')
- .replace(/1111/g, '4')
- .replace(/111/g, '3')
- .replace(/11/g, '2')
- }
-
- function expandFenEmptySquares (fen) {
- return fen.replace(/8/g, '11111111')
- .replace(/7/g, '1111111')
- .replace(/6/g, '111111')
- .replace(/5/g, '11111')
- .replace(/4/g, '1111')
- .replace(/3/g, '111')
- .replace(/2/g, '11')
- }
-
- // returns the distance between two squares
- function squareDistance (squareA, squareB) {
- var squareAArray = squareA.split('')
- var squareAx = COLUMNS.indexOf(squareAArray[0]) + 1
- var squareAy = parseInt(squareAArray[1], 10)
-
- var squareBArray = squareB.split('')
- var squareBx = COLUMNS.indexOf(squareBArray[0]) + 1
- var squareBy = parseInt(squareBArray[1], 10)
-
- var xDelta = Math.abs(squareAx - squareBx)
- var yDelta = Math.abs(squareAy - squareBy)
-
- if (xDelta >= yDelta) return xDelta
- return yDelta
- }
-
- // returns the square of the closest instance of piece
- // returns false if no instance of piece is found in position
- function findClosestPiece (position, piece, square) {
- // create array of closest squares from square
- var closestSquares = createRadius(square)
-
- // search through the position in order of distance for the piece
- for (var i = 0; i < closestSquares.length; i++) {
- var s = closestSquares[i]
-
- if (position.hasOwnProperty(s) && position[s] === piece) {
- return s
- }
- }
+ return true
+}
+// return either boolean false or the $container element
+function checkContainerArg (containerElOrString) {
+ if (containerElOrString === '') {
+ var errorMsg1 =
+ 'Chessboard Error 1001: ' +
+ 'The first argument to Chessboard() cannot be an empty string.' +
+ '\n\n' +
+ 'Exiting' +
+ ELLIPSIS
+ window.alert(errorMsg1)
return false
}
- // returns an array of closest squares from square
- function createRadius (square) {
- var squares = []
+ // convert containerEl to query selector if it is a string
+ if (isString(containerElOrString) && containerElOrString.charAt(0) !== '#') {
+ containerElOrString = '#' + containerElOrString
+ }
- // calculate distance of all squares
- for (var i = 0; i < 8; i++) {
- for (var j = 0; j < 8; j++) {
- var s = COLUMNS[i] + (j + 1)
+ // containerEl must be something that becomes a jQuery collection of size 1
+ var $container = $(containerElOrString)
+ if ($container.length !== 1) {
+ var errorMsg2 =
+ 'Chessboard Error 1003: ' +
+ 'The first argument to Chessboard() must be the ID of a DOM node, ' +
+ 'an ID query selector, or a single DOM node.' +
+ '\n\n' +
+ 'Exiting' +
+ ELLIPSIS
+ window.alert(errorMsg2)
+ return false
+ }
- // skip the square we're starting from
- if (square === s) continue
+ return $container
+}
- squares.push({
- square: s,
- distance: squareDistance(square, s)
- })
- }
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+
+function constructor (containerElOrString, config) {
+ // first things first: check basic dependencies
+ if (!checkJQuery()) return null
+ var $container = checkContainerArg(containerElOrString)
+ if (!$container) return null
+
+ // ensure the config object is what we expect
+ config = expandConfigArgumentShorthand(config)
+ config = expandConfig(config)
+
+ // DOM elements
+ var $board = null
+ var $draggedPiece = null
+ var $sparePiecesTop = null
+ var $sparePiecesBottom = null
+
+ // constructor return object
+ var widget = {}
+
+ // -------------------------------------------------------------------------
+ // Stateful
+ // -------------------------------------------------------------------------
+
+ var boardBorderSize = 2
+ var currentOrientation = 'white'
+ var currentPosition = {}
+ var draggedPiece = null
+ var draggedPieceLocation = null
+ var draggedPieceSource = null
+ var isDragging = false
+ var sparePiecesElsIds = {}
+ var sparePiecesCountElsIds = {}
+ var squareElsIds = {}
+ var squareElsOffsets = {}
+ var squareSize = 16
+
+ // -------------------------------------------------------------------------
+ // Validation / Errors
+ // -------------------------------------------------------------------------
+
+ function validSpareCounts (counts) {
+ if (
+ typeof counts !== 'object' ||
+ Object.getOwnPropertyNames(counts).length === 0
+ ) {
+ return false
}
- // sort by distance
- squares.sort(function (a, b) {
- return a.distance - b.distance
+ for (var i in counts) {
+ if (isNaN(counts[i])) {
+ return false
+ }
+ }
+ ;['w', 'b'].forEach(function (color) {
+ ;['K', 'Q', 'R', 'B', 'N', 'P'].forEach(function (kind) {
+ if (!counts.hasOwnProperty(color + kind)) {
+ counts[color + kind] = 0
+ }
+ })
})
+ return true
+ }
+
+ function error (code, msg, obj) {
+ // do nothing if showErrors is not set
+ if (
+ config.hasOwnProperty('showErrors') !== true ||
+ config.showErrors === false
+ ) {
+ return
+ }
+
+ var errorText = 'Chessboard Error ' + code + ': ' + msg
+
+ // print to console
+ if (
+ config.showErrors === 'console' &&
+ typeof console === 'object' &&
+ typeof console.log === 'function'
+ ) {
+ console.log(errorText)
+ if (arguments.length >= 2) {
+ console.log(obj)
+ }
+ return
+ }
- // just return the square code
- var surroundingSquares = []
- for (i = 0; i < squares.length; i++) {
- surroundingSquares.push(squares[i].square)
+ // alert errors
+ if (config.showErrors === 'alert') {
+ if (obj) {
+ errorText += '\n\n' + JSON.stringify(obj)
+ }
+ window.alert(errorText)
+ return
}
- return surroundingSquares
+ // custom function
+ if (isFunction(config.showErrors)) {
+ config.showErrors(code, msg, obj)
+ }
}
- // given a position and a set of moves, return a new position
- // with the moves executed
- function calculatePositionFromMoves (position, moves) {
- var newPosition = deepCopy(position)
+ function setInitialState () {
+ currentOrientation = config.orientation
+
+ // make sure position is valid
+ if (config.hasOwnProperty('position')) {
+ if (config.position === 'start') {
+ currentPosition = deepCopy(START_POSITION)
+ } else if (validFen(config.position)) {
+ currentPosition = fenToObj(config.position)
+ } else if (validPositionObject(config.position)) {
+ currentPosition = deepCopy(config.position)
+ } else {
+ error(7263, 'Invalid value passed to config.position.', config.position)
+ }
+ }
- for (var i in moves) {
- if (!moves.hasOwnProperty(i)) continue
+ // spare piece counts
+ if (config.hasOwnProperty('spareCounts') === true) {
+ if (config.spareCounts === 'default') {
+ config.spareCounts = {
+ wK: 0,
+ wQ: 0,
+ wR: 0,
+ wB: 0,
+ wN: 0,
+ wP: 0,
+ bK: 0,
+ bQ: 0,
+ bR: 0,
+ bB: 0,
+ bN: 0,
+ bP: 0
+ }
+ } else if (!validSpareCounts(config.spareCounts)) {
+ config.spareCounts = false
+ }
+ } else {
+ config.spareCounts = false
+ }
+ }
+
+ // -------------------------------------------------------------------------
+ // DOM Misc
+ // -------------------------------------------------------------------------
+
+ // calculates square size based on the width of the container
+ // got a little CSS black magic here, so let me explain:
+ // get the width of the container element (could be anything), reduce by 1 for
+ // fudge factor, and then keep reducing until we find an exact mod 8 for
+ // our square size
+ function calculateSquareSize () {
+ var containerWidth = parseInt($container.width(), 10)
+
+ // defensive, prevent infinite loop
+ if (!containerWidth || containerWidth <= 0) {
+ return 0
+ }
- // skip the move if the position doesn't have a piece on the source square
- if (!newPosition.hasOwnProperty(i)) continue
+ // pad one pixel
+ var boardWidth = containerWidth - 1
- var piece = newPosition[i]
- delete newPosition[i]
- newPosition[moves[i]] = piece
+ while (boardWidth % 8 !== 0 && boardWidth > 0) {
+ boardWidth = boardWidth - 1
}
- return newPosition
+ return boardWidth / 8
}
- // TODO: add some asserts here for calculatePositionFromMoves
+ // create random IDs for elements
+ function createElIds () {
+ // squares on the board
+ for (var i = 0; i < COLUMNS.length; i++) {
+ for (var j = 1; j <= 8; j++) {
+ var square = COLUMNS[i] + j
+ squareElsIds[square] = square + '-' + uuid()
+ }
+ }
- // ---------------------------------------------------------------------------
- // HTML
- // ---------------------------------------------------------------------------
+ // spare pieces
+ var pieces = 'KQRNBP'.split('')
+ for (i = 0; i < pieces.length; i++) {
+ var whitePiece = 'w' + pieces[i]
+ var blackPiece = 'b' + pieces[i]
+ sparePiecesElsIds[whitePiece] = whitePiece + '-' + uuid()
+ sparePiecesElsIds[blackPiece] = blackPiece + '-' + uuid()
+ sparePiecesCountElsIds[whitePiece] = 'count' + whitePiece + ' - ' + uuid()
+ sparePiecesCountElsIds[blackPiece] = 'count' + blackPiece + ' - ' + uuid()
+ }
+ }
- function buildContainerHTML (hasSparePieces) {
- var html = ''
+ // -------------------------------------------------------------------------
+ // Markup Building
+ // -------------------------------------------------------------------------
- if (hasSparePieces) {
- html += '
'
+ function buildBoardHTML (orientation) {
+ if (orientation !== 'black') {
+ orientation = 'white'
}
- html += '
'
+ var html = ''
- if (hasSparePieces) {
- html += '
'
+ // algebraic notation / orientation
+ var alpha = deepCopy(COLUMNS)
+ var row = 8
+ if (orientation === 'black') {
+ alpha.reverse()
+ row = 1
}
- html += '
'
+ var squareColor = 'white'
+ for (var i = 0; i < 8; i++) {
+ html += ''
+ for (var j = 0; j < 8; j++) {
+ var square = alpha[j] + row
+
+ html +=
+ '
'
+
+ if (config.showNotation) {
+ // alpha notation
+ if (
+ (orientation === 'white' && row === 1) ||
+ (orientation === 'black' && row === 8)
+ ) {
+ html += '
' + alpha[j] + '
'
+ }
+
+ // numeric notation
+ if (j === 0) {
+ html += '
' + row + '
'
+ }
+ }
+
+ html += '
' // end .square
+
+ squareColor = squareColor === 'white' ? 'black' : 'white'
+ }
+ html += '
'
+
+ squareColor = squareColor === 'white' ? 'black' : 'white'
+
+ if (orientation === 'white') {
+ row = row - 1
+ } else {
+ row = row + 1
+ }
+ }
return interpolateTemplate(html, CSS)
}
- // ---------------------------------------------------------------------------
- // Config
- // ---------------------------------------------------------------------------
+ function preloadImages () {
+ var pieces = [
+ 'wK',
+ 'wQ',
+ 'wR',
+ 'wB',
+ 'wN',
+ 'wP',
+ 'bK',
+ 'bQ',
+ 'bR',
+ 'bB',
+ 'bN',
+ 'bP'
+ ]
+ pieces.forEach(function (piece) {
+ var img = new Image()
+ img.src = buildPieceImgSrc(piece)
+ })
+ }
- function expandConfigArgumentShorthand (config) {
- if (config === 'start') {
- config = {position: deepCopy(START_POSITION)}
- } else if (validFen(config)) {
- config = {position: fenToObj(config)}
- } else if (validPositionObject(config)) {
- config = {position: deepCopy(config)}
+ function buildPieceImgSrc (piece) {
+ if (isFunction(config.pieceTheme)) {
+ return config.pieceTheme(piece)
}
- // config must be an object
- if (!$.isPlainObject(config)) config = {}
+ if (isString(config.pieceTheme)) {
+ return interpolateTemplate(config.pieceTheme, { piece: piece })
+ }
- return config
+ // NOTE: this should never happen
+ error(8272, 'Unable to build image source for config.pieceTheme.')
+ return ''
}
- // validate config / set default options
- function expandConfig (config) {
- // default for orientation is white
- if (config.orientation !== 'black') config.orientation = 'white'
+ function spareCountHtml (piece, hidden) {
+ if (typeof config.spareCounts !== 'object') {
+ return ''
+ }
+ var html =
+ '' + config.spareCounts[piece] + '
'
+ }
- // default for showNotation is true
- if (config.showNotation !== false) config.showNotation = true
+ function getPieceName (piece) {
+ var dict = {
+ wK: 'white king',
+ wQ: 'white queen',
+ wR: 'white rook',
+ wB: 'white bishopp',
+ wN: 'white knight',
+ wP: 'white pawn',
+ bK: 'black king',
+ bQ: 'black queen',
+ bR: 'black rook',
+ bB: 'black bishop',
+ bN: 'black knight',
+ bP: 'black pawn'
+ }
+ return dict[piece]
+ }
- // default for draggable is false
- if (config.draggable !== true) config.draggable = false
+ function buildPieceHTML (piece, hidden, id, is_spare) {
+ var html =
+ ' + ')
' + spareCountHtml(piece, hidden)
+ } else {
+ html += '" />'
+ }
- // default for sparePieces is false
- if (config.sparePieces !== true) config.sparePieces = false
+ return interpolateTemplate(html + '
', CSS)
+ }
- // draggable must be true if sparePieces is enabled
- if (config.sparePieces) config.draggable = true
+ function buildSparePiecesHTML (color) {
+ var pieces = ['wK', 'wQ', 'wR', 'wB', 'wN', 'wP']
+ if (color === 'black') {
+ pieces = ['bK', 'bQ', 'bR', 'bB', 'bN', 'bP']
+ }
- // default piece theme is wikipedia
- if (!config.hasOwnProperty('pieceTheme') ||
- (!isString(config.pieceTheme) && !isFunction(config.pieceTheme))) {
- config.pieceTheme = 'img/chesspieces/wikipedia/{piece}.png'
+ var html = ''
+ for (var i = 0; i < pieces.length; i++) {
+ html += buildPieceHTML(
+ pieces[i],
+ false,
+ sparePiecesElsIds[pieces[i]],
+ true
+ )
}
- // animation speeds
- if (!validAnimationSpeed(config.appearSpeed)) config.appearSpeed = DEFAULT_APPEAR_SPEED
- if (!validAnimationSpeed(config.moveSpeed)) config.moveSpeed = DEFAULT_MOVE_SPEED
- if (!validAnimationSpeed(config.snapbackSpeed)) config.snapbackSpeed = DEFAULT_SNAPBACK_SPEED
- if (!validAnimationSpeed(config.snapSpeed)) config.snapSpeed = DEFAULT_SNAP_SPEED
- if (!validAnimationSpeed(config.trashSpeed)) config.trashSpeed = DEFAULT_TRASH_SPEED
+ return html
+ }
+
+ // -------------------------------------------------------------------------
+ // Animations
+ // -------------------------------------------------------------------------
+
+ function animateSquareToSquare (src, dest, piece, completeFn) {
+ // get information about the source and destination squares
+ var $srcSquare = $('#' + squareElsIds[src])
+ var srcSquarePosition = $srcSquare.offset()
+ var $destSquare = $('#' + squareElsIds[dest])
+ var destSquarePosition = $destSquare.offset()
+
+ // create the animated piece and absolutely position it
+ // over the source square
+ var animatedPieceId = uuid()
+ $('body').append(buildPieceHTML(piece, true, animatedPieceId))
+ var $animatedPiece = $('#' + animatedPieceId)
+ $animatedPiece.css({
+ display: '',
+ position: 'absolute',
+ top: srcSquarePosition.top,
+ left: srcSquarePosition.left
+ })
- // throttle rate
- if (!validThrottleRate(config.dragThrottleRate)) config.dragThrottleRate = DEFAULT_DRAG_THROTTLE_RATE
+ // remove original piece from source square
+ $srcSquare.find('.' + CSS.piece).remove()
- return config
- }
+ function onFinishAnimation1 () {
+ // add the "real" piece to the destination square
+ $destSquare.append(buildPieceHTML(piece))
- // ---------------------------------------------------------------------------
- // Dependencies
- // ---------------------------------------------------------------------------
+ // remove the animated piece
+ $animatedPiece.remove()
- // check for a compatible version of jQuery
- function checkJQuery () {
- if (!validJQueryVersion()) {
- var errorMsg = 'Chessboard Error 1005: Unable to find a valid version of jQuery. ' +
- 'Please include jQuery ' + MINIMUM_JQUERY_VERSION + ' or higher on the page' +
- '\n\n' +
- 'Exiting' + ELLIPSIS
- window.alert(errorMsg)
- return false
+ // run complete function
+ if (isFunction(completeFn)) {
+ completeFn()
+ }
}
- return true
+ // animate the piece to the destination square
+ var opts = {
+ duration: config.moveSpeed,
+ complete: onFinishAnimation1
+ }
+ $animatedPiece.animate(destSquarePosition, opts)
}
- // return either boolean false or the $container element
- function checkContainerArg (containerElOrString) {
- if (containerElOrString === '') {
- var errorMsg1 = 'Chessboard Error 1001: ' +
- 'The first argument to Chessboard() cannot be an empty string.' +
- '\n\n' +
- 'Exiting' + ELLIPSIS
- window.alert(errorMsg1)
- return false
+ function animateSparePieceToSquare (piece, dest, completeFn) {
+ var srcOffset = $('#' + sparePiecesElsIds[piece]).offset()
+ var $destSquare = $('#' + squareElsIds[dest])
+ var destOffset = $destSquare.offset()
+
+ // create the animate piece
+ var pieceId = uuid()
+ $('body').append(buildPieceHTML(piece, true, pieceId))
+ var $animatedPiece = $('#' + pieceId)
+ $animatedPiece.css({
+ display: '',
+ position: 'absolute',
+ left: srcOffset.left,
+ top: srcOffset.top
+ })
+
+ // on complete
+ function onFinishAnimation2 () {
+ // add the "real" piece to the destination square
+ $destSquare.find('.' + CSS.piece).remove()
+ $destSquare.append(buildPieceHTML(piece))
+
+ // remove the animated piece
+ $animatedPiece.remove()
+
+ // run complete function
+ if (isFunction(completeFn)) {
+ completeFn()
+ }
}
- // convert containerEl to query selector if it is a string
- if (isString(containerElOrString) &&
- containerElOrString.charAt(0) !== '#') {
- containerElOrString = '#' + containerElOrString
+ // animate the piece to the destination square
+ var opts = {
+ duration: config.moveSpeed,
+ complete: onFinishAnimation2
}
+ $animatedPiece.animate(destOffset, opts)
+ }
- // containerEl must be something that becomes a jQuery collection of size 1
- var $container = $(containerElOrString)
- if ($container.length !== 1) {
- var errorMsg2 = 'Chessboard Error 1003: ' +
- 'The first argument to Chessboard() must be the ID of a DOM node, ' +
- 'an ID query selector, or a single DOM node.' +
- '\n\n' +
- 'Exiting' + ELLIPSIS
- window.alert(errorMsg2)
- return false
+ // execute an array of animations
+ function doAnimations (animations, oldPos, newPos) {
+ if (animations.length === 0) return
+
+ var numFinished = 0
+ function onFinishAnimation3 () {
+ // exit if all the animations aren't finished
+ numFinished = numFinished + 1
+ if (numFinished !== animations.length) return
+
+ drawPositionInstant()
+
+ // run their onMoveEnd function
+ if (isFunction(config.onMoveEnd)) {
+ config.onMoveEnd(deepCopy(oldPos), deepCopy(newPos))
+ }
}
- return $container
- }
-
- // ---------------------------------------------------------------------------
- // Constructor
- // ---------------------------------------------------------------------------
-
- function constructor (containerElOrString, config) {
- // first things first: check basic dependencies
- if (!checkJQuery()) return null
- var $container = checkContainerArg(containerElOrString)
- if (!$container) return null
-
- // ensure the config object is what we expect
- config = expandConfigArgumentShorthand(config)
- config = expandConfig(config)
-
- // DOM elements
- var $board = null
- var $draggedPiece = null
- var $sparePiecesTop = null
- var $sparePiecesBottom = null
-
- // constructor return object
- var widget = {}
-
- // -------------------------------------------------------------------------
- // Stateful
- // -------------------------------------------------------------------------
-
- var boardBorderSize = 2
- var currentOrientation = 'white'
- var currentPosition = {}
- var draggedPiece = null
- var draggedPieceLocation = null
- var draggedPieceSource = null
- var isDragging = false
- var sparePiecesElsIds = {}
- var squareElsIds = {}
- var squareElsOffsets = {}
- var squareSize = 16
-
- // -------------------------------------------------------------------------
- // Validation / Errors
- // -------------------------------------------------------------------------
-
- function error (code, msg, obj) {
- // do nothing if showErrors is not set
- if (
- config.hasOwnProperty('showErrors') !== true ||
- config.showErrors === false
- ) {
- return
- }
-
- var errorText = 'Chessboard Error ' + code + ': ' + msg
-
- // print to console
- if (
- config.showErrors === 'console' &&
- typeof console === 'object' &&
- typeof console.log === 'function'
- ) {
- console.log(errorText)
- if (arguments.length >= 2) {
- console.log(obj)
- }
- return
- }
-
- // alert errors
- if (config.showErrors === 'alert') {
- if (obj) {
- errorText += '\n\n' + JSON.stringify(obj)
- }
- window.alert(errorText)
- return
- }
-
- // custom function
- if (isFunction(config.showErrors)) {
- config.showErrors(code, msg, obj)
- }
- }
-
- function setInitialState () {
- currentOrientation = config.orientation
-
- // make sure position is valid
- if (config.hasOwnProperty('position')) {
- if (config.position === 'start') {
- currentPosition = deepCopy(START_POSITION)
- } else if (validFen(config.position)) {
- currentPosition = fenToObj(config.position)
- } else if (validPositionObject(config.position)) {
- currentPosition = deepCopy(config.position)
- } else {
- error(
- 7263,
- 'Invalid value passed to config.position.',
- config.position
- )
- }
+ for (var i = 0; i < animations.length; i++) {
+ var animation = animations[i]
+
+ // clear a piece
+ if (animation.type === 'clear') {
+ $('#' + squareElsIds[animation.square] + ' .' + CSS.piece).fadeOut(
+ config.trashSpeed,
+ onFinishAnimation3
+ )
+
+ // add a piece with no spare pieces - fade the piece onto the square
+ } else if (animation.type === 'add' && !config.sparePieces) {
+ $('#' + squareElsIds[animation.square])
+ .append(buildPieceHTML(animation.piece, true))
+ .find('.' + CSS.piece)
+ .fadeIn(config.appearSpeed, onFinishAnimation3)
+
+ // add a piece with spare pieces - animate from the spares
+ } else if (animation.type === 'add' && config.sparePieces) {
+ animateSparePieceToSquare(
+ animation.piece,
+ animation.square,
+ onFinishAnimation3
+ )
+
+ // move a piece from squareA to squareB
+ } else if (animation.type === 'move') {
+ animateSquareToSquare(
+ animation.source,
+ animation.destination,
+ animation.piece,
+ onFinishAnimation3
+ )
}
}
+ }
+
+ // calculate an array of animations that need to happen in order to get
+ // from pos1 to pos2
+ function calculateAnimations (pos1, pos2) {
+ // make copies of both
+ pos1 = deepCopy(pos1)
+ pos2 = deepCopy(pos2)
+
+ var animations = []
+ var squaresMovedTo = {}
- // -------------------------------------------------------------------------
- // DOM Misc
- // -------------------------------------------------------------------------
-
- // calculates square size based on the width of the container
- // got a little CSS black magic here, so let me explain:
- // get the width of the container element (could be anything), reduce by 1 for
- // fudge factor, and then keep reducing until we find an exact mod 8 for
- // our square size
- function calculateSquareSize () {
- var containerWidth = parseInt($container.width(), 10)
-
- // defensive, prevent infinite loop
- if (!containerWidth || containerWidth <= 0) {
- return 0
- }
-
- // pad one pixel
- var boardWidth = containerWidth - 1
-
- while (boardWidth % 8 !== 0 && boardWidth > 0) {
- boardWidth = boardWidth - 1
- }
-
- return boardWidth / 8
- }
-
- // create random IDs for elements
- function createElIds () {
- // squares on the board
- for (var i = 0; i < COLUMNS.length; i++) {
- for (var j = 1; j <= 8; j++) {
- var square = COLUMNS[i] + j
- squareElsIds[square] = square + '-' + uuid()
- }
- }
-
- // spare pieces
- var pieces = 'KQRNBP'.split('')
- for (i = 0; i < pieces.length; i++) {
- var whitePiece = 'w' + pieces[i]
- var blackPiece = 'b' + pieces[i]
- sparePiecesElsIds[whitePiece] = whitePiece + '-' + uuid()
- sparePiecesElsIds[blackPiece] = blackPiece + '-' + uuid()
- }
- }
-
- // -------------------------------------------------------------------------
- // Markup Building
- // -------------------------------------------------------------------------
-
- function buildBoardHTML (orientation) {
- if (orientation !== 'black') {
- orientation = 'white'
+ // remove pieces that are the same in both positions
+ for (var i in pos2) {
+ if (!pos2.hasOwnProperty(i)) continue
+
+ if (pos1.hasOwnProperty(i) && pos1[i] === pos2[i]) {
+ delete pos1[i]
+ delete pos2[i]
}
+ }
- var html = ''
+ // find all the "move" animations
+ for (i in pos2) {
+ if (!pos2.hasOwnProperty(i)) continue
+
+ var closestPiece = findClosestPiece(pos1, pos2[i], i)
+ if (closestPiece) {
+ animations.push({
+ type: 'move',
+ source: closestPiece,
+ destination: i,
+ piece: pos2[i]
+ })
- // algebraic notation / orientation
- var alpha = deepCopy(COLUMNS)
- var row = 8
- if (orientation === 'black') {
- alpha.reverse()
- row = 1
+ delete pos1[closestPiece]
+ delete pos2[i]
+ squaresMovedTo[i] = true
}
+ }
- var squareColor = 'white'
- for (var i = 0; i < 8; i++) {
- html += ''
- for (var j = 0; j < 8; j++) {
- var square = alpha[j] + row
-
- html += '
'
-
- if (config.showNotation) {
- // alpha notation
- if ((orientation === 'white' && row === 1) ||
- (orientation === 'black' && row === 8)) {
- html += '
' + alpha[j] + '
'
- }
-
- // numeric notation
- if (j === 0) {
- html += '
' + row + '
'
- }
- }
+ // "add" animations
+ for (i in pos2) {
+ if (!pos2.hasOwnProperty(i)) continue
- html += '
' // end .square
+ animations.push({
+ type: 'add',
+ square: i,
+ piece: pos2[i]
+ })
- squareColor = (squareColor === 'white') ? 'black' : 'white'
- }
- html += '
'
+ delete pos2[i]
+ }
- squareColor = (squareColor === 'white') ? 'black' : 'white'
+ // "clear" animations
+ for (i in pos1) {
+ if (!pos1.hasOwnProperty(i)) continue
- if (orientation === 'white') {
- row = row - 1
- } else {
- row = row + 1
- }
- }
+ // do not clear a piece if it is on a square that is the result
+ // of a "move", ie: a piece capture
+ if (squaresMovedTo.hasOwnProperty(i)) continue
+
+ animations.push({
+ type: 'clear',
+ square: i,
+ piece: pos1[i]
+ })
+
+ delete pos1[i]
+ }
+
+ return animations
+ }
+
+ // -------------------------------------------------------------------------
+ // Control Flow
+ // -------------------------------------------------------------------------
- return interpolateTemplate(html, CSS)
- }
-
- function buildPieceImgSrc (piece) {
- if (isFunction(config.pieceTheme)) {
- return config.pieceTheme(piece)
- }
-
- if (isString(config.pieceTheme)) {
- return interpolateTemplate(config.pieceTheme, {piece: piece})
- }
-
- // NOTE: this should never happen
- error(8272, 'Unable to build image source for config.pieceTheme.')
- return ''
- }
-
- function buildPieceHTML (piece, hidden, id) {
- var html = '
'
-
- return interpolateTemplate(html, CSS)
- }
-
- function buildSparePiecesHTML (color) {
- var pieces = ['wK', 'wQ', 'wR', 'wB', 'wN', 'wP']
- if (color === 'black') {
- pieces = ['bK', 'bQ', 'bR', 'bB', 'bN', 'bP']
- }
-
- var html = ''
- for (var i = 0; i < pieces.length; i++) {
- html += buildPieceHTML(pieces[i], false, sparePiecesElsIds[pieces[i]])
- }
-
- return html
- }
-
- // -------------------------------------------------------------------------
- // Animations
- // -------------------------------------------------------------------------
-
- function animateSquareToSquare (src, dest, piece, completeFn) {
- // get information about the source and destination squares
- var $srcSquare = $('#' + squareElsIds[src])
- var srcSquarePosition = $srcSquare.offset()
- var $destSquare = $('#' + squareElsIds[dest])
- var destSquarePosition = $destSquare.offset()
-
- // create the animated piece and absolutely position it
- // over the source square
- var animatedPieceId = uuid()
- $('body').append(buildPieceHTML(piece, true, animatedPieceId))
- var $animatedPiece = $('#' + animatedPieceId)
- $animatedPiece.css({
- display: '',
- position: 'absolute',
- top: srcSquarePosition.top,
- left: srcSquarePosition.left
- })
-
- // remove original piece from source square
- $srcSquare.find('.' + CSS.piece).remove()
-
- function onFinishAnimation1 () {
- // add the "real" piece to the destination square
- $destSquare.append(buildPieceHTML(piece))
-
- // remove the animated piece
- $animatedPiece.remove()
-
- // run complete function
- if (isFunction(completeFn)) {
- completeFn()
- }
- }
-
- // animate the piece to the destination square
- var opts = {
- duration: config.moveSpeed,
- complete: onFinishAnimation1
- }
- $animatedPiece.animate(destSquarePosition, opts)
- }
-
- function animateSparePieceToSquare (piece, dest, completeFn) {
- var srcOffset = $('#' + sparePiecesElsIds[piece]).offset()
- var $destSquare = $('#' + squareElsIds[dest])
- var destOffset = $destSquare.offset()
-
- // create the animate piece
- var pieceId = uuid()
- $('body').append(buildPieceHTML(piece, true, pieceId))
- var $animatedPiece = $('#' + pieceId)
- $animatedPiece.css({
- display: '',
- position: 'absolute',
- left: srcOffset.left,
- top: srcOffset.top
- })
-
- // on complete
- function onFinishAnimation2 () {
- // add the "real" piece to the destination square
- $destSquare.find('.' + CSS.piece).remove()
- $destSquare.append(buildPieceHTML(piece))
-
- // remove the animated piece
- $animatedPiece.remove()
-
- // run complete function
- if (isFunction(completeFn)) {
- completeFn()
- }
- }
-
- // animate the piece to the destination square
- var opts = {
- duration: config.moveSpeed,
- complete: onFinishAnimation2
- }
- $animatedPiece.animate(destOffset, opts)
- }
-
- // execute an array of animations
- function doAnimations (animations, oldPos, newPos) {
- if (animations.length === 0) return
-
- var numFinished = 0
- function onFinishAnimation3 () {
- // exit if all the animations aren't finished
- numFinished = numFinished + 1
- if (numFinished !== animations.length) return
-
- drawPositionInstant()
-
- // run their onMoveEnd function
- if (isFunction(config.onMoveEnd)) {
- config.onMoveEnd(deepCopy(oldPos), deepCopy(newPos))
- }
- }
-
- for (var i = 0; i < animations.length; i++) {
- var animation = animations[i]
-
- // clear a piece
- if (animation.type === 'clear') {
- $('#' + squareElsIds[animation.square] + ' .' + CSS.piece)
- .fadeOut(config.trashSpeed, onFinishAnimation3)
+ function setCurrentPosition (position) {
+ var oldPos = deepCopy(currentPosition)
+ var newPos = deepCopy(position)
+ var oldFen = objToFen(oldPos)
+ var newFen = objToFen(newPos)
- // add a piece with no spare pieces - fade the piece onto the square
- } else if (animation.type === 'add' && !config.sparePieces) {
- $('#' + squareElsIds[animation.square])
- .append(buildPieceHTML(animation.piece, true))
- .find('.' + CSS.piece)
- .fadeIn(config.appearSpeed, onFinishAnimation3)
+ // do nothing if no change in position
+ if (oldFen === newFen) return
- // add a piece with spare pieces - animate from the spares
- } else if (animation.type === 'add' && config.sparePieces) {
- animateSparePieceToSquare(animation.piece, animation.square, onFinishAnimation3)
+ // update state
+ currentPosition = position
- // move a piece from squareA to squareB
- } else if (animation.type === 'move') {
- animateSquareToSquare(animation.source, animation.destination, animation.piece, onFinishAnimation3)
- }
- }
- }
-
- // calculate an array of animations that need to happen in order to get
- // from pos1 to pos2
- function calculateAnimations (pos1, pos2) {
- // make copies of both
- pos1 = deepCopy(pos1)
- pos2 = deepCopy(pos2)
-
- var animations = []
- var squaresMovedTo = {}
-
- // remove pieces that are the same in both positions
- for (var i in pos2) {
- if (!pos2.hasOwnProperty(i)) continue
-
- if (pos1.hasOwnProperty(i) && pos1[i] === pos2[i]) {
- delete pos1[i]
- delete pos2[i]
- }
- }
-
- // find all the "move" animations
- for (i in pos2) {
- if (!pos2.hasOwnProperty(i)) continue
-
- var closestPiece = findClosestPiece(pos1, pos2[i], i)
- if (closestPiece) {
- animations.push({
- type: 'move',
- source: closestPiece,
- destination: i,
- piece: pos2[i]
- })
-
- delete pos1[closestPiece]
- delete pos2[i]
- squaresMovedTo[i] = true
- }
+ // run their onChange function
+ if (isFunction(config.onChange)) {
+ config.onChange(oldPos, newPos)
+ }
+ }
+
+ function isXYOnSquare (x, y) {
+ for (var i in squareElsOffsets) {
+ if (!squareElsOffsets.hasOwnProperty(i)) continue
+
+ var s = squareElsOffsets[i]
+ if (
+ x >= s.left &&
+ x < s.left + squareSize &&
+ y >= s.top &&
+ y < s.top + squareSize
+ ) {
+ return i
}
+ }
- // "add" animations
- for (i in pos2) {
- if (!pos2.hasOwnProperty(i)) continue
-
- animations.push({
- type: 'add',
- square: i,
- piece: pos2[i]
- })
-
- delete pos2[i]
- }
-
- // "clear" animations
- for (i in pos1) {
- if (!pos1.hasOwnProperty(i)) continue
-
- // do not clear a piece if it is on a square that is the result
- // of a "move", ie: a piece capture
- if (squaresMovedTo.hasOwnProperty(i)) continue
-
- animations.push({
- type: 'clear',
- square: i,
- piece: pos1[i]
- })
-
- delete pos1[i]
- }
-
- return animations
- }
-
- // -------------------------------------------------------------------------
- // Control Flow
- // -------------------------------------------------------------------------
-
- function drawPositionInstant () {
- // clear the board
- $board.find('.' + CSS.piece).remove()
-
- // add the pieces
- for (var i in currentPosition) {
- if (!currentPosition.hasOwnProperty(i)) continue
-
- $('#' + squareElsIds[i]).append(buildPieceHTML(currentPosition[i]))
- }
- }
-
- function drawBoard () {
- $board.html(buildBoardHTML(currentOrientation, squareSize, config.showNotation))
- drawPositionInstant()
-
- if (config.sparePieces) {
- if (currentOrientation === 'white') {
- $sparePiecesTop.html(buildSparePiecesHTML('black'))
- $sparePiecesBottom.html(buildSparePiecesHTML('white'))
- } else {
- $sparePiecesTop.html(buildSparePiecesHTML('white'))
- $sparePiecesBottom.html(buildSparePiecesHTML('black'))
- }
- }
- }
-
- function setCurrentPosition (position) {
- var oldPos = deepCopy(currentPosition)
- var newPos = deepCopy(position)
- var oldFen = objToFen(oldPos)
- var newFen = objToFen(newPos)
-
- // do nothing if no change in position
- if (oldFen === newFen) return
-
- // run their onChange function
- if (isFunction(config.onChange)) {
- config.onChange(oldPos, newPos)
- }
-
- // update state
- currentPosition = position
- }
-
- function isXYOnSquare (x, y) {
- for (var i in squareElsOffsets) {
- if (!squareElsOffsets.hasOwnProperty(i)) continue
-
- var s = squareElsOffsets[i]
- if (x >= s.left &&
- x < s.left + squareSize &&
- y >= s.top &&
- y < s.top + squareSize) {
- return i
- }
- }
-
- return 'offboard'
- }
-
- // records the XY coords of every square into memory
- function captureSquareOffsets () {
- squareElsOffsets = {}
-
- for (var i in squareElsIds) {
- if (!squareElsIds.hasOwnProperty(i)) continue
-
- squareElsOffsets[i] = $('#' + squareElsIds[i]).offset()
- }
- }
-
- function removeSquareHighlights () {
- $board
- .find('.' + CSS.square)
- .removeClass(CSS.highlight1 + ' ' + CSS.highlight2)
- }
-
- function snapbackDraggedPiece () {
- // there is no "snapback" for spare pieces
- if (draggedPieceSource === 'spare') {
- trashDraggedPiece()
- return
- }
-
- removeSquareHighlights()
-
- // animation complete
- function complete () {
- drawPositionInstant()
- $draggedPiece.css('display', 'none')
-
- // run their onSnapbackEnd function
- if (isFunction(config.onSnapbackEnd)) {
- config.onSnapbackEnd(
- draggedPiece,
- draggedPieceSource,
- deepCopy(currentPosition),
- currentOrientation
- )
- }
- }
-
- // get source square position
- var sourceSquarePosition = $('#' + squareElsIds[draggedPieceSource]).offset()
-
- // animate the piece to the target square
- var opts = {
- duration: config.snapbackSpeed,
- complete: complete
- }
- $draggedPiece.animate(sourceSquarePosition, opts)
-
- // set state
- isDragging = false
- }
-
- function trashDraggedPiece () {
- removeSquareHighlights()
-
- // remove the source piece
- var newPosition = deepCopy(currentPosition)
- delete newPosition[draggedPieceSource]
- setCurrentPosition(newPosition)
-
- // redraw the position
- drawPositionInstant()
-
- // hide the dragged piece
- $draggedPiece.fadeOut(config.trashSpeed)
-
- // set state
- isDragging = false
- }
-
- function dropDraggedPieceOnSquare (square) {
- removeSquareHighlights()
-
- // update position
- var newPosition = deepCopy(currentPosition)
- delete newPosition[draggedPieceSource]
- newPosition[square] = draggedPiece
- setCurrentPosition(newPosition)
-
- // get target square information
- var targetSquarePosition = $('#' + squareElsIds[square]).offset()
-
- // animation complete
- function onAnimationComplete () {
- drawPositionInstant()
- $draggedPiece.css('display', 'none')
-
- // execute their onSnapEnd function
- if (isFunction(config.onSnapEnd)) {
- config.onSnapEnd(draggedPieceSource, square, draggedPiece)
- }
- }
-
- // snap the piece to the target square
- var opts = {
- duration: config.snapSpeed,
- complete: onAnimationComplete
- }
- $draggedPiece.animate(targetSquarePosition, opts)
-
- // set state
- isDragging = false
- }
-
- function beginDraggingPiece (source, piece, x, y) {
- // run their custom onDragStart function
- // their custom onDragStart function can cancel drag start
- if (isFunction(config.onDragStart) &&
- config.onDragStart(source, piece, deepCopy(currentPosition), currentOrientation) === false) {
- return
- }
-
- // set state
- isDragging = true
- draggedPiece = piece
- draggedPieceSource = source
-
- // if the piece came from spare pieces, location is offboard
- if (source === 'spare') {
- draggedPieceLocation = 'offboard'
- } else {
- draggedPieceLocation = source
- }
-
- // capture the x, y coords of all squares in memory
- captureSquareOffsets()
-
- // create the dragged piece
- $draggedPiece.attr('src', buildPieceImgSrc(piece)).css({
- display: '',
- position: 'absolute',
- left: x - squareSize / 2,
- top: y - squareSize / 2
- })
-
- if (source !== 'spare') {
- // highlight the source square and hide the piece
- $('#' + squareElsIds[source])
- .addClass(CSS.highlight1)
- .find('.' + CSS.piece)
- .css('display', 'none')
- }
- }
-
- function updateDraggedPiece (x, y) {
- // put the dragged piece over the mouse cursor
- $draggedPiece.css({
- left: x - squareSize / 2,
- top: y - squareSize / 2
- })
-
- // get location
- var location = isXYOnSquare(x, y)
-
- // do nothing if the location has not changed
- if (location === draggedPieceLocation) return
-
- // remove highlight from previous square
- if (validSquare(draggedPieceLocation)) {
- $('#' + squareElsIds[draggedPieceLocation]).removeClass(CSS.highlight2)
- }
-
- // add highlight to new square
- if (validSquare(location)) {
- $('#' + squareElsIds[location]).addClass(CSS.highlight2)
- }
-
- // run onDragMove
- if (isFunction(config.onDragMove)) {
- config.onDragMove(
- location,
- draggedPieceLocation,
- draggedPieceSource,
+ return 'offboard'
+ }
+
+ // records the XY coords of every square into memory
+ function captureSquareOffsets () {
+ squareElsOffsets = {}
+
+ for (var i in squareElsIds) {
+ if (!squareElsIds.hasOwnProperty(i)) continue
+
+ squareElsOffsets[i] = $('#' + squareElsIds[i]).offset()
+ }
+ }
+
+ function removeSquareHighlights () {
+ $board
+ .find('.' + CSS.square)
+ .removeClass(CSS.highlight1 + ' ' + CSS.highlight2)
+ }
+
+ function snapbackDraggedPiece () {
+ // there is no "snapback" for spare pieces
+ if (draggedPieceSource === 'spare') {
+ trashDraggedPiece()
+ return
+ }
+
+ removeSquareHighlights()
+
+ // animation complete
+ function complete () {
+ drawPositionInstant()
+ $draggedPiece.css('display', 'none')
+
+ // run their onSnapbackEnd function
+ if (isFunction(config.onSnapbackEnd)) {
+ config.onSnapbackEnd(
draggedPiece,
+ draggedPieceSource,
deepCopy(currentPosition),
currentOrientation
- )
- }
-
- // update state
- draggedPieceLocation = location
- }
-
- function stopDraggedPiece (location) {
- // determine what the action should be
- var action = 'drop'
- if (location === 'offboard' && config.dropOffBoard === 'snapback') {
- action = 'snapback'
- }
- if (location === 'offboard' && config.dropOffBoard === 'trash') {
- action = 'trash'
- }
-
- // run their onDrop function, which can potentially change the drop action
- if (isFunction(config.onDrop)) {
- var newPosition = deepCopy(currentPosition)
-
- // source piece is a spare piece and position is off the board
- // if (draggedPieceSource === 'spare' && location === 'offboard') {...}
- // position has not changed; do nothing
-
- // source piece is a spare piece and position is on the board
- if (draggedPieceSource === 'spare' && validSquare(location)) {
- // add the piece to the board
- newPosition[location] = draggedPiece
- }
-
- // source piece was on the board and position is off the board
- if (validSquare(draggedPieceSource) && location === 'offboard') {
- // remove the piece from the board
- delete newPosition[draggedPieceSource]
- }
-
- // source piece was on the board and position is on the board
- if (validSquare(draggedPieceSource) && validSquare(location)) {
- // move the piece
- delete newPosition[draggedPieceSource]
- newPosition[location] = draggedPiece
- }
-
- var oldPosition = deepCopy(currentPosition)
-
- var result = config.onDrop(
- draggedPieceSource,
- location,
- draggedPiece,
- newPosition,
- oldPosition,
+ )
+ }
+ }
+
+ // get source square position
+ var sourceSquarePosition = $(
+ '#' + squareElsIds[draggedPieceSource]
+ ).offset()
+
+ // animate the piece to the target square
+ var opts = {
+ duration: config.snapbackSpeed,
+ complete: complete
+ }
+ $draggedPiece.animate(sourceSquarePosition, opts)
+
+ // set state
+ isDragging = false
+ }
+
+ function trashDraggedPiece () {
+ removeSquareHighlights()
+
+ // remove the source piece
+ var newPosition = deepCopy(currentPosition)
+ delete newPosition[draggedPieceSource]
+ setCurrentPosition(newPosition)
+
+ // redraw the position
+ drawPositionInstant()
+
+ // hide the dragged piece
+ $draggedPiece.fadeOut(config.trashSpeed)
+
+ // set state
+ isDragging = false
+ }
+
+ function dropDraggedPieceOnSquare (square) {
+ removeSquareHighlights()
+
+ // update position
+ var newPosition = deepCopy(currentPosition)
+ delete newPosition[draggedPieceSource]
+ newPosition[square] = draggedPiece
+ setCurrentPosition(newPosition)
+
+ // get target square information
+ var targetSquarePosition = $('#' + squareElsIds[square]).offset()
+
+ // animation complete
+ function onAnimationComplete () {
+ drawPositionInstant()
+ $draggedPiece.css('display', 'none')
+
+ // execute their onSnapEnd function
+ if (isFunction(config.onSnapEnd)) {
+ config.onSnapEnd(draggedPieceSource, square, draggedPiece)
+ }
+ }
+
+ // snap the piece to the target square
+ var opts = {
+ duration: config.snapSpeed,
+ complete: onAnimationComplete
+ }
+ $draggedPiece.animate(targetSquarePosition, opts)
+
+ // set state
+ isDragging = false
+ }
+
+ function beginDraggingPiece (source, piece, x, y) {
+ // run their custom onDragStart function
+ // their custom onDragStart function can cancel drag start
+ if (
+ (isFunction(config.onDragStart) &&
+ config.onDragStart(
+ source,
+ piece,
+ deepCopy(currentPosition),
currentOrientation
- )
- if (result === 'snapback' || result === 'trash') {
- action = result
- }
- }
-
- // do it!
- if (action === 'snapback') {
- snapbackDraggedPiece()
- } else if (action === 'trash') {
- trashDraggedPiece()
- } else if (action === 'drop') {
- dropDraggedPieceOnSquare(location)
- }
- }
-
- // -------------------------------------------------------------------------
- // Public Methods
- // -------------------------------------------------------------------------
-
- // clear the board
- widget.clear = function (useAnimation) {
- widget.position({}, useAnimation)
- }
-
- // remove the widget from the page
- widget.destroy = function () {
- // remove markup
- $container.html('')
- $draggedPiece.remove()
-
- // remove event handlers
- $container.unbind()
- }
-
- // shorthand method to get the current FEN
- widget.fen = function () {
- return widget.position('fen')
- }
-
- // flip orientation
- widget.flip = function () {
- return widget.orientation('flip')
- }
-
- // move pieces
- // TODO: this method should be variadic as well as accept an array of moves
- widget.move = function () {
- // no need to throw an error here; just do nothing
- // TODO: this should return the current position
- if (arguments.length === 0) return
-
- var useAnimation = true
-
- // collect the moves into an object
- var moves = {}
- for (var i = 0; i < arguments.length; i++) {
- // any "false" to this function means no animations
- if (arguments[i] === false) {
- useAnimation = false
- continue
- }
-
- // skip invalid arguments
- if (!validMove(arguments[i])) {
- error(2826, 'Invalid move passed to the move method.', arguments[i])
- continue
- }
-
- var tmp = arguments[i].split('-')
- moves[tmp[0]] = tmp[1]
- }
-
- // calculate position from moves
- var newPos = calculatePositionFromMoves(currentPosition, moves)
-
- // update the board
- widget.position(newPos, useAnimation)
-
- // return the new position object
- return newPos
- }
-
- widget.orientation = function (arg) {
- // no arguments, return the current orientation
- if (arguments.length === 0) {
- return currentOrientation
- }
-
- // set to white or black
- if (arg === 'white' || arg === 'black') {
- currentOrientation = arg
- drawBoard()
- return currentOrientation
- }
-
- // flip orientation
- if (arg === 'flip') {
- currentOrientation = currentOrientation === 'white' ? 'black' : 'white'
- drawBoard()
- return currentOrientation
- }
-
- error(5482, 'Invalid value passed to the orientation method.', arg)
- }
-
- widget.position = function (position, useAnimation) {
- // no arguments, return the current position
- if (arguments.length === 0) {
- return deepCopy(currentPosition)
- }
-
- // get position as FEN
- if (isString(position) && position.toLowerCase() === 'fen') {
- return objToFen(currentPosition)
+ ) === false) ||
+ (source === 'spare' &&
+ typeof config.spareCounts === 'object' &&
+ config.spareCounts[piece] < 1)
+ ) {
+ return
+ }
+
+ // set state
+ isDragging = true
+ draggedPiece = piece
+ draggedPieceSource = source
+
+ // if the piece came from spare pieces, location is offboard
+ if (source === 'spare') {
+ draggedPieceLocation = 'offboard'
+ } else {
+ draggedPieceLocation = source
+ }
+
+ // capture the x, y coords of all squares in memory
+ captureSquareOffsets()
+
+ // create the dragged piece
+ $draggedPiece.attr('src', buildPieceImgSrc(piece)).css({
+ display: '',
+ position: 'absolute',
+ left: x - squareSize / 2,
+ top: y - squareSize / 2,
+ transform: `scale(${
+ typeof config.scaleDrag === 'number' ? config.scaleDrag : 1
+ })`
+ })
+
+ if (source !== 'spare') {
+ // highlight the source square and hide the piece
+ $('#' + squareElsIds[source])
+ .addClass(CSS.highlight1)
+ .find('.' + CSS.piece)
+ .css('display', 'none')
+ }
+ }
+
+ function updateDraggedPiece (x, y) {
+ // put the dragged piece over the mouse cursor
+ $draggedPiece.css({
+ left: x - squareSize / 2,
+ top: y - squareSize / 2
+ })
+
+ // get location
+ var location = isXYOnSquare(x, y)
+
+ // do nothing if the location has not changed
+ if (location === draggedPieceLocation) return
+
+ // remove highlight from previous square
+ if (validSquare(draggedPieceLocation)) {
+ $('#' + squareElsIds[draggedPieceLocation]).removeClass(CSS.highlight2)
+ }
+
+ // add highlight to new square
+ if (validSquare(location)) {
+ $('#' + squareElsIds[location]).addClass(CSS.highlight2)
+ }
+
+ // run onDragMove
+ if (isFunction(config.onDragMove)) {
+ config.onDragMove(
+ location,
+ draggedPieceLocation,
+ draggedPieceSource,
+ draggedPiece,
+ deepCopy(currentPosition),
+ currentOrientation
+ )
+ }
+
+ // update state
+ draggedPieceLocation = location
+ }
+
+ function stopDraggedPiece (location) {
+ // determine what the action should be
+ var action = 'drop'
+ if (location === 'offboard' && config.dropOffBoard === 'snapback') {
+ action = 'snapback'
+ }
+ if (location === 'offboard' && config.dropOffBoard === 'trash') {
+ action = 'trash'
+ }
+
+ // run their onDrop function, which can potentially change the drop action
+ if (isFunction(config.onDrop)) {
+ var newPosition = deepCopy(currentPosition)
+
+ // source piece is a spare piece and position is off the board
+ // if (draggedPieceSource === 'spare' && location === 'offboard') {...}
+ // position has not changed; do nothing
+
+ // source piece is a spare piece and position is on the board
+ if (draggedPieceSource === 'spare' && validSquare(location)) {
+ // add the piece to the board
+ newPosition[location] = draggedPiece
}
- // start position
- if (isString(position) && position.toLowerCase() === 'start') {
- position = deepCopy(START_POSITION)
- }
-
- // convert FEN to position object
- if (validFen(position)) {
- position = fenToObj(position)
- }
-
- // validate position object
- if (!validPositionObject(position)) {
- error(6482, 'Invalid value passed to the position method.', position)
- return
- }
-
- // default for useAnimations is true
- if (useAnimation !== false) useAnimation = true
-
- if (useAnimation) {
- // start the animations
- var animations = calculateAnimations(currentPosition, position)
- doAnimations(animations, currentPosition, position)
-
- // set the new position
- setCurrentPosition(position)
- } else {
- // instant update
- setCurrentPosition(position)
- drawPositionInstant()
- }
- }
-
- widget.resize = function () {
- // calulate the new square size
- squareSize = calculateSquareSize()
-
- // set board width
- $board.css('width', squareSize * 8 + 'px')
-
- // set drag piece size
- $draggedPiece.css({
- height: squareSize,
- width: squareSize
- })
-
- // spare pieces
- if (config.sparePieces) {
- $container
- .find('.' + CSS.sparePieces)
- .css('paddingLeft', squareSize + boardBorderSize + 'px')
- }
-
- // redraw the board
- drawBoard()
- }
-
- // set the starting position
- widget.start = function (useAnimation) {
- widget.position('start', useAnimation)
- }
-
- // -------------------------------------------------------------------------
- // Browser Events
- // -------------------------------------------------------------------------
-
- function stopDefault (evt) {
- evt.preventDefault()
- }
-
- function mousedownSquare (evt) {
- // do nothing if we're not draggable
- if (!config.draggable) return
-
- // do nothing if there is no piece on this square
- var square = $(this).attr('data-square')
- if (!validSquare(square)) return
- if (!currentPosition.hasOwnProperty(square)) return
-
- beginDraggingPiece(square, currentPosition[square], evt.pageX, evt.pageY)
- }
-
- function touchstartSquare (e) {
- // do nothing if we're not draggable
- if (!config.draggable) return
-
- // do nothing if there is no piece on this square
- var square = $(this).attr('data-square')
- if (!validSquare(square)) return
- if (!currentPosition.hasOwnProperty(square)) return
-
- e = e.originalEvent
- beginDraggingPiece(
- square,
- currentPosition[square],
- e.changedTouches[0].pageX,
- e.changedTouches[0].pageY
- )
- }
-
- function mousedownSparePiece (evt) {
- // do nothing if sparePieces is not enabled
- if (!config.sparePieces) return
-
- var piece = $(this).attr('data-piece')
-
- beginDraggingPiece('spare', piece, evt.pageX, evt.pageY)
- }
-
- function touchstartSparePiece (e) {
- // do nothing if sparePieces is not enabled
- if (!config.sparePieces) return
-
- var piece = $(this).attr('data-piece')
-
- e = e.originalEvent
- beginDraggingPiece(
- 'spare',
- piece,
- e.changedTouches[0].pageX,
- e.changedTouches[0].pageY
- )
- }
-
- function mousemoveWindow (evt) {
- if (isDragging) {
- updateDraggedPiece(evt.pageX, evt.pageY)
+ // source piece was on the board and position is off the board
+ if (validSquare(draggedPieceSource) && location === 'offboard') {
+ // remove the piece from the board
+ delete newPosition[draggedPieceSource]
+ }
+
+ // source piece was on the board and position is on the board
+ if (validSquare(draggedPieceSource) && validSquare(location)) {
+ // move the piece
+ delete newPosition[draggedPieceSource]
+ newPosition[location] = draggedPiece
+ }
+
+ var oldPosition = deepCopy(currentPosition)
+
+ var result = config.onDrop(
+ draggedPieceSource,
+ location,
+ draggedPiece,
+ newPosition,
+ oldPosition,
+ currentOrientation
+ )
+ if (result === 'snapback' || result === 'trash') {
+ action = result
}
}
- var throttledMousemoveWindow = throttle(mousemoveWindow, config.dragThrottleRate)
+ // do it!
+ if (action === 'snapback') {
+ snapbackDraggedPiece()
+ } else if (action === 'trash') {
+ trashDraggedPiece()
+ } else if (action === 'drop') {
+ dropDraggedPieceOnSquare(location)
+ }
+ if (
+ config.spareCounts &&
+ draggedPieceSource === 'spare' &&
+ action === 'drop'
+ ) {
+ config.spareCounts[draggedPiece] -= 1
+ var elem = (document.getElementById(
+ sparePiecesCountElsIds[draggedPiece]
+ ).innerText = config.spareCounts[draggedPiece])
+ }
+ }
+
+ // -------------------------------------------------------------------------
+ // Public Methods
+ // -------------------------------------------------------------------------
+
+ // clear the board
+ widget.clear = function (useAnimation) {
+ widget.position({}, useAnimation)
+ }
+
+ // remove the widget from the page
+ widget.destroy = function () {
+ // remove markup
+ $container.html('')
+ $draggedPiece.remove()
- function touchmoveWindow (evt) {
- // do nothing if we are not dragging a piece
- if (!isDragging) return
-
- // prevent screen from scrolling
+ // remove event handlers
+ $container.unbind()
+ }
+
+ // shorthand method to get the current FEN
+ widget.fen = function () {
+ return widget.position('fen')
+ }
+
+ // flip orientation
+ widget.flip = function () {
+ return widget.orientation('flip')
+ }
+
+ // move pieces
+ // TODO: this method should be variadic as well as accept an array of moves
+ widget.move = function () {
+ // no need to throw an error here; just do nothing
+ // TODO: this should return the current position
+ if (arguments.length === 0) return
+
+ var useAnimation = true
+
+ // collect the moves into an object
+ var moves = {}
+ for (var i = 0; i < arguments.length; i++) {
+ // any "false" to this function means no animations
+ if (arguments[i] === false) {
+ useAnimation = false
+ continue
+ }
+
+ // skip invalid arguments
+ if (!validMove(arguments[i])) {
+ error(2826, 'Invalid move passed to the move method.', arguments[i])
+ continue
+ }
+
+ var tmp = arguments[i].split('-')
+ moves[tmp[0]] = tmp[1]
+ }
+
+ // calculate position from moves
+ var newPos = calculatePositionFromMoves(currentPosition, moves)
+
+ // update the board
+ widget.position(newPos, useAnimation)
+
+ // return the new position object
+ return newPos
+ }
+
+ widget.orientation = function (arg) {
+ // no arguments, return the current orientation
+ if (arguments.length === 0) {
+ return currentOrientation
+ }
+
+ // set to white or black
+ if (arg === 'white' || arg === 'black') {
+ currentOrientation = arg
+ drawBoard()
+ return currentOrientation
+ }
+
+ // flip orientation
+ if (arg === 'flip') {
+ currentOrientation = currentOrientation === 'white' ? 'black' : 'white'
+ drawBoard()
+ return currentOrientation
+ }
+
+ error(5482, 'Invalid value passed to the orientation method.', arg)
+ }
+
+ widget.position = function (position, useAnimation) {
+ // no arguments, return the current position
+ if (arguments.length === 0) {
+ return deepCopy(currentPosition)
+ }
+
+ // get position as FEN
+ if (isString(position) && position.toLowerCase() === 'fen') {
+ return objToFen(currentPosition)
+ }
+
+ // start position
+ if (isString(position) && position.toLowerCase() === 'start') {
+ position = deepCopy(START_POSITION)
+ }
+
+ // convert FEN to position object
+ if (validFen(position)) {
+ position = fenToObj(position)
+ }
+
+ // validate position object
+ if (!validPositionObject(position)) {
+ error(6482, 'Invalid value passed to the position method.', position)
+ return
+ }
+
+ // default for useAnimations is true
+ if (useAnimation !== false) useAnimation = true
+
+ if (useAnimation) {
+ // start the animations
+ var animations = calculateAnimations(currentPosition, position)
+ doAnimations(animations, currentPosition, position)
+
+ // set the new position
+ setCurrentPosition(position)
+ } else {
+ // instant update
+ setCurrentPosition(position)
+ drawPositionInstant()
+ }
+ }
+
+ widget.resize = function () {
+ // calulate the new square size
+ squareSize = calculateSquareSize()
+
+ // set board width
+ $board.css('width', squareSize * 8 + 'px')
+
+ // set drag piece size
+ $draggedPiece.css({
+ height: squareSize,
+ width: squareSize
+ })
+
+ // spare pieces
+ if (config.sparePieces) {
+ $container.css(
+ 'paddingLeft',
+ ($board.clientWidth - $container.offsetWidth) / 2 + 'px'
+ )
+ }
+
+ // redraw the board
+ drawBoard()
+ }
+
+ // set the starting position
+ widget.start = function (useAnimation) {
+ widget.position('start', useAnimation)
+ }
+
+ // -------------------------------------------------------------------------
+ // Browser Events
+ // -------------------------------------------------------------------------
+
+ function mousedownSquare (evt) {
+ // do nothing if we're not draggable
+ if (!config.draggable) return
+
+ // do nothing if there is no piece on this square
+ var square = $(this).attr('data-square')
+ if (!validSquare(square)) return
+ if (!currentPosition.hasOwnProperty(square)) return
+
+ beginDraggingPiece(square, currentPosition[square], evt.pageX, evt.pageY)
+ }
+
+ function touchstartSquare (e) {
+ // do nothing if we're not draggable
+ if (!config.draggable) return
+
+ // do nothing if there is no piece on this square
+ var square = $(this).attr('data-square')
+ if (!validSquare(square)) return
+ if (!currentPosition.hasOwnProperty(square)) return
+
+ e = e.originalEvent
+ e.preventDefault()
+
+ beginDraggingPiece(
+ square,
+ currentPosition[square],
+ e.changedTouches[0].pageX,
+ e.changedTouches[0].pageY
+ )
+ }
+
+ function mousedownSparePiece (evt) {
+ // do nothing if sparePieces is not enabled
+ if (!config.sparePieces) return
+
+ var piece = $(this).attr('data-piece')
+
+ beginDraggingPiece('spare', piece, evt.pageX, evt.pageY)
+ }
+
+ function touchstartSparePiece (e) {
+ // do nothing if sparePieces is not enabled
+ if (!config.sparePieces) return
+
+ var piece = $(this).attr('data-piece')
+
+ e = e.originalEvent
+ e.preventDefault()
+
+ beginDraggingPiece(
+ 'spare',
+ piece,
+ e.changedTouches[0].pageX,
+ e.changedTouches[0].pageY
+ )
+ }
+
+ function mousemoveWindow (evt) {
+ if (isDragging) {
+ updateDraggedPiece(evt.pageX, evt.pageY)
+ }
+ }
+
+ var throttledMousemoveWindow = throttle(
+ mousemoveWindow,
+ config.dragThrottleRate
+ )
+
+ function touchmoveWindow (evt) {
+ // do nothing if we are not dragging a piece
+ if (!isDragging) return
+
+ updateDraggedPiece(
+ evt.originalEvent.changedTouches[0].pageX,
+ evt.originalEvent.changedTouches[0].pageY
+ )
+ }
+
+ var throttledTouchmoveWindow = throttle(
+ touchmoveWindow,
+ config.dragThrottleRate
+ )
+
+ function mouseupWindow (evt) {
+ // do nothing if we are not dragging a piece
+ if (!isDragging) return
+
+ // get the location
+ var location = isXYOnSquare(evt.pageX, evt.pageY)
+
+ stopDraggedPiece(location)
+ }
+
+ function touchendWindow (evt) {
+ // do nothing if we are not dragging a piece
+ if (!isDragging) return
+
+ // get the location
+ var location = isXYOnSquare(
+ evt.originalEvent.changedTouches[0].pageX,
+ evt.originalEvent.changedTouches[0].pageY
+ )
+
+ stopDraggedPiece(location)
+ }
+
+ function mouseenterSquare (evt) {
+ // do not fire this event if we are dragging a piece
+ // NOTE: this should never happen, but it's a safeguard
+ if (isDragging) return
+
+ // exit if they did not provide a onMouseoverSquare function
+ if (!isFunction(config.onMouseoverSquare)) return
+
+ // get the square
+ var square = $(evt.currentTarget).attr('data-square')
+
+ // NOTE: this should never happen; defensive
+ if (!validSquare(square)) return
+
+ // get the piece on this square
+ var piece = false
+ if (currentPosition.hasOwnProperty(square)) {
+ piece = currentPosition[square]
+ }
+
+ // execute their function
+ config.onMouseoverSquare(
+ square,
+ piece,
+ deepCopy(currentPosition),
+ currentOrientation
+ )
+ }
+
+ function mouseleaveSquare (evt) {
+ // do not fire this event if we are dragging a piece
+ // NOTE: this should never happen, but it's a safeguard
+ if (isDragging) return
+
+ // exit if they did not provide an onMouseoutSquare function
+ if (!isFunction(config.onMouseoutSquare)) return
+
+ // get the square
+ var square = $(evt.currentTarget).attr('data-square')
+
+ // NOTE: this should never happen; defensive
+ if (!validSquare(square)) return
+
+ // get the piece on this square
+ var piece = false
+ if (currentPosition.hasOwnProperty(square)) {
+ piece = currentPosition[square]
+ }
+
+ // execute their function
+ config.onMouseoutSquare(
+ square,
+ piece,
+ deepCopy(currentPosition),
+ currentOrientation
+ )
+ }
+
+ // -------------------------------------------------------------------------
+ // Initialization
+ // -------------------------------------------------------------------------
+
+ function addEvents () {
+ // prevent "image drag"
+ $('body').on('mousedown mousemove', '.' + CSS.piece, function (evt) {
evt.preventDefault()
-
- updateDraggedPiece(evt.originalEvent.changedTouches[0].pageX,
- evt.originalEvent.changedTouches[0].pageY)
- }
-
- var throttledTouchmoveWindow = throttle(touchmoveWindow, config.dragThrottleRate)
-
- function mouseupWindow (evt) {
- // do nothing if we are not dragging a piece
- if (!isDragging) return
-
- // get the location
- var location = isXYOnSquare(evt.pageX, evt.pageY)
-
- stopDraggedPiece(location)
- }
-
- function touchendWindow (evt) {
- // do nothing if we are not dragging a piece
- if (!isDragging) return
-
- // get the location
- var location = isXYOnSquare(evt.originalEvent.changedTouches[0].pageX,
- evt.originalEvent.changedTouches[0].pageY)
-
- stopDraggedPiece(location)
- }
-
- function mouseenterSquare (evt) {
- // do not fire this event if we are dragging a piece
- // NOTE: this should never happen, but it's a safeguard
- if (isDragging) return
-
- // exit if they did not provide a onMouseoverSquare function
- if (!isFunction(config.onMouseoverSquare)) return
-
- // get the square
- var square = $(evt.currentTarget).attr('data-square')
-
- // NOTE: this should never happen; defensive
- if (!validSquare(square)) return
-
- // get the piece on this square
- var piece = false
- if (currentPosition.hasOwnProperty(square)) {
- piece = currentPosition[square]
- }
-
- // execute their function
- config.onMouseoverSquare(square, piece, deepCopy(currentPosition), currentOrientation)
- }
-
- function mouseleaveSquare (evt) {
- // do not fire this event if we are dragging a piece
- // NOTE: this should never happen, but it's a safeguard
- if (isDragging) return
-
- // exit if they did not provide an onMouseoutSquare function
- if (!isFunction(config.onMouseoutSquare)) return
-
- // get the square
- var square = $(evt.currentTarget).attr('data-square')
-
- // NOTE: this should never happen; defensive
- if (!validSquare(square)) return
-
- // get the piece on this square
- var piece = false
- if (currentPosition.hasOwnProperty(square)) {
- piece = currentPosition[square]
- }
-
- // execute their function
- config.onMouseoutSquare(square, piece, deepCopy(currentPosition), currentOrientation)
- }
-
- // -------------------------------------------------------------------------
- // Initialization
- // -------------------------------------------------------------------------
-
- function addEvents () {
- // prevent "image drag"
- $('body').on('mousedown mousemove', '.' + CSS.piece, stopDefault)
-
- // mouse drag pieces
- $board.on('mousedown', '.' + CSS.square, mousedownSquare)
- $container.on('mousedown', '.' + CSS.sparePieces + ' .' + CSS.piece, mousedownSparePiece)
-
- // mouse enter / leave square
- $board
- .on('mouseenter', '.' + CSS.square, mouseenterSquare)
- .on('mouseleave', '.' + CSS.square, mouseleaveSquare)
-
- // piece drag
- var $window = $(window)
+ })
+
+ // mouse drag pieces
+ $board.on('mousedown', '.' + CSS.square, mousedownSquare)
+ $container.on(
+ 'mousedown',
+ '.' + CSS.sparePieces + ' .' + CSS.piece,
+ mousedownSparePiece
+ )
+
+ // mouse enter / leave square
+ $board
+ .on('mouseenter', '.' + CSS.square, mouseenterSquare)
+ .on('mouseleave', '.' + CSS.square, mouseleaveSquare)
+
+ // piece drag
+ var $window = $(window)
+ $window
+ .on('mousemove', throttledMousemoveWindow)
+ .on('mouseup', mouseupWindow)
+
+ // touch drag pieces
+ if (isTouchDevice()) {
+ $board.on('touchstart', '.' + CSS.square, touchstartSquare)
+ $container.on(
+ 'touchstart',
+ '.' + CSS.sparePieces + ' .' + CSS.piece,
+ touchstartSparePiece
+ )
$window
- .on('mousemove', throttledMousemoveWindow)
- .on('mouseup', mouseupWindow)
-
- // touch drag pieces
- if (isTouchDevice()) {
- $board.on('touchstart', '.' + CSS.square, touchstartSquare)
- $container.on('touchstart', '.' + CSS.sparePieces + ' .' + CSS.piece, touchstartSparePiece)
- $window
- .on('touchmove', throttledTouchmoveWindow)
- .on('touchend', touchendWindow)
- }
- }
-
- function initDOM () {
- // create unique IDs for all the elements we will create
- createElIds()
-
- // build board and save it in memory
- $container.html(buildContainerHTML(config.sparePieces))
- $board = $container.find('.' + CSS.board)
-
- if (config.sparePieces) {
- $sparePiecesTop = $container.find('.' + CSS.sparePiecesTop)
- $sparePiecesBottom = $container.find('.' + CSS.sparePiecesBottom)
- }
-
- // create the drag piece
- var draggedPieceId = uuid()
- $('body').append(buildPieceHTML('wP', true, draggedPieceId))
- $draggedPiece = $('#' + draggedPieceId)
-
- // TODO: need to remove this dragged piece element if the board is no
- // longer in the DOM
-
- // get the border size
- boardBorderSize = parseInt($board.css('borderLeftWidth'), 10)
-
- // set the size and draw the board
- widget.resize()
- }
-
- // -------------------------------------------------------------------------
- // Initialization
- // -------------------------------------------------------------------------
-
- setInitialState()
- initDOM()
- addEvents()
-
- // return the widget object
- return widget
- } // end constructor
-
- // TODO: do module exports here
- window['Chessboard'] = constructor
-
- // support legacy ChessBoard name
- window['ChessBoard'] = window['Chessboard']
-
- // expose util functions
- window['Chessboard']['fenToObj'] = fenToObj
- window['Chessboard']['objToFen'] = objToFen
-})() // end anonymous wrapper
-
-/* export Chessboard object if using node or any other CommonJS compatible
- * environment */
-if (typeof exports !== 'undefined') {
- exports.Chessboard = window.Chessboard
-}
+ .on('touchmove', throttledTouchmoveWindow)
+ .on('touchend', touchendWindow)
+ }
+ }
+
+ function initDOM () {
+ // create unique IDs for all the elements we will create
+ createElIds()
+
+ // build board and save it in memory
+ $container.html(buildContainerHTML(config.sparePieces))
+ $board = $container.find('.' + CSS.board)
+
+ if (config.sparePieces) {
+ $sparePiecesTop = $container.find('.' + CSS.sparePiecesTop)
+ $sparePiecesBottom = $container.find('.' + CSS.sparePiecesBottom)
+ }
+
+ // create the drag piece
+ var draggedPieceId = uuid()
+ $('body').append(buildPieceHTML('wP', true, draggedPieceId))
+ $draggedPiece = $('#' + draggedPieceId)
+
+ // TODO: need to remove this dragged piece element if the board is no
+ // longer in the DOM
+
+ // get the border size
+ boardBorderSize = parseInt($board.css('borderLeftWidth'), 10)
+
+ // set the size and draw the board
+ widget.resize()
+ }
+
+ // -------------------------------------------------------------------------
+ // Initialization
+ // -------------------------------------------------------------------------
+
+ if (config.preloadImages) preloadImages()
+ setInitialState()
+ initDOM()
+ addEvents()
+
+ // return the widget object
+ return widget
+} // end constructor
diff --git a/lib/chessboard.mjs b/lib/chessboard.mjs
new file mode 100644
index 00000000..d12b1f35
--- /dev/null
+++ b/lib/chessboard.mjs
@@ -0,0 +1,12 @@
+// chessboard.js v@VERSION
+// https://github.com/oakmac/chessboardjs/
+//
+// Portion Copyright (c) 2019, Chris Oakman
+// Portion Copyright (c) 2022, Miika Tuominen
+// Released under the MIT license
+// https://github.com/oakmac/chessboardjs/blob/master/LICENSE.md
+
+import $ from 'jquery'
+export { constructor as Chessboard, objToFen, fenToObj }
+
+INSERTSOURCE
diff --git a/lib/chessboardbrowser.js b/lib/chessboardbrowser.js
new file mode 100644
index 00000000..490e2bfd
--- /dev/null
+++ b/lib/chessboardbrowser.js
@@ -0,0 +1,25 @@
+// chessboard.js v@VERSION
+// https://github.com/oakmac/chessboardjs/
+//
+// Portion Copyright (c) 2019, Chris Oakman
+// Portion Copyright (c) 2022, Miika Tuominen
+// Released under the MIT license
+// https://github.com/oakmac/chessboardjs/blob/master/LICENSE.md
+
+;(function () {
+ 'use strict'
+
+ const $ = window['jQuery']
+
+ INSERTSOURCE
+
+ // TODO: do module exports here
+ window['Chessboard'] = constructor
+
+ // support legacy ChessBoard name
+ window['ChessBoard'] = window['Chessboard']
+
+ // expose util functions
+ window['Chessboard']['fenToObj'] = fenToObj
+ window['Chessboard']['objToFen'] = objToFen
+})() // end anonymous wrapper
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 00000000..dbdc5157
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,4777 @@
+{
+ "name": "@discape/chessboardjs",
+ "version": "1.1.2",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "@discape/chessboardjs",
+ "version": "1.1.2",
+ "license": "MIT",
+ "dependencies": {
+ "jquery": ">=3.4.1"
+ },
+ "devDependencies": {
+ "csso": "3.5.1",
+ "fs-plus": "3.1.1",
+ "kidif": "1.1.0",
+ "mustache": "2.3.0",
+ "standard": "10.0.2",
+ "uglify-js": "^3.16.2"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "5.7.4",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz",
+ "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz",
+ "integrity": "sha512-AU7pnZkguthwBjKgCg6998ByQNIMjbuDQZ8bb78QAFZwPfmKia8AIzgY/gWgqCjnht8JLdXmB4YxA0KaV60ncQ==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^3.0.4"
+ }
+ },
+ "node_modules/acorn-jsx/node_modules/acorn": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
+ "integrity": "sha512-OLUyIIZ7mF5oaAUT1w0TFqQS81q3saT46x8t7ukpPjMNk+nbs4ZHhs7ToV8EWnLYLepjETXd4XaCE4uxkMeqUw==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
+ "integrity": "sha512-I/bSHSNEcFFqXLf91nchoNB9D1Kie3QKcWdchYUaoIg1+1bdWDkdfdlvdIOJbi9U8xR0y+MWc5D+won9v95WlQ==",
+ "dev": true,
+ "dependencies": {
+ "co": "^4.6.0",
+ "json-stable-stringify": "^1.0.1"
+ }
+ },
+ "node_modules/ajv-keywords": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz",
+ "integrity": "sha512-vuBv+fm2s6cqUyey2A7qYcvsik+GMDJsw8BARP2sDE76cqmaZVarsvHf7Vx6VJ0Xk8gLl+u3MoAPf6gKzJefeA==",
+ "dev": true,
+ "peerDependencies": {
+ "ajv": ">=4.10.0"
+ }
+ },
+ "node_modules/ansi-escapes": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz",
+ "integrity": "sha512-wiXutNjDUlNEDWHcYH3jtZUhd3c4/VojassD8zHdHCY13xbZy2XbW+NKQwA0tWGBVzDA9qEzYwfoSsWmviidhw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/array.prototype.find": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.2.0.tgz",
+ "integrity": "sha512-sn40qmUiLYAcRb/1HsIQjTTZ1kCy8II8VtZJpMn2Aoen9twULhbWXisfh3HimGqMlHGUul0/TfKCnXg42LuPpQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.4",
+ "es-shim-unscopables": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==",
+ "dev": true
+ },
+ "node_modules/babel-code-frame": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+ "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^1.1.3",
+ "esutils": "^2.0.2",
+ "js-tokens": "^3.0.2"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true
+ },
+ "node_modules/builtin-modules": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
+ "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/caller-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
+ "integrity": "sha512-UJiE1otjXPF5/x+T3zTnSFiTOEmJoGTD9HmBoxnCUwho61a2eSNn/VwtwuIBDAo2SEOv1AJ7ARI5gCmohFLu/g==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^0.2.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
+ "integrity": "sha512-Zv4Dns9IbXXmPkgRRUjAaJQgfN4xX5p6+RQFhWUqscdvvK2xK/ZL8b3IXIJsj+4sD+f24NwnWy2BY8AJ82JB0A==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/circular-json": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
+ "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
+ "deprecated": "CircularJSON is in maintenance only, flatted is its successor.",
+ "dev": true
+ },
+ "node_modules/cli-cursor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
+ "integrity": "sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A==",
+ "dev": true,
+ "dependencies": {
+ "restore-cursor": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/cli-width": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
+ "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
+ "dev": true
+ },
+ "node_modules/co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
+ "dev": true,
+ "engines": {
+ "iojs": ">= 1.0.0",
+ "node": ">= 0.12.0"
+ }
+ },
+ "node_modules/code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "node_modules/concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "dev": true,
+ "engines": [
+ "node >= 0.8"
+ ],
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "node_modules/contains-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
+ "integrity": "sha512-OKZnPGeMQy2RPaUIBPFFd71iNf4791H12MCRuVQDnzGRwCYNYmTDy5pdafo2SLAcEMKzTOQnLWG4QdcjeJUMEg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
+ "dev": true
+ },
+ "node_modules/css-tree": {
+ "version": "1.0.0-alpha.29",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz",
+ "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==",
+ "dev": true,
+ "dependencies": {
+ "mdn-data": "~1.1.0",
+ "source-map": "^0.5.3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/csso": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.1.tgz",
+ "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==",
+ "dev": true,
+ "dependencies": {
+ "css-tree": "1.0.0-alpha.29"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/d": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
+ "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
+ "dev": true,
+ "dependencies": {
+ "es5-ext": "^0.10.50",
+ "type": "^1.0.1"
+ }
+ },
+ "node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/debug-log": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz",
+ "integrity": "sha512-gV/pe1YIaKNgLYnd1g9VNW80tcb7oV5qvNUxG7NM8rbDpnl6RGunzlAtlGSb0wEs3nesu2vHNiX9TSsZ+Y+RjA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/define-properties": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
+ "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
+ "dev": true,
+ "dependencies": {
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/deglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.1.tgz",
+ "integrity": "sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw==",
+ "dev": true,
+ "dependencies": {
+ "find-root": "^1.0.0",
+ "glob": "^7.0.5",
+ "ignore": "^3.0.9",
+ "pkg-config": "^1.1.0",
+ "run-parallel": "^1.1.2",
+ "uniq": "^1.0.1"
+ }
+ },
+ "node_modules/deglob/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/es-abstract": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz",
+ "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "es-to-primitive": "^1.2.1",
+ "function-bind": "^1.1.1",
+ "function.prototype.name": "^1.1.5",
+ "get-intrinsic": "^1.1.1",
+ "get-symbol-description": "^1.0.0",
+ "has": "^1.0.3",
+ "has-property-descriptors": "^1.0.0",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.3",
+ "is-callable": "^1.2.4",
+ "is-negative-zero": "^2.0.2",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.2",
+ "is-string": "^1.0.7",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.12.0",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.2",
+ "regexp.prototype.flags": "^1.4.3",
+ "string.prototype.trimend": "^1.0.5",
+ "string.prototype.trimstart": "^1.0.5",
+ "unbox-primitive": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-shim-unscopables": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
+ "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
+ "dev": true,
+ "dependencies": {
+ "has": "^1.0.3"
+ }
+ },
+ "node_modules/es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es5-ext": {
+ "version": "0.10.61",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz",
+ "integrity": "sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "dependencies": {
+ "es6-iterator": "^2.0.3",
+ "es6-symbol": "^3.1.3",
+ "next-tick": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/es6-iterator": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
+ "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
+ "dev": true,
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "^0.10.35",
+ "es6-symbol": "^3.1.1"
+ }
+ },
+ "node_modules/es6-map": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz",
+ "integrity": "sha512-mz3UqCh0uPCIqsw1SSAkB/p0rOzF/M0V++vyN7JqlPtSW/VsYgQBvVvqMLmfBuyMzTpLnNqi6JmcSizs4jy19A==",
+ "dev": true,
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "~0.10.14",
+ "es6-iterator": "~2.0.1",
+ "es6-set": "~0.1.5",
+ "es6-symbol": "~3.1.1",
+ "event-emitter": "~0.3.5"
+ }
+ },
+ "node_modules/es6-set": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz",
+ "integrity": "sha512-7S8YXIcUfPMOr3rqJBVMePAbRsD1nWeSMQ86K/lDI76S3WKXz+KWILvTIPbTroubOkZTGh+b+7/xIIphZXNYbA==",
+ "dev": true,
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "~0.10.14",
+ "es6-iterator": "~2.0.1",
+ "es6-symbol": "3.1.1",
+ "event-emitter": "~0.3.5"
+ }
+ },
+ "node_modules/es6-set/node_modules/es6-symbol": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
+ "integrity": "sha512-exfuQY8UGtn/N+gL1iKkH8fpNd5sJ760nJq6mmZAHldfxMD5kX07lbQuYlspoXsuknXNv9Fb7y2GsPOnQIbxHg==",
+ "dev": true,
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "~0.10.14"
+ }
+ },
+ "node_modules/es6-symbol": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
+ "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
+ "dev": true,
+ "dependencies": {
+ "d": "^1.0.1",
+ "ext": "^1.1.2"
+ }
+ },
+ "node_modules/es6-weak-map": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
+ "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
+ "dev": true,
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "^0.10.46",
+ "es6-iterator": "^2.0.3",
+ "es6-symbol": "^3.1.1"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/escope": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz",
+ "integrity": "sha512-75IUQsusDdalQEW/G/2esa87J7raqdJF+Ca0/Xm5C3Q58Nr4yVYjZGp/P1+2xiEVgXRrA39dpRb8LcshajbqDQ==",
+ "dev": true,
+ "dependencies": {
+ "es6-map": "^0.1.3",
+ "es6-weak-map": "^2.0.1",
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "3.19.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz",
+ "integrity": "sha512-x6LJGXWCGB/4YOBhL48yeppZTo+YQUNC37N5qqCpC1b1kkNzydlQHQAtPuUSFoZSxgIadrysQoW2Hq602P+uEA==",
+ "dev": true,
+ "dependencies": {
+ "babel-code-frame": "^6.16.0",
+ "chalk": "^1.1.3",
+ "concat-stream": "^1.5.2",
+ "debug": "^2.1.1",
+ "doctrine": "^2.0.0",
+ "escope": "^3.6.0",
+ "espree": "^3.4.0",
+ "esquery": "^1.0.0",
+ "estraverse": "^4.2.0",
+ "esutils": "^2.0.2",
+ "file-entry-cache": "^2.0.0",
+ "glob": "^7.0.3",
+ "globals": "^9.14.0",
+ "ignore": "^3.2.0",
+ "imurmurhash": "^0.1.4",
+ "inquirer": "^0.12.0",
+ "is-my-json-valid": "^2.10.0",
+ "is-resolvable": "^1.0.0",
+ "js-yaml": "^3.5.1",
+ "json-stable-stringify": "^1.0.0",
+ "levn": "^0.3.0",
+ "lodash": "^4.0.0",
+ "mkdirp": "^0.5.0",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.8.2",
+ "path-is-inside": "^1.0.1",
+ "pluralize": "^1.2.1",
+ "progress": "^1.1.8",
+ "require-uncached": "^1.0.2",
+ "shelljs": "^0.7.5",
+ "strip-bom": "^3.0.0",
+ "strip-json-comments": "~2.0.1",
+ "table": "^3.7.8",
+ "text-table": "~0.2.0",
+ "user-home": "^2.0.0"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-config-standard": {
+ "version": "10.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz",
+ "integrity": "sha512-UkFojTV1o0GOe1edOEiuI5ccYLJSuNngtqSeClNzhsmG8KPJ+7mRxgtp2oYhqZAK/brlXMoCd+VgXViE0AfyKw==",
+ "dev": true,
+ "peerDependencies": {
+ "eslint": ">=3.19.0",
+ "eslint-plugin-import": ">=2.2.0",
+ "eslint-plugin-node": ">=4.2.2",
+ "eslint-plugin-promise": ">=3.5.0",
+ "eslint-plugin-standard": ">=3.0.0"
+ }
+ },
+ "node_modules/eslint-config-standard-jsx": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.1.tgz",
+ "integrity": "sha512-6XxcwOm22JWEVrDTxhkh/M9Qv5FCNPHKDGh4LPmWnFj4MDuNs7iXZatahYghIcMw5mkVMadLl7KFAWH/EOIeAA==",
+ "dev": true,
+ "peerDependencies": {
+ "eslint": ">=3.19.0",
+ "eslint-plugin-react": ">=6.10.3"
+ }
+ },
+ "node_modules/eslint-import-resolver-node": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz",
+ "integrity": "sha512-HI8ShtDIy7gON76Nr3bu4zl0DuCLPo1Fud9P2lltOQKeiAS2r5/o/l3y+V8HJ1cDLFSz+tHu7/V9fI5jirwlbw==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^2.2.0",
+ "object-assign": "^4.0.1",
+ "resolve": "^1.1.6"
+ }
+ },
+ "node_modules/eslint-module-utils": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz",
+ "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^3.2.7",
+ "find-up": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-module-utils/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-module-utils/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "node_modules/eslint-plugin-import": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.2.0.tgz",
+ "integrity": "sha512-8HLeIYzOH4eltevxf+iC9Dtz/91yaeOqtlba5srcpQWLrv57F5NNG1RNLqAbpWJWDD4BxKuKjUveJY9W6Tbswg==",
+ "dev": true,
+ "dependencies": {
+ "builtin-modules": "^1.1.1",
+ "contains-path": "^0.1.0",
+ "debug": "^2.2.0",
+ "doctrine": "1.5.0",
+ "eslint-import-resolver-node": "^0.2.0",
+ "eslint-module-utils": "^2.0.0",
+ "has": "^1.0.1",
+ "lodash.cond": "^4.3.0",
+ "minimatch": "^3.0.3",
+ "pkg-up": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "2.x - 3.x"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/doctrine": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
+ "integrity": "sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2",
+ "isarray": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-node": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-4.2.3.tgz",
+ "integrity": "sha512-vIUQPuwbVYdz/CYnlTLsJrRy7iXHQjdEe5wz0XhhdTym3IInM/zZLlPf9nZ2mThsH0QcsieCOWs2vOeCy/22LQ==",
+ "dev": true,
+ "dependencies": {
+ "ignore": "^3.0.11",
+ "minimatch": "^3.0.2",
+ "object-assign": "^4.0.1",
+ "resolve": "^1.1.7",
+ "semver": "5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": ">=3.1.0"
+ }
+ },
+ "node_modules/eslint-plugin-promise": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz",
+ "integrity": "sha512-kqXN7i1wfx5j7XuFVzuX4W3XDCEyNDsbd+O5NXWIl+zTSP510rKn2Xk8OO6JhM1ivXbkse0tQf6jjSTLS58Prg==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-plugin-react": {
+ "version": "6.10.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz",
+ "integrity": "sha512-vFfMSxJynKlgOhIVjhlZyibVUg442Aiv3482XPkgdYV90T8nD2QvxGXILZGwZHYMQ/l+A/De14O9D0qjDelSrg==",
+ "dev": true,
+ "dependencies": {
+ "array.prototype.find": "^2.0.1",
+ "doctrine": "^1.2.2",
+ "has": "^1.0.1",
+ "jsx-ast-utils": "^1.3.4",
+ "object.assign": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=0.10"
+ },
+ "peerDependencies": {
+ "eslint": "^2.0.0 || ^3.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/doctrine": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
+ "integrity": "sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2",
+ "isarray": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-standard": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz",
+ "integrity": "sha512-JyT7wqVYlaHxnljWMT7CKa0R1QDQqArTi6g8kYnexTHHuK7x3Vg//kCepnoTgdT9x/kDbSluXMhJgjBvgVRLlQ==",
+ "dev": true,
+ "peerDependencies": {
+ "eslint": ">=3.19.0"
+ }
+ },
+ "node_modules/eslint/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/espree": {
+ "version": "3.5.4",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz",
+ "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^5.5.0",
+ "acorn-jsx": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true,
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
+ "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esquery/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esrecurse/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/event-emitter": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
+ "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
+ "dev": true,
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "~0.10.14"
+ }
+ },
+ "node_modules/exit-hook": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz",
+ "integrity": "sha512-MsG3prOVw1WtLXAZbM3KiYtooKR1LvxHh3VHsVtIy0uiUu8usxgB/94DP2HxtD/661lLdB6yzQ09lGJSQr6nkg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ext": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz",
+ "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==",
+ "dev": true,
+ "dependencies": {
+ "type": "^2.5.0"
+ }
+ },
+ "node_modules/ext/node_modules/type": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz",
+ "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==",
+ "dev": true
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "node_modules/figures": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
+ "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "^1.0.5",
+ "object-assign": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
+ "integrity": "sha512-uXP/zGzxxFvFfcZGgBIwotm+Tdc55ddPAzF7iHshP4YGaXMww7rSF9peD9D1sui5ebONg5UobsZv+FfgEpGv/w==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^1.2.1",
+ "object-assign": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/find-root": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
+ "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==",
+ "dev": true
+ },
+ "node_modules/find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz",
+ "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==",
+ "dev": true,
+ "dependencies": {
+ "circular-json": "^0.3.1",
+ "graceful-fs": "^4.1.2",
+ "rimraf": "~2.6.2",
+ "write": "^0.2.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/flat-cache/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/flat-cache/node_modules/rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ }
+ },
+ "node_modules/fs-plus": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/fs-plus/-/fs-plus-3.1.1.tgz",
+ "integrity": "sha512-Se2PJdOWXqos1qVTkvqqjb0CSnfBnwwD+pq+z4ksT+e97mEShod/hrNg0TRCCsXPbJzcIq+NuzQhigunMWMJUA==",
+ "dev": true,
+ "dependencies": {
+ "async": "^1.5.2",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.2",
+ "underscore-plus": "1.x"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "node_modules/function.prototype.name": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
+ "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.0",
+ "functions-have-names": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/generate-function": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
+ "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==",
+ "dev": true,
+ "dependencies": {
+ "is-property": "^1.0.2"
+ }
+ },
+ "node_modules/generate-object-property": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
+ "integrity": "sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==",
+ "dev": true,
+ "dependencies": {
+ "is-property": "^1.0.0"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz",
+ "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-stdin": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz",
+ "integrity": "sha512-jZV7n6jGE3Gt7fgSTJoz91Ak5MuTLwMwkoYdjxuJ/AmjIsE1UC03y/IWkZCQGEvVNS9qoRNwy5BCqxImv0FVeA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/get-symbol-description": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+ "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.0.tgz",
+ "integrity": "sha512-Fa+aQV0FFMU4/Jg5mquHjv5DikTujeAWOpbGa9lsG2Qa+ehYxbGN3cCY/T+C+jAS8gKBnYN2MbrdNm0UCAcp7w==",
+ "dev": true,
+ "dependencies": {
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/globals": {
+ "version": "9.18.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
+ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.10",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
+ "dev": true
+ },
+ "node_modules/has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-bigints": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
+ "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+ "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "3.3.10",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
+ "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
+ "dev": true
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/inquirer": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz",
+ "integrity": "sha512-bOetEz5+/WpgaW4D1NYOk1aD+JCqRjqu/FwRFgnIfiP7FC/zinsrfyO1vlS3nyH/R7S0IH3BIHBu4DBIDSqiGQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-escapes": "^1.1.0",
+ "ansi-regex": "^2.0.0",
+ "chalk": "^1.0.0",
+ "cli-cursor": "^1.0.1",
+ "cli-width": "^2.0.0",
+ "figures": "^1.3.5",
+ "lodash": "^4.3.0",
+ "readline2": "^1.0.1",
+ "run-async": "^0.1.0",
+ "rx-lite": "^3.1.2",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.0",
+ "through": "^2.3.6"
+ }
+ },
+ "node_modules/internal-slot": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
+ "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.0",
+ "has": "^1.0.3",
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/interpret": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
+ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true
+ },
+ "node_modules/is-bigint": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "dev": true,
+ "dependencies": {
+ "has-bigints": "^1.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-boolean-object": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-callable": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
+ "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
+ "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
+ "dev": true,
+ "dependencies": {
+ "has": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
+ "dev": true,
+ "dependencies": {
+ "number-is-nan": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-my-ip-valid": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.1.tgz",
+ "integrity": "sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg==",
+ "dev": true
+ },
+ "node_modules/is-my-json-valid": {
+ "version": "2.20.6",
+ "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.6.tgz",
+ "integrity": "sha512-1JQwulVNjx8UqkPE/bqDaxtH4PXCe/2VRh/y3p99heOV87HG4Id5/VfDswd+YiAfHcRTfDlWgISycnHuhZq1aw==",
+ "dev": true,
+ "dependencies": {
+ "generate-function": "^2.0.0",
+ "generate-object-property": "^1.1.0",
+ "is-my-ip-valid": "^1.0.0",
+ "jsonpointer": "^5.0.0",
+ "xtend": "^4.0.0"
+ }
+ },
+ "node_modules/is-negative-zero": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
+ "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-number-object": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-property": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
+ "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==",
+ "dev": true
+ },
+ "node_modules/is-regex": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-resolvable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
+ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
+ "dev": true
+ },
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-symbol": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakref": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "dev": true
+ },
+ "node_modules/jquery": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
+ "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw=="
+ },
+ "node_modules/js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==",
+ "dev": true
+ },
+ "node_modules/js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true
+ },
+ "node_modules/json-stable-stringify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
+ "integrity": "sha512-i/J297TW6xyj7sDFa7AmBPkQvLIxWr2kKPWI26tXydnZrzVAocNqn5DMNT1Mzk0vit1V5UkRM7C1KdVNp7Lmcg==",
+ "dev": true,
+ "dependencies": {
+ "jsonify": "~0.0.0"
+ }
+ },
+ "node_modules/jsonify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+ "integrity": "sha512-trvBk1ki43VZptdBI5rIlG4YOzyeH/WefQt5rj1grasPn4iiZWKet8nkgc4GlsAylaztn0qZfUYOiTsASJFdNA==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/jsonpointer": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.0.tgz",
+ "integrity": "sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/jsx-ast-utils": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz",
+ "integrity": "sha512-0LwSmMlQjjUdXsdlyYhEfBJCn2Chm0zgUBmfmf1++KUULh+JOdlzrZfiwe2zmlVJx44UF+KX/B/odBoeK9hxmw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/kidif": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/kidif/-/kidif-1.1.0.tgz",
+ "integrity": "sha512-QmAHSkWEYssexdqWQshtfEd/AGeJAXHuV1pu607ePgNwwSf2X6fuIzUJsLtKbUQ/ak0pokdwDr8ocZ9sygKhTg==",
+ "dev": true,
+ "dependencies": {
+ "glob": "7.0.0"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/load-json-file": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
+ "strip-bom": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
+ "node_modules/lodash.cond": {
+ "version": "4.5.2",
+ "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz",
+ "integrity": "sha512-RWjUhzGbzG/KfDwk+onqdXvrsNv47G9UCMJgSKalPTSqJQyxZhQophG9jgqLf+15TIbZ5a/yG2YKOWsH3dVy9A==",
+ "dev": true
+ },
+ "node_modules/mdn-data": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz",
+ "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==",
+ "dev": true
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
+ "dev": true
+ },
+ "node_modules/mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.6"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/mustache": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/mustache/-/mustache-2.3.0.tgz",
+ "integrity": "sha512-IgZ/cCHtDG1ft0vdDV9wrlNz20SvbUu2ECoDF6dhk2ZtedLNy1Kehy4oFlzmHPxcUQmVZuXYS2j+d0NkaEjTXQ==",
+ "dev": true,
+ "bin": {
+ "mustache": "bin/mustache"
+ },
+ "engines": {
+ "npm": ">=1.4.0"
+ }
+ },
+ "node_modules/mute-stream": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz",
+ "integrity": "sha512-EbrziT4s8cWPmzr47eYVW3wimS4HsvlnV5ri1xw1aR6JQo/OrJX5rkl32K/QQHdxeabJETtfeaROGhd8W7uBgg==",
+ "dev": true
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true
+ },
+ "node_modules/next-tick": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
+ "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
+ "dev": true
+ },
+ "node_modules/number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
+ "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.assign": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
+ "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3",
+ "has-symbols": "^1.0.1",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
+ "integrity": "sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
+ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+ "dev": true,
+ "dependencies": {
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.6",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "word-wrap": "~1.2.3"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
+ "dev": true,
+ "dependencies": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==",
+ "dev": true
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "node_modules/pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
+ "dev": true,
+ "dependencies": {
+ "pinkie": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pkg-conf": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz",
+ "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^2.0.0",
+ "load-json-file": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/pkg-config": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz",
+ "integrity": "sha512-ft/WI9YK6FuTuw4Ql+QUaNXtm/ASQNqDUUsZEgFZKyFpW6amyP8Gx01xrRs8KdiNbbqXfYxkOXplpq1euWbOjw==",
+ "dev": true,
+ "dependencies": {
+ "debug-log": "^1.0.0",
+ "find-root": "^1.0.0",
+ "xtend": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/pkg-up": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz",
+ "integrity": "sha512-L+d849d9lz20hnRpUnWBRXOh+mAvygQpK7UuXiw+6QbPwL55RVgl+G+V936wCzs/6J7fj0pvgLY9OknZ+FqaNA==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pkg-up/node_modules/find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==",
+ "dev": true,
+ "dependencies": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pkg-up/node_modules/path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==",
+ "dev": true,
+ "dependencies": {
+ "pinkie-promise": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pluralize": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz",
+ "integrity": "sha512-TH+BeeL6Ct98C7as35JbZLf8lgsRzlNJb5gklRIGHKaPkGl1esOKBc5ALUMd+q08Sr6tiEKM+Icbsxg5vuhMKQ==",
+ "dev": true
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "dev": true
+ },
+ "node_modules/progress": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
+ "integrity": "sha512-UdA8mJ4weIkUBO224tIarHzuHs4HuYiJvsuGT7j/SPQiUJVjYvNDBIPa0hAorduOfjGohB/qHWRa/lrrWX/mXw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "dev": true,
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/readline2": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz",
+ "integrity": "sha512-8/td4MmwUB6PkZUbV25uKz7dfrmjYWxsW8DVfibWdlHRk/l/DfHKn4pU+dfcoGLFgWOdyGCzINRQD7jn+Bv+/g==",
+ "dev": true,
+ "dependencies": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "mute-stream": "0.0.5"
+ }
+ },
+ "node_modules/rechoir": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+ "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
+ "dev": true,
+ "dependencies": {
+ "resolve": "^1.1.6"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
+ "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "functions-have-names": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/require-uncached": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
+ "integrity": "sha512-Xct+41K3twrbBHdxAgMoOS+cNcoqIjfM2/VxBF4LL2hVph7YsF8VSKyQ3BDFZwEVbok9yeDl2le/qo0S77WG2w==",
+ "dev": true,
+ "dependencies": {
+ "caller-path": "^0.1.0",
+ "resolve-from": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.22.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
+ "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.9.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
+ "integrity": "sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/restore-cursor": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz",
+ "integrity": "sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw==",
+ "dev": true,
+ "dependencies": {
+ "exit-hook": "^1.0.0",
+ "onetime": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ }
+ },
+ "node_modules/rimraf/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/run-async": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz",
+ "integrity": "sha512-qOX+w+IxFgpUpJfkv2oGN0+ExPs68F4sZHfaRRx4dDexAQkG83atugKVEylyT5ARees3HBbfmuvnjbrd8j9Wjw==",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/rx-lite": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz",
+ "integrity": "sha512-1I1+G2gteLB8Tkt8YI1sJvSIfa0lWuRtC8GjvtyPBcLSF5jBCCJJqKrpER5JU5r6Bhe+i9/pK3VMuUcXu0kdwQ==",
+ "dev": true
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "node_modules/semver": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+ "integrity": "sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/shelljs": {
+ "version": "0.7.8",
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz",
+ "integrity": "sha512-/YF5Uk8hcwi7ima04ppkbA4RaRMdPMBfwAvAf8sufYOxsJRtbdoBsT8vGvlb+799BrlGdYrd+oczIA2eN2JdWA==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.0.0",
+ "interpret": "^1.0.0",
+ "rechoir": "^0.6.2"
+ },
+ "bin": {
+ "shjs": "bin/shjs"
+ },
+ "engines": {
+ "iojs": "*",
+ "node": ">=0.11.0"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/slice-ansi": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz",
+ "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "dev": true
+ },
+ "node_modules/standard": {
+ "version": "10.0.2",
+ "resolved": "https://registry.npmjs.org/standard/-/standard-10.0.2.tgz",
+ "integrity": "sha512-NiEPy0kaa7yufaPsMT63a7MvTzfRyFrSItcTKYS4I9oFskgpQy0hXL0oOxbr836O7kTKgaxLZiv5lZmBWZRffg==",
+ "dev": true,
+ "dependencies": {
+ "eslint": "~3.19.0",
+ "eslint-config-standard": "10.2.1",
+ "eslint-config-standard-jsx": "4.0.1",
+ "eslint-plugin-import": "~2.2.0",
+ "eslint-plugin-node": "~4.2.2",
+ "eslint-plugin-promise": "~3.5.0",
+ "eslint-plugin-react": "~6.10.0",
+ "eslint-plugin-standard": "~3.0.1",
+ "standard-engine": "~7.0.0"
+ },
+ "bin": {
+ "standard": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/standard-engine": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-7.0.0.tgz",
+ "integrity": "sha512-d/NYzmZxQRxbcoCqlbI9gEMPYq7TLsU6Ywpki54xhedEd0GC4G02j1B7mlexb7HovqRtAtcUPTLQx2MnCO/uyA==",
+ "dev": true,
+ "dependencies": {
+ "deglob": "^2.1.0",
+ "get-stdin": "^5.0.1",
+ "minimist": "^1.1.0",
+ "pkg-conf": "^2.0.0"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
+ "dev": true,
+ "dependencies": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/string.prototype.trimend": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz",
+ "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.19.5"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimstart": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz",
+ "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.19.5"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/table": {
+ "version": "3.8.3",
+ "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz",
+ "integrity": "sha512-RZuzIOtzFbprLCE0AXhkI0Xi42ZJLZhCC+qkwuMLf/Vjz3maWpA8gz1qMdbmNoI9cOROT2Am/DxeRyXenrL11g==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^4.7.0",
+ "ajv-keywords": "^1.0.0",
+ "chalk": "^1.1.1",
+ "lodash": "^4.0.0",
+ "slice-ansi": "0.0.4",
+ "string-width": "^2.0.0"
+ }
+ },
+ "node_modules/table/node_modules/ansi-regex": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
+ "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/table/node_modules/is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/table/node_modules/string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "dependencies": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/table/node_modules/strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true
+ },
+ "node_modules/through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+ "dev": true
+ },
+ "node_modules/type": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
+ "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==",
+ "dev": true
+ },
+ "node_modules/type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
+ "dev": true
+ },
+ "node_modules/uglify-js": {
+ "version": "3.16.2",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.16.2.tgz",
+ "integrity": "sha512-AaQNokTNgExWrkEYA24BTNMSjyqEXPSfhqoS0AxmHkCJ4U+Dyy5AvbGV/sqxuxficEfGGoX3zWw9R7QpLFfEsg==",
+ "dev": true,
+ "bin": {
+ "uglifyjs": "bin/uglifyjs"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/unbox-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
+ "which-boxed-primitive": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/underscore": {
+ "version": "1.13.4",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.4.tgz",
+ "integrity": "sha512-BQFnUDuAQ4Yf/cYY5LNrK9NCJFKriaRbD9uR1fTeXnBeoa97W0i41qkZfGO9pSo8I5KzjAcSY2XYtdf0oKd7KQ==",
+ "dev": true
+ },
+ "node_modules/underscore-plus": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/underscore-plus/-/underscore-plus-1.7.0.tgz",
+ "integrity": "sha512-A3BEzkeicFLnr+U/Q3EyWwJAQPbA19mtZZ4h+lLq3ttm9kn8WC4R3YpuJZEXmWdLjYP47Zc8aLZm9kwdv+zzvA==",
+ "dev": true,
+ "dependencies": {
+ "underscore": "^1.9.1"
+ }
+ },
+ "node_modules/uniq": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
+ "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==",
+ "dev": true
+ },
+ "node_modules/user-home": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz",
+ "integrity": "sha512-KMWqdlOcjCYdtIJpicDSFBQ8nFwS2i9sslAd6f4+CBGcU4gist2REnr2fxj2YocvJFxSF3ZOHLYLVZnUxv4BZQ==",
+ "dev": true,
+ "dependencies": {
+ "os-homedir": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true
+ },
+ "node_modules/which-boxed-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "dev": true,
+ "dependencies": {
+ "is-bigint": "^1.0.1",
+ "is-boolean-object": "^1.1.0",
+ "is-number-object": "^1.0.4",
+ "is-string": "^1.0.5",
+ "is-symbol": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/word-wrap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
+ },
+ "node_modules/write": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
+ "integrity": "sha512-CJ17OoULEKXpA5pef3qLj5AxTJ6mSt7g84he2WIskKwqFO4T97d5V7Tadl0DYDk7qyUOQD5WlUlOMChaYrhxeA==",
+ "dev": true,
+ "dependencies": {
+ "mkdirp": "^0.5.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4"
+ }
+ }
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.7.4",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz",
+ "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==",
+ "dev": true
+ },
+ "acorn-jsx": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz",
+ "integrity": "sha512-AU7pnZkguthwBjKgCg6998ByQNIMjbuDQZ8bb78QAFZwPfmKia8AIzgY/gWgqCjnht8JLdXmB4YxA0KaV60ncQ==",
+ "dev": true,
+ "requires": {
+ "acorn": "^3.0.4"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
+ "integrity": "sha512-OLUyIIZ7mF5oaAUT1w0TFqQS81q3saT46x8t7ukpPjMNk+nbs4ZHhs7ToV8EWnLYLepjETXd4XaCE4uxkMeqUw==",
+ "dev": true
+ }
+ }
+ },
+ "ajv": {
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
+ "integrity": "sha512-I/bSHSNEcFFqXLf91nchoNB9D1Kie3QKcWdchYUaoIg1+1bdWDkdfdlvdIOJbi9U8xR0y+MWc5D+won9v95WlQ==",
+ "dev": true,
+ "requires": {
+ "co": "^4.6.0",
+ "json-stable-stringify": "^1.0.1"
+ }
+ },
+ "ajv-keywords": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz",
+ "integrity": "sha512-vuBv+fm2s6cqUyey2A7qYcvsik+GMDJsw8BARP2sDE76cqmaZVarsvHf7Vx6VJ0Xk8gLl+u3MoAPf6gKzJefeA==",
+ "dev": true,
+ "requires": {}
+ },
+ "ansi-escapes": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz",
+ "integrity": "sha512-wiXutNjDUlNEDWHcYH3jtZUhd3c4/VojassD8zHdHCY13xbZy2XbW+NKQwA0tWGBVzDA9qEzYwfoSsWmviidhw==",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
+ "dev": true
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "array.prototype.find": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.2.0.tgz",
+ "integrity": "sha512-sn40qmUiLYAcRb/1HsIQjTTZ1kCy8II8VtZJpMn2Aoen9twULhbWXisfh3HimGqMlHGUul0/TfKCnXg42LuPpQ==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.4",
+ "es-shim-unscopables": "^1.0.0"
+ }
+ },
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==",
+ "dev": true
+ },
+ "babel-code-frame": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+ "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.1.3",
+ "esutils": "^2.0.2",
+ "js-tokens": "^3.0.2"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true
+ },
+ "builtin-modules": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
+ "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==",
+ "dev": true
+ },
+ "call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ }
+ },
+ "caller-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
+ "integrity": "sha512-UJiE1otjXPF5/x+T3zTnSFiTOEmJoGTD9HmBoxnCUwho61a2eSNn/VwtwuIBDAo2SEOv1AJ7ARI5gCmohFLu/g==",
+ "dev": true,
+ "requires": {
+ "callsites": "^0.2.0"
+ }
+ },
+ "callsites": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
+ "integrity": "sha512-Zv4Dns9IbXXmPkgRRUjAaJQgfN4xX5p6+RQFhWUqscdvvK2xK/ZL8b3IXIJsj+4sD+f24NwnWy2BY8AJ82JB0A==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "circular-json": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
+ "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
+ "dev": true
+ },
+ "cli-cursor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
+ "integrity": "sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A==",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^1.0.1"
+ }
+ },
+ "cli-width": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
+ "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
+ "dev": true
+ },
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
+ "dev": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==",
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "contains-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
+ "integrity": "sha512-OKZnPGeMQy2RPaUIBPFFd71iNf4791H12MCRuVQDnzGRwCYNYmTDy5pdafo2SLAcEMKzTOQnLWG4QdcjeJUMEg==",
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
+ "dev": true
+ },
+ "css-tree": {
+ "version": "1.0.0-alpha.29",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz",
+ "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==",
+ "dev": true,
+ "requires": {
+ "mdn-data": "~1.1.0",
+ "source-map": "^0.5.3"
+ }
+ },
+ "csso": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.1.tgz",
+ "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==",
+ "dev": true,
+ "requires": {
+ "css-tree": "1.0.0-alpha.29"
+ }
+ },
+ "d": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
+ "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
+ "dev": true,
+ "requires": {
+ "es5-ext": "^0.10.50",
+ "type": "^1.0.1"
+ }
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "debug-log": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz",
+ "integrity": "sha512-gV/pe1YIaKNgLYnd1g9VNW80tcb7oV5qvNUxG7NM8rbDpnl6RGunzlAtlGSb0wEs3nesu2vHNiX9TSsZ+Y+RjA==",
+ "dev": true
+ },
+ "deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "define-properties": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
+ "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
+ "dev": true,
+ "requires": {
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ }
+ },
+ "deglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.1.tgz",
+ "integrity": "sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw==",
+ "dev": true,
+ "requires": {
+ "find-root": "^1.0.0",
+ "glob": "^7.0.5",
+ "ignore": "^3.0.9",
+ "pkg-config": "^1.1.0",
+ "run-parallel": "^1.1.2",
+ "uniq": "^1.0.1"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
+ "doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
+ "error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "es-abstract": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz",
+ "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "es-to-primitive": "^1.2.1",
+ "function-bind": "^1.1.1",
+ "function.prototype.name": "^1.1.5",
+ "get-intrinsic": "^1.1.1",
+ "get-symbol-description": "^1.0.0",
+ "has": "^1.0.3",
+ "has-property-descriptors": "^1.0.0",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.3",
+ "is-callable": "^1.2.4",
+ "is-negative-zero": "^2.0.2",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.2",
+ "is-string": "^1.0.7",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.12.0",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.2",
+ "regexp.prototype.flags": "^1.4.3",
+ "string.prototype.trimend": "^1.0.5",
+ "string.prototype.trimstart": "^1.0.5",
+ "unbox-primitive": "^1.0.2"
+ }
+ },
+ "es-shim-unscopables": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
+ "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
+ "es5-ext": {
+ "version": "0.10.61",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz",
+ "integrity": "sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==",
+ "dev": true,
+ "requires": {
+ "es6-iterator": "^2.0.3",
+ "es6-symbol": "^3.1.3",
+ "next-tick": "^1.1.0"
+ }
+ },
+ "es6-iterator": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
+ "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
+ "dev": true,
+ "requires": {
+ "d": "1",
+ "es5-ext": "^0.10.35",
+ "es6-symbol": "^3.1.1"
+ }
+ },
+ "es6-map": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz",
+ "integrity": "sha512-mz3UqCh0uPCIqsw1SSAkB/p0rOzF/M0V++vyN7JqlPtSW/VsYgQBvVvqMLmfBuyMzTpLnNqi6JmcSizs4jy19A==",
+ "dev": true,
+ "requires": {
+ "d": "1",
+ "es5-ext": "~0.10.14",
+ "es6-iterator": "~2.0.1",
+ "es6-set": "~0.1.5",
+ "es6-symbol": "~3.1.1",
+ "event-emitter": "~0.3.5"
+ }
+ },
+ "es6-set": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz",
+ "integrity": "sha512-7S8YXIcUfPMOr3rqJBVMePAbRsD1nWeSMQ86K/lDI76S3WKXz+KWILvTIPbTroubOkZTGh+b+7/xIIphZXNYbA==",
+ "dev": true,
+ "requires": {
+ "d": "1",
+ "es5-ext": "~0.10.14",
+ "es6-iterator": "~2.0.1",
+ "es6-symbol": "3.1.1",
+ "event-emitter": "~0.3.5"
+ },
+ "dependencies": {
+ "es6-symbol": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
+ "integrity": "sha512-exfuQY8UGtn/N+gL1iKkH8fpNd5sJ760nJq6mmZAHldfxMD5kX07lbQuYlspoXsuknXNv9Fb7y2GsPOnQIbxHg==",
+ "dev": true,
+ "requires": {
+ "d": "1",
+ "es5-ext": "~0.10.14"
+ }
+ }
+ }
+ },
+ "es6-symbol": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
+ "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
+ "dev": true,
+ "requires": {
+ "d": "^1.0.1",
+ "ext": "^1.1.2"
+ }
+ },
+ "es6-weak-map": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
+ "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
+ "dev": true,
+ "requires": {
+ "d": "1",
+ "es5-ext": "^0.10.46",
+ "es6-iterator": "^2.0.3",
+ "es6-symbol": "^3.1.1"
+ }
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true
+ },
+ "escope": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz",
+ "integrity": "sha512-75IUQsusDdalQEW/G/2esa87J7raqdJF+Ca0/Xm5C3Q58Nr4yVYjZGp/P1+2xiEVgXRrA39dpRb8LcshajbqDQ==",
+ "dev": true,
+ "requires": {
+ "es6-map": "^0.1.3",
+ "es6-weak-map": "^2.0.1",
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "eslint": {
+ "version": "3.19.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz",
+ "integrity": "sha512-x6LJGXWCGB/4YOBhL48yeppZTo+YQUNC37N5qqCpC1b1kkNzydlQHQAtPuUSFoZSxgIadrysQoW2Hq602P+uEA==",
+ "dev": true,
+ "requires": {
+ "babel-code-frame": "^6.16.0",
+ "chalk": "^1.1.3",
+ "concat-stream": "^1.5.2",
+ "debug": "^2.1.1",
+ "doctrine": "^2.0.0",
+ "escope": "^3.6.0",
+ "espree": "^3.4.0",
+ "esquery": "^1.0.0",
+ "estraverse": "^4.2.0",
+ "esutils": "^2.0.2",
+ "file-entry-cache": "^2.0.0",
+ "glob": "^7.0.3",
+ "globals": "^9.14.0",
+ "ignore": "^3.2.0",
+ "imurmurhash": "^0.1.4",
+ "inquirer": "^0.12.0",
+ "is-my-json-valid": "^2.10.0",
+ "is-resolvable": "^1.0.0",
+ "js-yaml": "^3.5.1",
+ "json-stable-stringify": "^1.0.0",
+ "levn": "^0.3.0",
+ "lodash": "^4.0.0",
+ "mkdirp": "^0.5.0",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.8.2",
+ "path-is-inside": "^1.0.1",
+ "pluralize": "^1.2.1",
+ "progress": "^1.1.8",
+ "require-uncached": "^1.0.2",
+ "shelljs": "^0.7.5",
+ "strip-bom": "^3.0.0",
+ "strip-json-comments": "~2.0.1",
+ "table": "^3.7.8",
+ "text-table": "~0.2.0",
+ "user-home": "^2.0.0"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
+ "eslint-config-standard": {
+ "version": "10.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz",
+ "integrity": "sha512-UkFojTV1o0GOe1edOEiuI5ccYLJSuNngtqSeClNzhsmG8KPJ+7mRxgtp2oYhqZAK/brlXMoCd+VgXViE0AfyKw==",
+ "dev": true,
+ "requires": {}
+ },
+ "eslint-config-standard-jsx": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.1.tgz",
+ "integrity": "sha512-6XxcwOm22JWEVrDTxhkh/M9Qv5FCNPHKDGh4LPmWnFj4MDuNs7iXZatahYghIcMw5mkVMadLl7KFAWH/EOIeAA==",
+ "dev": true,
+ "requires": {}
+ },
+ "eslint-import-resolver-node": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz",
+ "integrity": "sha512-HI8ShtDIy7gON76Nr3bu4zl0DuCLPo1Fud9P2lltOQKeiAS2r5/o/l3y+V8HJ1cDLFSz+tHu7/V9fI5jirwlbw==",
+ "dev": true,
+ "requires": {
+ "debug": "^2.2.0",
+ "object-assign": "^4.0.1",
+ "resolve": "^1.1.6"
+ }
+ },
+ "eslint-module-utils": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz",
+ "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==",
+ "dev": true,
+ "requires": {
+ "debug": "^3.2.7",
+ "find-up": "^2.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-plugin-import": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.2.0.tgz",
+ "integrity": "sha512-8HLeIYzOH4eltevxf+iC9Dtz/91yaeOqtlba5srcpQWLrv57F5NNG1RNLqAbpWJWDD4BxKuKjUveJY9W6Tbswg==",
+ "dev": true,
+ "requires": {
+ "builtin-modules": "^1.1.1",
+ "contains-path": "^0.1.0",
+ "debug": "^2.2.0",
+ "doctrine": "1.5.0",
+ "eslint-import-resolver-node": "^0.2.0",
+ "eslint-module-utils": "^2.0.0",
+ "has": "^1.0.1",
+ "lodash.cond": "^4.3.0",
+ "minimatch": "^3.0.3",
+ "pkg-up": "^1.0.0"
+ },
+ "dependencies": {
+ "doctrine": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
+ "integrity": "sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "isarray": "^1.0.0"
+ }
+ }
+ }
+ },
+ "eslint-plugin-node": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-4.2.3.tgz",
+ "integrity": "sha512-vIUQPuwbVYdz/CYnlTLsJrRy7iXHQjdEe5wz0XhhdTym3IInM/zZLlPf9nZ2mThsH0QcsieCOWs2vOeCy/22LQ==",
+ "dev": true,
+ "requires": {
+ "ignore": "^3.0.11",
+ "minimatch": "^3.0.2",
+ "object-assign": "^4.0.1",
+ "resolve": "^1.1.7",
+ "semver": "5.3.0"
+ }
+ },
+ "eslint-plugin-promise": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz",
+ "integrity": "sha512-kqXN7i1wfx5j7XuFVzuX4W3XDCEyNDsbd+O5NXWIl+zTSP510rKn2Xk8OO6JhM1ivXbkse0tQf6jjSTLS58Prg==",
+ "dev": true
+ },
+ "eslint-plugin-react": {
+ "version": "6.10.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz",
+ "integrity": "sha512-vFfMSxJynKlgOhIVjhlZyibVUg442Aiv3482XPkgdYV90T8nD2QvxGXILZGwZHYMQ/l+A/De14O9D0qjDelSrg==",
+ "dev": true,
+ "requires": {
+ "array.prototype.find": "^2.0.1",
+ "doctrine": "^1.2.2",
+ "has": "^1.0.1",
+ "jsx-ast-utils": "^1.3.4",
+ "object.assign": "^4.0.4"
+ },
+ "dependencies": {
+ "doctrine": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
+ "integrity": "sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "isarray": "^1.0.0"
+ }
+ }
+ }
+ },
+ "eslint-plugin-standard": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz",
+ "integrity": "sha512-JyT7wqVYlaHxnljWMT7CKa0R1QDQqArTi6g8kYnexTHHuK7x3Vg//kCepnoTgdT9x/kDbSluXMhJgjBvgVRLlQ==",
+ "dev": true,
+ "requires": {}
+ },
+ "espree": {
+ "version": "3.5.4",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz",
+ "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==",
+ "dev": true,
+ "requires": {
+ "acorn": "^5.5.0",
+ "acorn-jsx": "^3.0.0"
+ }
+ },
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true
+ },
+ "esquery": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
+ "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^5.1.0"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true
+ }
+ }
+ },
+ "esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^5.2.0"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true
+ }
+ }
+ },
+ "estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true
+ },
+ "event-emitter": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
+ "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
+ "dev": true,
+ "requires": {
+ "d": "1",
+ "es5-ext": "~0.10.14"
+ }
+ },
+ "exit-hook": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz",
+ "integrity": "sha512-MsG3prOVw1WtLXAZbM3KiYtooKR1LvxHh3VHsVtIy0uiUu8usxgB/94DP2HxtD/661lLdB6yzQ09lGJSQr6nkg==",
+ "dev": true
+ },
+ "ext": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz",
+ "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==",
+ "dev": true,
+ "requires": {
+ "type": "^2.5.0"
+ },
+ "dependencies": {
+ "type": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz",
+ "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==",
+ "dev": true
+ }
+ }
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "figures": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
+ "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5",
+ "object-assign": "^4.1.0"
+ }
+ },
+ "file-entry-cache": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
+ "integrity": "sha512-uXP/zGzxxFvFfcZGgBIwotm+Tdc55ddPAzF7iHshP4YGaXMww7rSF9peD9D1sui5ebONg5UobsZv+FfgEpGv/w==",
+ "dev": true,
+ "requires": {
+ "flat-cache": "^1.2.1",
+ "object-assign": "^4.0.1"
+ }
+ },
+ "find-root": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
+ "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==",
+ "dev": true
+ },
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "flat-cache": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz",
+ "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==",
+ "dev": true,
+ "requires": {
+ "circular-json": "^0.3.1",
+ "graceful-fs": "^4.1.2",
+ "rimraf": "~2.6.2",
+ "write": "^0.2.1"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ }
+ }
+ },
+ "fs-plus": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/fs-plus/-/fs-plus-3.1.1.tgz",
+ "integrity": "sha512-Se2PJdOWXqos1qVTkvqqjb0CSnfBnwwD+pq+z4ksT+e97mEShod/hrNg0TRCCsXPbJzcIq+NuzQhigunMWMJUA==",
+ "dev": true,
+ "requires": {
+ "async": "^1.5.2",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.2",
+ "underscore-plus": "1.x"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "function.prototype.name": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
+ "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.0",
+ "functions-have-names": "^1.2.2"
+ }
+ },
+ "functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "dev": true
+ },
+ "generate-function": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
+ "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==",
+ "dev": true,
+ "requires": {
+ "is-property": "^1.0.2"
+ }
+ },
+ "generate-object-property": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
+ "integrity": "sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==",
+ "dev": true,
+ "requires": {
+ "is-property": "^1.0.0"
+ }
+ },
+ "get-intrinsic": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz",
+ "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.3"
+ }
+ },
+ "get-stdin": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz",
+ "integrity": "sha512-jZV7n6jGE3Gt7fgSTJoz91Ak5MuTLwMwkoYdjxuJ/AmjIsE1UC03y/IWkZCQGEvVNS9qoRNwy5BCqxImv0FVeA==",
+ "dev": true
+ },
+ "get-symbol-description": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+ "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ }
+ },
+ "glob": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.0.tgz",
+ "integrity": "sha512-Fa+aQV0FFMU4/Jg5mquHjv5DikTujeAWOpbGa9lsG2Qa+ehYxbGN3cCY/T+C+jAS8gKBnYN2MbrdNm0UCAcp7w==",
+ "dev": true,
+ "requires": {
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "globals": {
+ "version": "9.18.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
+ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
+ "dev": true
+ },
+ "graceful-fs": {
+ "version": "4.2.10",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
+ "dev": true
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "has-bigints": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "dev": true
+ },
+ "has-property-descriptors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
+ "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
+ "dev": true,
+ "requires": {
+ "get-intrinsic": "^1.1.1"
+ }
+ },
+ "has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true
+ },
+ "has-tostringtag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+ "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.2"
+ }
+ },
+ "ignore": {
+ "version": "3.3.10",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
+ "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
+ "dev": true
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dev": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "inquirer": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz",
+ "integrity": "sha512-bOetEz5+/WpgaW4D1NYOk1aD+JCqRjqu/FwRFgnIfiP7FC/zinsrfyO1vlS3nyH/R7S0IH3BIHBu4DBIDSqiGQ==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^1.1.0",
+ "ansi-regex": "^2.0.0",
+ "chalk": "^1.0.0",
+ "cli-cursor": "^1.0.1",
+ "cli-width": "^2.0.0",
+ "figures": "^1.3.5",
+ "lodash": "^4.3.0",
+ "readline2": "^1.0.1",
+ "run-async": "^0.1.0",
+ "rx-lite": "^3.1.2",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.0",
+ "through": "^2.3.6"
+ }
+ },
+ "internal-slot": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
+ "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
+ "dev": true,
+ "requires": {
+ "get-intrinsic": "^1.1.0",
+ "has": "^1.0.3",
+ "side-channel": "^1.0.4"
+ }
+ },
+ "interpret": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
+ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
+ "dev": true
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true
+ },
+ "is-bigint": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "dev": true,
+ "requires": {
+ "has-bigints": "^1.0.1"
+ }
+ },
+ "is-boolean-object": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-callable": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
+ "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==",
+ "dev": true
+ },
+ "is-core-module": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
+ "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
+ "is-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "dev": true,
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "is-my-ip-valid": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.1.tgz",
+ "integrity": "sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg==",
+ "dev": true
+ },
+ "is-my-json-valid": {
+ "version": "2.20.6",
+ "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.6.tgz",
+ "integrity": "sha512-1JQwulVNjx8UqkPE/bqDaxtH4PXCe/2VRh/y3p99heOV87HG4Id5/VfDswd+YiAfHcRTfDlWgISycnHuhZq1aw==",
+ "dev": true,
+ "requires": {
+ "generate-function": "^2.0.0",
+ "generate-object-property": "^1.1.0",
+ "is-my-ip-valid": "^1.0.0",
+ "jsonpointer": "^5.0.0",
+ "xtend": "^4.0.0"
+ }
+ },
+ "is-negative-zero": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
+ "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
+ "dev": true
+ },
+ "is-number-object": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "dev": true,
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-property": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
+ "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==",
+ "dev": true
+ },
+ "is-regex": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-resolvable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
+ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
+ "dev": true
+ },
+ "is-shared-array-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2"
+ }
+ },
+ "is-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "dev": true,
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-symbol": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.2"
+ }
+ },
+ "is-weakref": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "dev": true
+ },
+ "jquery": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
+ "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw=="
+ },
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true
+ },
+ "json-stable-stringify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
+ "integrity": "sha512-i/J297TW6xyj7sDFa7AmBPkQvLIxWr2kKPWI26tXydnZrzVAocNqn5DMNT1Mzk0vit1V5UkRM7C1KdVNp7Lmcg==",
+ "dev": true,
+ "requires": {
+ "jsonify": "~0.0.0"
+ }
+ },
+ "jsonify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+ "integrity": "sha512-trvBk1ki43VZptdBI5rIlG4YOzyeH/WefQt5rj1grasPn4iiZWKet8nkgc4GlsAylaztn0qZfUYOiTsASJFdNA==",
+ "dev": true
+ },
+ "jsonpointer": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.0.tgz",
+ "integrity": "sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg==",
+ "dev": true
+ },
+ "jsx-ast-utils": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz",
+ "integrity": "sha512-0LwSmMlQjjUdXsdlyYhEfBJCn2Chm0zgUBmfmf1++KUULh+JOdlzrZfiwe2zmlVJx44UF+KX/B/odBoeK9hxmw==",
+ "dev": true
+ },
+ "kidif": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/kidif/-/kidif-1.1.0.tgz",
+ "integrity": "sha512-QmAHSkWEYssexdqWQshtfEd/AGeJAXHuV1pu607ePgNwwSf2X6fuIzUJsLtKbUQ/ak0pokdwDr8ocZ9sygKhTg==",
+ "dev": true,
+ "requires": {
+ "glob": "7.0.0"
+ }
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ }
+ },
+ "load-json-file": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
+ "lodash.cond": {
+ "version": "4.5.2",
+ "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz",
+ "integrity": "sha512-RWjUhzGbzG/KfDwk+onqdXvrsNv47G9UCMJgSKalPTSqJQyxZhQophG9jgqLf+15TIbZ5a/yG2YKOWsH3dVy9A==",
+ "dev": true
+ },
+ "mdn-data": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz",
+ "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.6"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "mustache": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/mustache/-/mustache-2.3.0.tgz",
+ "integrity": "sha512-IgZ/cCHtDG1ft0vdDV9wrlNz20SvbUu2ECoDF6dhk2ZtedLNy1Kehy4oFlzmHPxcUQmVZuXYS2j+d0NkaEjTXQ==",
+ "dev": true
+ },
+ "mute-stream": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz",
+ "integrity": "sha512-EbrziT4s8cWPmzr47eYVW3wimS4HsvlnV5ri1xw1aR6JQo/OrJX5rkl32K/QQHdxeabJETtfeaROGhd8W7uBgg==",
+ "dev": true
+ },
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true
+ },
+ "next-tick": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
+ "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
+ "dev": true
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==",
+ "dev": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "dev": true
+ },
+ "object-inspect": {
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
+ "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
+ "dev": true
+ },
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true
+ },
+ "object.assign": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
+ "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3",
+ "has-symbols": "^1.0.1",
+ "object-keys": "^1.1.1"
+ }
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "onetime": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
+ "integrity": "sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==",
+ "dev": true
+ },
+ "optionator": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
+ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+ "dev": true,
+ "requires": {
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.6",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "word-wrap": "~1.2.3"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==",
+ "dev": true
+ },
+ "p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==",
+ "dev": true
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "dev": true
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true
+ },
+ "path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==",
+ "dev": true
+ },
+ "path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "dev": true
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
+ "dev": true
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
+ "dev": true,
+ "requires": {
+ "pinkie": "^2.0.0"
+ }
+ },
+ "pkg-conf": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz",
+ "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.0.0",
+ "load-json-file": "^4.0.0"
+ }
+ },
+ "pkg-config": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz",
+ "integrity": "sha512-ft/WI9YK6FuTuw4Ql+QUaNXtm/ASQNqDUUsZEgFZKyFpW6amyP8Gx01xrRs8KdiNbbqXfYxkOXplpq1euWbOjw==",
+ "dev": true,
+ "requires": {
+ "debug-log": "^1.0.0",
+ "find-root": "^1.0.0",
+ "xtend": "^4.0.1"
+ }
+ },
+ "pkg-up": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz",
+ "integrity": "sha512-L+d849d9lz20hnRpUnWBRXOh+mAvygQpK7UuXiw+6QbPwL55RVgl+G+V936wCzs/6J7fj0pvgLY9OknZ+FqaNA==",
+ "dev": true,
+ "requires": {
+ "find-up": "^1.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==",
+ "dev": true,
+ "requires": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==",
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "^2.0.0"
+ }
+ }
+ }
+ },
+ "pluralize": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz",
+ "integrity": "sha512-TH+BeeL6Ct98C7as35JbZLf8lgsRzlNJb5gklRIGHKaPkGl1esOKBc5ALUMd+q08Sr6tiEKM+Icbsxg5vuhMKQ==",
+ "dev": true
+ },
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "dev": true
+ },
+ "progress": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
+ "integrity": "sha512-UdA8mJ4weIkUBO224tIarHzuHs4HuYiJvsuGT7j/SPQiUJVjYvNDBIPa0hAorduOfjGohB/qHWRa/lrrWX/mXw==",
+ "dev": true
+ },
+ "queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "readline2": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz",
+ "integrity": "sha512-8/td4MmwUB6PkZUbV25uKz7dfrmjYWxsW8DVfibWdlHRk/l/DfHKn4pU+dfcoGLFgWOdyGCzINRQD7jn+Bv+/g==",
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "mute-stream": "0.0.5"
+ }
+ },
+ "rechoir": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+ "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
+ "dev": true,
+ "requires": {
+ "resolve": "^1.1.6"
+ }
+ },
+ "regexp.prototype.flags": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
+ "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "functions-have-names": "^1.2.2"
+ }
+ },
+ "require-uncached": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
+ "integrity": "sha512-Xct+41K3twrbBHdxAgMoOS+cNcoqIjfM2/VxBF4LL2hVph7YsF8VSKyQ3BDFZwEVbok9yeDl2le/qo0S77WG2w==",
+ "dev": true,
+ "requires": {
+ "caller-path": "^0.1.0",
+ "resolve-from": "^1.0.0"
+ }
+ },
+ "resolve": {
+ "version": "1.22.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
+ "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
+ "dev": true,
+ "requires": {
+ "is-core-module": "^2.9.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ }
+ },
+ "resolve-from": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
+ "integrity": "sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg==",
+ "dev": true
+ },
+ "restore-cursor": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz",
+ "integrity": "sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw==",
+ "dev": true,
+ "requires": {
+ "exit-hook": "^1.0.0",
+ "onetime": "^1.0.0"
+ }
+ },
+ "rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
+ "run-async": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz",
+ "integrity": "sha512-qOX+w+IxFgpUpJfkv2oGN0+ExPs68F4sZHfaRRx4dDexAQkG83atugKVEylyT5ARees3HBbfmuvnjbrd8j9Wjw==",
+ "dev": true,
+ "requires": {
+ "once": "^1.3.0"
+ }
+ },
+ "run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "requires": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "rx-lite": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz",
+ "integrity": "sha512-1I1+G2gteLB8Tkt8YI1sJvSIfa0lWuRtC8GjvtyPBcLSF5jBCCJJqKrpER5JU5r6Bhe+i9/pK3VMuUcXu0kdwQ==",
+ "dev": true
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "semver": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+ "integrity": "sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw==",
+ "dev": true
+ },
+ "shelljs": {
+ "version": "0.7.8",
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz",
+ "integrity": "sha512-/YF5Uk8hcwi7ima04ppkbA4RaRMdPMBfwAvAf8sufYOxsJRtbdoBsT8vGvlb+799BrlGdYrd+oczIA2eN2JdWA==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.0.0",
+ "interpret": "^1.0.0",
+ "rechoir": "^0.6.2"
+ }
+ },
+ "side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ }
+ },
+ "slice-ansi": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz",
+ "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "dev": true
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "dev": true
+ },
+ "standard": {
+ "version": "10.0.2",
+ "resolved": "https://registry.npmjs.org/standard/-/standard-10.0.2.tgz",
+ "integrity": "sha512-NiEPy0kaa7yufaPsMT63a7MvTzfRyFrSItcTKYS4I9oFskgpQy0hXL0oOxbr836O7kTKgaxLZiv5lZmBWZRffg==",
+ "dev": true,
+ "requires": {
+ "eslint": "~3.19.0",
+ "eslint-config-standard": "10.2.1",
+ "eslint-config-standard-jsx": "4.0.1",
+ "eslint-plugin-import": "~2.2.0",
+ "eslint-plugin-node": "~4.2.2",
+ "eslint-plugin-promise": "~3.5.0",
+ "eslint-plugin-react": "~6.10.0",
+ "eslint-plugin-standard": "~3.0.1",
+ "standard-engine": "~7.0.0"
+ }
+ },
+ "standard-engine": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-7.0.0.tgz",
+ "integrity": "sha512-d/NYzmZxQRxbcoCqlbI9gEMPYq7TLsU6Ywpki54xhedEd0GC4G02j1B7mlexb7HovqRtAtcUPTLQx2MnCO/uyA==",
+ "dev": true,
+ "requires": {
+ "deglob": "^2.1.0",
+ "get-stdin": "^5.0.1",
+ "minimist": "^1.1.0",
+ "pkg-conf": "^2.0.0"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "string.prototype.trimend": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz",
+ "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.19.5"
+ }
+ },
+ "string.prototype.trimstart": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz",
+ "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.19.5"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "dev": true
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
+ "dev": true
+ },
+ "supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true
+ },
+ "table": {
+ "version": "3.8.3",
+ "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz",
+ "integrity": "sha512-RZuzIOtzFbprLCE0AXhkI0Xi42ZJLZhCC+qkwuMLf/Vjz3maWpA8gz1qMdbmNoI9cOROT2Am/DxeRyXenrL11g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^4.7.0",
+ "ajv-keywords": "^1.0.0",
+ "chalk": "^1.1.1",
+ "lodash": "^4.0.0",
+ "slice-ansi": "0.0.4",
+ "string-width": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
+ "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+ "dev": true
+ },
+ "type": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
+ "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==",
+ "dev": true
+ },
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2"
+ }
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
+ "dev": true
+ },
+ "uglify-js": {
+ "version": "3.16.2",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.16.2.tgz",
+ "integrity": "sha512-AaQNokTNgExWrkEYA24BTNMSjyqEXPSfhqoS0AxmHkCJ4U+Dyy5AvbGV/sqxuxficEfGGoX3zWw9R7QpLFfEsg==",
+ "dev": true
+ },
+ "unbox-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
+ "which-boxed-primitive": "^1.0.2"
+ }
+ },
+ "underscore": {
+ "version": "1.13.4",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.4.tgz",
+ "integrity": "sha512-BQFnUDuAQ4Yf/cYY5LNrK9NCJFKriaRbD9uR1fTeXnBeoa97W0i41qkZfGO9pSo8I5KzjAcSY2XYtdf0oKd7KQ==",
+ "dev": true
+ },
+ "underscore-plus": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/underscore-plus/-/underscore-plus-1.7.0.tgz",
+ "integrity": "sha512-A3BEzkeicFLnr+U/Q3EyWwJAQPbA19mtZZ4h+lLq3ttm9kn8WC4R3YpuJZEXmWdLjYP47Zc8aLZm9kwdv+zzvA==",
+ "dev": true,
+ "requires": {
+ "underscore": "^1.9.1"
+ }
+ },
+ "uniq": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
+ "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==",
+ "dev": true
+ },
+ "user-home": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz",
+ "integrity": "sha512-KMWqdlOcjCYdtIJpicDSFBQ8nFwS2i9sslAd6f4+CBGcU4gist2REnr2fxj2YocvJFxSF3ZOHLYLVZnUxv4BZQ==",
+ "dev": true,
+ "requires": {
+ "os-homedir": "^1.0.0"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true
+ },
+ "which-boxed-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "dev": true,
+ "requires": {
+ "is-bigint": "^1.0.1",
+ "is-boolean-object": "^1.1.0",
+ "is-number-object": "^1.0.4",
+ "is-string": "^1.0.5",
+ "is-symbol": "^1.0.3"
+ }
+ },
+ "word-wrap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+ "dev": true
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
+ },
+ "write": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
+ "integrity": "sha512-CJ17OoULEKXpA5pef3qLj5AxTJ6mSt7g84he2WIskKwqFO4T97d5V7Tadl0DYDk7qyUOQD5WlUlOMChaYrhxeA==",
+ "dev": true,
+ "requires": {
+ "mkdirp": "^0.5.1"
+ }
+ },
+ "xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "dev": true
+ }
+ }
+}
diff --git a/package.json b/package.json
index bf071a30..1477c803 100644
--- a/package.json
+++ b/package.json
@@ -1,15 +1,31 @@
{
"author": "Chris Oakman (http://chrisoakman.com/)",
- "name": "@chrisoakman/chessboardjs",
+ "contributors": [
+ "Miika Tuominen (https://miikat.dev)"
+ ],
+ "name": "@discape/chessboardjs",
"description": "JavaScript chessboard widget",
"homepage": "https://chessboardjs.com",
"license": "MIT",
- "version": "1.0.0",
+ "version": "1.1.2",
+ "keywords": [
+ "chess",
+ "javascript",
+ "es6",
+ "commonjs",
+ "jquery"
+ ],
+ "exports": {
+ "import": "./dist/build/chessboard.min.mjs",
+ "require": "./dist/build/chessboard.min.cjs"
+ },
"repository": {
"type": "git",
- "url": "git://github.com/oakmac/chessboardjs.git"
+ "url": "https://github.com/discapes/chessboardjs-npm.git"
},
- "files": ["dist/"],
+ "files": [
+ "dist/"
+ ],
"dependencies": {
"jquery": ">=3.4.1"
},
@@ -19,11 +35,12 @@
"kidif": "1.1.0",
"mustache": "2.3.0",
"standard": "10.0.2",
- "uglify-js": "3.6.0"
+ "uglify-js": "^3.16.2"
},
"scripts": {
- "build": "standard lib/chessboard.js && node scripts/build.js",
- "standard": "standard --fix lib/*.js website/js/*.js",
- "website": "node scripts/website.js"
+ "build": "node scripts/build.js",
+ "standard": "standard --fix lib/chessboard.js website/js/*.js",
+ "website": "node scripts/website.js",
+ "test": "node scripts/test.cjs && node scripts/test.mjs"
}
}
diff --git a/scripts/build.js b/scripts/build.js
index 798bec10..e126c924 100644
--- a/scripts/build.js
+++ b/scripts/build.js
@@ -1,5 +1,5 @@
// -----------------------------------------------------------------------------
-// This file creates a build in the dist/ folder
+// This file creates a build in the dist/build/ folder
// -----------------------------------------------------------------------------
// libraries
@@ -7,40 +7,86 @@ const fs = require('fs-plus')
const csso = require('csso')
const uglify = require('uglify-js')
-const encoding = {encoding: 'utf8'}
+const encoding = { encoding: 'utf8' }
const package = JSON.parse(fs.readFileSync('package.json', encoding))
const version = package.version
const year = new Date().getFullYear()
-const cssSrc = fs.readFileSync('lib/chessboard.css', encoding)
- .replace('@VERSION', version)
-const jsSrc = fs.readFileSync('lib/chessboard.js', encoding)
- .replace('@VERSION', version)
- .replace('RUN_ASSERTS = true', 'RUN_ASSERTS = false')
+const cssSrc = fs
+ .readFileSync('lib/chessboard.css', encoding)
+ .replace('@VERSION', version)
+const rawSrc = fs
+ .readFileSync('lib/chessboard.js', encoding)
+ .replace('@VERSION', version)
+ .replace('RUN_ASSERTS = true', 'RUN_ASSERTS = false')
+const uglifyResult = uglify.minify(rawSrc)
+const minSrc = uglifyResult.code
+console.assert(!uglifyResult.error, 'error minifying JS: ' + uglifyResult.error)
// TODO: need to remove the RUN_ASSERTS calls from the non-minified file
+const mjsmin = fs
+ .readFileSync('lib/chessboard.mjs', encoding)
+ .replace('INSERTSOURCE', () => minSrc)
+ .replace('@VERSION', version)
+const cjsmin = fs
+ .readFileSync('lib/chessboard.cjs', encoding)
+ .replace('INSERTSOURCE', () => minSrc)
+ .replace('@VERSION', version)
+const browserjsmin = fs
+ .readFileSync('lib/chessboardbrowser.js', encoding)
+ .replace('INSERTSOURCE', () => minSrc)
+ .replace('@VERSION', version)
+ .replace('const ', 'var ')
+ .replace('let ', ' var ')
+
+const mjs = fs
+ .readFileSync('lib/chessboard.mjs', encoding)
+ .replace('INSERTSOURCE', () => rawSrc)
+ .replace('@VERSION', version)
+const cjs = fs
+ .readFileSync('lib/chessboard.cjs', encoding)
+ .replace('INSERTSOURCE', () => rawSrc)
+ .replace('@VERSION', version)
+const browserjs = fs
+ .readFileSync('lib/chessboardbrowser.js', encoding)
+ .replace('INSERTSOURCE', () => rawSrc)
+ .replace('@VERSION', version)
+ .replace('const ', 'var ')
+ .replace('let ', ' var ')
+
const minifiedCSS = csso.minify(cssSrc).css
-const uglifyResult = uglify.minify(jsSrc)
-const minifiedJS = uglifyResult.code
// quick sanity checks
-console.assert(!uglifyResult.error, 'error minifying JS!')
-console.assert(typeof minifiedCSS === 'string' && minifiedCSS !== '', 'error minifying CSS!')
-// add license to the top of minified files
-const minifiedJSWithBanner = banner() + minifiedJS
+console.assert(
+ typeof minifiedCSS === 'string' && minifiedCSS !== '',
+ 'error minifying CSS!',
+)
+
+// create a fresh dist/build/ folder
+fs.removeSync('dist/build')
+fs.makeTreeSync('dist/build')
+
+// copy lib files to dist/build/
+fs.writeFileSync('dist/build/chessboard.css', cssSrc, encoding)
+fs.writeFileSync('dist/build/chessboard.min.css', minifiedCSS, encoding)
+
+fs.writeFileSync('dist/build/chessboard.min.mjs', mjsmin, encoding)
+fs.writeFileSync('dist/build/chessboard.min.cjs', cjsmin, encoding)
+fs.writeFileSync('dist/build/chessboard.min.js', banner() + browserjsmin, encoding)
-// create a fresh dist/ folder
-fs.removeSync('dist')
-fs.makeTreeSync('dist')
+fs.writeFileSync('dist/build/chessboard.mjs', mjs, encoding)
+fs.writeFileSync('dist/build/chessboard.cjs', cjs, encoding)
+fs.writeFileSync('dist/build/chessboard.js', banner() + browserjs, encoding)
-// copy lib files to dist/
-fs.writeFileSync('dist/chessboard-' + version + '.css', cssSrc, encoding)
-fs.writeFileSync('dist/chessboard-' + version + '.min.css', minifiedCSS, encoding)
-fs.writeFileSync('dist/chessboard-' + version + '.js', jsSrc, encoding)
-fs.writeFileSync('dist/chessboard-' + version + '.min.js', minifiedJSWithBanner, encoding)
-function banner () {
- return '/*! chessboard.js v' + version + ' | (c) ' + year + ' Chris Oakman | MIT License chessboardjs.com/license */\n'
+function banner() {
+ return (
+ '/*! chessboard.js v' +
+ version +
+ ' | (c) ' +
+ year +
+ ' Chris Oakman and Miika Tuominen | MIT License chessboardjs.com/license */\n'
+ )
}
diff --git a/scripts/test.cjs b/scripts/test.cjs
new file mode 100644
index 00000000..aa515dcf
--- /dev/null
+++ b/scripts/test.cjs
@@ -0,0 +1,3 @@
+const chessboardjs = require("../dist/chessboard-1.0.0.min.cjs");
+
+console.log(chessboardjs);
\ No newline at end of file
diff --git a/scripts/test.mjs b/scripts/test.mjs
new file mode 100644
index 00000000..eaea963a
--- /dev/null
+++ b/scripts/test.mjs
@@ -0,0 +1,3 @@
+import * as chessboardjs from "../dist/chessboard-1.0.0.min.mjs";
+
+console.log(chessboardjs);
\ No newline at end of file
diff --git a/templates/download.mustache b/templates/download.mustache
index 2a984e11..6fb74622 100644
--- a/templates/download.mustache
+++ b/templates/download.mustache
@@ -18,29 +18,40 @@
NPM / Yarn Package
- chessboardjs is on npm under the name @chrisoakman/chessboardjs
+ chessboardjs is on npm under the name @discape/chessboardjs
# using npm
-npm install @chrisoakman/chessboardjs
+npm install @discape/chessboardjs
# using yarn
-yarn add @chrisoakman/chessboardjs
+yarn add @discape/chessboardjs
+
+# using in code with require()
+const { Chessboard, objToFen, fenToObj } = require("@discape/chessboardjs");
+
+
+# using in code with ES6 import
+import { Chessboard, objToFen, fenToObj } from "@discape/chessboardjs";
+
+Remember to include the css:
+ <link rel="stylesheet"
+ href="https://unpkg.com/@discape/chessboardjs/dist/build/chessboard.min.css"
+ crossorigin="anonymous">
Content Delivery Network
You can use chessboardjs via the unpkg CDN with the following links:
<link rel="stylesheet"
- href="https://unpkg.com/@chrisoakman/chessboardjs@1.0.0/dist/chessboard-1.0.0.min.css"
+ href="https://unpkg.com/@discape/chessboardjs/dist/build/chessboard.min.css"
integrity="sha384-q94+BZtLrkL1/ohfjR8c6L+A6qzNH9R2hBLwyoAfu3i/WCvQjzL2RQJ3uNHDISdU"
crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.5.1.min.js"
integrity="sha384-ZvpUoO/+PpLXR1lu4jmpXWu80pZlYUAfxl5NsBMWOEPSjUn/6Z/hRTt8+pR6L4N2"
crossorigin="anonymous"></script>
-<script src="https://unpkg.com/@chrisoakman/chessboardjs@1.0.0/dist/chessboard-1.0.0.min.js"
- integrity="sha384-8Vi8VHwn3vjQ9eUHUxex3JSN/NFqUg3QbPyX8kWyb93+8AC/pPWTzj+nHtbC5bxD"
+<script src="https://unpkg.com/@discape/chessboardjs/dist/build/chessboard.min.js"
crossorigin="anonymous"></script>
- Please note that jQuery is a required dependency of chessboard.js and must be loaded on your webpage before the chessboard-1.0.0.min.js file.
+ Please note that jQuery is a required dependency of chessboard.js and must be loaded on your webpage before the chessboard.min.js file.
diff --git a/yarn.lock b/yarn.lock
index 0705201e..63fe32ff 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,1256 +2,1686 @@
# yarn lockfile v1
-acorn-jsx@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
- dependencies:
- acorn "^3.0.4"
-
-acorn@^3.0.4:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
-
-acorn@^5.0.1:
- version "5.0.3"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d"
-
-ajv-keywords@^1.0.0:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
-
-ajv@^4.7.0:
- version "4.11.8"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
- dependencies:
- co "^4.6.0"
- json-stable-stringify "^1.0.1"
-
-ansi-escapes@^1.1.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
-
-ansi-regex@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
-
-ansi-styles@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
-
-argparse@^1.0.7:
- version "1.0.9"
- resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86"
- dependencies:
- sprintf-js "~1.0.2"
-
-array-union@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
- dependencies:
- array-uniq "^1.0.1"
-
-array-uniq@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
-
-array.prototype.find@^2.0.1:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.0.4.tgz#556a5c5362c08648323ddaeb9de9d14bc1864c90"
- dependencies:
- define-properties "^1.1.2"
- es-abstract "^1.7.0"
-
-arrify@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
-
-async@^1.5.2:
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
- integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
-
-babel-code-frame@^6.16.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4"
- dependencies:
- chalk "^1.1.0"
- esutils "^2.0.2"
- js-tokens "^3.0.0"
-
-balanced-match@^0.4.1:
- version "0.4.2"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
-
-brace-expansion@^1.1.7:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59"
- dependencies:
- balanced-match "^0.4.1"
- concat-map "0.0.1"
-
-builtin-modules@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
-
-caller-path@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
- dependencies:
- callsites "^0.2.0"
-
-callsites@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
-
-chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
- dependencies:
- ansi-styles "^2.2.1"
- escape-string-regexp "^1.0.2"
- has-ansi "^2.0.0"
- strip-ansi "^3.0.0"
- supports-color "^2.0.0"
-
-circular-json@^0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d"
-
-cli-cursor@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987"
- dependencies:
- restore-cursor "^1.0.1"
-
-cli-width@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a"
-
-co@^4.6.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
-
-code-point-at@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
-
-commander@~2.20.0:
- version "2.20.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
- integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
-
-concat-map@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
-
-concat-stream@^1.5.2:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
- dependencies:
- inherits "^2.0.3"
- readable-stream "^2.2.2"
- typedarray "^0.0.6"
-
-contains-path@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
-
-core-util-is@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
-
-css-tree@1.0.0-alpha.29:
- version "1.0.0-alpha.29"
- resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39"
- integrity sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==
- dependencies:
- mdn-data "~1.1.0"
- source-map "^0.5.3"
-
-csso@3.5.1:
- version "3.5.1"
- resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b"
- integrity sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==
- dependencies:
- css-tree "1.0.0-alpha.29"
-
-d@1:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f"
- dependencies:
- es5-ext "^0.10.9"
-
-debug-log@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f"
-
-debug@2.2.0, debug@^2.1.1, debug@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
- dependencies:
- ms "0.7.1"
-
-deep-is@~0.1.3:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
-
-define-properties@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94"
- dependencies:
- foreach "^2.0.5"
- object-keys "^1.0.8"
-
-deglob@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/deglob/-/deglob-2.1.0.tgz#4d44abe16ef32c779b4972bd141a80325029a14a"
- dependencies:
- find-root "^1.0.0"
- glob "^7.0.5"
- ignore "^3.0.9"
- pkg-config "^1.1.0"
- run-parallel "^1.1.2"
- uniq "^1.0.1"
-
-del@^2.0.2:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8"
- dependencies:
- globby "^5.0.0"
- is-path-cwd "^1.0.0"
- is-path-in-cwd "^1.0.0"
- object-assign "^4.0.1"
- pify "^2.0.0"
- pinkie-promise "^2.0.0"
- rimraf "^2.2.8"
-
-doctrine@1.5.0, doctrine@^1.2.2:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
- dependencies:
- esutils "^2.0.2"
- isarray "^1.0.0"
-
-doctrine@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63"
- dependencies:
- esutils "^2.0.2"
- isarray "^1.0.0"
-
-error-ex@^1.2.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc"
- dependencies:
- is-arrayish "^0.2.1"
-
-es-abstract@^1.7.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c"
- dependencies:
- es-to-primitive "^1.1.1"
- function-bind "^1.1.0"
- is-callable "^1.1.3"
- is-regex "^1.0.3"
-
-es-to-primitive@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d"
- dependencies:
- is-callable "^1.1.1"
- is-date-object "^1.0.1"
- is-symbol "^1.0.1"
-
-es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14:
- version "0.10.22"
- resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.22.tgz#1876c51f990769c112c781ea3ebe89f84fd39071"
- dependencies:
- es6-iterator "2"
- es6-symbol "~3.1"
-
-es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512"
- dependencies:
- d "1"
- es5-ext "^0.10.14"
- es6-symbol "^3.1"
-
-es6-map@^0.1.3:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0"
- dependencies:
- d "1"
- es5-ext "~0.10.14"
- es6-iterator "~2.0.1"
- es6-set "~0.1.5"
- es6-symbol "~3.1.1"
- event-emitter "~0.3.5"
-
-es6-set@~0.1.5:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1"
- dependencies:
- d "1"
- es5-ext "~0.10.14"
- es6-iterator "~2.0.1"
- es6-symbol "3.1.1"
- event-emitter "~0.3.5"
-
-es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77"
- dependencies:
- d "1"
- es5-ext "~0.10.14"
-
-es6-weak-map@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f"
- dependencies:
- d "1"
- es5-ext "^0.10.14"
- es6-iterator "^2.0.1"
- es6-symbol "^3.1.1"
-
-escape-string-regexp@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz#4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1"
-
-escape-string-regexp@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
-
-escope@^3.6.0:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3"
- dependencies:
- es6-map "^0.1.3"
- es6-weak-map "^2.0.1"
- esrecurse "^4.1.0"
- estraverse "^4.1.1"
-
-eslint-config-standard-jsx@4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.1.tgz#cd4e463d0268e2d9e707f61f42f73f5b3333c642"
-
-eslint-config-standard@10.2.1:
- version "10.2.1"
- resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz#c061e4d066f379dc17cd562c64e819b4dd454591"
-
-eslint-import-resolver-node@^0.2.0:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz#5add8106e8c928db2cba232bcd9efa846e3da16c"
- dependencies:
- debug "^2.2.0"
- object-assign "^4.0.1"
- resolve "^1.1.6"
-
-eslint-module-utils@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.0.0.tgz#a6f8c21d901358759cdc35dbac1982ae1ee58bce"
- dependencies:
- debug "2.2.0"
- pkg-dir "^1.0.0"
-
-eslint-plugin-import@~2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.2.0.tgz#72ba306fad305d67c4816348a4699a4229ac8b4e"
- dependencies:
- builtin-modules "^1.1.1"
- contains-path "^0.1.0"
- debug "^2.2.0"
- doctrine "1.5.0"
- eslint-import-resolver-node "^0.2.0"
- eslint-module-utils "^2.0.0"
- has "^1.0.1"
- lodash.cond "^4.3.0"
- minimatch "^3.0.3"
- pkg-up "^1.0.0"
-
-eslint-plugin-node@~4.2.2:
- version "4.2.2"
- resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-4.2.2.tgz#82959ca9aed79fcbd28bb1b188d05cac04fb3363"
- dependencies:
- ignore "^3.0.11"
- minimatch "^3.0.2"
- object-assign "^4.0.1"
- resolve "^1.1.7"
- semver "5.3.0"
-
-eslint-plugin-promise@~3.5.0:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz#78fbb6ffe047201627569e85a6c5373af2a68fca"
-
-eslint-plugin-react@~6.10.0:
- version "6.10.3"
- resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz#c5435beb06774e12c7db2f6abaddcbf900cd3f78"
- dependencies:
- array.prototype.find "^2.0.1"
- doctrine "^1.2.2"
- has "^1.0.1"
- jsx-ast-utils "^1.3.4"
- object.assign "^4.0.4"
-
-eslint-plugin-standard@~3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz#34d0c915b45edc6f010393c7eef3823b08565cf2"
-
-eslint@~3.19.0:
- version "3.19.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc"
- dependencies:
- babel-code-frame "^6.16.0"
- chalk "^1.1.3"
- concat-stream "^1.5.2"
- debug "^2.1.1"
- doctrine "^2.0.0"
- escope "^3.6.0"
- espree "^3.4.0"
- esquery "^1.0.0"
- estraverse "^4.2.0"
- esutils "^2.0.2"
- file-entry-cache "^2.0.0"
- glob "^7.0.3"
- globals "^9.14.0"
- ignore "^3.2.0"
- imurmurhash "^0.1.4"
- inquirer "^0.12.0"
- is-my-json-valid "^2.10.0"
- is-resolvable "^1.0.0"
- js-yaml "^3.5.1"
- json-stable-stringify "^1.0.0"
- levn "^0.3.0"
- lodash "^4.0.0"
- mkdirp "^0.5.0"
- natural-compare "^1.4.0"
- optionator "^0.8.2"
- path-is-inside "^1.0.1"
- pluralize "^1.2.1"
- progress "^1.1.8"
- require-uncached "^1.0.2"
- shelljs "^0.7.5"
- strip-bom "^3.0.0"
- strip-json-comments "~2.0.1"
- table "^3.7.8"
- text-table "~0.2.0"
- user-home "^2.0.0"
-
-espree@^3.4.0:
- version "3.4.3"
- resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.3.tgz#2910b5ccd49ce893c2ffffaab4fd8b3a31b82374"
- dependencies:
- acorn "^5.0.1"
- acorn-jsx "^3.0.0"
-
-esprima@^3.1.1:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
-
-esquery@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa"
- dependencies:
- estraverse "^4.0.0"
-
-esrecurse@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220"
- dependencies:
- estraverse "~4.1.0"
- object-assign "^4.0.1"
-
-estraverse@^4.0.0, estraverse@^4.1.1, estraverse@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
-
-estraverse@~4.1.0:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2"
-
-esutils@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
-
-event-emitter@~0.3.5:
- version "0.3.5"
- resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
- dependencies:
- d "1"
- es5-ext "~0.10.14"
-
-exit-hook@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
-
-fast-levenshtein@~2.0.4:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
-
-figures@^1.3.5:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
- dependencies:
- escape-string-regexp "^1.0.5"
- object-assign "^4.1.0"
-
-file-entry-cache@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361"
- dependencies:
- flat-cache "^1.2.1"
- object-assign "^4.0.1"
-
-find-root@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.0.0.tgz#962ff211aab25c6520feeeb8d6287f8f6e95807a"
-
-find-up@^1.0.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
- dependencies:
- path-exists "^2.0.0"
- pinkie-promise "^2.0.0"
-
-find-up@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
- dependencies:
- locate-path "^2.0.0"
-
-flat-cache@^1.2.1:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96"
- dependencies:
- circular-json "^0.3.1"
- del "^2.0.2"
- graceful-fs "^4.1.2"
- write "^0.2.1"
-
-foreach@^2.0.5:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
-
-fs-plus@3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/fs-plus/-/fs-plus-3.1.1.tgz#02c085ba0a013084cff2f3e89b17c60c1d9b4ab5"
- integrity sha512-Se2PJdOWXqos1qVTkvqqjb0CSnfBnwwD+pq+z4ksT+e97mEShod/hrNg0TRCCsXPbJzcIq+NuzQhigunMWMJUA==
- dependencies:
- async "^1.5.2"
- mkdirp "^0.5.1"
- rimraf "^2.5.2"
- underscore-plus "1.x"
-
-fs.realpath@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
-
-function-bind@^1.0.2, function-bind@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771"
-
-generate-function@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
-
-generate-object-property@^1.1.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
- dependencies:
- is-property "^1.0.0"
-
-get-stdin@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398"
-
-glob@7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.0.tgz#3b20a357fffcf46bb384aed6f8ae9a647fdb6ac4"
- dependencies:
- inflight "^1.0.4"
- inherits "2"
- minimatch "2 || 3"
- once "^1.3.0"
- path-is-absolute "^1.0.0"
-
-glob@^7.0.0, glob@^7.0.3, glob@^7.0.5:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
- dependencies:
- fs.realpath "^1.0.0"
- inflight "^1.0.4"
- inherits "2"
- minimatch "^3.0.4"
- once "^1.3.0"
- path-is-absolute "^1.0.0"
-
-glob@^7.1.3:
- version "7.1.4"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
- integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
- dependencies:
- fs.realpath "^1.0.0"
- inflight "^1.0.4"
- inherits "2"
- minimatch "^3.0.4"
- once "^1.3.0"
- path-is-absolute "^1.0.0"
-
-globals@^9.14.0:
- version "9.17.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286"
-
-globby@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d"
- dependencies:
- array-union "^1.0.1"
- arrify "^1.0.0"
- glob "^7.0.3"
- object-assign "^4.0.1"
- pify "^2.0.0"
- pinkie-promise "^2.0.0"
-
-graceful-fs@^4.1.2:
- version "4.1.11"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
-
-has-ansi@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
- dependencies:
- ansi-regex "^2.0.0"
-
-has@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
- dependencies:
- function-bind "^1.0.2"
-
-ignore@^3.0.11, ignore@^3.0.9, ignore@^3.2.0:
- version "3.3.3"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.3.tgz#432352e57accd87ab3110e82d3fea0e47812156d"
-
-imurmurhash@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
-
-inflight@^1.0.4:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
- dependencies:
- once "^1.3.0"
- wrappy "1"
-
-inherits@2:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
-
-inherits@^2.0.3, inherits@~2.0.1:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
-
-inquirer@^0.12.0:
- version "0.12.0"
- resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e"
- dependencies:
- ansi-escapes "^1.1.0"
- ansi-regex "^2.0.0"
- chalk "^1.0.0"
- cli-cursor "^1.0.1"
- cli-width "^2.0.0"
- figures "^1.3.5"
- lodash "^4.3.0"
- readline2 "^1.0.1"
- run-async "^0.1.0"
- rx-lite "^3.1.2"
- string-width "^1.0.1"
- strip-ansi "^3.0.0"
- through "^2.3.6"
-
-interpret@^1.0.0:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90"
-
-is-arrayish@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
-
-is-callable@^1.1.1, is-callable@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
-
-is-date-object@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
-
-is-fullwidth-code-point@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
- dependencies:
- number-is-nan "^1.0.0"
-
-is-fullwidth-code-point@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
-
-is-my-json-valid@^2.10.0:
- version "2.16.0"
- resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693"
- dependencies:
- generate-function "^2.0.0"
- generate-object-property "^1.1.0"
- jsonpointer "^4.0.0"
- xtend "^4.0.0"
-
-is-path-cwd@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
-
-is-path-in-cwd@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc"
- dependencies:
- is-path-inside "^1.0.0"
-
-is-path-inside@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f"
- dependencies:
- path-is-inside "^1.0.1"
-
-is-property@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
-
-is-regex@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
- dependencies:
- has "^1.0.1"
-
-is-resolvable@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62"
- dependencies:
- tryit "^1.0.1"
-
-is-symbol@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572"
-
-isarray@^1.0.0, isarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
-
-jquery@>=3.4.1:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.5.0.tgz#9980b97d9e4194611c36530e7dc46a58d7340fc9"
- integrity sha512-Xb7SVYMvygPxbFMpTFQiHh1J7HClEaThguL15N/Gg37Lri/qKyhRGZYzHRyLH8Stq3Aow0LsHO2O2ci86fCrNQ==
-
-js-tokens@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7"
-
-js-yaml@^3.5.1:
- version "3.8.4"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.4.tgz#520b4564f86573ba96662af85a8cafa7b4b5a6f6"
- dependencies:
- argparse "^1.0.7"
- esprima "^3.1.1"
-
-json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
- dependencies:
- jsonify "~0.0.0"
-
-jsonify@~0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
-
-jsonpointer@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
-
-jsx-ast-utils@^1.3.4:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1"
-
-kidif@1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/kidif/-/kidif-1.1.0.tgz#3c5d4ef82a8c7cb9f0365de2ef1a01b21b980587"
- dependencies:
- glob "7.0.0"
-
-levn@^0.3.0, levn@~0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
- dependencies:
- prelude-ls "~1.1.2"
- type-check "~0.3.2"
-
-load-json-file@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
- dependencies:
- graceful-fs "^4.1.2"
- parse-json "^2.2.0"
- pify "^2.0.0"
- strip-bom "^3.0.0"
-
-locate-path@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
- dependencies:
- p-locate "^2.0.0"
- path-exists "^3.0.0"
-
-lodash.cond@^4.3.0:
- version "4.5.2"
- resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5"
-
-lodash@^4.0.0, lodash@^4.3.0:
- version "4.17.19"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b"
- integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==
-
-mdn-data@~1.1.0:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01"
- integrity sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==
-
-"minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
- dependencies:
- brace-expansion "^1.1.7"
-
-minimist@0.0.8:
- version "0.0.8"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
-
-minimist@^1.1.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
-
-mkdirp@^0.5.0, mkdirp@^0.5.1:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
- dependencies:
- minimist "0.0.8"
-
-ms@0.7.1:
- version "0.7.1"
- resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
-
-mustache@2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/mustache/-/mustache-2.3.0.tgz#4028f7778b17708a489930a6e52ac3bca0da41d0"
-
-mute-stream@0.0.5:
- version "0.0.5"
- resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0"
-
-natural-compare@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
-
-number-is-nan@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
-
-object-assign@^4.0.1, object-assign@^4.1.0:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
-
-object-keys@^1.0.10, object-keys@^1.0.8:
- version "1.0.11"
- resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
-
-object.assign@^4.0.4:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc"
- dependencies:
- define-properties "^1.1.2"
- function-bind "^1.1.0"
- object-keys "^1.0.10"
-
-once@^1.3.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
- dependencies:
- wrappy "1"
-
-onetime@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789"
-
-optionator@^0.8.2:
- version "0.8.2"
- resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
- dependencies:
- deep-is "~0.1.3"
- fast-levenshtein "~2.0.4"
- levn "~0.3.0"
- prelude-ls "~1.1.2"
- type-check "~0.3.2"
- wordwrap "~1.0.0"
-
-os-homedir@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
-
-p-limit@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc"
-
-p-locate@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
- dependencies:
- p-limit "^1.1.0"
-
-parse-json@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
- dependencies:
- error-ex "^1.2.0"
-
-path-exists@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
- dependencies:
- pinkie-promise "^2.0.0"
-
-path-exists@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
-
-path-is-absolute@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
-
-path-is-inside@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
-
-path-parse@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
-
-pify@^2.0.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
-
-pinkie-promise@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
- dependencies:
- pinkie "^2.0.0"
-
-pinkie@^2.0.0:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
-
-pkg-conf@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.0.0.tgz#071c87650403bccfb9c627f58751bfe47c067279"
- dependencies:
- find-up "^2.0.0"
- load-json-file "^2.0.0"
-
-pkg-config@^1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/pkg-config/-/pkg-config-1.1.1.tgz#557ef22d73da3c8837107766c52eadabde298fe4"
- dependencies:
- debug-log "^1.0.0"
- find-root "^1.0.0"
- xtend "^4.0.1"
-
-pkg-dir@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4"
- dependencies:
- find-up "^1.0.0"
-
-pkg-up@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-1.0.0.tgz#3e08fb461525c4421624a33b9f7e6d0af5b05a26"
- dependencies:
- find-up "^1.0.0"
-
-pluralize@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45"
-
-prelude-ls@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
-
-process-nextick-args@~1.0.6:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
-
-progress@^1.1.8:
- version "1.1.8"
- resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"
-
-readable-stream@^2.2.2:
- version "2.2.10"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.10.tgz#effe72bb7c884c0dd335e2379d526196d9d011ee"
- dependencies:
- core-util-is "~1.0.0"
- inherits "~2.0.1"
- isarray "~1.0.0"
- process-nextick-args "~1.0.6"
- safe-buffer "^5.0.1"
- string_decoder "~1.0.0"
- util-deprecate "~1.0.1"
-
-readline2@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35"
- dependencies:
- code-point-at "^1.0.0"
- is-fullwidth-code-point "^1.0.0"
- mute-stream "0.0.5"
-
-rechoir@^0.6.2:
- version "0.6.2"
- resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
- dependencies:
- resolve "^1.1.6"
-
-require-uncached@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
- dependencies:
- caller-path "^0.1.0"
- resolve-from "^1.0.0"
-
-resolve-from@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
-
-resolve@^1.1.6, resolve@^1.1.7:
- version "1.3.3"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5"
- dependencies:
- path-parse "^1.0.5"
-
-restore-cursor@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541"
- dependencies:
- exit-hook "^1.0.0"
- onetime "^1.0.0"
-
-rimraf@^2.2.8:
- version "2.6.1"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d"
- dependencies:
- glob "^7.0.5"
-
-rimraf@^2.5.2:
- version "2.6.3"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
- integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
- dependencies:
- glob "^7.1.3"
-
-run-async@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389"
- dependencies:
- once "^1.3.0"
-
-run-parallel@^1.1.2:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.6.tgz#29003c9a2163e01e2d2dfc90575f2c6c1d61a039"
-
-rx-lite@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102"
-
-safe-buffer@^5.0.1:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.0.tgz#fe4c8460397f9eaaaa58e73be46273408a45e223"
-
-semver@5.3.0:
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
-
-shelljs@^0.7.5:
- version "0.7.7"
- resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1"
- dependencies:
- glob "^7.0.0"
- interpret "^1.0.0"
- rechoir "^0.6.2"
-
-slice-ansi@0.0.4:
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
-
-source-map@^0.5.3:
- version "0.5.7"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
- integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
-
-source-map@~0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
- integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-
-sprintf-js@~1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
-
-standard-engine@~7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/standard-engine/-/standard-engine-7.0.0.tgz#ebb77b9c8fc2c8165ffa353bd91ba0dff41af690"
- dependencies:
- deglob "^2.1.0"
- get-stdin "^5.0.1"
- minimist "^1.1.0"
- pkg-conf "^2.0.0"
-
-standard@10.0.2:
- version "10.0.2"
- resolved "https://registry.yarnpkg.com/standard/-/standard-10.0.2.tgz#974c1c53cc865b075a4b576e78441e1695daaf7b"
- dependencies:
- eslint "~3.19.0"
- eslint-config-standard "10.2.1"
- eslint-config-standard-jsx "4.0.1"
- eslint-plugin-import "~2.2.0"
- eslint-plugin-node "~4.2.2"
- eslint-plugin-promise "~3.5.0"
- eslint-plugin-react "~6.10.0"
- eslint-plugin-standard "~3.0.1"
- standard-engine "~7.0.0"
-
-string-width@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
- dependencies:
- code-point-at "^1.0.0"
- is-fullwidth-code-point "^1.0.0"
- strip-ansi "^3.0.0"
-
-string-width@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e"
- dependencies:
- is-fullwidth-code-point "^2.0.0"
- strip-ansi "^3.0.0"
-
-string_decoder@~1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.1.tgz#62e200f039955a6810d8df0a33ffc0f013662d98"
- dependencies:
- safe-buffer "^5.0.1"
-
-strip-ansi@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
- dependencies:
- ansi-regex "^2.0.0"
-
-strip-bom@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
-
-strip-json-comments@~2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
-
-supports-color@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
-
-table@^3.7.8:
- version "3.8.3"
- resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f"
- dependencies:
- ajv "^4.7.0"
- ajv-keywords "^1.0.0"
- chalk "^1.1.1"
- lodash "^4.0.0"
- slice-ansi "0.0.4"
- string-width "^2.0.0"
-
-text-table@~0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
-
-through@^2.3.6:
- version "2.3.8"
- resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
-
-tryit@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb"
-
-type-check@~0.3.2:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
- dependencies:
- prelude-ls "~1.1.2"
-
-typedarray@^0.0.6:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
-
-uglify-js@3.6.0:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5"
- integrity sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==
- dependencies:
- commander "~2.20.0"
- source-map "~0.6.1"
-
-underscore-plus@1.x:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/underscore-plus/-/underscore-plus-1.7.0.tgz#107f1900c520ac1fefe4edec6580a7ff08a99d0f"
- integrity sha512-A3BEzkeicFLnr+U/Q3EyWwJAQPbA19mtZZ4h+lLq3ttm9kn8WC4R3YpuJZEXmWdLjYP47Zc8aLZm9kwdv+zzvA==
- dependencies:
- underscore "^1.9.1"
-
-underscore@^1.9.1:
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961"
- integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==
-
-uniq@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
-
-user-home@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f"
- dependencies:
- os-homedir "^1.0.0"
-
-util-deprecate@~1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
-
-wordwrap@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
-
-wrappy@1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
-
-write@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757"
- dependencies:
- mkdirp "^0.5.1"
-
-xtend@^4.0.0, xtend@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
+"acorn-jsx@^3.0.0":
+ "integrity" "sha512-AU7pnZkguthwBjKgCg6998ByQNIMjbuDQZ8bb78QAFZwPfmKia8AIzgY/gWgqCjnht8JLdXmB4YxA0KaV60ncQ=="
+ "resolved" "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz"
+ "version" "3.0.1"
+ dependencies:
+ "acorn" "^3.0.4"
+
+"acorn@^3.0.4":
+ "integrity" "sha512-OLUyIIZ7mF5oaAUT1w0TFqQS81q3saT46x8t7ukpPjMNk+nbs4ZHhs7ToV8EWnLYLepjETXd4XaCE4uxkMeqUw=="
+ "resolved" "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz"
+ "version" "3.3.0"
+
+"acorn@^5.5.0":
+ "integrity" "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg=="
+ "resolved" "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz"
+ "version" "5.7.4"
+
+"ajv-keywords@^1.0.0":
+ "integrity" "sha512-vuBv+fm2s6cqUyey2A7qYcvsik+GMDJsw8BARP2sDE76cqmaZVarsvHf7Vx6VJ0Xk8gLl+u3MoAPf6gKzJefeA=="
+ "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz"
+ "version" "1.5.1"
+
+"ajv@^4.7.0", "ajv@>=4.10.0":
+ "integrity" "sha512-I/bSHSNEcFFqXLf91nchoNB9D1Kie3QKcWdchYUaoIg1+1bdWDkdfdlvdIOJbi9U8xR0y+MWc5D+won9v95WlQ=="
+ "resolved" "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz"
+ "version" "4.11.8"
+ dependencies:
+ "co" "^4.6.0"
+ "json-stable-stringify" "^1.0.1"
+
+"ansi-escapes@^1.1.0":
+ "integrity" "sha512-wiXutNjDUlNEDWHcYH3jtZUhd3c4/VojassD8zHdHCY13xbZy2XbW+NKQwA0tWGBVzDA9qEzYwfoSsWmviidhw=="
+ "resolved" "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz"
+ "version" "1.4.0"
+
+"ansi-regex@^2.0.0":
+ "integrity" "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA=="
+ "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"
+ "version" "2.1.1"
+
+"ansi-regex@^3.0.0":
+ "integrity" "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw=="
+ "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz"
+ "version" "3.0.1"
+
+"ansi-styles@^2.2.1":
+ "integrity" "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA=="
+ "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz"
+ "version" "2.2.1"
+
+"argparse@^1.0.7":
+ "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="
+ "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz"
+ "version" "1.0.10"
+ dependencies:
+ "sprintf-js" "~1.0.2"
+
+"array.prototype.find@^2.0.1":
+ "integrity" "sha512-sn40qmUiLYAcRb/1HsIQjTTZ1kCy8II8VtZJpMn2Aoen9twULhbWXisfh3HimGqMlHGUul0/TfKCnXg42LuPpQ=="
+ "resolved" "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.2.0.tgz"
+ "version" "2.2.0"
+ dependencies:
+ "call-bind" "^1.0.2"
+ "define-properties" "^1.1.3"
+ "es-abstract" "^1.19.4"
+ "es-shim-unscopables" "^1.0.0"
+
+"async@^1.5.2":
+ "integrity" "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w=="
+ "resolved" "https://registry.npmjs.org/async/-/async-1.5.2.tgz"
+ "version" "1.5.2"
+
+"babel-code-frame@^6.16.0":
+ "integrity" "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g=="
+ "resolved" "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz"
+ "version" "6.26.0"
+ dependencies:
+ "chalk" "^1.1.3"
+ "esutils" "^2.0.2"
+ "js-tokens" "^3.0.2"
+
+"balanced-match@^1.0.0":
+ "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+ "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
+ "version" "1.0.2"
+
+"brace-expansion@^1.1.7":
+ "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="
+ "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"
+ "version" "1.1.11"
+ dependencies:
+ "balanced-match" "^1.0.0"
+ "concat-map" "0.0.1"
+
+"buffer-from@^1.0.0":
+ "integrity" "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
+ "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz"
+ "version" "1.1.2"
+
+"builtin-modules@^1.1.1":
+ "integrity" "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ=="
+ "resolved" "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz"
+ "version" "1.1.1"
+
+"call-bind@^1.0.0", "call-bind@^1.0.2":
+ "integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA=="
+ "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz"
+ "version" "1.0.2"
+ dependencies:
+ "function-bind" "^1.1.1"
+ "get-intrinsic" "^1.0.2"
+
+"caller-path@^0.1.0":
+ "integrity" "sha512-UJiE1otjXPF5/x+T3zTnSFiTOEmJoGTD9HmBoxnCUwho61a2eSNn/VwtwuIBDAo2SEOv1AJ7ARI5gCmohFLu/g=="
+ "resolved" "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz"
+ "version" "0.1.0"
+ dependencies:
+ "callsites" "^0.2.0"
+
+"callsites@^0.2.0":
+ "integrity" "sha512-Zv4Dns9IbXXmPkgRRUjAaJQgfN4xX5p6+RQFhWUqscdvvK2xK/ZL8b3IXIJsj+4sD+f24NwnWy2BY8AJ82JB0A=="
+ "resolved" "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz"
+ "version" "0.2.0"
+
+"chalk@^1.0.0", "chalk@^1.1.1", "chalk@^1.1.3":
+ "integrity" "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A=="
+ "resolved" "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz"
+ "version" "1.1.3"
+ dependencies:
+ "ansi-styles" "^2.2.1"
+ "escape-string-regexp" "^1.0.2"
+ "has-ansi" "^2.0.0"
+ "strip-ansi" "^3.0.0"
+ "supports-color" "^2.0.0"
+
+"circular-json@^0.3.1":
+ "integrity" "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A=="
+ "resolved" "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz"
+ "version" "0.3.3"
+
+"cli-cursor@^1.0.1":
+ "integrity" "sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A=="
+ "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz"
+ "version" "1.0.2"
+ dependencies:
+ "restore-cursor" "^1.0.1"
+
+"cli-width@^2.0.0":
+ "integrity" "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw=="
+ "resolved" "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz"
+ "version" "2.2.1"
+
+"co@^4.6.0":
+ "integrity" "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ=="
+ "resolved" "https://registry.npmjs.org/co/-/co-4.6.0.tgz"
+ "version" "4.6.0"
+
+"code-point-at@^1.0.0":
+ "integrity" "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA=="
+ "resolved" "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz"
+ "version" "1.1.0"
+
+"concat-map@0.0.1":
+ "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
+ "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
+ "version" "0.0.1"
+
+"concat-stream@^1.5.2":
+ "integrity" "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw=="
+ "resolved" "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz"
+ "version" "1.6.2"
+ dependencies:
+ "buffer-from" "^1.0.0"
+ "inherits" "^2.0.3"
+ "readable-stream" "^2.2.2"
+ "typedarray" "^0.0.6"
+
+"contains-path@^0.1.0":
+ "integrity" "sha512-OKZnPGeMQy2RPaUIBPFFd71iNf4791H12MCRuVQDnzGRwCYNYmTDy5pdafo2SLAcEMKzTOQnLWG4QdcjeJUMEg=="
+ "resolved" "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz"
+ "version" "0.1.0"
+
+"core-util-is@~1.0.0":
+ "integrity" "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
+ "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz"
+ "version" "1.0.3"
+
+"css-tree@1.0.0-alpha.29":
+ "integrity" "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg=="
+ "resolved" "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz"
+ "version" "1.0.0-alpha.29"
+ dependencies:
+ "mdn-data" "~1.1.0"
+ "source-map" "^0.5.3"
+
+"csso@3.5.1":
+ "integrity" "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg=="
+ "resolved" "https://registry.npmjs.org/csso/-/csso-3.5.1.tgz"
+ "version" "3.5.1"
+ dependencies:
+ "css-tree" "1.0.0-alpha.29"
+
+"d@^1.0.1", "d@1":
+ "integrity" "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA=="
+ "resolved" "https://registry.npmjs.org/d/-/d-1.0.1.tgz"
+ "version" "1.0.1"
+ dependencies:
+ "es5-ext" "^0.10.50"
+ "type" "^1.0.1"
+
+"debug-log@^1.0.0":
+ "integrity" "sha512-gV/pe1YIaKNgLYnd1g9VNW80tcb7oV5qvNUxG7NM8rbDpnl6RGunzlAtlGSb0wEs3nesu2vHNiX9TSsZ+Y+RjA=="
+ "resolved" "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz"
+ "version" "1.0.1"
+
+"debug@^2.1.1", "debug@^2.2.0":
+ "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="
+ "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
+ "version" "2.6.9"
+ dependencies:
+ "ms" "2.0.0"
+
+"debug@^3.2.7":
+ "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="
+ "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz"
+ "version" "3.2.7"
+ dependencies:
+ "ms" "^2.1.1"
+
+"deep-is@~0.1.3":
+ "integrity" "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
+ "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz"
+ "version" "0.1.4"
+
+"define-properties@^1.1.3", "define-properties@^1.1.4":
+ "integrity" "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA=="
+ "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz"
+ "version" "1.1.4"
+ dependencies:
+ "has-property-descriptors" "^1.0.0"
+ "object-keys" "^1.1.1"
+
+"deglob@^2.1.0":
+ "integrity" "sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw=="
+ "resolved" "https://registry.npmjs.org/deglob/-/deglob-2.1.1.tgz"
+ "version" "2.1.1"
+ dependencies:
+ "find-root" "^1.0.0"
+ "glob" "^7.0.5"
+ "ignore" "^3.0.9"
+ "pkg-config" "^1.1.0"
+ "run-parallel" "^1.1.2"
+ "uniq" "^1.0.1"
+
+"doctrine@^1.2.2":
+ "integrity" "sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg=="
+ "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz"
+ "version" "1.5.0"
+ dependencies:
+ "esutils" "^2.0.2"
+ "isarray" "^1.0.0"
+
+"doctrine@^2.0.0":
+ "integrity" "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw=="
+ "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz"
+ "version" "2.1.0"
+ dependencies:
+ "esutils" "^2.0.2"
+
+"doctrine@1.5.0":
+ "integrity" "sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg=="
+ "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz"
+ "version" "1.5.0"
+ dependencies:
+ "esutils" "^2.0.2"
+ "isarray" "^1.0.0"
+
+"error-ex@^1.3.1":
+ "integrity" "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g=="
+ "resolved" "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz"
+ "version" "1.3.2"
+ dependencies:
+ "is-arrayish" "^0.2.1"
+
+"es-abstract@^1.19.0", "es-abstract@^1.19.4", "es-abstract@^1.19.5":
+ "integrity" "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA=="
+ "resolved" "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz"
+ "version" "1.20.1"
+ dependencies:
+ "call-bind" "^1.0.2"
+ "es-to-primitive" "^1.2.1"
+ "function-bind" "^1.1.1"
+ "function.prototype.name" "^1.1.5"
+ "get-intrinsic" "^1.1.1"
+ "get-symbol-description" "^1.0.0"
+ "has" "^1.0.3"
+ "has-property-descriptors" "^1.0.0"
+ "has-symbols" "^1.0.3"
+ "internal-slot" "^1.0.3"
+ "is-callable" "^1.2.4"
+ "is-negative-zero" "^2.0.2"
+ "is-regex" "^1.1.4"
+ "is-shared-array-buffer" "^1.0.2"
+ "is-string" "^1.0.7"
+ "is-weakref" "^1.0.2"
+ "object-inspect" "^1.12.0"
+ "object-keys" "^1.1.1"
+ "object.assign" "^4.1.2"
+ "regexp.prototype.flags" "^1.4.3"
+ "string.prototype.trimend" "^1.0.5"
+ "string.prototype.trimstart" "^1.0.5"
+ "unbox-primitive" "^1.0.2"
+
+"es-shim-unscopables@^1.0.0":
+ "integrity" "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w=="
+ "resolved" "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz"
+ "version" "1.0.0"
+ dependencies:
+ "has" "^1.0.3"
+
+"es-to-primitive@^1.2.1":
+ "integrity" "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA=="
+ "resolved" "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz"
+ "version" "1.2.1"
+ dependencies:
+ "is-callable" "^1.1.4"
+ "is-date-object" "^1.0.1"
+ "is-symbol" "^1.0.2"
+
+"es5-ext@^0.10.35", "es5-ext@^0.10.46", "es5-ext@^0.10.50", "es5-ext@~0.10.14":
+ "integrity" "sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA=="
+ "resolved" "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz"
+ "version" "0.10.61"
+ dependencies:
+ "es6-iterator" "^2.0.3"
+ "es6-symbol" "^3.1.3"
+ "next-tick" "^1.1.0"
+
+"es6-iterator@^2.0.3", "es6-iterator@~2.0.1":
+ "integrity" "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g=="
+ "resolved" "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz"
+ "version" "2.0.3"
+ dependencies:
+ "d" "1"
+ "es5-ext" "^0.10.35"
+ "es6-symbol" "^3.1.1"
+
+"es6-map@^0.1.3":
+ "integrity" "sha512-mz3UqCh0uPCIqsw1SSAkB/p0rOzF/M0V++vyN7JqlPtSW/VsYgQBvVvqMLmfBuyMzTpLnNqi6JmcSizs4jy19A=="
+ "resolved" "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz"
+ "version" "0.1.5"
+ dependencies:
+ "d" "1"
+ "es5-ext" "~0.10.14"
+ "es6-iterator" "~2.0.1"
+ "es6-set" "~0.1.5"
+ "es6-symbol" "~3.1.1"
+ "event-emitter" "~0.3.5"
+
+"es6-set@~0.1.5":
+ "integrity" "sha512-7S8YXIcUfPMOr3rqJBVMePAbRsD1nWeSMQ86K/lDI76S3WKXz+KWILvTIPbTroubOkZTGh+b+7/xIIphZXNYbA=="
+ "resolved" "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz"
+ "version" "0.1.5"
+ dependencies:
+ "d" "1"
+ "es5-ext" "~0.10.14"
+ "es6-iterator" "~2.0.1"
+ "es6-symbol" "3.1.1"
+ "event-emitter" "~0.3.5"
+
+"es6-symbol@^3.1.1", "es6-symbol@^3.1.3", "es6-symbol@~3.1.1":
+ "integrity" "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA=="
+ "resolved" "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz"
+ "version" "3.1.3"
+ dependencies:
+ "d" "^1.0.1"
+ "ext" "^1.1.2"
+
+"es6-symbol@3.1.1":
+ "integrity" "sha512-exfuQY8UGtn/N+gL1iKkH8fpNd5sJ760nJq6mmZAHldfxMD5kX07lbQuYlspoXsuknXNv9Fb7y2GsPOnQIbxHg=="
+ "resolved" "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz"
+ "version" "3.1.1"
+ dependencies:
+ "d" "1"
+ "es5-ext" "~0.10.14"
+
+"es6-weak-map@^2.0.1":
+ "integrity" "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA=="
+ "resolved" "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz"
+ "version" "2.0.3"
+ dependencies:
+ "d" "1"
+ "es5-ext" "^0.10.46"
+ "es6-iterator" "^2.0.3"
+ "es6-symbol" "^3.1.1"
+
+"escape-string-regexp@^1.0.2", "escape-string-regexp@^1.0.5":
+ "integrity" "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="
+ "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
+ "version" "1.0.5"
+
+"escope@^3.6.0":
+ "integrity" "sha512-75IUQsusDdalQEW/G/2esa87J7raqdJF+Ca0/Xm5C3Q58Nr4yVYjZGp/P1+2xiEVgXRrA39dpRb8LcshajbqDQ=="
+ "resolved" "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz"
+ "version" "3.6.0"
+ dependencies:
+ "es6-map" "^0.1.3"
+ "es6-weak-map" "^2.0.1"
+ "esrecurse" "^4.1.0"
+ "estraverse" "^4.1.1"
+
+"eslint-config-standard-jsx@4.0.1":
+ "integrity" "sha512-6XxcwOm22JWEVrDTxhkh/M9Qv5FCNPHKDGh4LPmWnFj4MDuNs7iXZatahYghIcMw5mkVMadLl7KFAWH/EOIeAA=="
+ "resolved" "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.1.tgz"
+ "version" "4.0.1"
+
+"eslint-config-standard@10.2.1":
+ "integrity" "sha512-UkFojTV1o0GOe1edOEiuI5ccYLJSuNngtqSeClNzhsmG8KPJ+7mRxgtp2oYhqZAK/brlXMoCd+VgXViE0AfyKw=="
+ "resolved" "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz"
+ "version" "10.2.1"
+
+"eslint-import-resolver-node@^0.2.0":
+ "integrity" "sha512-HI8ShtDIy7gON76Nr3bu4zl0DuCLPo1Fud9P2lltOQKeiAS2r5/o/l3y+V8HJ1cDLFSz+tHu7/V9fI5jirwlbw=="
+ "resolved" "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz"
+ "version" "0.2.3"
+ dependencies:
+ "debug" "^2.2.0"
+ "object-assign" "^4.0.1"
+ "resolve" "^1.1.6"
+
+"eslint-module-utils@^2.0.0":
+ "integrity" "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ=="
+ "resolved" "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz"
+ "version" "2.7.3"
+ dependencies:
+ "debug" "^3.2.7"
+ "find-up" "^2.1.0"
+
+"eslint-plugin-import@>=2.2.0", "eslint-plugin-import@~2.2.0":
+ "integrity" "sha512-8HLeIYzOH4eltevxf+iC9Dtz/91yaeOqtlba5srcpQWLrv57F5NNG1RNLqAbpWJWDD4BxKuKjUveJY9W6Tbswg=="
+ "resolved" "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.2.0.tgz"
+ "version" "2.2.0"
+ dependencies:
+ "builtin-modules" "^1.1.1"
+ "contains-path" "^0.1.0"
+ "debug" "^2.2.0"
+ "doctrine" "1.5.0"
+ "eslint-import-resolver-node" "^0.2.0"
+ "eslint-module-utils" "^2.0.0"
+ "has" "^1.0.1"
+ "lodash.cond" "^4.3.0"
+ "minimatch" "^3.0.3"
+ "pkg-up" "^1.0.0"
+
+"eslint-plugin-node@>=4.2.2", "eslint-plugin-node@~4.2.2":
+ "integrity" "sha512-vIUQPuwbVYdz/CYnlTLsJrRy7iXHQjdEe5wz0XhhdTym3IInM/zZLlPf9nZ2mThsH0QcsieCOWs2vOeCy/22LQ=="
+ "resolved" "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-4.2.3.tgz"
+ "version" "4.2.3"
+ dependencies:
+ "ignore" "^3.0.11"
+ "minimatch" "^3.0.2"
+ "object-assign" "^4.0.1"
+ "resolve" "^1.1.7"
+ "semver" "5.3.0"
+
+"eslint-plugin-promise@>=3.5.0", "eslint-plugin-promise@~3.5.0":
+ "integrity" "sha512-kqXN7i1wfx5j7XuFVzuX4W3XDCEyNDsbd+O5NXWIl+zTSP510rKn2Xk8OO6JhM1ivXbkse0tQf6jjSTLS58Prg=="
+ "resolved" "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz"
+ "version" "3.5.0"
+
+"eslint-plugin-react@>=6.10.3", "eslint-plugin-react@~6.10.0":
+ "integrity" "sha512-vFfMSxJynKlgOhIVjhlZyibVUg442Aiv3482XPkgdYV90T8nD2QvxGXILZGwZHYMQ/l+A/De14O9D0qjDelSrg=="
+ "resolved" "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz"
+ "version" "6.10.3"
+ dependencies:
+ "array.prototype.find" "^2.0.1"
+ "doctrine" "^1.2.2"
+ "has" "^1.0.1"
+ "jsx-ast-utils" "^1.3.4"
+ "object.assign" "^4.0.4"
+
+"eslint-plugin-standard@>=3.0.0", "eslint-plugin-standard@~3.0.1":
+ "integrity" "sha512-JyT7wqVYlaHxnljWMT7CKa0R1QDQqArTi6g8kYnexTHHuK7x3Vg//kCepnoTgdT9x/kDbSluXMhJgjBvgVRLlQ=="
+ "resolved" "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz"
+ "version" "3.0.1"
+
+"eslint@^2.0.0 || ^3.0.0", "eslint@>=3.1.0", "eslint@>=3.19.0", "eslint@~3.19.0", "eslint@2.x - 3.x":
+ "integrity" "sha512-x6LJGXWCGB/4YOBhL48yeppZTo+YQUNC37N5qqCpC1b1kkNzydlQHQAtPuUSFoZSxgIadrysQoW2Hq602P+uEA=="
+ "resolved" "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz"
+ "version" "3.19.0"
+ dependencies:
+ "babel-code-frame" "^6.16.0"
+ "chalk" "^1.1.3"
+ "concat-stream" "^1.5.2"
+ "debug" "^2.1.1"
+ "doctrine" "^2.0.0"
+ "escope" "^3.6.0"
+ "espree" "^3.4.0"
+ "esquery" "^1.0.0"
+ "estraverse" "^4.2.0"
+ "esutils" "^2.0.2"
+ "file-entry-cache" "^2.0.0"
+ "glob" "^7.0.3"
+ "globals" "^9.14.0"
+ "ignore" "^3.2.0"
+ "imurmurhash" "^0.1.4"
+ "inquirer" "^0.12.0"
+ "is-my-json-valid" "^2.10.0"
+ "is-resolvable" "^1.0.0"
+ "js-yaml" "^3.5.1"
+ "json-stable-stringify" "^1.0.0"
+ "levn" "^0.3.0"
+ "lodash" "^4.0.0"
+ "mkdirp" "^0.5.0"
+ "natural-compare" "^1.4.0"
+ "optionator" "^0.8.2"
+ "path-is-inside" "^1.0.1"
+ "pluralize" "^1.2.1"
+ "progress" "^1.1.8"
+ "require-uncached" "^1.0.2"
+ "shelljs" "^0.7.5"
+ "strip-bom" "^3.0.0"
+ "strip-json-comments" "~2.0.1"
+ "table" "^3.7.8"
+ "text-table" "~0.2.0"
+ "user-home" "^2.0.0"
+
+"espree@^3.4.0":
+ "integrity" "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A=="
+ "resolved" "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz"
+ "version" "3.5.4"
+ dependencies:
+ "acorn" "^5.5.0"
+ "acorn-jsx" "^3.0.0"
+
+"esprima@^4.0.0":
+ "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
+ "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz"
+ "version" "4.0.1"
+
+"esquery@^1.0.0":
+ "integrity" "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w=="
+ "resolved" "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz"
+ "version" "1.4.0"
+ dependencies:
+ "estraverse" "^5.1.0"
+
+"esrecurse@^4.1.0":
+ "integrity" "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="
+ "resolved" "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz"
+ "version" "4.3.0"
+ dependencies:
+ "estraverse" "^5.2.0"
+
+"estraverse@^4.1.1", "estraverse@^4.2.0":
+ "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="
+ "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz"
+ "version" "4.3.0"
+
+"estraverse@^5.1.0":
+ "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="
+ "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz"
+ "version" "5.3.0"
+
+"estraverse@^5.2.0":
+ "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="
+ "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz"
+ "version" "5.3.0"
+
+"esutils@^2.0.2":
+ "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
+ "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
+ "version" "2.0.3"
+
+"event-emitter@~0.3.5":
+ "integrity" "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA=="
+ "resolved" "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz"
+ "version" "0.3.5"
+ dependencies:
+ "d" "1"
+ "es5-ext" "~0.10.14"
+
+"exit-hook@^1.0.0":
+ "integrity" "sha512-MsG3prOVw1WtLXAZbM3KiYtooKR1LvxHh3VHsVtIy0uiUu8usxgB/94DP2HxtD/661lLdB6yzQ09lGJSQr6nkg=="
+ "resolved" "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz"
+ "version" "1.1.1"
+
+"ext@^1.1.2":
+ "integrity" "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg=="
+ "resolved" "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz"
+ "version" "1.6.0"
+ dependencies:
+ "type" "^2.5.0"
+
+"fast-levenshtein@~2.0.6":
+ "integrity" "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="
+ "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
+ "version" "2.0.6"
+
+"figures@^1.3.5":
+ "integrity" "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ=="
+ "resolved" "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz"
+ "version" "1.7.0"
+ dependencies:
+ "escape-string-regexp" "^1.0.5"
+ "object-assign" "^4.1.0"
+
+"file-entry-cache@^2.0.0":
+ "integrity" "sha512-uXP/zGzxxFvFfcZGgBIwotm+Tdc55ddPAzF7iHshP4YGaXMww7rSF9peD9D1sui5ebONg5UobsZv+FfgEpGv/w=="
+ "resolved" "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz"
+ "version" "2.0.0"
+ dependencies:
+ "flat-cache" "^1.2.1"
+ "object-assign" "^4.0.1"
+
+"find-root@^1.0.0":
+ "integrity" "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="
+ "resolved" "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz"
+ "version" "1.1.0"
+
+"find-up@^1.0.0":
+ "integrity" "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA=="
+ "resolved" "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz"
+ "version" "1.1.2"
+ dependencies:
+ "path-exists" "^2.0.0"
+ "pinkie-promise" "^2.0.0"
+
+"find-up@^2.0.0", "find-up@^2.1.0":
+ "integrity" "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ=="
+ "resolved" "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz"
+ "version" "2.1.0"
+ dependencies:
+ "locate-path" "^2.0.0"
+
+"flat-cache@^1.2.1":
+ "integrity" "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg=="
+ "resolved" "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz"
+ "version" "1.3.4"
+ dependencies:
+ "circular-json" "^0.3.1"
+ "graceful-fs" "^4.1.2"
+ "rimraf" "~2.6.2"
+ "write" "^0.2.1"
+
+"fs-plus@3.1.1":
+ "integrity" "sha512-Se2PJdOWXqos1qVTkvqqjb0CSnfBnwwD+pq+z4ksT+e97mEShod/hrNg0TRCCsXPbJzcIq+NuzQhigunMWMJUA=="
+ "resolved" "https://registry.npmjs.org/fs-plus/-/fs-plus-3.1.1.tgz"
+ "version" "3.1.1"
+ dependencies:
+ "async" "^1.5.2"
+ "mkdirp" "^0.5.1"
+ "rimraf" "^2.5.2"
+ "underscore-plus" "1.x"
+
+"fs.realpath@^1.0.0":
+ "integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
+ "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
+ "version" "1.0.0"
+
+"function-bind@^1.1.1":
+ "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"
+ "version" "1.1.1"
+
+"function.prototype.name@^1.1.5":
+ "integrity" "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA=="
+ "resolved" "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz"
+ "version" "1.1.5"
+ dependencies:
+ "call-bind" "^1.0.2"
+ "define-properties" "^1.1.3"
+ "es-abstract" "^1.19.0"
+ "functions-have-names" "^1.2.2"
+
+"functions-have-names@^1.2.2":
+ "integrity" "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="
+ "resolved" "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz"
+ "version" "1.2.3"
+
+"generate-function@^2.0.0":
+ "integrity" "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ=="
+ "resolved" "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz"
+ "version" "2.3.1"
+ dependencies:
+ "is-property" "^1.0.2"
+
+"generate-object-property@^1.1.0":
+ "integrity" "sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ=="
+ "resolved" "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz"
+ "version" "1.2.0"
+ dependencies:
+ "is-property" "^1.0.0"
+
+"get-intrinsic@^1.0.2", "get-intrinsic@^1.1.0", "get-intrinsic@^1.1.1":
+ "integrity" "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA=="
+ "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz"
+ "version" "1.1.2"
+ dependencies:
+ "function-bind" "^1.1.1"
+ "has" "^1.0.3"
+ "has-symbols" "^1.0.3"
+
+"get-stdin@^5.0.1":
+ "integrity" "sha512-jZV7n6jGE3Gt7fgSTJoz91Ak5MuTLwMwkoYdjxuJ/AmjIsE1UC03y/IWkZCQGEvVNS9qoRNwy5BCqxImv0FVeA=="
+ "resolved" "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz"
+ "version" "5.0.1"
+
+"get-symbol-description@^1.0.0":
+ "integrity" "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw=="
+ "resolved" "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz"
+ "version" "1.0.0"
+ dependencies:
+ "call-bind" "^1.0.2"
+ "get-intrinsic" "^1.1.1"
+
+"glob@^7.0.0", "glob@7.0.0":
+ "integrity" "sha512-Fa+aQV0FFMU4/Jg5mquHjv5DikTujeAWOpbGa9lsG2Qa+ehYxbGN3cCY/T+C+jAS8gKBnYN2MbrdNm0UCAcp7w=="
+ "resolved" "https://registry.npmjs.org/glob/-/glob-7.0.0.tgz"
+ "version" "7.0.0"
+ dependencies:
+ "inflight" "^1.0.4"
+ "inherits" "2"
+ "minimatch" "2 || 3"
+ "once" "^1.3.0"
+ "path-is-absolute" "^1.0.0"
+
+"glob@^7.0.3":
+ "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="
+ "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
+ "version" "7.2.3"
+ dependencies:
+ "fs.realpath" "^1.0.0"
+ "inflight" "^1.0.4"
+ "inherits" "2"
+ "minimatch" "^3.1.1"
+ "once" "^1.3.0"
+ "path-is-absolute" "^1.0.0"
+
+"glob@^7.0.5":
+ "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="
+ "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
+ "version" "7.2.3"
+ dependencies:
+ "fs.realpath" "^1.0.0"
+ "inflight" "^1.0.4"
+ "inherits" "2"
+ "minimatch" "^3.1.1"
+ "once" "^1.3.0"
+ "path-is-absolute" "^1.0.0"
+
+"glob@^7.1.3":
+ "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="
+ "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
+ "version" "7.2.3"
+ dependencies:
+ "fs.realpath" "^1.0.0"
+ "inflight" "^1.0.4"
+ "inherits" "2"
+ "minimatch" "^3.1.1"
+ "once" "^1.3.0"
+ "path-is-absolute" "^1.0.0"
+
+"globals@^9.14.0":
+ "integrity" "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ=="
+ "resolved" "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz"
+ "version" "9.18.0"
+
+"graceful-fs@^4.1.2":
+ "integrity" "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
+ "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz"
+ "version" "4.2.10"
+
+"has-ansi@^2.0.0":
+ "integrity" "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg=="
+ "resolved" "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz"
+ "version" "2.0.0"
+ dependencies:
+ "ansi-regex" "^2.0.0"
+
+"has-bigints@^1.0.1", "has-bigints@^1.0.2":
+ "integrity" "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ=="
+ "resolved" "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz"
+ "version" "1.0.2"
+
+"has-property-descriptors@^1.0.0":
+ "integrity" "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ=="
+ "resolved" "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz"
+ "version" "1.0.0"
+ dependencies:
+ "get-intrinsic" "^1.1.1"
+
+"has-symbols@^1.0.1", "has-symbols@^1.0.2", "has-symbols@^1.0.3":
+ "integrity" "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
+ "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz"
+ "version" "1.0.3"
+
+"has-tostringtag@^1.0.0":
+ "integrity" "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ=="
+ "resolved" "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz"
+ "version" "1.0.0"
+ dependencies:
+ "has-symbols" "^1.0.2"
+
+"has@^1.0.1", "has@^1.0.3":
+ "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw=="
+ "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz"
+ "version" "1.0.3"
+ dependencies:
+ "function-bind" "^1.1.1"
+
+"ignore@^3.0.11", "ignore@^3.0.9", "ignore@^3.2.0":
+ "integrity" "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug=="
+ "resolved" "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz"
+ "version" "3.3.10"
+
+"imurmurhash@^0.1.4":
+ "integrity" "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="
+ "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz"
+ "version" "0.1.4"
+
+"inflight@^1.0.4":
+ "integrity" "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA=="
+ "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
+ "version" "1.0.6"
+ dependencies:
+ "once" "^1.3.0"
+ "wrappy" "1"
+
+"inherits@^2.0.3", "inherits@~2.0.3", "inherits@2":
+ "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
+ "version" "2.0.4"
+
+"inquirer@^0.12.0":
+ "integrity" "sha512-bOetEz5+/WpgaW4D1NYOk1aD+JCqRjqu/FwRFgnIfiP7FC/zinsrfyO1vlS3nyH/R7S0IH3BIHBu4DBIDSqiGQ=="
+ "resolved" "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz"
+ "version" "0.12.0"
+ dependencies:
+ "ansi-escapes" "^1.1.0"
+ "ansi-regex" "^2.0.0"
+ "chalk" "^1.0.0"
+ "cli-cursor" "^1.0.1"
+ "cli-width" "^2.0.0"
+ "figures" "^1.3.5"
+ "lodash" "^4.3.0"
+ "readline2" "^1.0.1"
+ "run-async" "^0.1.0"
+ "rx-lite" "^3.1.2"
+ "string-width" "^1.0.1"
+ "strip-ansi" "^3.0.0"
+ "through" "^2.3.6"
+
+"internal-slot@^1.0.3":
+ "integrity" "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA=="
+ "resolved" "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz"
+ "version" "1.0.3"
+ dependencies:
+ "get-intrinsic" "^1.1.0"
+ "has" "^1.0.3"
+ "side-channel" "^1.0.4"
+
+"interpret@^1.0.0":
+ "integrity" "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA=="
+ "resolved" "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz"
+ "version" "1.4.0"
+
+"is-arrayish@^0.2.1":
+ "integrity" "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
+ "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz"
+ "version" "0.2.1"
+
+"is-bigint@^1.0.1":
+ "integrity" "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg=="
+ "resolved" "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz"
+ "version" "1.0.4"
+ dependencies:
+ "has-bigints" "^1.0.1"
+
+"is-boolean-object@^1.1.0":
+ "integrity" "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA=="
+ "resolved" "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz"
+ "version" "1.1.2"
+ dependencies:
+ "call-bind" "^1.0.2"
+ "has-tostringtag" "^1.0.0"
+
+"is-callable@^1.1.4", "is-callable@^1.2.4":
+ "integrity" "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w=="
+ "resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz"
+ "version" "1.2.4"
+
+"is-core-module@^2.9.0":
+ "integrity" "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A=="
+ "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz"
+ "version" "2.9.0"
+ dependencies:
+ "has" "^1.0.3"
+
+"is-date-object@^1.0.1":
+ "integrity" "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ=="
+ "resolved" "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz"
+ "version" "1.0.5"
+ dependencies:
+ "has-tostringtag" "^1.0.0"
+
+"is-fullwidth-code-point@^1.0.0":
+ "integrity" "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw=="
+ "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz"
+ "version" "1.0.0"
+ dependencies:
+ "number-is-nan" "^1.0.0"
+
+"is-fullwidth-code-point@^2.0.0":
+ "integrity" "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w=="
+ "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz"
+ "version" "2.0.0"
+
+"is-my-ip-valid@^1.0.0":
+ "integrity" "sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg=="
+ "resolved" "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.1.tgz"
+ "version" "1.0.1"
+
+"is-my-json-valid@^2.10.0":
+ "integrity" "sha512-1JQwulVNjx8UqkPE/bqDaxtH4PXCe/2VRh/y3p99heOV87HG4Id5/VfDswd+YiAfHcRTfDlWgISycnHuhZq1aw=="
+ "resolved" "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.6.tgz"
+ "version" "2.20.6"
+ dependencies:
+ "generate-function" "^2.0.0"
+ "generate-object-property" "^1.1.0"
+ "is-my-ip-valid" "^1.0.0"
+ "jsonpointer" "^5.0.0"
+ "xtend" "^4.0.0"
+
+"is-negative-zero@^2.0.2":
+ "integrity" "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA=="
+ "resolved" "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz"
+ "version" "2.0.2"
+
+"is-number-object@^1.0.4":
+ "integrity" "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ=="
+ "resolved" "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz"
+ "version" "1.0.7"
+ dependencies:
+ "has-tostringtag" "^1.0.0"
+
+"is-property@^1.0.0", "is-property@^1.0.2":
+ "integrity" "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g=="
+ "resolved" "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz"
+ "version" "1.0.2"
+
+"is-regex@^1.1.4":
+ "integrity" "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg=="
+ "resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz"
+ "version" "1.1.4"
+ dependencies:
+ "call-bind" "^1.0.2"
+ "has-tostringtag" "^1.0.0"
+
+"is-resolvable@^1.0.0":
+ "integrity" "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg=="
+ "resolved" "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz"
+ "version" "1.1.0"
+
+"is-shared-array-buffer@^1.0.2":
+ "integrity" "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA=="
+ "resolved" "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz"
+ "version" "1.0.2"
+ dependencies:
+ "call-bind" "^1.0.2"
+
+"is-string@^1.0.5", "is-string@^1.0.7":
+ "integrity" "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg=="
+ "resolved" "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz"
+ "version" "1.0.7"
+ dependencies:
+ "has-tostringtag" "^1.0.0"
+
+"is-symbol@^1.0.2", "is-symbol@^1.0.3":
+ "integrity" "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg=="
+ "resolved" "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz"
+ "version" "1.0.4"
+ dependencies:
+ "has-symbols" "^1.0.2"
+
+"is-weakref@^1.0.2":
+ "integrity" "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ=="
+ "resolved" "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz"
+ "version" "1.0.2"
+ dependencies:
+ "call-bind" "^1.0.2"
+
+"isarray@^1.0.0", "isarray@~1.0.0":
+ "integrity" "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+ "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
+ "version" "1.0.0"
+
+"jquery@>=3.4.1":
+ "integrity" "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw=="
+ "resolved" "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz"
+ "version" "3.6.0"
+
+"js-tokens@^3.0.2":
+ "integrity" "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg=="
+ "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz"
+ "version" "3.0.2"
+
+"js-yaml@^3.5.1":
+ "integrity" "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g=="
+ "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz"
+ "version" "3.14.1"
+ dependencies:
+ "argparse" "^1.0.7"
+ "esprima" "^4.0.0"
+
+"json-parse-better-errors@^1.0.1":
+ "integrity" "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
+ "resolved" "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz"
+ "version" "1.0.2"
+
+"json-stable-stringify@^1.0.0", "json-stable-stringify@^1.0.1":
+ "integrity" "sha512-i/J297TW6xyj7sDFa7AmBPkQvLIxWr2kKPWI26tXydnZrzVAocNqn5DMNT1Mzk0vit1V5UkRM7C1KdVNp7Lmcg=="
+ "resolved" "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz"
+ "version" "1.0.1"
+ dependencies:
+ "jsonify" "~0.0.0"
+
+"jsonify@~0.0.0":
+ "integrity" "sha512-trvBk1ki43VZptdBI5rIlG4YOzyeH/WefQt5rj1grasPn4iiZWKet8nkgc4GlsAylaztn0qZfUYOiTsASJFdNA=="
+ "resolved" "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz"
+ "version" "0.0.0"
+
+"jsonpointer@^5.0.0":
+ "integrity" "sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg=="
+ "resolved" "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.0.tgz"
+ "version" "5.0.0"
+
+"jsx-ast-utils@^1.3.4":
+ "integrity" "sha512-0LwSmMlQjjUdXsdlyYhEfBJCn2Chm0zgUBmfmf1++KUULh+JOdlzrZfiwe2zmlVJx44UF+KX/B/odBoeK9hxmw=="
+ "resolved" "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz"
+ "version" "1.4.1"
+
+"kidif@1.1.0":
+ "integrity" "sha512-QmAHSkWEYssexdqWQshtfEd/AGeJAXHuV1pu607ePgNwwSf2X6fuIzUJsLtKbUQ/ak0pokdwDr8ocZ9sygKhTg=="
+ "resolved" "https://registry.npmjs.org/kidif/-/kidif-1.1.0.tgz"
+ "version" "1.1.0"
+ dependencies:
+ "glob" "7.0.0"
+
+"levn@^0.3.0", "levn@~0.3.0":
+ "integrity" "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA=="
+ "resolved" "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz"
+ "version" "0.3.0"
+ dependencies:
+ "prelude-ls" "~1.1.2"
+ "type-check" "~0.3.2"
+
+"load-json-file@^4.0.0":
+ "integrity" "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw=="
+ "resolved" "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz"
+ "version" "4.0.0"
+ dependencies:
+ "graceful-fs" "^4.1.2"
+ "parse-json" "^4.0.0"
+ "pify" "^3.0.0"
+ "strip-bom" "^3.0.0"
+
+"locate-path@^2.0.0":
+ "integrity" "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA=="
+ "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz"
+ "version" "2.0.0"
+ dependencies:
+ "p-locate" "^2.0.0"
+ "path-exists" "^3.0.0"
+
+"lodash.cond@^4.3.0":
+ "integrity" "sha512-RWjUhzGbzG/KfDwk+onqdXvrsNv47G9UCMJgSKalPTSqJQyxZhQophG9jgqLf+15TIbZ5a/yG2YKOWsH3dVy9A=="
+ "resolved" "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz"
+ "version" "4.5.2"
+
+"lodash@^4.0.0", "lodash@^4.3.0":
+ "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
+ "version" "4.17.21"
+
+"mdn-data@~1.1.0":
+ "integrity" "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA=="
+ "resolved" "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz"
+ "version" "1.1.4"
+
+"minimatch@^3.0.2", "minimatch@^3.0.3", "minimatch@^3.1.1", "minimatch@2 || 3":
+ "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="
+ "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
+ "version" "3.1.2"
+ dependencies:
+ "brace-expansion" "^1.1.7"
+
+"minimist@^1.1.0", "minimist@^1.2.6":
+ "integrity" "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
+ "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz"
+ "version" "1.2.6"
+
+"mkdirp@^0.5.0", "mkdirp@^0.5.1":
+ "integrity" "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw=="
+ "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz"
+ "version" "0.5.6"
+ dependencies:
+ "minimist" "^1.2.6"
+
+"ms@^2.1.1":
+ "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
+ "version" "2.1.3"
+
+"ms@2.0.0":
+ "integrity" "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"
+ "version" "2.0.0"
+
+"mustache@2.3.0":
+ "integrity" "sha512-IgZ/cCHtDG1ft0vdDV9wrlNz20SvbUu2ECoDF6dhk2ZtedLNy1Kehy4oFlzmHPxcUQmVZuXYS2j+d0NkaEjTXQ=="
+ "resolved" "https://registry.npmjs.org/mustache/-/mustache-2.3.0.tgz"
+ "version" "2.3.0"
+
+"mute-stream@0.0.5":
+ "integrity" "sha512-EbrziT4s8cWPmzr47eYVW3wimS4HsvlnV5ri1xw1aR6JQo/OrJX5rkl32K/QQHdxeabJETtfeaROGhd8W7uBgg=="
+ "resolved" "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz"
+ "version" "0.0.5"
+
+"natural-compare@^1.4.0":
+ "integrity" "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="
+ "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
+ "version" "1.4.0"
+
+"next-tick@^1.1.0":
+ "integrity" "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="
+ "resolved" "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz"
+ "version" "1.1.0"
+
+"number-is-nan@^1.0.0":
+ "integrity" "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ=="
+ "resolved" "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz"
+ "version" "1.0.1"
+
+"object-assign@^4.0.1", "object-assign@^4.1.0":
+ "integrity" "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
+ "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
+ "version" "4.1.1"
+
+"object-inspect@^1.12.0", "object-inspect@^1.9.0":
+ "integrity" "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ=="
+ "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz"
+ "version" "1.12.2"
+
+"object-keys@^1.1.1":
+ "integrity" "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
+ "resolved" "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz"
+ "version" "1.1.1"
+
+"object.assign@^4.0.4", "object.assign@^4.1.2":
+ "integrity" "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ=="
+ "resolved" "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz"
+ "version" "4.1.2"
+ dependencies:
+ "call-bind" "^1.0.0"
+ "define-properties" "^1.1.3"
+ "has-symbols" "^1.0.1"
+ "object-keys" "^1.1.1"
+
+"once@^1.3.0":
+ "integrity" "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="
+ "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
+ "version" "1.4.0"
+ dependencies:
+ "wrappy" "1"
+
+"onetime@^1.0.0":
+ "integrity" "sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A=="
+ "resolved" "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz"
+ "version" "1.1.0"
+
+"optionator@^0.8.2":
+ "integrity" "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA=="
+ "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz"
+ "version" "0.8.3"
+ dependencies:
+ "deep-is" "~0.1.3"
+ "fast-levenshtein" "~2.0.6"
+ "levn" "~0.3.0"
+ "prelude-ls" "~1.1.2"
+ "type-check" "~0.3.2"
+ "word-wrap" "~1.2.3"
+
+"os-homedir@^1.0.0":
+ "integrity" "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ=="
+ "resolved" "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz"
+ "version" "1.0.2"
+
+"p-limit@^1.1.0":
+ "integrity" "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q=="
+ "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz"
+ "version" "1.3.0"
+ dependencies:
+ "p-try" "^1.0.0"
+
+"p-locate@^2.0.0":
+ "integrity" "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg=="
+ "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz"
+ "version" "2.0.0"
+ dependencies:
+ "p-limit" "^1.1.0"
+
+"p-try@^1.0.0":
+ "integrity" "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww=="
+ "resolved" "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz"
+ "version" "1.0.0"
+
+"parse-json@^4.0.0":
+ "integrity" "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw=="
+ "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz"
+ "version" "4.0.0"
+ dependencies:
+ "error-ex" "^1.3.1"
+ "json-parse-better-errors" "^1.0.1"
+
+"path-exists@^2.0.0":
+ "integrity" "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ=="
+ "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz"
+ "version" "2.1.0"
+ dependencies:
+ "pinkie-promise" "^2.0.0"
+
+"path-exists@^3.0.0":
+ "integrity" "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ=="
+ "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz"
+ "version" "3.0.0"
+
+"path-is-absolute@^1.0.0":
+ "integrity" "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
+ "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
+ "version" "1.0.1"
+
+"path-is-inside@^1.0.1":
+ "integrity" "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w=="
+ "resolved" "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz"
+ "version" "1.0.2"
+
+"path-parse@^1.0.7":
+ "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+ "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz"
+ "version" "1.0.7"
+
+"pify@^3.0.0":
+ "integrity" "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg=="
+ "resolved" "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz"
+ "version" "3.0.0"
+
+"pinkie-promise@^2.0.0":
+ "integrity" "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw=="
+ "resolved" "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz"
+ "version" "2.0.1"
+ dependencies:
+ "pinkie" "^2.0.0"
+
+"pinkie@^2.0.0":
+ "integrity" "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg=="
+ "resolved" "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz"
+ "version" "2.0.4"
+
+"pkg-conf@^2.0.0":
+ "integrity" "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g=="
+ "resolved" "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz"
+ "version" "2.1.0"
+ dependencies:
+ "find-up" "^2.0.0"
+ "load-json-file" "^4.0.0"
+
+"pkg-config@^1.1.0":
+ "integrity" "sha512-ft/WI9YK6FuTuw4Ql+QUaNXtm/ASQNqDUUsZEgFZKyFpW6amyP8Gx01xrRs8KdiNbbqXfYxkOXplpq1euWbOjw=="
+ "resolved" "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz"
+ "version" "1.1.1"
+ dependencies:
+ "debug-log" "^1.0.0"
+ "find-root" "^1.0.0"
+ "xtend" "^4.0.1"
+
+"pkg-up@^1.0.0":
+ "integrity" "sha512-L+d849d9lz20hnRpUnWBRXOh+mAvygQpK7UuXiw+6QbPwL55RVgl+G+V936wCzs/6J7fj0pvgLY9OknZ+FqaNA=="
+ "resolved" "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz"
+ "version" "1.0.0"
+ dependencies:
+ "find-up" "^1.0.0"
+
+"pluralize@^1.2.1":
+ "integrity" "sha512-TH+BeeL6Ct98C7as35JbZLf8lgsRzlNJb5gklRIGHKaPkGl1esOKBc5ALUMd+q08Sr6tiEKM+Icbsxg5vuhMKQ=="
+ "resolved" "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz"
+ "version" "1.2.1"
+
+"prelude-ls@~1.1.2":
+ "integrity" "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w=="
+ "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz"
+ "version" "1.1.2"
+
+"process-nextick-args@~2.0.0":
+ "integrity" "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+ "resolved" "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz"
+ "version" "2.0.1"
+
+"progress@^1.1.8":
+ "integrity" "sha512-UdA8mJ4weIkUBO224tIarHzuHs4HuYiJvsuGT7j/SPQiUJVjYvNDBIPa0hAorduOfjGohB/qHWRa/lrrWX/mXw=="
+ "resolved" "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz"
+ "version" "1.1.8"
+
+"queue-microtask@^1.2.2":
+ "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
+ "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz"
+ "version" "1.2.3"
+
+"readable-stream@^2.2.2":
+ "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw=="
+ "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz"
+ "version" "2.3.7"
+ dependencies:
+ "core-util-is" "~1.0.0"
+ "inherits" "~2.0.3"
+ "isarray" "~1.0.0"
+ "process-nextick-args" "~2.0.0"
+ "safe-buffer" "~5.1.1"
+ "string_decoder" "~1.1.1"
+ "util-deprecate" "~1.0.1"
+
+"readline2@^1.0.1":
+ "integrity" "sha512-8/td4MmwUB6PkZUbV25uKz7dfrmjYWxsW8DVfibWdlHRk/l/DfHKn4pU+dfcoGLFgWOdyGCzINRQD7jn+Bv+/g=="
+ "resolved" "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz"
+ "version" "1.0.1"
+ dependencies:
+ "code-point-at" "^1.0.0"
+ "is-fullwidth-code-point" "^1.0.0"
+ "mute-stream" "0.0.5"
+
+"rechoir@^0.6.2":
+ "integrity" "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw=="
+ "resolved" "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz"
+ "version" "0.6.2"
+ dependencies:
+ "resolve" "^1.1.6"
+
+"regexp.prototype.flags@^1.4.3":
+ "integrity" "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA=="
+ "resolved" "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz"
+ "version" "1.4.3"
+ dependencies:
+ "call-bind" "^1.0.2"
+ "define-properties" "^1.1.3"
+ "functions-have-names" "^1.2.2"
+
+"require-uncached@^1.0.2":
+ "integrity" "sha512-Xct+41K3twrbBHdxAgMoOS+cNcoqIjfM2/VxBF4LL2hVph7YsF8VSKyQ3BDFZwEVbok9yeDl2le/qo0S77WG2w=="
+ "resolved" "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz"
+ "version" "1.0.3"
+ dependencies:
+ "caller-path" "^0.1.0"
+ "resolve-from" "^1.0.0"
+
+"resolve-from@^1.0.0":
+ "integrity" "sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg=="
+ "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz"
+ "version" "1.0.1"
+
+"resolve@^1.1.6", "resolve@^1.1.7":
+ "integrity" "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw=="
+ "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz"
+ "version" "1.22.1"
+ dependencies:
+ "is-core-module" "^2.9.0"
+ "path-parse" "^1.0.7"
+ "supports-preserve-symlinks-flag" "^1.0.0"
+
+"restore-cursor@^1.0.1":
+ "integrity" "sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw=="
+ "resolved" "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz"
+ "version" "1.0.1"
+ dependencies:
+ "exit-hook" "^1.0.0"
+ "onetime" "^1.0.0"
+
+"rimraf@^2.5.2":
+ "integrity" "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w=="
+ "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz"
+ "version" "2.7.1"
+ dependencies:
+ "glob" "^7.1.3"
+
+"rimraf@~2.6.2":
+ "integrity" "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA=="
+ "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz"
+ "version" "2.6.3"
+ dependencies:
+ "glob" "^7.1.3"
+
+"run-async@^0.1.0":
+ "integrity" "sha512-qOX+w+IxFgpUpJfkv2oGN0+ExPs68F4sZHfaRRx4dDexAQkG83atugKVEylyT5ARees3HBbfmuvnjbrd8j9Wjw=="
+ "resolved" "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz"
+ "version" "0.1.0"
+ dependencies:
+ "once" "^1.3.0"
+
+"run-parallel@^1.1.2":
+ "integrity" "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="
+ "resolved" "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz"
+ "version" "1.2.0"
+ dependencies:
+ "queue-microtask" "^1.2.2"
+
+"rx-lite@^3.1.2":
+ "integrity" "sha512-1I1+G2gteLB8Tkt8YI1sJvSIfa0lWuRtC8GjvtyPBcLSF5jBCCJJqKrpER5JU5r6Bhe+i9/pK3VMuUcXu0kdwQ=="
+ "resolved" "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz"
+ "version" "3.1.2"
+
+"safe-buffer@~5.1.0", "safe-buffer@~5.1.1":
+ "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
+ "version" "5.1.2"
+
+"semver@5.3.0":
+ "integrity" "sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw=="
+ "resolved" "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz"
+ "version" "5.3.0"
+
+"shelljs@^0.7.5":
+ "integrity" "sha512-/YF5Uk8hcwi7ima04ppkbA4RaRMdPMBfwAvAf8sufYOxsJRtbdoBsT8vGvlb+799BrlGdYrd+oczIA2eN2JdWA=="
+ "resolved" "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz"
+ "version" "0.7.8"
+ dependencies:
+ "glob" "^7.0.0"
+ "interpret" "^1.0.0"
+ "rechoir" "^0.6.2"
+
+"side-channel@^1.0.4":
+ "integrity" "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw=="
+ "resolved" "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz"
+ "version" "1.0.4"
+ dependencies:
+ "call-bind" "^1.0.0"
+ "get-intrinsic" "^1.0.2"
+ "object-inspect" "^1.9.0"
+
+"slice-ansi@0.0.4":
+ "integrity" "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw=="
+ "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz"
+ "version" "0.0.4"
+
+"source-map@^0.5.3":
+ "integrity" "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ=="
+ "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz"
+ "version" "0.5.7"
+
+"sprintf-js@~1.0.2":
+ "integrity" "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
+ "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz"
+ "version" "1.0.3"
+
+"standard-engine@~7.0.0":
+ "integrity" "sha512-d/NYzmZxQRxbcoCqlbI9gEMPYq7TLsU6Ywpki54xhedEd0GC4G02j1B7mlexb7HovqRtAtcUPTLQx2MnCO/uyA=="
+ "resolved" "https://registry.npmjs.org/standard-engine/-/standard-engine-7.0.0.tgz"
+ "version" "7.0.0"
+ dependencies:
+ "deglob" "^2.1.0"
+ "get-stdin" "^5.0.1"
+ "minimist" "^1.1.0"
+ "pkg-conf" "^2.0.0"
+
+"standard@10.0.2":
+ "integrity" "sha512-NiEPy0kaa7yufaPsMT63a7MvTzfRyFrSItcTKYS4I9oFskgpQy0hXL0oOxbr836O7kTKgaxLZiv5lZmBWZRffg=="
+ "resolved" "https://registry.npmjs.org/standard/-/standard-10.0.2.tgz"
+ "version" "10.0.2"
+ dependencies:
+ "eslint" "~3.19.0"
+ "eslint-config-standard" "10.2.1"
+ "eslint-config-standard-jsx" "4.0.1"
+ "eslint-plugin-import" "~2.2.0"
+ "eslint-plugin-node" "~4.2.2"
+ "eslint-plugin-promise" "~3.5.0"
+ "eslint-plugin-react" "~6.10.0"
+ "eslint-plugin-standard" "~3.0.1"
+ "standard-engine" "~7.0.0"
+
+"string_decoder@~1.1.1":
+ "integrity" "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="
+ "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
+ "version" "1.1.1"
+ dependencies:
+ "safe-buffer" "~5.1.0"
+
+"string-width@^1.0.1":
+ "integrity" "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw=="
+ "resolved" "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz"
+ "version" "1.0.2"
+ dependencies:
+ "code-point-at" "^1.0.0"
+ "is-fullwidth-code-point" "^1.0.0"
+ "strip-ansi" "^3.0.0"
+
+"string-width@^2.0.0":
+ "integrity" "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw=="
+ "resolved" "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz"
+ "version" "2.1.1"
+ dependencies:
+ "is-fullwidth-code-point" "^2.0.0"
+ "strip-ansi" "^4.0.0"
+
+"string.prototype.trimend@^1.0.5":
+ "integrity" "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog=="
+ "resolved" "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz"
+ "version" "1.0.5"
+ dependencies:
+ "call-bind" "^1.0.2"
+ "define-properties" "^1.1.4"
+ "es-abstract" "^1.19.5"
+
+"string.prototype.trimstart@^1.0.5":
+ "integrity" "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg=="
+ "resolved" "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz"
+ "version" "1.0.5"
+ dependencies:
+ "call-bind" "^1.0.2"
+ "define-properties" "^1.1.4"
+ "es-abstract" "^1.19.5"
+
+"strip-ansi@^3.0.0":
+ "integrity" "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg=="
+ "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz"
+ "version" "3.0.1"
+ dependencies:
+ "ansi-regex" "^2.0.0"
+
+"strip-ansi@^4.0.0":
+ "integrity" "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow=="
+ "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz"
+ "version" "4.0.0"
+ dependencies:
+ "ansi-regex" "^3.0.0"
+
+"strip-bom@^3.0.0":
+ "integrity" "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA=="
+ "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz"
+ "version" "3.0.0"
+
+"strip-json-comments@~2.0.1":
+ "integrity" "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ=="
+ "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz"
+ "version" "2.0.1"
+
+"supports-color@^2.0.0":
+ "integrity" "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g=="
+ "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz"
+ "version" "2.0.0"
+
+"supports-preserve-symlinks-flag@^1.0.0":
+ "integrity" "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="
+ "resolved" "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
+ "version" "1.0.0"
+
+"table@^3.7.8":
+ "integrity" "sha512-RZuzIOtzFbprLCE0AXhkI0Xi42ZJLZhCC+qkwuMLf/Vjz3maWpA8gz1qMdbmNoI9cOROT2Am/DxeRyXenrL11g=="
+ "resolved" "https://registry.npmjs.org/table/-/table-3.8.3.tgz"
+ "version" "3.8.3"
+ dependencies:
+ "ajv" "^4.7.0"
+ "ajv-keywords" "^1.0.0"
+ "chalk" "^1.1.1"
+ "lodash" "^4.0.0"
+ "slice-ansi" "0.0.4"
+ "string-width" "^2.0.0"
+
+"text-table@~0.2.0":
+ "integrity" "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="
+ "resolved" "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz"
+ "version" "0.2.0"
+
+"through@^2.3.6":
+ "integrity" "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="
+ "resolved" "https://registry.npmjs.org/through/-/through-2.3.8.tgz"
+ "version" "2.3.8"
+
+"type-check@~0.3.2":
+ "integrity" "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg=="
+ "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz"
+ "version" "0.3.2"
+ dependencies:
+ "prelude-ls" "~1.1.2"
+
+"type@^1.0.1":
+ "integrity" "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="
+ "resolved" "https://registry.npmjs.org/type/-/type-1.2.0.tgz"
+ "version" "1.2.0"
+
+"type@^2.5.0":
+ "integrity" "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ=="
+ "resolved" "https://registry.npmjs.org/type/-/type-2.6.0.tgz"
+ "version" "2.6.0"
+
+"typedarray@^0.0.6":
+ "integrity" "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
+ "resolved" "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz"
+ "version" "0.0.6"
+
+"uglify-js@^3.16.2":
+ "integrity" "sha512-AaQNokTNgExWrkEYA24BTNMSjyqEXPSfhqoS0AxmHkCJ4U+Dyy5AvbGV/sqxuxficEfGGoX3zWw9R7QpLFfEsg=="
+ "resolved" "https://registry.npmjs.org/uglify-js/-/uglify-js-3.16.2.tgz"
+ "version" "3.16.2"
+
+"unbox-primitive@^1.0.2":
+ "integrity" "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw=="
+ "resolved" "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz"
+ "version" "1.0.2"
+ dependencies:
+ "call-bind" "^1.0.2"
+ "has-bigints" "^1.0.2"
+ "has-symbols" "^1.0.3"
+ "which-boxed-primitive" "^1.0.2"
+
+"underscore-plus@1.x":
+ "integrity" "sha512-A3BEzkeicFLnr+U/Q3EyWwJAQPbA19mtZZ4h+lLq3ttm9kn8WC4R3YpuJZEXmWdLjYP47Zc8aLZm9kwdv+zzvA=="
+ "resolved" "https://registry.npmjs.org/underscore-plus/-/underscore-plus-1.7.0.tgz"
+ "version" "1.7.0"
+ dependencies:
+ "underscore" "^1.9.1"
+
+"underscore@^1.9.1":
+ "integrity" "sha512-BQFnUDuAQ4Yf/cYY5LNrK9NCJFKriaRbD9uR1fTeXnBeoa97W0i41qkZfGO9pSo8I5KzjAcSY2XYtdf0oKd7KQ=="
+ "resolved" "https://registry.npmjs.org/underscore/-/underscore-1.13.4.tgz"
+ "version" "1.13.4"
+
+"uniq@^1.0.1":
+ "integrity" "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA=="
+ "resolved" "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz"
+ "version" "1.0.1"
+
+"user-home@^2.0.0":
+ "integrity" "sha512-KMWqdlOcjCYdtIJpicDSFBQ8nFwS2i9sslAd6f4+CBGcU4gist2REnr2fxj2YocvJFxSF3ZOHLYLVZnUxv4BZQ=="
+ "resolved" "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz"
+ "version" "2.0.0"
+ dependencies:
+ "os-homedir" "^1.0.0"
+
+"util-deprecate@~1.0.1":
+ "integrity" "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+ "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
+ "version" "1.0.2"
+
+"which-boxed-primitive@^1.0.2":
+ "integrity" "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg=="
+ "resolved" "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz"
+ "version" "1.0.2"
+ dependencies:
+ "is-bigint" "^1.0.1"
+ "is-boolean-object" "^1.1.0"
+ "is-number-object" "^1.0.4"
+ "is-string" "^1.0.5"
+ "is-symbol" "^1.0.3"
+
+"word-wrap@~1.2.3":
+ "integrity" "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
+ "resolved" "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz"
+ "version" "1.2.3"
+
+"wrappy@1":
+ "integrity" "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+ "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
+ "version" "1.0.2"
+
+"write@^0.2.1":
+ "integrity" "sha512-CJ17OoULEKXpA5pef3qLj5AxTJ6mSt7g84he2WIskKwqFO4T97d5V7Tadl0DYDk7qyUOQD5WlUlOMChaYrhxeA=="
+ "resolved" "https://registry.npmjs.org/write/-/write-0.2.1.tgz"
+ "version" "0.2.1"
+ dependencies:
+ "mkdirp" "^0.5.1"
+
+"xtend@^4.0.0", "xtend@^4.0.1":
+ "integrity" "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
+ "resolved" "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz"
+ "version" "4.0.2"