diff --git a/.babel-register b/.babel-register
new file mode 100644
index 0000000..35d91b6
--- /dev/null
+++ b/.babel-register
@@ -0,0 +1,15 @@
+/*
+ See
+ https://github.com/babel/babel/issues/8652
+ https://github.com/babel/babel/pull/6027
+ Babel isn't currently configured by default to read .ts files and
+ can only be configured to do so via cli or configuration below.
+
+ This file is used by mocha to interpret test files using a properly
+ configured babel.
+
+ This can (probably) be removed in babel 8.x.
+*/
+require('@babel/register')({
+ extensions: ['.ts'],
+})
diff --git a/.babelrc b/.babelrc
new file mode 100644
index 0000000..f34ccd9
--- /dev/null
+++ b/.babelrc
@@ -0,0 +1,10 @@
+{
+ "presets": [
+ "@babel/env",
+ "@babel/typescript"
+ ],
+ "plugins": [
+ "@babel/proposal-class-properties",
+ "@babel/proposal-object-rest-spread"
+ ]
+}
diff --git a/.circleci/config.yml b/.circleci/config.yml
index f135762..7730856 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -76,10 +76,10 @@ jobs:
- run:
name: Check API
- command: npm run docs && ./test-diff.sh
+ command: npm run build-docs && ./test-diff.sh
workflows:
version: 2
lint_and_test:
jobs:
- lint
- - test
\ No newline at end of file
+ - test
diff --git a/.eslintrc b/.eslintrc
new file mode 100644
index 0000000..57191e7
--- /dev/null
+++ b/.eslintrc
@@ -0,0 +1,22 @@
+{
+ "parser": "@typescript-eslint/parser",
+ "parserOptions": {
+ "project": "./tsconfig.json"
+ },
+ "plugins": ["@typescript-eslint"],
+ "extends": ["plugin:@typescript-eslint/recommended"],
+ "rules": {
+ "max-line-length": {
+ "options": [180]
+ },
+ "new-parens": "error",
+ "no-caller": "error",
+ "no-bitwise": "off",
+ "@typescript-eslint/indent": ["error", 2],
+ "@typescript-eslint/no-use-before-define": "off",
+ "no-conditional-assignment": true,
+ "no-consecutive-blank-lines": false,
+ "object-literal-sort-keys": false,
+ "no-console": "warn"
+ }
+}
diff --git a/.gitignore b/.gitignore
index c8bd326..2963559 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,5 @@
-node_modules
-.vscode
-.idea/
\ No newline at end of file
+.nyc_output/
+coverage/
+dist/
+lib/
+node_modules/
diff --git a/API.md b/API.md
deleted file mode 100644
index 418a6c5..0000000
--- a/API.md
+++ /dev/null
@@ -1,107 +0,0 @@
-
-
-### Table of Contents
-
-- [serialize][1]
- - [Parameters][2]
-- [deserialize][3]
- - [Parameters][4]
-- [treeHash][5]
- - [Parameters][6]
-- [eq][7]
- - [Parameters][8]
-- [deepcopy][9]
- - [Parameters][10]
-
-## serialize
-
-Simply Serializes, as specified [here][11]
-
-### Parameters
-
-- `value` **([Array][12] | BN | [boolean][13] \| [Buffer][14] \| [number][15] \| [object][16])** value to serialize
-- `type` **([Array][12] \| [string][17] \| [object][16])** type of value to serialize: A string ('bool', 'uintN','bytesN', 'bytes'), an Array [type], or object containing a `fields` property
-
-Returns **[Buffer][14]** serialized value
-
-## deserialize
-
-Simply Deserializes, as specified [here][18]
-
-### Parameters
-
-- `data` **[Buffer][14]** byte array to deserialize
-- `type` **([Array][12] \| [string][17] \| [object][16])** type of value to deserialize: A string ('bool', 'uintN','bytesN', 'bytes'), an Array [type], or object containing a `fields` property
-- `start` **[number][15]** starting offset index in data (optional, default `0`)
-
-Returns **[object][16]** deserialized value object: {deserializedData, offset}
-
-## treeHash
-
-Returns a tree hash of a simple-serializable value, as specified [here][19]
-
-### Parameters
-
-- `value` **([Array][12] \| [boolean][13] \| [Buffer][14] \| [number][15] \| [object][16])** Value to hash
-- `type` **([Array][12] \| [string][17] \| [object][16])** The type of the value to hash: A string ('bool', 'uintN','bytesN', 'bytes'), an Array [type], or object containing a `fields` property
-
-Returns **[Buffer][14]** the hash, length <= 32
-
-## eq
-
-Checks if two serialized objects are equal by value
-
-### Parameters
-
-- `x` **[Buffer][14]** serialized object
-- `y` **[Buffer][14]** serialized object
-
-Returns **[boolean][13]** x equals y
-
-## deepcopy
-
-Returns a deep copy of a serialized object
-
-### Parameters
-
-- `x` **[Buffer][14]** Value to deep copy
-
-Returns **[Buffer][14]** the deep copy of x
-
-[1]: #serialize
-
-[2]: #parameters
-
-[3]: #deserialize
-
-[4]: #parameters-1
-
-[5]: #treehash
-
-[6]: #parameters-2
-
-[7]: #eq
-
-[8]: #parameters-3
-
-[9]: #deepcopy
-
-[10]: #parameters-4
-
-[11]: https://github.com/ethereum/eth2.0-specs/blob/master/specs/simple-serialize.md#serializeencode
-
-[12]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array
-
-[13]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean
-
-[14]: https://nodejs.org/api/buffer.html
-
-[15]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number
-
-[16]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object
-
-[17]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String
-
-[18]: https://github.com/ethereum/eth2.0-specs/blob/master/specs/simple-serialize.md#deserializedecode
-
-[19]: https://github.com/ethereum/eth2.0-specs/blob/master/specs/simple-serialize.md#tree-hash
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 52c2bcd..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,202 +0,0 @@
- Apache License
- Version 2.0, January 2004
- Copyright (c) 2018 ChainSafe Systems
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/README.md b/README.md
index e67f9a9..96cee3c 100644
--- a/README.md
+++ b/README.md
@@ -1,71 +1,96 @@
-### ChainSafe ETH2.0 Projects
+# ssz-ts
-Note:
-There is a lot of work being done that are core infrastructural pieces for Eth2.0. Contributions to any of the below repositories would be greatly appreciated. All the libraries are written in TypeScript (or in the process of being converted from pure JS to TypeScript):
-
-\-- [PM / Meta Repo](https://github.com/ChainSafeSystems/Sharding)
-\|-- [Beacon Chain](https://github.com/ChainSafeSystems/lodestar_chain)
-\|-- [Simple Serialize (SSZ)](https://github.com/ChainSafeSystems/ssz-js)
-\|-- [Fixed Size Numbers](https://github.com/ChainSafeSystems/fixed-sized-numbers-ts/)
-\|-- [BLS Singatures and Signature Aggregation](https://github.com/ChainSafeSystems/bls-js)
-
-# ssz-js
-
-Simple Serialize (SSZ) in pure Javascript
+Simple Serialize (SSZ)
## Install
-`npm install @chainsafesystems/ssz`
+`npm install @chainsafe/ssz`
## Usage
-See [API.md](API.md) for comprehensive API docs.
+See [API.md](docs/API.md) for the autogenerated API docs.
+
+In order to properly serialize/deserialize/hash values, we need to know the "type" of the value.
+
+### Types
+
+The simple serialization spec only operates over a specific few types.
+
+#### Uint
+A uint serialization value may be either a js `number` or a `BN` from [bn.js](https://github.com/indutny/bn.js).
+A uint type is specified by either `"uintN"` or `"numberN"`, where N is the number of bits to serialize.
+`uintN` > 32 bits is deserialized to a `BN` else deserialized to a `number`.
+Every `numberN` is deserialized to a number.
+
+#### Boolean
+A boolean serialization value must be either `true` or `false`. Anything other input will throw an `Error`.
+The boolean type is specified as `"bool"`.
+
+#### Tuple
+A "tuple" according to the spec is a fixed-length list with every element of the same type.
+A tuple serialization value may be either an `Array` or `Buffer`.
+Tuple types are specified as either `"bytesN"` or `[elementType, tupleLength]`
+`bytesN` is deserialized to `Buffer`.
+`[elementType, tupleLength]` is deserialized to `Array` unless elementType is `byte`, when the value is deserialized to `Buffer`.
+
+#### List
+A "list" according to the spec is a list of unspecified length with every element of the same type.
+A list serialization value may be either an `Array` or `Buffer`.
+Tuple types are specified as either `"bytes"` or `[elementType]`
+`bytes` is deserialized to `Buffer`.
+`[elementType]` is deserialized to `Array` unless elementType is `byte`, when the value is deserialized to `Buffer`.
+
+#### Container
+A "container" according to the spec is a collection of values where the type of each element may differ.
+A container serialization value must be an `Object`.
+The container serialization type must be an `Object`, with a `fields` value of `Array<[fieldName, fieldType]>.
+
+## Examples
### Serialize:
#### Array
-```
+```typescript
let array = [1, 2, 3]
let serialized = ssz.serialize(array, ['uint16'])
```
#### Boolean
-```
+```typescript
let bool = true
let serialized = ssz.serialize(bool, 'bool')
```
#### Number
-```
+```typescript
let num = 16
let serialized = ssz.serialize(num, 'uint32')
```
#### BN (Big Number)
-```
+```typescript
const BN = require('bn.js')
let num = new BN(0xFFFFFFFFFFFFFFF0)
let searialized = ssc.serialize(num, 'uint64')
```
-Note: Any value greater than `2^53 - 1` should be stored in a [BigNumber](https://github.com/indutny/bn.js)
+Note: Any value greater than `2^53 - 1` should be stored in a [BN](https://github.com/indutny/bn.js)
#### Bytes
-```
+```typescript
let bytes = Buffer.from([1,2,3])
let serialized = ssz.serialize(bytes, 'bytes')
```
-We can also serialize to BytesN:
-```
+With `bytesN`:
+```typescript
// Note: N === bytes.length
-let arr = new Uint8Array(1)
-let bytes = Buffer.from(arr.buffer)
-let serialized = ssz.serialize(bytes, 'bytes1')
+let bytes = Buffer.from([1, 2, 3, 4])
+let serialized = ssz.serialize(bytes, 'bytes4')
```
#### Object
-```
+```typescript
let obj = {
a: Buffer.from('hello'),
b: 10,
@@ -89,11 +114,11 @@ For deserialization we need to specify:
- data {buffer} - encoded data
- type {string | object | array} - type of data we want to decode, same as encoding types
- start {number} - optional, default: 0, start location in the data buffer from where we wish to read
-```
+```typescript
// eg. deserialize a boolean at position 0
ssz.deserialize(buf, 'bool')
```
-```
+```typescript
// eg. deserialize an object at position 32
let types = {
'fields' : [
@@ -104,7 +129,6 @@ let types = {
ssz.deserialize(buf, types, 32)
```
+### License
-## Contributors
-
-Very special thank you to [Darren Langley](https://github.com/darrenlangley) for helping build this.
+MIT
diff --git a/docs/API.md b/docs/API.md
new file mode 100644
index 0000000..1469a18
--- /dev/null
+++ b/docs/API.md
@@ -0,0 +1,74 @@
+
+
+### Table of Contents
+
+- [deserialize][1]
+ - [Parameters][2]
+- [hashTreeRoot][3]
+ - [Parameters][4]
+- [serialize][5]
+ - [Parameters][6]
+- [treeHash][7]
+ - [Parameters][8]
+
+## deserialize
+
+Deserialize, according to the SSZ spec
+
+### Parameters
+
+- `data` **[Buffer][9]**
+- `type` **SerializableType**
+
+Returns **SerializableType**
+
+## hashTreeRoot
+
+Merkleize an SSZ value
+
+### Parameters
+
+- `value` **SerializableValue**
+- `type` **SerializableType**
+
+Returns **[Buffer][9]**
+
+## serialize
+
+Serialize, according to the SSZ spec
+
+### Parameters
+
+- `value` **SerializableValue**
+- `type` **SerializableType**
+
+Returns **[Buffer][9]**
+
+## treeHash
+
+Merkleize an SSZ value
+
+### Parameters
+
+- `value` **SerializableValue**
+- `type` **SerializableType**
+
+Returns **[Buffer][9]**
+
+[1]: #deserialize
+
+[2]: #parameters
+
+[3]: #hashtreeroot
+
+[4]: #parameters-1
+
+[5]: #serialize
+
+[6]: #parameters-2
+
+[7]: #treehash
+
+[8]: #parameters-3
+
+[9]: https://nodejs.org/api/buffer.html
diff --git a/nyc.json b/nyc.json
new file mode 100644
index 0000000..12f22cc
--- /dev/null
+++ b/nyc.json
@@ -0,0 +1,9 @@
+{
+ "include": [
+ "src/**/*.ts"
+ ],
+ "extensions": [
+ ".ts"
+ ],
+ "all": true
+}
diff --git a/package-lock.json b/package-lock.json
index 94d0f3b..c916536 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,9 +1,27 @@
{
- "name": "@chainsafesystems/ssz",
- "version": "1.6.0",
+ "name": "ssz-ts",
+ "version": "0.1.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
+ "@babel/cli": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.2.3.tgz",
+ "integrity": "sha512-bfna97nmJV6nDJhXNPeEfxyMjWnt6+IjUAaDPiYRTBlm8L41n8nvw6UAqUCbvpFfU246gHPxW7sfWwqtF4FcYA==",
+ "dev": true,
+ "requires": {
+ "chokidar": "2.1.2",
+ "commander": "2.19.0",
+ "convert-source-map": "1.6.0",
+ "fs-readdir-recursive": "1.1.0",
+ "glob": "7.1.3",
+ "lodash": "4.17.11",
+ "mkdirp": "0.5.1",
+ "output-file-sync": "2.0.1",
+ "slash": "2.0.0",
+ "source-map": "0.5.7"
+ }
+ },
"@babel/code-frame": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz",
@@ -14,33 +32,27 @@
}
},
"@babel/core": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.2.2.tgz",
- "integrity": "sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw==",
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.3.4.tgz",
+ "integrity": "sha512-jRsuseXBo9pN197KnDwhhaaBzyZr2oIcLHHTt2oDdQrej5Qp57dCCJafWx5ivU8/alEYDpssYqv1MUqcxwQlrA==",
"dev": true,
"requires": {
"@babel/code-frame": "7.0.0",
- "@babel/generator": "7.3.0",
+ "@babel/generator": "7.3.4",
"@babel/helpers": "7.3.1",
- "@babel/parser": "7.3.1",
+ "@babel/parser": "7.3.4",
"@babel/template": "7.2.2",
- "@babel/traverse": "7.2.3",
- "@babel/types": "7.3.0",
+ "@babel/traverse": "7.3.4",
+ "@babel/types": "7.3.4",
"convert-source-map": "1.6.0",
"debug": "4.1.1",
"json5": "2.1.0",
"lodash": "4.17.11",
- "resolve": "1.9.0",
+ "resolve": "1.10.0",
"semver": "5.6.0",
"source-map": "0.5.7"
},
"dependencies": {
- "@babel/parser": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.1.tgz",
- "integrity": "sha512-ATz6yX/L8LEnC3dtLQnIx4ydcPxhLcoy9Vl6re00zb2w5lG6itY6Vhnr1KFRPq/FHNsgl/gh2mjNN20f9iJTTA==",
- "dev": true
- },
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
@@ -59,12 +71,12 @@
}
},
"@babel/generator": {
- "version": "7.3.0",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.0.tgz",
- "integrity": "sha512-dZTwMvTgWfhmibq4V9X+LMf6Bgl7zAodRn9PvcPdhlzFMbvUutx74dbEv7Atz3ToeEpevYEJtAwfxq/bDCzHWg==",
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.4.tgz",
+ "integrity": "sha512-8EXhHRFqlVVWXPezBW5keTiQi/rJMQTg/Y9uVCEZ0CAF3PKtCCaVRnp64Ii1ujhkoDhhF1fVsImoN4yJ2uz4Wg==",
"dev": true,
"requires": {
- "@babel/types": "7.3.0",
+ "@babel/types": "7.3.4",
"jsesc": "2.5.2",
"lodash": "4.17.11",
"source-map": "0.5.7",
@@ -77,7 +89,7 @@
"integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==",
"dev": true,
"requires": {
- "@babel/types": "7.3.0"
+ "@babel/types": "7.3.4"
}
},
"@babel/helper-builder-binary-assignment-operator-visitor": {
@@ -87,7 +99,7 @@
"dev": true,
"requires": {
"@babel/helper-explode-assignable-expression": "7.1.0",
- "@babel/types": "7.3.0"
+ "@babel/types": "7.3.4"
}
},
"@babel/helper-builder-react-jsx": {
@@ -96,7 +108,7 @@
"integrity": "sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw==",
"dev": true,
"requires": {
- "@babel/types": "7.3.0",
+ "@babel/types": "7.3.4",
"esutils": "2.0.2"
}
},
@@ -107,21 +119,22 @@
"dev": true,
"requires": {
"@babel/helper-hoist-variables": "7.0.0",
- "@babel/traverse": "7.2.3",
- "@babel/types": "7.3.0"
+ "@babel/traverse": "7.3.4",
+ "@babel/types": "7.3.4"
}
},
"@babel/helper-create-class-features-plugin": {
- "version": "7.3.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.3.0.tgz",
- "integrity": "sha512-DUsQNS2CGLZZ7I3W3fvh0YpPDd6BuWJlDl+qmZZpABZHza2ErE3LxtEzLJFHFC1ZwtlAXvHhbFYbtM5o5B0WBw==",
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.3.4.tgz",
+ "integrity": "sha512-uFpzw6L2omjibjxa8VGZsJUPL5wJH0zzGKpoz0ccBkzIa6C8kWNUbiBmQ0rgOKWlHJ6qzmfa6lTiGchiV8SC+g==",
"dev": true,
"requires": {
"@babel/helper-function-name": "7.1.0",
"@babel/helper-member-expression-to-functions": "7.0.0",
"@babel/helper-optimise-call-expression": "7.0.0",
"@babel/helper-plugin-utils": "7.0.0",
- "@babel/helper-replace-supers": "7.2.3"
+ "@babel/helper-replace-supers": "7.3.4",
+ "@babel/helper-split-export-declaration": "7.0.0"
}
},
"@babel/helper-define-map": {
@@ -131,7 +144,7 @@
"dev": true,
"requires": {
"@babel/helper-function-name": "7.1.0",
- "@babel/types": "7.3.0",
+ "@babel/types": "7.3.4",
"lodash": "4.17.11"
}
},
@@ -141,8 +154,8 @@
"integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==",
"dev": true,
"requires": {
- "@babel/traverse": "7.2.3",
- "@babel/types": "7.3.0"
+ "@babel/traverse": "7.3.4",
+ "@babel/types": "7.3.4"
}
},
"@babel/helper-function-name": {
@@ -153,7 +166,7 @@
"requires": {
"@babel/helper-get-function-arity": "7.0.0",
"@babel/template": "7.2.2",
- "@babel/types": "7.3.0"
+ "@babel/types": "7.3.4"
}
},
"@babel/helper-get-function-arity": {
@@ -162,7 +175,7 @@
"integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==",
"dev": true,
"requires": {
- "@babel/types": "7.3.0"
+ "@babel/types": "7.3.4"
}
},
"@babel/helper-hoist-variables": {
@@ -171,7 +184,7 @@
"integrity": "sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w==",
"dev": true,
"requires": {
- "@babel/types": "7.3.0"
+ "@babel/types": "7.3.4"
}
},
"@babel/helper-member-expression-to-functions": {
@@ -180,7 +193,7 @@
"integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==",
"dev": true,
"requires": {
- "@babel/types": "7.3.0"
+ "@babel/types": "7.3.4"
}
},
"@babel/helper-module-imports": {
@@ -189,7 +202,7 @@
"integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==",
"dev": true,
"requires": {
- "@babel/types": "7.3.0"
+ "@babel/types": "7.3.4"
}
},
"@babel/helper-module-transforms": {
@@ -202,7 +215,7 @@
"@babel/helper-simple-access": "7.1.0",
"@babel/helper-split-export-declaration": "7.0.0",
"@babel/template": "7.2.2",
- "@babel/types": "7.3.0",
+ "@babel/types": "7.3.4",
"lodash": "4.17.11"
}
},
@@ -212,7 +225,7 @@
"integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==",
"dev": true,
"requires": {
- "@babel/types": "7.3.0"
+ "@babel/types": "7.3.4"
}
},
"@babel/helper-plugin-utils": {
@@ -239,20 +252,20 @@
"@babel/helper-annotate-as-pure": "7.0.0",
"@babel/helper-wrap-function": "7.2.0",
"@babel/template": "7.2.2",
- "@babel/traverse": "7.2.3",
- "@babel/types": "7.3.0"
+ "@babel/traverse": "7.3.4",
+ "@babel/types": "7.3.4"
}
},
"@babel/helper-replace-supers": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.2.3.tgz",
- "integrity": "sha512-GyieIznGUfPXPWu0yLS6U55Mz67AZD9cUk0BfirOWlPrXlBcan9Gz+vHGz+cPfuoweZSnPzPIm67VtQM0OWZbA==",
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.3.4.tgz",
+ "integrity": "sha512-pvObL9WVf2ADs+ePg0jrqlhHoxRXlOa+SHRHzAXIz2xkYuOHfGl+fKxPMaS4Fq+uje8JQPobnertBBvyrWnQ1A==",
"dev": true,
"requires": {
"@babel/helper-member-expression-to-functions": "7.0.0",
"@babel/helper-optimise-call-expression": "7.0.0",
- "@babel/traverse": "7.2.3",
- "@babel/types": "7.3.0"
+ "@babel/traverse": "7.3.4",
+ "@babel/types": "7.3.4"
}
},
"@babel/helper-simple-access": {
@@ -262,7 +275,7 @@
"dev": true,
"requires": {
"@babel/template": "7.2.2",
- "@babel/types": "7.3.0"
+ "@babel/types": "7.3.4"
}
},
"@babel/helper-split-export-declaration": {
@@ -271,7 +284,7 @@
"integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==",
"dev": true,
"requires": {
- "@babel/types": "7.3.0"
+ "@babel/types": "7.3.4"
}
},
"@babel/helper-wrap-function": {
@@ -282,8 +295,8 @@
"requires": {
"@babel/helper-function-name": "7.1.0",
"@babel/template": "7.2.2",
- "@babel/traverse": "7.2.3",
- "@babel/types": "7.3.0"
+ "@babel/traverse": "7.3.4",
+ "@babel/types": "7.3.4"
}
},
"@babel/helpers": {
@@ -293,8 +306,8 @@
"dev": true,
"requires": {
"@babel/template": "7.2.2",
- "@babel/traverse": "7.2.3",
- "@babel/types": "7.3.0"
+ "@babel/traverse": "7.3.4",
+ "@babel/types": "7.3.4"
}
},
"@babel/highlight": {
@@ -306,20 +319,12 @@
"chalk": "2.4.2",
"esutils": "2.0.2",
"js-tokens": "4.0.0"
- },
- "dependencies": {
- "js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
- }
}
},
"@babel/parser": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.3.tgz",
- "integrity": "sha512-gqmspPZOMW3MIRb9HlrnbZHXI1/KHTOroBwN1NcLL6pWxzqzEKGvRTq0W/PxS45OtQGbaFikSQpkS5zbnsQm2w==",
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.4.tgz",
+ "integrity": "sha512-tXZCqWtlOOP4wgCp6RjRvLmfuhnqTLy9VHwRochJBCP2nDm27JnnuFEnXFASVyQNHk36jD1tAammsCEEqgscIQ==",
"dev": true
},
"@babel/plugin-proposal-async-generator-functions": {
@@ -334,12 +339,12 @@
}
},
"@babel/plugin-proposal-class-properties": {
- "version": "7.3.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.3.0.tgz",
- "integrity": "sha512-wNHxLkEKTQ2ay0tnsam2z7fGZUi+05ziDJflEt3AZTP3oXLKHJp9HqhfroB/vdMvt3sda9fAbq7FsG8QPDrZBg==",
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.3.4.tgz",
+ "integrity": "sha512-lUf8D3HLs4yYlAo8zjuneLvfxN7qfKv1Yzbj5vjqaqMJxgJA3Ipwp4VUJ+OrOdz53Wbww6ahwB8UhB2HQyLotA==",
"dev": true,
"requires": {
- "@babel/helper-create-class-features-plugin": "7.3.0",
+ "@babel/helper-create-class-features-plugin": "7.3.4",
"@babel/helper-plugin-utils": "7.0.0"
}
},
@@ -349,7 +354,7 @@
"integrity": "sha512-3W/oCUmsO43FmZIqermmq6TKaRSYhmh/vybPfVFwQWdSb8xwki38uAIvknCRzuyHRuYfCYmJzL9or1v0AffPjg==",
"dev": true,
"requires": {
- "@babel/helper-create-class-features-plugin": "7.3.0",
+ "@babel/helper-create-class-features-plugin": "7.3.4",
"@babel/helper-plugin-utils": "7.0.0",
"@babel/plugin-syntax-decorators": "7.2.0"
}
@@ -446,9 +451,9 @@
}
},
"@babel/plugin-proposal-object-rest-spread": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.1.tgz",
- "integrity": "sha512-Nmmv1+3LqxJu/V5jU9vJmxR/KIRWFk2qLHmbB56yRRRFhlaSuOVXscX3gUmhaKgUhzA3otOHVubbIEVYsZ0eZg==",
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.4.tgz",
+ "integrity": "sha512-j7VQmbbkA+qrzNqbKHrBsW3ddFnOeva6wzSe/zB7T+xaxGc+RCpwo44wCmRixAIGRoIpmVgvzFzNJqQcO3/9RA==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "7.0.0",
@@ -476,9 +481,9 @@
}
},
"@babel/plugin-proposal-pipeline-operator": {
- "version": "7.3.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-pipeline-operator/-/plugin-proposal-pipeline-operator-7.3.0.tgz",
- "integrity": "sha512-izEUzWAz9T1FGewqiRKG+uUFTwO4rJ/7uifPkBbOkxq/p5/pkvYpA0wGW28o8wYzUyxJSk2ERgssqqgqt09PBg==",
+ "version": "7.3.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-pipeline-operator/-/plugin-proposal-pipeline-operator-7.3.2.tgz",
+ "integrity": "sha512-wuzx8U/KZLJYoqU6joiaKY0PixHuYZ3Vxys+wPahNAZEEm+EDb1eTc19DuJob3BdxYSD9PWPbwyoRbhkdoYErg==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "7.0.0",
@@ -686,6 +691,15 @@
"@babel/helper-plugin-utils": "7.0.0"
}
},
+ "@babel/plugin-syntax-typescript": {
+ "version": "7.3.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.3.3.tgz",
+ "integrity": "sha512-dGwbSMA1YhVS8+31CnPR7LB4pcbrzcV99wQzby4uAfrkZPYZlQ7ImwdpzLqi6Z6IL02b8IAL379CaMwo0x5Lag==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
"@babel/plugin-transform-arrow-functions": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz",
@@ -696,9 +710,9 @@
}
},
"@babel/plugin-transform-async-to-generator": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.2.0.tgz",
- "integrity": "sha512-CEHzg4g5UraReozI9D4fblBYABs7IM6UerAVG7EJVrTLC5keh00aEuLUT+O40+mJCEzaXkYfTCUKIyeDfMOFFQ==",
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.3.4.tgz",
+ "integrity": "sha512-Y7nCzv2fw/jEZ9f678MuKdMo99MFDJMT/PvD9LisrR5JDFcJH6vYeH6RnjVt3p5tceyGRvTtEN0VOlU+rgHZjA==",
"dev": true,
"requires": {
"@babel/helper-module-imports": "7.0.0",
@@ -716,9 +730,9 @@
}
},
"@babel/plugin-transform-block-scoping": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.2.0.tgz",
- "integrity": "sha512-vDTgf19ZEV6mx35yiPJe4fS02mPQUUcBNwWQSZFXSzTSbsJFQvHt7DqyS3LK8oOWALFOsJ+8bbqBgkirZteD5Q==",
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.3.4.tgz",
+ "integrity": "sha512-blRr2O8IOZLAOJklXLV4WhcEzpYafYQKSGT3+R26lWG41u/FODJuBggehtOwilVAcFu393v3OFj+HmaE6tVjhA==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "7.0.0",
@@ -726,9 +740,9 @@
}
},
"@babel/plugin-transform-classes": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.2.tgz",
- "integrity": "sha512-gEZvgTy1VtcDOaQty1l10T3jQmJKlNVxLDCs+3rCVPr6nMkODLELxViq5X9l+rfxbie3XrfrMCYYY6eX3aOcOQ==",
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.3.4.tgz",
+ "integrity": "sha512-J9fAvCFBkXEvBimgYxCjvaVDzL6thk0j0dBvCeZmIUDBwyt+nv6HfbImsSrWsYXfDNDivyANgJlFXDUWRTZBuA==",
"dev": true,
"requires": {
"@babel/helper-annotate-as-pure": "7.0.0",
@@ -736,9 +750,9 @@
"@babel/helper-function-name": "7.1.0",
"@babel/helper-optimise-call-expression": "7.0.0",
"@babel/helper-plugin-utils": "7.0.0",
- "@babel/helper-replace-supers": "7.2.3",
+ "@babel/helper-replace-supers": "7.3.4",
"@babel/helper-split-export-declaration": "7.0.0",
- "globals": "11.10.0"
+ "globals": "11.11.0"
}
},
"@babel/plugin-transform-computed-properties": {
@@ -751,9 +765,9 @@
}
},
"@babel/plugin-transform-destructuring": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.2.0.tgz",
- "integrity": "sha512-coVO2Ayv7g0qdDbrNiadE4bU7lvCd9H539m2gMknyVjjMdwF/iCOM7R+E8PkntoqLkltO0rk+3axhpp/0v68VQ==",
+ "version": "7.3.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.3.2.tgz",
+ "integrity": "sha512-Lrj/u53Ufqxl/sGxyjsJ2XNtNuEjDyjpqdhMNh5aZ+XFOdThL46KBj27Uem4ggoezSYBxKWAil6Hu8HtwqesYw==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "7.0.0"
@@ -790,9 +804,9 @@
}
},
"@babel/plugin-transform-flow-strip-types": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.2.3.tgz",
- "integrity": "sha512-xnt7UIk9GYZRitqCnsVMjQK1O2eKZwFB3CvvHjf5SGx6K6vr/MScCKQDnf1DxRaj501e3pXjti+inbSXX2ZUoQ==",
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.3.4.tgz",
+ "integrity": "sha512-PmQC9R7DwpBFA+7ATKMyzViz3zCaMNouzZMPZN2K5PnbBbtL3AXFYTkDk+Hey5crQq2A90UG5Uthz0mel+XZrA==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "7.0.0",
@@ -849,9 +863,9 @@
}
},
"@babel/plugin-transform-modules-systemjs": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.2.0.tgz",
- "integrity": "sha512-aYJwpAhoK9a+1+O625WIjvMY11wkB/ok0WClVwmeo3mCjcNRjt+/8gHWrB5i+00mUju0gWsBkQnPpdvQ7PImmQ==",
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.3.4.tgz",
+ "integrity": "sha512-VZ4+jlGOF36S7TjKs8g4ojp4MEI+ebCQZdswWb/T9I4X84j8OtFAyjXjt/M16iIm5RIZn0UMQgg/VgIwo/87vw==",
"dev": true,
"requires": {
"@babel/helper-hoist-variables": "7.0.0",
@@ -874,7 +888,7 @@
"integrity": "sha512-NxIoNVhk9ZxS+9lSoAQ/LM0V2UEvARLttEHUrRDGKFaAxOYQcrkN/nLRE+BbbicCAvZPl7wMP0X60HsHE5DtQw==",
"dev": true,
"requires": {
- "regexp-tree": "0.1.0"
+ "regexp-tree": "0.1.5"
}
},
"@babel/plugin-transform-new-target": {
@@ -893,13 +907,13 @@
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "7.0.0",
- "@babel/helper-replace-supers": "7.2.3"
+ "@babel/helper-replace-supers": "7.3.4"
}
},
"@babel/plugin-transform-parameters": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.2.0.tgz",
- "integrity": "sha512-kB9+hhUidIgUoBQ0MsxMewhzr8i60nMa2KgeJKQWYrqQpqcBYtnpR+JgkadZVZoaEZ/eKu9mclFaVwhRpLNSzA==",
+ "version": "7.3.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.3.3.tgz",
+ "integrity": "sha512-IrIP25VvXWu/VlBWTpsjGptpomtIkYrN/3aDp4UKm7xK6UxZY88kcJ1UwETbzHAlwN21MnNfwlar0u8y3KpiXw==",
"dev": true,
"requires": {
"@babel/helper-call-delegate": "7.1.0",
@@ -948,12 +962,12 @@
}
},
"@babel/plugin-transform-regenerator": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz",
- "integrity": "sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw==",
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.3.4.tgz",
+ "integrity": "sha512-hvJg8EReQvXT6G9H2MvNPXkv9zK36Vxa1+csAVTpE1J3j0zlHplw76uudEbJxgvqZzAq9Yh45FLD4pk5mKRFQA==",
"dev": true,
"requires": {
- "regenerator-transform": "0.13.3"
+ "regenerator-transform": "0.13.4"
}
},
"@babel/plugin-transform-shorthand-properties": {
@@ -1003,6 +1017,16 @@
"@babel/helper-plugin-utils": "7.0.0"
}
},
+ "@babel/plugin-transform-typescript": {
+ "version": "7.3.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.3.2.tgz",
+ "integrity": "sha512-Pvco0x0ZSCnexJnshMfaibQ5hnK8aUHSvjCQhC1JR8eeg+iBwt0AtCO7gWxJ358zZevuf9wPSO5rv+WJcbHPXQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/plugin-syntax-typescript": "7.3.3"
+ }
+ },
"@babel/plugin-transform-unicode-regex": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz",
@@ -1015,16 +1039,16 @@
}
},
"@babel/preset-env": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.3.1.tgz",
- "integrity": "sha512-FHKrD6Dxf30e8xgHQO0zJZpUPfVZg+Xwgz5/RdSWCbza9QLNk4Qbp40ctRoqDxml3O8RMzB1DU55SXeDG6PqHQ==",
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.3.4.tgz",
+ "integrity": "sha512-2mwqfYMK8weA0g0uBKOt4FE3iEodiHy9/CW0b+nWXcbL+pGzLx8ESYc+j9IIxr6LTDHWKgPm71i9smo02bw+gA==",
"dev": true,
"requires": {
"@babel/helper-module-imports": "7.0.0",
"@babel/helper-plugin-utils": "7.0.0",
"@babel/plugin-proposal-async-generator-functions": "7.2.0",
"@babel/plugin-proposal-json-strings": "7.2.0",
- "@babel/plugin-proposal-object-rest-spread": "7.3.1",
+ "@babel/plugin-proposal-object-rest-spread": "7.3.4",
"@babel/plugin-proposal-optional-catch-binding": "7.2.0",
"@babel/plugin-proposal-unicode-property-regex": "7.2.0",
"@babel/plugin-syntax-async-generators": "7.2.0",
@@ -1032,12 +1056,12 @@
"@babel/plugin-syntax-object-rest-spread": "7.2.0",
"@babel/plugin-syntax-optional-catch-binding": "7.2.0",
"@babel/plugin-transform-arrow-functions": "7.2.0",
- "@babel/plugin-transform-async-to-generator": "7.2.0",
+ "@babel/plugin-transform-async-to-generator": "7.3.4",
"@babel/plugin-transform-block-scoped-functions": "7.2.0",
- "@babel/plugin-transform-block-scoping": "7.2.0",
- "@babel/plugin-transform-classes": "7.2.2",
+ "@babel/plugin-transform-block-scoping": "7.3.4",
+ "@babel/plugin-transform-classes": "7.3.4",
"@babel/plugin-transform-computed-properties": "7.2.0",
- "@babel/plugin-transform-destructuring": "7.2.0",
+ "@babel/plugin-transform-destructuring": "7.3.2",
"@babel/plugin-transform-dotall-regex": "7.2.0",
"@babel/plugin-transform-duplicate-keys": "7.2.0",
"@babel/plugin-transform-exponentiation-operator": "7.2.0",
@@ -1046,20 +1070,20 @@
"@babel/plugin-transform-literals": "7.2.0",
"@babel/plugin-transform-modules-amd": "7.2.0",
"@babel/plugin-transform-modules-commonjs": "7.2.0",
- "@babel/plugin-transform-modules-systemjs": "7.2.0",
+ "@babel/plugin-transform-modules-systemjs": "7.3.4",
"@babel/plugin-transform-modules-umd": "7.2.0",
"@babel/plugin-transform-named-capturing-groups-regex": "7.3.0",
"@babel/plugin-transform-new-target": "7.0.0",
"@babel/plugin-transform-object-super": "7.2.0",
- "@babel/plugin-transform-parameters": "7.2.0",
- "@babel/plugin-transform-regenerator": "7.0.0",
+ "@babel/plugin-transform-parameters": "7.3.3",
+ "@babel/plugin-transform-regenerator": "7.3.4",
"@babel/plugin-transform-shorthand-properties": "7.2.0",
"@babel/plugin-transform-spread": "7.2.2",
"@babel/plugin-transform-sticky-regex": "7.2.0",
"@babel/plugin-transform-template-literals": "7.2.0",
"@babel/plugin-transform-typeof-symbol": "7.2.0",
"@babel/plugin-transform-unicode-regex": "7.2.0",
- "browserslist": "4.4.1",
+ "browserslist": "4.4.2",
"invariant": "2.2.4",
"js-levenshtein": "1.1.6",
"semver": "5.6.0"
@@ -1072,7 +1096,7 @@
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "7.0.0",
- "@babel/plugin-transform-flow-strip-types": "7.2.3"
+ "@babel/plugin-transform-flow-strip-types": "7.3.4"
}
},
"@babel/preset-react": {
@@ -1094,12 +1118,29 @@
"integrity": "sha512-FBMd0IiARPtH5aaOFUVki6evHiJQiY0pFy7fizyRF7dtwc+el3nwpzvhb9qBNzceG1OIJModG1xpE0DDFjPXwA==",
"dev": true
},
- "@babel/runtime": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.3.1.tgz",
- "integrity": "sha512-7jGW8ppV0ant637pIqAcFfQDDH1orEPGJb8aXfUozuCU3QqX7rX4DA8iwrbPrR1hcH0FTTHz47yQnk+bl5xHQA==",
+ "@babel/preset-typescript": {
+ "version": "7.3.3",
+ "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.3.3.tgz",
+ "integrity": "sha512-mzMVuIP4lqtn4du2ynEfdO0+RYcslwrZiJHXu4MGaC1ctJiW2fyaeDrtjJGs7R/KebZ1sgowcIoWf4uRpEfKEg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/plugin-transform-typescript": "7.3.2"
+ }
+ },
+ "@babel/register": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.0.0.tgz",
+ "integrity": "sha512-f/+CRmaCe7rVEvcvPvxeA8j5aJhHC3aJie7YuqcMDhUOuyWLA7J/aNrTaHIzoWPEhpHA54mec4Mm8fv8KBlv3g==",
+ "dev": true,
"requires": {
- "regenerator-runtime": "0.12.1"
+ "core-js": "2.6.5",
+ "find-cache-dir": "1.0.0",
+ "home-or-tmp": "3.0.0",
+ "lodash": "4.17.11",
+ "mkdirp": "0.5.1",
+ "pirates": "4.0.1",
+ "source-map-support": "0.5.10"
}
},
"@babel/template": {
@@ -1109,41 +1150,27 @@
"dev": true,
"requires": {
"@babel/code-frame": "7.0.0",
- "@babel/parser": "7.3.1",
- "@babel/types": "7.3.0"
- },
- "dependencies": {
- "@babel/parser": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.1.tgz",
- "integrity": "sha512-ATz6yX/L8LEnC3dtLQnIx4ydcPxhLcoy9Vl6re00zb2w5lG6itY6Vhnr1KFRPq/FHNsgl/gh2mjNN20f9iJTTA==",
- "dev": true
- }
+ "@babel/parser": "7.3.4",
+ "@babel/types": "7.3.4"
}
},
"@babel/traverse": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.2.3.tgz",
- "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==",
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.3.4.tgz",
+ "integrity": "sha512-TvTHKp6471OYEcE/91uWmhR6PrrYywQntCHSaZ8CM8Vmp+pjAusal4nGB2WCCQd0rvI7nOMKn9GnbcvTUz3/ZQ==",
"dev": true,
"requires": {
"@babel/code-frame": "7.0.0",
- "@babel/generator": "7.3.0",
+ "@babel/generator": "7.3.4",
"@babel/helper-function-name": "7.1.0",
"@babel/helper-split-export-declaration": "7.0.0",
- "@babel/parser": "7.3.1",
- "@babel/types": "7.3.0",
+ "@babel/parser": "7.3.4",
+ "@babel/types": "7.3.4",
"debug": "4.1.1",
- "globals": "11.10.0",
+ "globals": "11.11.0",
"lodash": "4.17.11"
},
"dependencies": {
- "@babel/parser": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.1.tgz",
- "integrity": "sha512-ATz6yX/L8LEnC3dtLQnIx4ydcPxhLcoy9Vl6re00zb2w5lG6itY6Vhnr1KFRPq/FHNsgl/gh2mjNN20f9iJTTA==",
- "dev": true
- },
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
@@ -1162,9 +1189,9 @@
}
},
"@babel/types": {
- "version": "7.3.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.0.tgz",
- "integrity": "sha512-QkFPw68QqWU1/RVPyBe8SO7lXbPfjtqAxRYQKpFpaB8yMq7X2qAqfwK5LKoQufEkSmO5NQ70O6Kc3Afk03RwXw==",
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.4.tgz",
+ "integrity": "sha512-WEkp8MsLftM7O/ty580wAmZzN1nDmCACc5+jFzUt+GUFNNIi3LdRlueYz0YIlmJhlZx1QYDMZL5vdWCL0fNjFQ==",
"dev": true,
"requires": {
"esutils": "2.0.2",
@@ -1172,81 +1199,259 @@
"to-fast-properties": "2.0.0"
}
},
- "@polkadot/util": {
- "version": "0.33.36",
- "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-0.33.36.tgz",
- "integrity": "sha512-N5b46NYTNJODILXNGRxvW/8yeKiHjQv4k3YmJhYnslMsEbaXPvkePFUA2N8Ji1LQrAD8sQbaoG8aYoNaqHSJMA==",
+ "@types/bn.js": {
+ "version": "4.11.4",
+ "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.4.tgz",
+ "integrity": "sha512-AO8WW+aRcKWKQAYTfKLzwnpL6U+TfPqS+haRrhCy5ff04Da8WZud3ZgVjspQXaEXJDcTlsjUEVvL39wegDek5w==",
"requires": {
- "@babel/runtime": "7.3.1",
- "@types/bn.js": "4.11.4",
- "@types/camelcase": "4.1.0",
- "@types/deasync": "0.1.0",
- "@types/ip-regex": "3.0.0",
- "@types/xxhashjs": "0.1.1",
- "bn.js": "4.11.8",
- "camelcase": "5.0.0",
- "chalk": "2.4.2",
- "core-js": "2.6.3",
- "deasync": "0.1.14",
- "ip-regex": "3.0.0",
- "moment": "2.24.0"
+ "@types/node": "10.12.27"
}
},
- "@polkadot/util-crypto": {
- "version": "0.33.36",
- "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-0.33.36.tgz",
- "integrity": "sha512-kjzdOrBL8NKfZZdWIhQFim3yDWo6sHjWOuxJQt8k22pHa/ATF8zVZ6Xqi4r+wsfBa9S+G6AE5yyVOirVPQYeCQ==",
+ "@types/chai": {
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.1.7.tgz",
+ "integrity": "sha512-2Y8uPt0/jwjhQ6EiluT0XCri1Dbplr0ZxfFXUz+ye13gaqE8u5gL5ppao1JrUYr9cIip5S6MvQzBS7Kke7U9VA==",
+ "dev": true
+ },
+ "@types/mocha": {
+ "version": "5.2.6",
+ "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.6.tgz",
+ "integrity": "sha512-1axi39YdtBI7z957vdqXI4Ac25e7YihYQtJa+Clnxg1zTJEaIRbndt71O3sP4GAMgiAm0pY26/b9BrY4MR/PMw==",
+ "dev": true
+ },
+ "@types/node": {
+ "version": "10.12.27",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.27.tgz",
+ "integrity": "sha512-e9wgeY6gaY21on3ve0xAjgBVjGDWq/xUteK0ujsE53bUoxycMkqfnkUgMt6ffZtykZ5X12Mg3T7Pw4TRCObDKg=="
+ },
+ "@typescript-eslint/eslint-plugin": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.4.2.tgz",
+ "integrity": "sha512-6WInypy/cK4rM1dirKbD5p7iFW28DbSRKT/+PGn+DYzBWEvHq5KnZAqQ5cX25JBc0qMkFxJNxNfBbFXJyyzVcw==",
+ "dev": true,
"requires": {
- "@babel/runtime": "7.3.1",
- "@polkadot/util": "0.33.36",
- "@types/bip39": "2.4.1",
- "bip39": "2.5.0",
- "blakejs": "1.1.0",
- "js-sha3": "0.8.0",
- "tweetnacl": "1.0.0",
- "xxhashjs": "0.2.2"
+ "@typescript-eslint/parser": "1.4.2",
+ "@typescript-eslint/typescript-estree": "1.4.2",
+ "requireindex": "1.2.0",
+ "tsutils": "3.8.0"
}
},
- "@types/bip39": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@types/bip39/-/bip39-2.4.1.tgz",
- "integrity": "sha512-QHx0qI6JaTIW/S3zxE/bXrwOWu6Boos+LZ4438xmFAHY5k+qHkExMdAnb/DENEt2RBnOdZ6c5J+SHrnLEhUohQ==",
+ "@typescript-eslint/parser": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-1.4.2.tgz",
+ "integrity": "sha512-OqLkY9295DXXaWToItUv3olO2//rmzh6Th6Sc7YjFFEpEuennsm5zhygLLvHZjPxPlzrQgE8UDaOPurDylaUuw==",
+ "dev": true,
"requires": {
- "@types/node": "10.12.18"
+ "@typescript-eslint/typescript-estree": "1.4.2",
+ "eslint-scope": "4.0.0",
+ "eslint-visitor-keys": "1.0.0"
}
},
- "@types/bn.js": {
- "version": "4.11.4",
- "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.4.tgz",
- "integrity": "sha512-AO8WW+aRcKWKQAYTfKLzwnpL6U+TfPqS+haRrhCy5ff04Da8WZud3ZgVjspQXaEXJDcTlsjUEVvL39wegDek5w==",
+ "@typescript-eslint/typescript-estree": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-1.4.2.tgz",
+ "integrity": "sha512-wKgi/w6k1v3R4b6oDc20cRWro2gBzp0wn6CAeYC8ExJMfvXMfiaXzw2tT9ilxdONaVWMCk7B9fMdjos7bF/CWw==",
+ "dev": true,
"requires": {
- "@types/node": "10.12.18"
+ "lodash.unescape": "4.0.1",
+ "semver": "5.5.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
+ "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
+ "dev": true
+ }
}
},
- "@types/camelcase": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@types/camelcase/-/camelcase-4.1.0.tgz",
- "integrity": "sha512-nsaprOtNLvUrLyFX5+mRpE9h2Q0d5YzQRr+Lav3fxdYtc1/E/U7G+Ld861NWBDDtWY3MnwKoUOhCrE1nrVxUQA=="
+ "@webassemblyjs/ast": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz",
+ "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/helper-module-context": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/wast-parser": "1.8.5"
+ }
},
- "@types/deasync": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/@types/deasync/-/deasync-0.1.0.tgz",
- "integrity": "sha512-jxUH53LtGvbIL3TX2hD/XQuAgYJeATtx9kDXq5XtCZrWQABsiCQPjWi/KQXECUF+p9FuR6/tawnEDjXlEr4rFA=="
+ "@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz",
+ "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==",
+ "dev": true
},
- "@types/ip-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/ip-regex/-/ip-regex-3.0.0.tgz",
- "integrity": "sha512-4j26qYCikXbIaypgqdGQhhIvYfTR+40i/05jVQB8oc57RbROEkBocdIUZO7fOhyqJsx7WRY36ySW8hoUZn7Fgw=="
+ "@webassemblyjs/helper-api-error": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz",
+ "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==",
+ "dev": true
},
- "@types/node": {
- "version": "10.12.18",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz",
- "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ=="
+ "@webassemblyjs/helper-buffer": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz",
+ "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==",
+ "dev": true
},
- "@types/xxhashjs": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@types/xxhashjs/-/xxhashjs-0.1.1.tgz",
- "integrity": "sha512-6mHo5kJME0Ydtms1ZW8qIV34xs4QryS6O8e8xQ5d3kXZgFOtdfV3h1HXhb11EhYSTO94fEj95xa+08VFZB5ZBQ=="
+ "@webassemblyjs/helper-code-frame": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz",
+ "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/wast-printer": "1.8.5"
+ }
+ },
+ "@webassemblyjs/helper-fsm": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz",
+ "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-module-context": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz",
+ "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "mamacro": "0.0.3"
+ }
+ },
+ "@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz",
+ "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-wasm-section": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz",
+ "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-buffer": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/wasm-gen": "1.8.5"
+ }
+ },
+ "@webassemblyjs/ieee754": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz",
+ "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==",
+ "dev": true,
+ "requires": {
+ "@xtuc/ieee754": "1.2.0"
+ }
+ },
+ "@webassemblyjs/leb128": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz",
+ "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==",
+ "dev": true,
+ "requires": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/utf8": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz",
+ "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==",
+ "dev": true
+ },
+ "@webassemblyjs/wasm-edit": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz",
+ "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-buffer": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/helper-wasm-section": "1.8.5",
+ "@webassemblyjs/wasm-gen": "1.8.5",
+ "@webassemblyjs/wasm-opt": "1.8.5",
+ "@webassemblyjs/wasm-parser": "1.8.5",
+ "@webassemblyjs/wast-printer": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wasm-gen": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz",
+ "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/ieee754": "1.8.5",
+ "@webassemblyjs/leb128": "1.8.5",
+ "@webassemblyjs/utf8": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wasm-opt": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz",
+ "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-buffer": "1.8.5",
+ "@webassemblyjs/wasm-gen": "1.8.5",
+ "@webassemblyjs/wasm-parser": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wasm-parser": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz",
+ "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-api-error": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/ieee754": "1.8.5",
+ "@webassemblyjs/leb128": "1.8.5",
+ "@webassemblyjs/utf8": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wast-parser": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz",
+ "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/floating-point-hex-parser": "1.8.5",
+ "@webassemblyjs/helper-api-error": "1.8.5",
+ "@webassemblyjs/helper-code-frame": "1.8.5",
+ "@webassemblyjs/helper-fsm": "1.8.5",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/wast-printer": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz",
+ "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/wast-parser": "1.8.5",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+ "dev": true
+ },
+ "@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+ "dev": true
},
"JSONStream": {
"version": "1.3.5",
@@ -1259,9 +1464,15 @@
}
},
"acorn": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.5.tgz",
- "integrity": "sha512-i33Zgp3XWtmZBMNvCr4azvOFeWVw1Rk6p3hfi3LUDvIFraOMywb1kAtrbi+med14m4Xfpqm3zRZMT+c0FNE7kg==",
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz",
+ "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==",
+ "dev": true
+ },
+ "acorn-dynamic-import": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz",
+ "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==",
"dev": true
},
"acorn-jsx": {
@@ -1270,10 +1481,19 @@
"integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==",
"dev": true
},
+ "agent-base": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
+ "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
+ "dev": true,
+ "requires": {
+ "es6-promisify": "5.0.0"
+ }
+ },
"ajv": {
- "version": "6.7.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.7.0.tgz",
- "integrity": "sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg==",
+ "version": "6.9.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.2.tgz",
+ "integrity": "sha512-4UFy0/LgDo7Oa/+wOAlj44tp9K78u38E5/359eSrqEp1Z5PdVfimCcs7SluXMP755RUQu6d2b4AvF0R1C9RZjg==",
"dev": true,
"requires": {
"fast-deep-equal": "2.0.1",
@@ -1282,16 +1502,22 @@
"uri-js": "4.2.2"
}
},
+ "ajv-errors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
+ "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
+ "dev": true
+ },
"ajv-keywords": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz",
- "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=",
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.0.tgz",
+ "integrity": "sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==",
"dev": true
},
"ansi-escapes": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz",
- "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
+ "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
"dev": true
},
"ansi-html": {
@@ -1301,16 +1527,19 @@
"dev": true
},
"ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
"dev": true
},
"ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.3"
+ }
},
"anymatch": {
"version": "2.0.0",
@@ -1320,6 +1549,17 @@
"requires": {
"micromatch": "3.1.10",
"normalize-path": "2.1.1"
+ },
+ "dependencies": {
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "1.1.0"
+ }
+ }
}
},
"append-buffer": {
@@ -1331,6 +1571,12 @@
"buffer-equal": "1.0.0"
}
},
+ "aproba": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+ "dev": true
+ },
"argparse": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
@@ -1340,6 +1586,12 @@
"sprintf-js": "1.0.3"
}
},
+ "argv": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz",
+ "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=",
+ "dev": true
+ },
"arr-diff": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
@@ -1358,22 +1610,31 @@
"integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
"dev": true
},
- "array-includes": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz",
- "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=",
- "dev": true,
- "requires": {
- "define-properties": "1.1.3",
- "es-abstract": "1.13.0"
- }
- },
"array-unique": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
"integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
"dev": true
},
+ "asn1.js": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
+ "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "inherits": "2.0.3",
+ "minimalistic-assert": "1.0.1"
+ }
+ },
+ "assert": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
+ "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
+ "requires": {
+ "util": "0.10.3"
+ }
+ },
"assertion-error": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
@@ -1386,6 +1647,12 @@
"integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
"dev": true
},
+ "astral-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
+ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
+ "dev": true
+ },
"async-each": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
@@ -1398,47 +1665,6 @@
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
"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": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
- "dev": true,
- "requires": {
- "chalk": "1.1.3",
- "esutils": "2.0.2",
- "js-tokens": "3.0.2"
- },
- "dependencies": {
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "requires": {
- "ansi-styles": "2.2.1",
- "escape-string-regexp": "1.0.5",
- "has-ansi": "2.0.0",
- "strip-ansi": "3.0.1",
- "supports-color": "2.0.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "2.1.1"
- }
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
- }
- }
- },
"babelify": {
"version": "10.0.0",
"resolved": "https://registry.npmjs.org/babelify/-/babelify-10.0.0.tgz",
@@ -1512,33 +1738,29 @@
}
}
},
- "binary-extensions": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz",
- "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==",
+ "base64-js": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
+ "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==",
"dev": true
},
- "bindings": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz",
- "integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE="
+ "big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+ "dev": true
},
- "bip39": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/bip39/-/bip39-2.5.0.tgz",
- "integrity": "sha512-xwIx/8JKoT2+IPJpFEfXoWdYwP7UVAoUxxLNfGCfVowaJE7yg1Y5B1BVPqlUNsBq5/nGwmFkwRJ8xDW4sX8OdA==",
- "requires": {
- "create-hash": "1.2.0",
- "pbkdf2": "3.0.17",
- "randombytes": "2.0.6",
- "safe-buffer": "5.1.2",
- "unorm": "1.4.1"
- }
+ "binary-extensions": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.0.tgz",
+ "integrity": "sha512-EgmjVLMn22z7eGGv3kcnHwSnJXmFHjISTY9E/S5lIcTD3Oxw05QTcBLNkJFzcb3cNueUdF/IN4U+d78V0zO8Hw==",
+ "dev": true
},
- "blakejs": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.0.tgz",
- "integrity": "sha1-ad+S75U6qIylGjLfarHFShVfx6U="
+ "bluebird": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz",
+ "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==",
+ "dev": true
},
"bn.js": {
"version": "4.11.8",
@@ -1596,6 +1818,12 @@
}
}
},
+ "brorand": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+ "dev": true
+ },
"browser-resolve": {
"version": "1.11.3",
"resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz",
@@ -1619,15 +1847,97 @@
"integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
"dev": true
},
- "browserslist": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.4.1.tgz",
- "integrity": "sha512-pEBxEXg7JwaakBXjATYw/D1YZh4QUSCX/Mnd/wnqSRPPSi1U39iDhDoKGoBUcraKdxDlrYqJxSI5nNvD+dWP2A==",
+ "browserify-aes": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+ "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
"dev": true,
"requires": {
- "caniuse-lite": "1.0.30000930",
- "electron-to-chromium": "1.3.106",
- "node-releases": "1.1.3"
+ "buffer-xor": "1.0.3",
+ "cipher-base": "1.0.4",
+ "create-hash": "1.2.0",
+ "evp_bytestokey": "1.0.3",
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "browserify-cipher": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
+ "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+ "dev": true,
+ "requires": {
+ "browserify-aes": "1.2.0",
+ "browserify-des": "1.0.2",
+ "evp_bytestokey": "1.0.3"
+ }
+ },
+ "browserify-des": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
+ "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "1.0.4",
+ "des.js": "1.0.0",
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "browserify-rsa": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
+ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "randombytes": "2.1.0"
+ }
+ },
+ "browserify-sign": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
+ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "browserify-rsa": "4.0.1",
+ "create-hash": "1.2.0",
+ "create-hmac": "1.1.7",
+ "elliptic": "6.4.1",
+ "inherits": "2.0.3",
+ "parse-asn1": "5.1.4"
+ }
+ },
+ "browserify-zlib": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
+ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+ "dev": true,
+ "requires": {
+ "pako": "1.0.10"
+ }
+ },
+ "browserslist": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.4.2.tgz",
+ "integrity": "sha512-ISS/AIAiHERJ3d45Fz0AVYKkgcy+F/eJHzKEvv1j0wwKGKD9T3BrwKr/5g45L+Y4XIK5PlTqefHciRFcfE1Jxg==",
+ "dev": true,
+ "requires": {
+ "caniuse-lite": "1.0.30000939",
+ "electron-to-chromium": "1.3.113",
+ "node-releases": "1.1.8"
+ }
+ },
+ "buffer": {
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
+ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
+ "dev": true,
+ "requires": {
+ "base64-js": "1.3.0",
+ "ieee754": "1.1.12",
+ "isarray": "1.0.0"
}
},
"buffer-equal": {
@@ -1648,10 +1958,16 @@
"integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=",
"dev": true
},
- "builtin-modules": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
- "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
+ "buffer-xor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
+ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
+ "dev": true
+ },
+ "builtin-status-codes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
+ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
"dev": true
},
"bytes": {
@@ -1660,6 +1976,51 @@
"integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=",
"dev": true
},
+ "cacache": {
+ "version": "11.3.2",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz",
+ "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==",
+ "dev": true,
+ "requires": {
+ "bluebird": "3.5.3",
+ "chownr": "1.1.1",
+ "figgy-pudding": "3.5.1",
+ "glob": "7.1.3",
+ "graceful-fs": "4.1.15",
+ "lru-cache": "5.1.1",
+ "mississippi": "3.0.0",
+ "mkdirp": "0.5.1",
+ "move-concurrently": "1.0.1",
+ "promise-inflight": "1.0.1",
+ "rimraf": "2.6.3",
+ "ssri": "6.0.1",
+ "unique-filename": "1.1.1",
+ "y18n": "4.0.0"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "requires": {
+ "yallist": "3.0.3"
+ }
+ },
+ "y18n": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
+ "dev": true
+ },
+ "yallist": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
+ "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
+ "dev": true
+ }
+ }
+ },
"cache-base": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
@@ -1683,30 +2044,22 @@
"integrity": "sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg==",
"dev": true
},
- "caller-path": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
- "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
- "dev": true,
- "requires": {
- "callsites": "0.2.0"
- }
- },
"callsites": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
- "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz",
+ "integrity": "sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==",
"dev": true
},
"camelcase": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz",
- "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA=="
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
},
"caniuse-lite": {
- "version": "1.0.30000930",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000930.tgz",
- "integrity": "sha512-KD+pw9DderBLB8CGqBzYyFWpnrPVOEjsjargU/CvkNyg60od3cxSPTcTeMPhxJhDbkQPWvOz5BAyBzNl/St9vg==",
+ "version": "1.0.30000939",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000939.tgz",
+ "integrity": "sha512-oXB23ImDJOgQpGjRv1tCtzAvJr4/OvrHi5SO2vUgB0g0xpdZZoA/BxfImiWfdwoYdUTtQrPsXsvYU/dmCSM8gg==",
"dev": true
},
"ccount": {
@@ -1716,9 +2069,9 @@
"dev": true
},
"chai": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz",
- "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz",
+ "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==",
"dev": true,
"requires": {
"assertion-error": "1.1.0",
@@ -1733,20 +2086,11 @@
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
"requires": {
"ansi-styles": "3.2.1",
"escape-string-regexp": "1.0.5",
- "supports-color": "5.4.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "requires": {
- "color-convert": "1.9.3"
- }
- }
+ "supports-color": "5.5.0"
}
},
"character-entities": {
@@ -1774,9 +2118,9 @@
"dev": true
},
"chardet": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz",
- "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=",
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
+ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
"dev": true
},
"check-error": {
@@ -1786,40 +2130,50 @@
"dev": true
},
"chokidar": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz",
- "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.2.tgz",
+ "integrity": "sha512-IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg==",
"dev": true,
"requires": {
"anymatch": "2.0.0",
"async-each": "1.0.1",
"braces": "2.3.2",
+ "fsevents": "1.2.7",
"glob-parent": "3.1.0",
"inherits": "2.0.3",
"is-binary-path": "1.0.1",
"is-glob": "4.0.0",
- "lodash.debounce": "4.0.8",
- "normalize-path": "2.1.1",
+ "normalize-path": "3.0.0",
"path-is-absolute": "1.0.1",
"readdirp": "2.2.1",
"upath": "1.1.0"
}
},
+ "chownr": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz",
+ "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==",
+ "dev": true
+ },
+ "chrome-trace-event": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz",
+ "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==",
+ "dev": true,
+ "requires": {
+ "tslib": "1.9.3"
+ }
+ },
"cipher-base": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
"integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+ "dev": true,
"requires": {
"inherits": "2.0.3",
"safe-buffer": "5.1.2"
}
},
- "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
- },
"class-utils": {
"version": "0.3.6",
"resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
@@ -1852,17 +2206,6 @@
"restore-cursor": "2.0.0"
}
},
- "cli-table3": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz",
- "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==",
- "dev": true,
- "requires": {
- "colors": "1.3.3",
- "object-assign": "4.1.1",
- "string-width": "2.1.1"
- }
- },
"cli-width": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
@@ -1870,14 +2213,51 @@
"dev": true
},
"cliui": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
- "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
"dev": true,
"requires": {
- "string-width": "2.1.1",
- "strip-ansi": "4.0.0",
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1",
"wrap-ansi": "2.1.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "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": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ }
}
},
"clone": {
@@ -1915,6 +2295,19 @@
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
"dev": true
},
+ "codecov": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.2.0.tgz",
+ "integrity": "sha512-3NJvNARXxilqnqVfgzDHyVrF4oeVgaYW1c1O6Oi5mn93exE7HTSSFNiYdwojWW6IwrCZABJ8crpNbKoo9aUHQw==",
+ "dev": true,
+ "requires": {
+ "argv": "0.0.2",
+ "ignore-walk": "3.0.1",
+ "js-yaml": "3.12.2",
+ "teeny-request": "3.11.3",
+ "urlgrey": "0.4.4"
+ }
+ },
"collapse-white-space": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.4.tgz",
@@ -1935,6 +2328,7 @@
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
"requires": {
"color-name": "1.1.3"
}
@@ -1942,12 +2336,7 @@
"color-name": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
- },
- "colors": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz",
- "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
"dev": true
},
"comma-separated-tokens": {
@@ -1960,9 +2349,15 @@
}
},
"commander": {
- "version": "2.15.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
- "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==",
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
+ "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==",
+ "dev": true
+ },
+ "commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
"dev": true
},
"component-emitter": {
@@ -1989,10 +2384,19 @@
"typedarray": "0.0.6"
}
},
- "contains-path": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
- "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
+ "console-browserify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
+ "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
+ "dev": true,
+ "requires": {
+ "date-now": "0.1.4"
+ }
+ },
+ "constants-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
+ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
"dev": true
},
"continuable-cache": {
@@ -2010,6 +2414,20 @@
"safe-buffer": "5.1.2"
}
},
+ "copy-concurrently": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
+ "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
+ "dev": true,
+ "requires": {
+ "aproba": "1.2.0",
+ "fs-write-stream-atomic": "1.0.10",
+ "iferr": "0.1.5",
+ "mkdirp": "0.5.1",
+ "rimraf": "2.6.3",
+ "run-queue": "1.0.3"
+ }
+ },
"copy-descriptor": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
@@ -2017,9 +2435,10 @@
"dev": true
},
"core-js": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.3.tgz",
- "integrity": "sha512-l00tmFFZOBHtYhN4Cz7k32VM7vTn3rE2ANjQDxdEN6zmXZ/xq1jQuutnmHvMG1ZJ7xd72+TA5YpUK8wz3rWsfQ=="
+ "version": "2.6.5",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz",
+ "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==",
+ "dev": true
},
"core-util-is": {
"version": "1.0.2",
@@ -2027,10 +2446,21 @@
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"dev": true
},
+ "create-ecdh": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
+ "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "elliptic": "6.4.1"
+ }
+ },
"create-hash": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
"integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+ "dev": true,
"requires": {
"cipher-base": "1.0.4",
"inherits": "2.0.3",
@@ -2043,6 +2473,7 @@
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
"integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+ "dev": true,
"requires": {
"cipher-base": "1.0.4",
"create-hash": "1.2.0",
@@ -2065,10 +2496,36 @@
"which": "1.3.1"
}
},
- "cuint": {
+ "crypto-browserify": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
+ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+ "dev": true,
+ "requires": {
+ "browserify-cipher": "1.0.1",
+ "browserify-sign": "4.0.4",
+ "create-ecdh": "4.0.3",
+ "create-hash": "1.2.0",
+ "create-hmac": "1.1.7",
+ "diffie-hellman": "5.0.3",
+ "inherits": "2.0.3",
+ "pbkdf2": "3.0.17",
+ "public-encrypt": "4.0.3",
+ "randombytes": "2.1.0",
+ "randomfill": "1.0.4"
+ }
+ },
+ "cyclist": {
"version": "0.2.2",
- "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz",
- "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs="
+ "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz",
+ "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=",
+ "dev": true
+ },
+ "date-now": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
+ "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
+ "dev": true
},
"de-indent": {
"version": "1.0.2",
@@ -2076,30 +2533,15 @@
"integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=",
"dev": true
},
- "deasync": {
- "version": "0.1.14",
- "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.14.tgz",
- "integrity": "sha512-wN8sIuEqIwyQh72AG7oY6YQODCxIp1eXzEZlZznBuwDF8Q03Tdy9QNp1BNZXeadXoklNrw+Ip1fch+KXo/+ASw==",
- "requires": {
- "bindings": "1.2.1",
- "node-addon-api": "1.6.2"
- }
- },
"debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "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": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=",
- "dev": true
- },
"decamelize": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
@@ -2127,21 +2569,13 @@
"integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
"dev": true
},
- "deepcopy": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/deepcopy/-/deepcopy-1.0.0.tgz",
- "integrity": "sha512-WJrecobaoqqgQHtvRI2/VCzWoWXPAnFYyAkF/spmL46lZMnd0gW0gLGuyeFVSrqt2B3s0oEEj6i+j2L/2QiS4g==",
- "requires": {
- "type-detect": "4.0.8"
- }
- },
"define-properties": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
"integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
"dev": true,
"requires": {
- "object-keys": "1.0.12"
+ "object-keys": "1.1.0"
}
},
"define-property": {
@@ -2191,26 +2625,14 @@
"integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
"dev": true
},
- "deglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.1.tgz",
- "integrity": "sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw==",
+ "des.js": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
+ "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
"dev": true,
"requires": {
- "find-root": "1.1.0",
- "glob": "7.1.2",
- "ignore": "3.3.10",
- "pkg-config": "1.1.1",
- "run-parallel": "1.1.9",
- "uniq": "1.0.1"
- },
- "dependencies": {
- "ignore": {
- "version": "3.3.10",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
- "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
- "dev": true
- }
+ "inherits": "2.0.3",
+ "minimalistic-assert": "1.0.1"
}
},
"detab": {
@@ -2222,6 +2644,12 @@
"repeat-string": "1.6.1"
}
},
+ "detect-file": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
+ "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
+ "dev": true
+ },
"detective": {
"version": "4.7.1",
"resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz",
@@ -2246,6 +2674,17 @@
"integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
"dev": true
},
+ "diffie-hellman": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+ "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "miller-rabin": "4.0.1",
+ "randombytes": "2.1.0"
+ }
+ },
"disparity": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/disparity/-/disparity-2.0.0.tgz",
@@ -2256,6 +2695,12 @@
"diff": "1.4.0"
},
"dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
"diff": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz",
@@ -2265,9 +2710,9 @@
}
},
"doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
"dev": true,
"requires": {
"esutils": "2.0.2"
@@ -2283,15 +2728,15 @@
}
},
"documentation": {
- "version": "9.1.1",
- "resolved": "https://registry.npmjs.org/documentation/-/documentation-9.1.1.tgz",
- "integrity": "sha512-oSTBZXBlrJpRMXCzXdd1j8CQ+miJHTIZeEZ3oCU/NgIImKTBG3nHIPPSZRPA35cJGWN9L3uQK7eF6vS82QJlgg==",
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/documentation/-/documentation-9.3.0.tgz",
+ "integrity": "sha512-HGHuYATpJz2VKI7TjuAnUFrE+xzLWzp2ttz1oRBPVYPTtzGCSZE6RDiYYCyErOW18BtxCA8o7jzt+VpcWv/ZCg==",
"dev": true,
"requires": {
- "@babel/core": "7.2.2",
- "@babel/generator": "7.3.0",
+ "@babel/core": "7.3.4",
+ "@babel/generator": "7.3.4",
"@babel/parser": "7.1.3",
- "@babel/plugin-proposal-class-properties": "7.3.0",
+ "@babel/plugin-proposal-class-properties": "7.3.4",
"@babel/plugin-proposal-decorators": "7.3.0",
"@babel/plugin-proposal-do-expressions": "7.2.0",
"@babel/plugin-proposal-export-default-from": "7.2.0",
@@ -2303,30 +2748,30 @@
"@babel/plugin-proposal-nullish-coalescing-operator": "7.2.0",
"@babel/plugin-proposal-numeric-separator": "7.2.0",
"@babel/plugin-proposal-optional-chaining": "7.2.0",
- "@babel/plugin-proposal-pipeline-operator": "7.3.0",
+ "@babel/plugin-proposal-pipeline-operator": "7.3.2",
"@babel/plugin-proposal-throw-expressions": "7.2.0",
"@babel/plugin-syntax-dynamic-import": "7.2.0",
"@babel/plugin-syntax-import-meta": "7.2.0",
- "@babel/preset-env": "7.3.1",
+ "@babel/preset-env": "7.3.4",
"@babel/preset-flow": "7.0.0",
"@babel/preset-react": "7.0.0",
"@babel/preset-stage-0": "7.0.0",
- "@babel/traverse": "7.2.3",
- "@babel/types": "7.3.0",
+ "@babel/traverse": "7.3.4",
+ "@babel/types": "7.3.4",
"ansi-html": "0.0.7",
"babelify": "10.0.0",
"chalk": "2.4.2",
- "chokidar": "2.0.4",
+ "chokidar": "2.1.2",
"concat-stream": "1.6.2",
"disparity": "2.0.0",
"doctrine-temporary-fork": "2.0.1",
"get-port": "4.1.0",
"git-url-parse": "10.1.0",
"github-slugger": "1.2.0",
- "glob": "7.1.2",
+ "glob": "7.1.3",
"globals-docs": "2.4.0",
- "highlight.js": "9.13.1",
- "js-yaml": "3.12.1",
+ "highlight.js": "9.15.6",
+ "js-yaml": "3.12.2",
"lodash": "4.17.11",
"mdast-util-inject": "1.1.0",
"micromatch": "3.1.10",
@@ -2340,7 +2785,7 @@
"remark-reference-links": "4.0.3",
"remark-toc": "5.1.1",
"remote-origin-url": "0.4.0",
- "resolve": "1.9.0",
+ "resolve": "1.10.0",
"stream-array": "1.1.2",
"strip-json-comments": "2.0.1",
"tiny-lr": "1.1.1",
@@ -2351,135 +2796,30 @@
"vfile-sort": "2.2.0",
"vinyl": "2.2.0",
"vinyl-fs": "3.0.3",
- "vue-template-compiler": "2.5.22",
+ "vue-template-compiler": "2.6.7",
"yargs": "9.0.1"
},
"dependencies": {
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "3.0.0"
- }
- },
- "load-json-file": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
- "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
- "dev": true,
- "requires": {
- "graceful-fs": "4.1.15",
- "parse-json": "4.0.0",
- "pify": "3.0.0",
- "strip-bom": "3.0.0"
- },
- "dependencies": {
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- }
- }
- },
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "requires": {
- "p-locate": "3.0.0",
- "path-exists": "3.0.0"
- }
- },
- "p-limit": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz",
- "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==",
- "dev": true,
- "requires": {
- "p-try": "2.0.0"
- }
- },
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "requires": {
- "p-limit": "2.1.0"
- }
- },
- "p-try": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
- "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
- "dev": true
- },
- "parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
- "dev": true,
- "requires": {
- "error-ex": "1.3.2",
- "json-parse-better-errors": "1.0.2"
- }
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- },
- "path-type": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
- "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
- "dev": true,
- "requires": {
- "pify": "3.0.0"
- },
- "dependencies": {
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- }
- }
+ "@babel/parser": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.3.tgz",
+ "integrity": "sha512-gqmspPZOMW3MIRb9HlrnbZHXI1/KHTOroBwN1NcLL6pWxzqzEKGvRTq0W/PxS45OtQGbaFikSQpkS5zbnsQm2w==",
+ "dev": true
},
"pify": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
"integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
"dev": true
- },
- "read-pkg": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
- "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
- "dev": true,
- "requires": {
- "load-json-file": "4.0.0",
- "normalize-package-data": "2.4.0",
- "path-type": "3.0.0"
- }
- },
- "read-pkg-up": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz",
- "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==",
- "dev": true,
- "requires": {
- "find-up": "3.0.0",
- "read-pkg": "3.0.0"
- }
}
}
},
+ "domain-browser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
+ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
+ "dev": true
+ },
"duplexer2": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
@@ -2490,9 +2830,9 @@
}
},
"duplexify": {
- "version": "3.6.1",
- "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz",
- "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==",
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
+ "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
"dev": true,
"requires": {
"end-of-stream": "1.4.1",
@@ -2502,15 +2842,36 @@
}
},
"electron-to-chromium": {
- "version": "1.3.106",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.106.tgz",
- "integrity": "sha512-eXX45p4q9CRxG0G8D3ZBZYSdN3DnrcZfrFvt6VUr1u7aKITEtRY/xwWzJ/UZcWXa7DMqPu/pYwuZ6Nm+bl0GmA==",
+ "version": "1.3.113",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.113.tgz",
+ "integrity": "sha512-De+lPAxEcpxvqPTyZAXELNpRZXABRxf+uL/rSykstQhzj/B0l1150G/ExIIxKc16lI89Hgz81J0BHAcbTqK49g==",
"dev": true
},
+ "elliptic": {
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz",
+ "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "brorand": "1.1.0",
+ "hash.js": "1.1.7",
+ "hmac-drbg": "1.0.1",
+ "inherits": "2.0.3",
+ "minimalistic-assert": "1.0.1",
+ "minimalistic-crypto-utils": "1.0.1"
+ }
+ },
"emoji-regex": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.1.tgz",
- "integrity": "sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4=",
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "emojis-list": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
+ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
"dev": true
},
"end-of-stream": {
@@ -2522,6 +2883,26 @@
"once": "1.4.0"
}
},
+ "enhanced-resolve": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz",
+ "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.15",
+ "memory-fs": "0.4.1",
+ "tapable": "1.1.1"
+ }
+ },
+ "errno": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
+ "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
+ "dev": true,
+ "requires": {
+ "prr": "1.0.1"
+ }
+ },
"error": {
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz",
@@ -2541,63 +2922,54 @@
"is-arrayish": "0.2.1"
}
},
- "es-abstract": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
- "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
- "dev": true,
- "requires": {
- "es-to-primitive": "1.2.0",
- "function-bind": "1.1.1",
- "has": "1.0.3",
- "is-callable": "1.1.4",
- "is-regex": "1.0.4",
- "object-keys": "1.0.12"
- }
+ "es6-promise": {
+ "version": "4.2.6",
+ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz",
+ "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==",
+ "dev": true
},
- "es-to-primitive": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
- "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
+ "es6-promisify": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
+ "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
"dev": true,
"requires": {
- "is-callable": "1.1.4",
- "is-date-object": "1.0.1",
- "is-symbol": "1.0.2"
+ "es6-promise": "4.2.6"
}
},
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
},
"eslint": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.4.0.tgz",
- "integrity": "sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg==",
+ "version": "5.14.1",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.14.1.tgz",
+ "integrity": "sha512-CyUMbmsjxedx8B0mr79mNOqetvkbij/zrXnFeK2zc3pGRn3/tibjiNAv/3UxFEyfMDjh+ZqTrJrEGBFiGfD5Og==",
"dev": true,
"requires": {
- "ajv": "6.7.0",
- "babel-code-frame": "6.26.0",
+ "@babel/code-frame": "7.0.0",
+ "ajv": "6.9.2",
"chalk": "2.4.2",
"cross-spawn": "6.0.5",
- "debug": "3.1.0",
- "doctrine": "2.1.0",
+ "debug": "4.1.1",
+ "doctrine": "3.0.0",
"eslint-scope": "4.0.0",
"eslint-utils": "1.3.1",
"eslint-visitor-keys": "1.0.0",
- "espree": "4.1.0",
+ "espree": "5.0.1",
"esquery": "1.0.1",
"esutils": "2.0.2",
- "file-entry-cache": "2.0.0",
+ "file-entry-cache": "5.0.1",
"functional-red-black-tree": "1.0.1",
- "glob": "7.1.2",
- "globals": "11.10.0",
+ "glob": "7.1.3",
+ "globals": "11.11.0",
"ignore": "4.0.6",
+ "import-fresh": "3.0.0",
"imurmurhash": "0.1.4",
- "inquirer": "5.2.0",
- "is-resolvable": "1.1.0",
- "js-yaml": "3.12.1",
+ "inquirer": "6.2.2",
+ "js-yaml": "3.12.2",
"json-stable-stringify-without-jsonify": "1.0.1",
"levn": "0.3.0",
"lodash": "4.17.11",
@@ -2606,159 +2978,32 @@
"natural-compare": "1.4.0",
"optionator": "0.8.2",
"path-is-inside": "1.0.2",
- "pluralize": "7.0.0",
"progress": "2.0.3",
"regexpp": "2.0.1",
- "require-uncached": "1.0.3",
"semver": "5.6.0",
"strip-ansi": "4.0.0",
"strip-json-comments": "2.0.1",
- "table": "4.0.3",
+ "table": "5.2.3",
"text-table": "0.2.0"
- }
- },
- "eslint-config-standard": {
- "version": "12.0.0",
- "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz",
- "integrity": "sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ==",
- "dev": true
- },
- "eslint-config-standard-jsx": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz",
- "integrity": "sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg==",
- "dev": true
- },
- "eslint-import-resolver-node": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz",
- "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==",
- "dev": true,
- "requires": {
- "debug": "2.6.9",
- "resolve": "1.9.0"
- },
- "dependencies": {
- "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"
- }
- }
- }
- },
- "eslint-module-utils": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz",
- "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=",
- "dev": true,
- "requires": {
- "debug": "2.6.9",
- "pkg-dir": "1.0.0"
- },
- "dependencies": {
- "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"
- }
- }
- }
- },
- "eslint-plugin-es": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.0.tgz",
- "integrity": "sha512-XfFmgFdIUDgvaRAlaXUkxrRg5JSADoRC8IkKLc/cISeR3yHVMefFHQZpcyXXEUUPHfy5DwviBcrfqlyqEwlQVw==",
- "dev": true,
- "requires": {
- "eslint-utils": "1.3.1",
- "regexpp": "2.0.1"
- }
- },
- "eslint-plugin-import": {
- "version": "2.14.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz",
- "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==",
- "dev": true,
- "requires": {
- "contains-path": "0.1.0",
- "debug": "2.6.9",
- "doctrine": "1.5.0",
- "eslint-import-resolver-node": "0.3.2",
- "eslint-module-utils": "2.2.0",
- "has": "1.0.3",
- "lodash": "4.17.11",
- "minimatch": "3.0.4",
- "read-pkg-up": "2.0.0",
- "resolve": "1.9.0"
},
"dependencies": {
"debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"dev": true,
"requires": {
- "ms": "2.0.0"
+ "ms": "2.1.1"
}
},
- "doctrine": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
- "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
- "dev": true,
- "requires": {
- "esutils": "2.0.2",
- "isarray": "1.0.0"
- }
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
}
}
},
- "eslint-plugin-node": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz",
- "integrity": "sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw==",
- "dev": true,
- "requires": {
- "eslint-plugin-es": "1.4.0",
- "eslint-utils": "1.3.1",
- "ignore": "4.0.6",
- "minimatch": "3.0.4",
- "resolve": "1.9.0",
- "semver": "5.6.0"
- }
- },
- "eslint-plugin-promise": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz",
- "integrity": "sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg==",
- "dev": true
- },
- "eslint-plugin-react": {
- "version": "7.11.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz",
- "integrity": "sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw==",
- "dev": true,
- "requires": {
- "array-includes": "3.0.3",
- "doctrine": "2.1.0",
- "has": "1.0.3",
- "jsx-ast-utils": "2.0.1",
- "prop-types": "15.6.2"
- }
- },
- "eslint-plugin-standard": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.0.tgz",
- "integrity": "sha512-OwxJkR6TQiYMmt1EsNRMe5qG3GsbjlcOhbGUBY4LtavF9DsLaTcoR+j2Tdjqi23oUwKNUqX7qcn5fPStafMdlA==",
- "dev": true
- },
"eslint-scope": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz",
@@ -2782,12 +3027,12 @@
"dev": true
},
"espree": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz",
- "integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz",
+ "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==",
"dev": true,
"requires": {
- "acorn": "6.0.5",
+ "acorn": "6.1.1",
"acorn-jsx": "5.0.1",
"eslint-visitor-keys": "1.0.0"
}
@@ -2828,6 +3073,22 @@
"integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
"dev": true
},
+ "events": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz",
+ "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==",
+ "dev": true
+ },
+ "evp_bytestokey": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "dev": true,
+ "requires": {
+ "md5.js": "1.3.5",
+ "safe-buffer": "5.1.2"
+ }
+ },
"execa": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
@@ -2871,15 +3132,6 @@
"to-regex": "3.0.2"
},
"dependencies": {
- "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"
- }
- },
"define-property": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
@@ -2900,6 +3152,15 @@
}
}
},
+ "expand-tilde": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+ "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
+ "dev": true,
+ "requires": {
+ "homedir-polyfill": "1.0.3"
+ }
+ },
"extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
@@ -2928,12 +3189,12 @@
}
},
"external-editor": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz",
- "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz",
+ "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==",
"dev": true,
"requires": {
- "chardet": "0.4.2",
+ "chardet": "0.7.0",
"iconv-lite": "0.4.24",
"tmp": "0.0.33"
}
@@ -3030,6 +3291,12 @@
"websocket-driver": "0.7.0"
}
},
+ "figgy-pudding": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz",
+ "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==",
+ "dev": true
+ },
"figures": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
@@ -3040,13 +3307,12 @@
}
},
"file-entry-cache": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
- "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
+ "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
"dev": true,
"requires": {
- "flat-cache": "1.3.4",
- "object-assign": "4.1.1"
+ "flat-cache": "2.0.1"
}
},
"fill-range": {
@@ -3072,38 +3338,70 @@
}
}
},
- "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-cache-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz",
+ "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=",
+ "dev": true,
+ "requires": {
+ "commondir": "1.0.1",
+ "make-dir": "1.3.0",
+ "pkg-dir": "2.0.0"
+ }
},
"find-up": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
- "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "2.0.0"
+ }
+ },
+ "findup-sync": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
+ "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=",
"dev": true,
"requires": {
- "path-exists": "2.1.0",
- "pinkie-promise": "2.0.1"
+ "detect-file": "1.0.0",
+ "is-glob": "3.1.0",
+ "micromatch": "3.1.10",
+ "resolve-dir": "1.0.1"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "2.1.1"
+ }
+ }
}
},
"flat-cache": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz",
- "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
+ "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
"dev": true,
"requires": {
- "circular-json": "0.3.3",
- "graceful-fs": "4.1.15",
+ "flatted": "2.0.0",
"rimraf": "2.6.3",
- "write": "0.2.1"
+ "write": "1.0.3"
}
},
+ "flatted": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz",
+ "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==",
+ "dev": true
+ },
"flush-write-stream": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz",
- "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
+ "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
"dev": true,
"requires": {
"inherits": "2.0.3",
@@ -3125,1314 +3423,3316 @@
"map-cache": "0.2.2"
}
},
- "fs-mkdirp-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz",
- "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=",
+ "from2": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
+ "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
"dev": true,
"requires": {
- "graceful-fs": "4.1.15",
- "through2": "2.0.5"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
- "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
- },
- "functional-red-black-tree": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
- "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
- "dev": true
- },
- "get-caller-file": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
- "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
- "dev": true
- },
- "get-func-name": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
- "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
- "dev": true
- },
- "get-port": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.1.0.tgz",
- "integrity": "sha512-4/fqAYrzrzOiqDrdeZRKXGdTGgbkfTEumGlNQPeP6Jy8w0PzN9mzeNQ3XgHaTNie8pQ3hOUkrwlZt2Fzk5H9mA==",
- "dev": true
- },
- "get-stdin": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz",
- "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==",
- "dev": true
- },
- "get-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
- "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
- "dev": true
- },
- "get-value": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
- "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
- "dev": true
- },
- "git-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/git-up/-/git-up-2.1.0.tgz",
- "integrity": "sha512-MJgwfcSd9qxgDyEYpRU/CDxNpUadrK80JHuEQDG4Urn0m7tpSOgCBrtiSIa9S9KH8Tbuo/TN8SSQmJBvsw1HkA==",
- "dev": true,
- "requires": {
- "is-ssh": "1.3.1",
- "parse-url": "3.0.2"
- }
- },
- "git-url-parse": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-10.1.0.tgz",
- "integrity": "sha512-goZOORAtFjU1iG+4zZgWq+N7It09PqS3Xsy43ZwhP5unDD0tTSmXTpqULHodMdJXGejm3COwXIhIRT6Z8DYVZQ==",
- "dev": true,
- "requires": {
- "git-up": "2.1.0"
- }
- },
- "github-slugger": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.2.0.tgz",
- "integrity": "sha512-wIaa75k1vZhyPm9yWrD08A5Xnx/V+RmzGrpjQuLemGKSb77Qukiaei58Bogrl/LZSADDfPzKJX8jhLs4CRTl7Q==",
- "dev": true,
- "requires": {
- "emoji-regex": "6.1.1"
- }
- },
- "glob": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
- "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
- "dev": true,
- "requires": {
- "fs.realpath": "1.0.0",
- "inflight": "1.0.6",
"inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
- }
- },
- "glob-parent": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
- "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
- "dev": true,
- "requires": {
- "is-glob": "3.1.0",
- "path-dirname": "1.0.2"
- },
- "dependencies": {
- "is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
- "dev": true,
- "requires": {
- "is-extglob": "2.1.1"
- }
- }
+ "readable-stream": "2.3.6"
}
},
- "glob-stream": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz",
- "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=",
+ "fs-mkdirp-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz",
+ "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=",
"dev": true,
"requires": {
- "extend": "3.0.2",
- "glob": "7.1.2",
- "glob-parent": "3.1.0",
- "is-negated-glob": "1.0.0",
- "ordered-read-streams": "1.0.1",
- "pumpify": "1.5.1",
- "readable-stream": "2.3.6",
- "remove-trailing-separator": "1.1.0",
- "to-absolute-glob": "2.0.2",
- "unique-stream": "2.3.1"
+ "graceful-fs": "4.1.15",
+ "through2": "2.0.5"
}
},
- "globals": {
- "version": "11.10.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz",
- "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==",
- "dev": true
- },
- "globals-docs": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/globals-docs/-/globals-docs-2.4.0.tgz",
- "integrity": "sha512-B69mWcqCmT3jNYmSxRxxOXWfzu3Go8NQXPfl2o0qPd1EEFhwW0dFUg9ztTu915zPQzqwIhWAlw6hmfIcCK4kkQ==",
- "dev": true
- },
- "graceful-fs": {
- "version": "4.1.15",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
- "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==",
- "dev": true
- },
- "growl": {
- "version": "1.10.5",
- "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
- "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
+ "fs-readdir-recursive": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz",
+ "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==",
"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": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "fs-write-stream-atomic": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
+ "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
"dev": true,
"requires": {
- "ansi-regex": "2.1.1"
+ "graceful-fs": "4.1.15",
+ "iferr": "0.1.5",
+ "imurmurhash": "0.1.4",
+ "readable-stream": "2.3.6"
}
},
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
- },
- "has-symbols": {
+ "fs.realpath": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
- "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
- "has-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
- "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
- "dev": true,
- "requires": {
- "get-value": "2.0.6",
- "has-values": "1.0.0",
- "isobject": "3.0.1"
- }
- },
- "has-values": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
- "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+ "fsevents": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz",
+ "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==",
"dev": true,
+ "optional": true,
"requires": {
- "is-number": "3.0.0",
- "kind-of": "4.0.0"
+ "nan": "2.12.1",
+ "node-pre-gyp": "0.10.3"
},
"dependencies": {
- "kind-of": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
- "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "abbrev": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "bundled": true,
"dev": true,
+ "optional": true
+ },
+ "are-we-there-yet": {
+ "version": "1.1.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
"requires": {
- "is-buffer": "1.1.6"
+ "delegates": "1.0.0",
+ "readable-stream": "2.3.6"
}
- }
- }
- },
- "hash-base": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
- "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
- "requires": {
- "inherits": "2.0.3",
- "safe-buffer": "5.1.2"
- }
- },
- "hast-util-is-element": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.0.2.tgz",
- "integrity": "sha512-4MEtyofNi3ZunPFrp9NpTQdNPN24xvLX3M+Lr/RGgPX6TLi+wR4/DqeoyQ7lwWcfUp4aevdt4RR0r7ZQPFbHxw==",
- "dev": true
- },
- "hast-util-sanitize": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-1.3.0.tgz",
- "integrity": "sha512-rQeetoD08jHmDOUYN6h9vTuE0hQN4wymhtkQZ6whHtcjaLpjw5RYAbcdxx9cMgMWERDsSs79UpqHuBLlUHKeOw==",
- "dev": true,
- "requires": {
- "xtend": "4.0.1"
- }
- },
- "hast-util-to-html": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-4.0.1.tgz",
- "integrity": "sha512-2emzwyf0xEsc4TBIPmDJmBttIw8R4SXAJiJZoiRR/s47ODYWgOqNoDbf2SJAbMbfNdFWMiCSOrI3OVnX6Qq2Mg==",
- "dev": true,
- "requires": {
- "ccount": "1.0.3",
- "comma-separated-tokens": "1.0.5",
- "hast-util-is-element": "1.0.2",
- "hast-util-whitespace": "1.0.2",
- "html-void-elements": "1.0.3",
- "property-information": "4.2.0",
- "space-separated-tokens": "1.1.2",
- "stringify-entities": "1.3.2",
- "unist-util-is": "2.1.2",
- "xtend": "4.0.1"
- }
- },
- "hast-util-whitespace": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.2.tgz",
- "integrity": "sha512-4JT8B0HKPHBMFZdDQzexjxwhKx9TrpV/+uelvmqlPu8RqqDrnNIEHDtDZCmgE+4YmcFAtKVPLmnY3dQGRaN53A==",
- "dev": true
- },
- "he": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
- "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
- "dev": true
- },
- "highlight.js": {
- "version": "9.13.1",
- "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.13.1.tgz",
- "integrity": "sha512-Sc28JNQNDzaH6PORtRLMvif9RSn1mYuOoX3omVjnb0+HbpPygU2ALBI0R/wsiqCb4/fcp07Gdo8g+fhtFrQl6A==",
- "dev": true
- },
- "hosted-git-info": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
- "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
- "dev": true
- },
- "html-void-elements": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.3.tgz",
- "integrity": "sha512-SaGhCDPXJVNrQyKMtKy24q6IMdXg5FCPN3z+xizxw9l+oXQw5fOoaj/ERU5KqWhSYhXtW5bWthlDbTDLBhJQrA==",
- "dev": true
- },
- "http-parser-js": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz",
- "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==",
- "dev": true
- },
- "iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dev": true,
- "requires": {
- "safer-buffer": "2.1.2"
- }
- },
- "ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true
- },
- "imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "dev": true,
- "requires": {
- "once": "1.4.0",
- "wrappy": "1.0.2"
- }
- },
- "inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
- },
- "ini": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
- "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
- "dev": true
- },
- "inquirer": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz",
- "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==",
- "dev": true,
- "requires": {
- "ansi-escapes": "3.1.0",
- "chalk": "2.4.2",
- "cli-cursor": "2.1.0",
- "cli-width": "2.2.0",
- "external-editor": "2.2.0",
- "figures": "2.0.0",
- "lodash": "4.17.11",
- "mute-stream": "0.0.7",
- "run-async": "2.3.0",
- "rxjs": "5.5.12",
- "string-width": "2.1.1",
- "strip-ansi": "4.0.0",
- "through": "2.3.8"
- }
- },
- "invariant": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
- "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
- "dev": true,
- "requires": {
- "loose-envify": "1.4.0"
- }
- },
- "invert-kv": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
- "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
- "dev": true
- },
- "ip-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-3.0.0.tgz",
- "integrity": "sha512-T8wDtjy+Qf2TAPDQmBp0eGKJ8GavlWlUnamr3wRn6vvdZlKVuJXXMlSncYFRYgVHOM3If5NR1H4+OvVQU9Idvg=="
- },
- "is-absolute": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
- "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
- "dev": true,
- "requires": {
- "is-relative": "1.0.0",
- "is-windows": "1.0.2"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dev": true,
- "requires": {
- "kind-of": "3.2.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "bundled": true,
"dev": true,
"requires": {
- "is-buffer": "1.1.6"
+ "balanced-match": "1.0.0",
+ "concat-map": "0.0.1"
}
- }
- }
- },
- "is-alphabetical": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.2.tgz",
- "integrity": "sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg==",
- "dev": true
- },
- "is-alphanumeric": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz",
- "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=",
- "dev": true
- },
- "is-alphanumerical": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz",
- "integrity": "sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg==",
- "dev": true,
- "requires": {
- "is-alphabetical": "1.0.2",
- "is-decimal": "1.0.2"
- }
- },
- "is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
- "dev": true
- },
- "is-binary-path": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
- "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
- "dev": true,
- "requires": {
- "binary-extensions": "1.12.0"
- }
- },
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "is-builtin-module": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
- "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
- "dev": true,
- "requires": {
- "builtin-modules": "1.1.1"
- }
- },
- "is-callable": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
- "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
- "dev": true
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dev": true,
- "requires": {
- "kind-of": "3.2.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ },
+ "chownr": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "bundled": true,
"dev": true,
+ "optional": true,
"requires": {
- "is-buffer": "1.1.6"
+ "ms": "2.0.0"
}
- }
- }
- },
- "is-date-object": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
- "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
- "dev": true
- },
- "is-decimal": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.2.tgz",
- "integrity": "sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg==",
- "dev": true
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "0.1.6",
- "is-data-descriptor": "0.1.4",
- "kind-of": "5.1.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
- }
- },
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
- "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": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
- "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
- "dev": true,
- "requires": {
- "is-extglob": "2.1.1"
- }
- },
- "is-hexadecimal": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz",
- "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==",
- "dev": true
- },
- "is-negated-glob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz",
- "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=",
- "dev": true
- },
- "is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "dev": true,
- "requires": {
- "kind-of": "3.2.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ },
+ "deep-extend": {
+ "version": "0.6.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "detect-libc": {
+ "version": "1.0.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "fs-minipass": {
+ "version": "1.2.5",
+ "bundled": true,
"dev": true,
+ "optional": true,
"requires": {
- "is-buffer": "1.1.6"
+ "minipass": "2.3.5"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "aproba": "1.2.0",
+ "console-control-strings": "1.1.0",
+ "has-unicode": "2.0.1",
+ "object-assign": "4.1.1",
+ "signal-exit": "3.0.2",
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1",
+ "wide-align": "1.1.3"
+ }
+ },
+ "glob": {
+ "version": "7.1.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safer-buffer": "2.1.2"
+ }
+ },
+ "ignore-walk": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minimatch": "3.0.4"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true,
+ "dev": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.11"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "bundled": true,
+ "dev": true
+ },
+ "minipass": {
+ "version": "2.3.5",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.1.2",
+ "yallist": "3.0.3"
+ }
+ },
+ "minizlib": {
+ "version": "1.2.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minipass": "2.3.5"
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "needle": {
+ "version": "2.2.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "debug": "2.6.9",
+ "iconv-lite": "0.4.24",
+ "sax": "1.2.4"
+ }
+ },
+ "node-pre-gyp": {
+ "version": "0.10.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "detect-libc": "1.0.3",
+ "mkdirp": "0.5.1",
+ "needle": "2.2.4",
+ "nopt": "4.0.1",
+ "npm-packlist": "1.2.0",
+ "npmlog": "4.1.2",
+ "rc": "1.2.8",
+ "rimraf": "2.6.3",
+ "semver": "5.6.0",
+ "tar": "4.4.8"
}
+ },
+ "nopt": {
+ "version": "4.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "abbrev": "1.1.1",
+ "osenv": "0.1.5"
+ }
+ },
+ "npm-bundled": {
+ "version": "1.0.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "npm-packlist": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ignore-walk": "3.0.1",
+ "npm-bundled": "1.0.5"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "are-we-there-yet": "1.1.5",
+ "console-control-strings": "1.1.0",
+ "gauge": "2.7.4",
+ "set-blocking": "2.0.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "wrappy": "1.0.2"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "os-homedir": "1.0.2",
+ "os-tmpdir": "1.0.2"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "rc": {
+ "version": "1.2.8",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "deep-extend": "0.6.0",
+ "ini": "1.3.5",
+ "minimist": "1.2.0",
+ "strip-json-comments": "2.0.1"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "2.0.0",
+ "safe-buffer": "5.1.2",
+ "string_decoder": "1.1.1",
+ "util-deprecate": "1.0.2"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "glob": "7.1.3"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "bundled": true,
+ "dev": true
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "semver": {
+ "version": "5.6.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "tar": {
+ "version": "4.4.8",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "chownr": "1.1.1",
+ "fs-minipass": "1.2.5",
+ "minipass": "2.3.5",
+ "minizlib": "1.2.1",
+ "mkdirp": "0.5.1",
+ "safe-buffer": "5.1.2",
+ "yallist": "3.0.3"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "wide-align": {
+ "version": "1.1.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "string-width": "1.0.2"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "yallist": {
+ "version": "3.0.3",
+ "bundled": true,
+ "dev": true
}
}
},
- "is-plain-obj": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
- "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
"dev": true
},
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "requires": {
- "isobject": "3.0.1"
- }
+ "functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+ "dev": true
},
- "is-promise": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
- "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
+ "get-caller-file": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
+ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
"dev": true
},
- "is-regex": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
- "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+ "get-func-name": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
+ "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
+ "dev": true
+ },
+ "get-port": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.1.0.tgz",
+ "integrity": "sha512-4/fqAYrzrzOiqDrdeZRKXGdTGgbkfTEumGlNQPeP6Jy8w0PzN9mzeNQ3XgHaTNie8pQ3hOUkrwlZt2Fzk5H9mA==",
+ "dev": true
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+ "dev": true
+ },
+ "get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+ "dev": true
+ },
+ "git-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/git-up/-/git-up-2.1.0.tgz",
+ "integrity": "sha512-MJgwfcSd9qxgDyEYpRU/CDxNpUadrK80JHuEQDG4Urn0m7tpSOgCBrtiSIa9S9KH8Tbuo/TN8SSQmJBvsw1HkA==",
"dev": true,
"requires": {
- "has": "1.0.3"
+ "is-ssh": "1.3.1",
+ "parse-url": "3.0.2"
}
},
- "is-relative": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
- "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
+ "git-url-parse": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-10.1.0.tgz",
+ "integrity": "sha512-goZOORAtFjU1iG+4zZgWq+N7It09PqS3Xsy43ZwhP5unDD0tTSmXTpqULHodMdJXGejm3COwXIhIRT6Z8DYVZQ==",
"dev": true,
"requires": {
- "is-unc-path": "1.0.0"
+ "git-up": "2.1.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-ssh": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.1.tgz",
- "integrity": "sha512-0eRIASHZt1E68/ixClI8bp2YK2wmBPVWEismTs6M+M099jKgrzl/3E976zIbImSIob48N2/XGe9y7ZiYdImSlg==",
+ "github-slugger": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.2.0.tgz",
+ "integrity": "sha512-wIaa75k1vZhyPm9yWrD08A5Xnx/V+RmzGrpjQuLemGKSb77Qukiaei58Bogrl/LZSADDfPzKJX8jhLs4CRTl7Q==",
"dev": true,
"requires": {
- "protocols": "1.4.7"
+ "emoji-regex": "6.1.1"
+ },
+ "dependencies": {
+ "emoji-regex": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.1.tgz",
+ "integrity": "sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4=",
+ "dev": true
+ }
}
},
- "is-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
- "dev": true
- },
- "is-symbol": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
- "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
+ "glob": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
"dev": true,
"requires": {
- "has-symbols": "1.0.0"
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
}
},
- "is-unc-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
- "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
"dev": true,
"requires": {
- "unc-path-regex": "0.1.2"
+ "is-glob": "3.1.0",
+ "path-dirname": "1.0.2"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "2.1.1"
+ }
+ }
}
},
- "is-utf8": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
- "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
- "dev": true
+ "glob-stream": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz",
+ "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=",
+ "dev": true,
+ "requires": {
+ "extend": "3.0.2",
+ "glob": "7.1.3",
+ "glob-parent": "3.1.0",
+ "is-negated-glob": "1.0.0",
+ "ordered-read-streams": "1.0.1",
+ "pumpify": "1.5.1",
+ "readable-stream": "2.3.6",
+ "remove-trailing-separator": "1.1.0",
+ "to-absolute-glob": "2.0.2",
+ "unique-stream": "2.3.1"
+ }
},
- "is-valid-glob": {
+ "global-modules": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz",
- "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=",
- "dev": true
- },
- "is-whitespace-character": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.2.tgz",
- "integrity": "sha512-SzM+T5GKUCtLhlHFKt2SDAX2RFzfS6joT91F2/WSi9LxgFdsnhfPK/UIA+JhRR2xuyLdrCys2PiFDrtn1fU5hQ==",
- "dev": true
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
+ "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+ "dev": true,
+ "requires": {
+ "global-prefix": "1.0.2",
+ "is-windows": "1.0.2",
+ "resolve-dir": "1.0.1"
+ }
},
- "is-windows": {
+ "global-prefix": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
- "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
- "dev": true
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
+ "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
+ "dev": true,
+ "requires": {
+ "expand-tilde": "2.0.2",
+ "homedir-polyfill": "1.0.3",
+ "ini": "1.3.5",
+ "is-windows": "1.0.2",
+ "which": "1.3.1"
+ }
},
- "is-word-character": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.2.tgz",
- "integrity": "sha512-T3FlsX8rCHAH8e7RE7PfOPZVFQlcV3XRF9eOOBQ1uf70OxO7CjjSOjeImMPCADBdYWcStAbVbYvJ1m2D3tb+EA==",
+ "globals": {
+ "version": "11.11.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz",
+ "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==",
"dev": true
},
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "globals-docs": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/globals-docs/-/globals-docs-2.4.0.tgz",
+ "integrity": "sha512-B69mWcqCmT3jNYmSxRxxOXWfzu3Go8NQXPfl2o0qPd1EEFhwW0dFUg9ztTu915zPQzqwIhWAlw6hmfIcCK4kkQ==",
"dev": true
},
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "graceful-fs": {
+ "version": "4.1.15",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
+ "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==",
"dev": true
},
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "growl": {
+ "version": "1.10.5",
+ "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
+ "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
"dev": true
},
- "js-levenshtein": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz",
- "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==",
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"dev": true
},
- "js-sha3": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz",
- "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q=="
- },
- "js-tokens": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
- "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+ "has-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
+ "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
"dev": true
},
- "js-yaml": {
- "version": "3.12.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz",
- "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==",
+ "has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
"dev": true,
"requires": {
- "argparse": "1.0.10",
- "esprima": "4.0.1"
+ "get-value": "2.0.6",
+ "has-values": "1.0.0",
+ "isobject": "3.0.1"
}
},
- "jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true
- },
- "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-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
- "dev": true
- },
- "json5": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz",
- "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==",
+ "has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
"dev": true,
"requires": {
- "minimist": "1.2.0"
+ "is-number": "3.0.0",
+ "kind-of": "4.0.0"
},
"dependencies": {
- "minimist": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
- "dev": true
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
}
}
},
- "jsonparse": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
- "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
- "dev": true
- },
- "jsx-ast-utils": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz",
- "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=",
- "dev": true,
- "requires": {
- "array-includes": "3.0.3"
- }
- },
- "kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
- "dev": true
- },
- "lazystream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
- "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
- "dev": true,
- "requires": {
- "readable-stream": "2.3.6"
- }
- },
- "lcid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
- "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
- "dev": true,
- "requires": {
- "invert-kv": "1.0.0"
- }
- },
- "lead": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz",
- "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=",
+ "hash-base": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
+ "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
"dev": true,
"requires": {
- "flush-write-stream": "1.0.3"
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.2"
}
},
- "levn": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
- "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "hash.js": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
+ "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
"dev": true,
"requires": {
- "prelude-ls": "1.1.2",
- "type-check": "0.3.2"
+ "inherits": "2.0.3",
+ "minimalistic-assert": "1.0.1"
}
},
- "livereload-js": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz",
- "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==",
+ "hast-util-is-element": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.0.2.tgz",
+ "integrity": "sha512-4MEtyofNi3ZunPFrp9NpTQdNPN24xvLX3M+Lr/RGgPX6TLi+wR4/DqeoyQ7lwWcfUp4aevdt4RR0r7ZQPFbHxw==",
"dev": true
},
- "load-json-file": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
- "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+ "hast-util-sanitize": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-1.3.0.tgz",
+ "integrity": "sha512-rQeetoD08jHmDOUYN6h9vTuE0hQN4wymhtkQZ6whHtcjaLpjw5RYAbcdxx9cMgMWERDsSs79UpqHuBLlUHKeOw==",
"dev": true,
"requires": {
- "graceful-fs": "4.1.15",
- "parse-json": "2.2.0",
- "pify": "2.3.0",
- "strip-bom": "3.0.0"
+ "xtend": "4.0.1"
}
},
- "locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "hast-util-to-html": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-4.0.1.tgz",
+ "integrity": "sha512-2emzwyf0xEsc4TBIPmDJmBttIw8R4SXAJiJZoiRR/s47ODYWgOqNoDbf2SJAbMbfNdFWMiCSOrI3OVnX6Qq2Mg==",
"dev": true,
"requires": {
- "p-locate": "2.0.0",
- "path-exists": "3.0.0"
- },
- "dependencies": {
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- }
+ "ccount": "1.0.3",
+ "comma-separated-tokens": "1.0.5",
+ "hast-util-is-element": "1.0.2",
+ "hast-util-whitespace": "1.0.2",
+ "html-void-elements": "1.0.3",
+ "property-information": "4.2.0",
+ "space-separated-tokens": "1.1.2",
+ "stringify-entities": "1.3.2",
+ "unist-util-is": "2.1.2",
+ "xtend": "4.0.1"
}
},
- "lodash": {
- "version": "4.17.11",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
- "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
+ "hast-util-whitespace": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.2.tgz",
+ "integrity": "sha512-4JT8B0HKPHBMFZdDQzexjxwhKx9TrpV/+uelvmqlPu8RqqDrnNIEHDtDZCmgE+4YmcFAtKVPLmnY3dQGRaN53A==",
"dev": true
},
- "lodash.debounce": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
- "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
+ "he": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
+ "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
"dev": true
},
- "longest-streak": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.2.tgz",
- "integrity": "sha512-TmYTeEYxiAmSVdpbnQDXGtvYOIRsCMg89CVZzwzc2o7GFL1CjoiRPjH5ec0NFAVlAx3fVof9dX/t6KKRAo2OWA==",
+ "highlight.js": {
+ "version": "9.15.6",
+ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.15.6.tgz",
+ "integrity": "sha512-zozTAWM1D6sozHo8kqhfYgsac+B+q0PmsjXeyDrYIHHcBN0zTVT66+s2GW1GZv7DbyaROdLXKdabwS/WqPyIdQ==",
"dev": true
},
- "loose-envify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "dev": true,
- "requires": {
- "js-tokens": "3.0.2"
- }
- },
- "lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "hmac-drbg": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
"dev": true,
"requires": {
- "pseudomap": "1.0.2",
- "yallist": "2.1.2"
+ "hash.js": "1.1.7",
+ "minimalistic-assert": "1.0.1",
+ "minimalistic-crypto-utils": "1.0.1"
}
},
- "map-cache": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
- "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+ "home-or-tmp": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-3.0.0.tgz",
+ "integrity": "sha1-V6j+JM8zzdUkhgoVgh3cJchmcfs=",
"dev": true
},
- "map-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
- "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "homedir-polyfill": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
+ "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
"dev": true,
"requires": {
- "object-visit": "1.0.1"
+ "parse-passwd": "1.0.0"
}
},
- "markdown-escapes": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.2.tgz",
- "integrity": "sha512-lbRZ2mE3Q9RtLjxZBZ9+IMl68DKIXaVAhwvwn9pmjnPLS0h/6kyBMgNhqi1xFJ/2yv6cSyv0jbiZavZv93JkkA==",
+ "hosted-git-info": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
+ "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
"dev": true
},
- "markdown-table": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.2.tgz",
- "integrity": "sha512-NcWuJFHDA8V3wkDgR/j4+gZx+YQwstPgfQDV8ndUeWWzta3dnDTBxpVzqS9lkmJAuV5YX35lmyojl6HO5JXAgw==",
+ "html-void-elements": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.3.tgz",
+ "integrity": "sha512-SaGhCDPXJVNrQyKMtKy24q6IMdXg5FCPN3z+xizxw9l+oXQw5fOoaj/ERU5KqWhSYhXtW5bWthlDbTDLBhJQrA==",
"dev": true
},
- "md5.js": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
- "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
- "requires": {
- "hash-base": "3.0.4",
- "inherits": "2.0.3",
- "safe-buffer": "5.1.2"
- }
+ "http-parser-js": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz",
+ "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==",
+ "dev": true
},
- "mdast-util-compact": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.2.tgz",
- "integrity": "sha512-d2WS98JSDVbpSsBfVvD9TaDMlqPRz7ohM/11G0rp5jOBb5q96RJ6YLszQ/09AAixyzh23FeIpCGqfaamEADtWg==",
+ "https-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
+ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
+ "dev": true
+ },
+ "https-proxy-agent": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz",
+ "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==",
"dev": true,
"requires": {
- "unist-util-visit": "1.4.0"
+ "agent-base": "4.2.1",
+ "debug": "3.2.6"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
+ }
}
},
- "mdast-util-definitions": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-1.2.3.tgz",
- "integrity": "sha512-P6wpRO8YVQ1iv30maMc93NLh7COvufglBE8/ldcOyYmk5EbfF0YeqlLgtqP/FOBU501Kqar1x5wYWwB3Nga74g==",
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"dev": true,
"requires": {
- "unist-util-visit": "1.4.0"
+ "safer-buffer": "2.1.2"
}
},
- "mdast-util-inject": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-inject/-/mdast-util-inject-1.1.0.tgz",
- "integrity": "sha1-2wa4tYW+lZotzS+H9HK6m3VvNnU=",
+ "ieee754": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz",
+ "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==",
+ "dev": true
+ },
+ "iferr": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
+ "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
+ "dev": true
+ },
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true
+ },
+ "ignore-walk": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz",
+ "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==",
"dev": true,
"requires": {
- "mdast-util-to-string": "1.0.5"
+ "minimatch": "3.0.4"
}
},
- "mdast-util-to-hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-3.0.4.tgz",
- "integrity": "sha512-/eIbly2YmyVgpJNo+bFLLMCI1XgolO/Ffowhf+pHDq3X4/V6FntC9sGQCDLM147eTS+uSXv5dRzJyFn+o0tazA==",
+ "import-fresh": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz",
+ "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==",
"dev": true,
"requires": {
- "collapse-white-space": "1.0.4",
- "detab": "2.0.1",
- "mdast-util-definitions": "1.2.3",
- "mdurl": "1.0.1",
- "trim": "0.0.1",
- "trim-lines": "1.1.1",
- "unist-builder": "1.0.3",
- "unist-util-generated": "1.1.3",
- "unist-util-position": "3.0.2",
- "unist-util-visit": "1.4.0",
- "xtend": "4.0.1"
+ "parent-module": "1.0.0",
+ "resolve-from": "4.0.0"
}
},
- "mdast-util-to-string": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.0.5.tgz",
- "integrity": "sha512-2qLt/DEOo5F6nc2VFScQiHPzQ0XXcabquRJxKMhKte8nt42o08HUxNDPk7tt0YPxnWjAT11I1SYi0X0iPnfI5A==",
- "dev": true
- },
- "mdast-util-toc": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-toc/-/mdast-util-toc-3.0.1.tgz",
- "integrity": "sha512-Z8lKq6sQr/vDNIcUkIWzPwKo5JQIzlDLouZuzIMVajOdUAyjnkA+s98RhjVpFt7SiuJzase9oh6Iw7n4zhVNDQ==",
+ "import-local": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
+ "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
"dev": true,
"requires": {
- "github-slugger": "1.2.0",
- "mdast-util-to-string": "1.0.5",
- "unist-util-visit": "1.4.0"
- }
+ "pkg-dir": "3.0.0",
+ "resolve-cwd": "2.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "3.0.0",
+ "path-exists": "3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz",
+ "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==",
+ "dev": true,
+ "requires": {
+ "p-try": "2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "2.1.0"
+ }
+ },
+ "p-try": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
+ "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
+ "dev": true
+ },
+ "pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "dev": true,
+ "requires": {
+ "find-up": "3.0.0"
+ }
+ }
+ }
},
- "mdurl": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
- "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=",
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
"dev": true
},
- "mem": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
- "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
+ "indexof": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
+ "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"dev": true,
"requires": {
- "mimic-fn": "1.2.0"
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
}
},
- "micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
+ "dev": true
+ },
+ "inquirer": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.2.tgz",
+ "integrity": "sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==",
"dev": true,
"requires": {
- "arr-diff": "4.0.0",
- "array-unique": "0.3.2",
- "braces": "2.3.2",
- "define-property": "2.0.2",
- "extend-shallow": "3.0.2",
- "extglob": "2.0.4",
- "fragment-cache": "0.2.1",
- "kind-of": "6.0.2",
- "nanomatch": "1.2.13",
- "object.pick": "1.3.0",
- "regex-not": "1.0.2",
- "snapdragon": "0.8.2",
- "to-regex": "3.0.2"
+ "ansi-escapes": "3.2.0",
+ "chalk": "2.4.2",
+ "cli-cursor": "2.1.0",
+ "cli-width": "2.2.0",
+ "external-editor": "3.0.3",
+ "figures": "2.0.0",
+ "lodash": "4.17.11",
+ "mute-stream": "0.0.7",
+ "run-async": "2.3.0",
+ "rxjs": "6.4.0",
+ "string-width": "2.1.1",
+ "strip-ansi": "5.0.0",
+ "through": "2.3.8"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz",
+ "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz",
+ "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "4.0.0"
+ }
+ }
}
},
- "mime": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz",
- "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==",
+ "interpret": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz",
+ "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==",
"dev": true
},
- "mimic-fn": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
- "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+ "invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "dev": true,
+ "requires": {
+ "loose-envify": "1.4.0"
+ }
+ },
+ "invert-kv": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
+ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
"dev": true
},
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "is-absolute": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
+ "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
"dev": true,
"requires": {
- "brace-expansion": "1.1.11"
+ "is-relative": "1.0.0",
+ "is-windows": "1.0.2"
}
},
- "minimist": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
- "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "is-alphabetical": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.2.tgz",
+ "integrity": "sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg==",
"dev": true
},
- "mixin-deep": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
- "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
+ "is-alphanumeric": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz",
+ "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=",
+ "dev": true
+ },
+ "is-alphanumerical": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz",
+ "integrity": "sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg==",
"dev": true,
"requires": {
- "for-in": "1.0.2",
- "is-extendable": "1.0.1"
+ "is-alphabetical": "1.0.2",
+ "is-decimal": "1.0.2"
+ }
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "dev": true
+ },
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "dev": true,
+ "requires": {
+ "binary-extensions": "1.13.0"
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
},
"dependencies": {
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "is-decimal": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.2.tgz",
+ "integrity": "sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg==",
+ "dev": true
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "0.1.6",
+ "is-data-descriptor": "0.1.4",
+ "kind-of": "5.1.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "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": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
+ "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "2.1.1"
+ }
+ },
+ "is-hexadecimal": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz",
+ "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==",
+ "dev": true
+ },
+ "is-negated-glob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz",
+ "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=",
+ "dev": true
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+ "dev": true
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "3.0.1"
+ }
+ },
+ "is-promise": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
+ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
+ "dev": true
+ },
+ "is-relative": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
+ "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
+ "dev": true,
+ "requires": {
+ "is-unc-path": "1.0.0"
+ }
+ },
+ "is-ssh": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.1.tgz",
+ "integrity": "sha512-0eRIASHZt1E68/ixClI8bp2YK2wmBPVWEismTs6M+M099jKgrzl/3E976zIbImSIob48N2/XGe9y7ZiYdImSlg==",
+ "dev": true,
+ "requires": {
+ "protocols": "1.4.7"
+ }
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+ "dev": true
+ },
+ "is-unc-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
+ "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
+ "dev": true,
+ "requires": {
+ "unc-path-regex": "0.1.2"
+ }
+ },
+ "is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+ "dev": true
+ },
+ "is-valid-glob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz",
+ "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=",
+ "dev": true
+ },
+ "is-whitespace-character": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.2.tgz",
+ "integrity": "sha512-SzM+T5GKUCtLhlHFKt2SDAX2RFzfS6joT91F2/WSi9LxgFdsnhfPK/UIA+JhRR2xuyLdrCys2PiFDrtn1fU5hQ==",
+ "dev": true
+ },
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true
+ },
+ "is-word-character": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.2.tgz",
+ "integrity": "sha512-T3FlsX8rCHAH8e7RE7PfOPZVFQlcV3XRF9eOOBQ1uf70OxO7CjjSOjeImMPCADBdYWcStAbVbYvJ1m2D3tb+EA==",
+ "dev": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
+ "istanbul-lib-coverage": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz",
+ "integrity": "sha512-dKWuzRGCs4G+67VfW9pBFFz2Jpi4vSp/k7zBcJ888ofV5Mi1g5CUML5GvMvV6u9Cjybftu+E8Cgp+k0dI1E5lw==",
+ "dev": true
+ },
+ "istanbul-lib-instrument": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.0.tgz",
+ "integrity": "sha512-ooVllVGT38HIk8MxDj/OIHXSYvH+1tq/Vb38s8ixt9GoJadXska4WkGY+0wkmtYCZNYtaARniH/DixUGGLZ0uA==",
+ "dev": true,
+ "requires": {
+ "@babel/generator": "7.3.4",
+ "@babel/parser": "7.3.4",
+ "@babel/template": "7.2.2",
+ "@babel/traverse": "7.3.4",
+ "@babel/types": "7.3.4",
+ "istanbul-lib-coverage": "2.0.3",
+ "semver": "5.6.0"
+ }
+ },
+ "js-levenshtein": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz",
+ "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==",
+ "dev": true
+ },
+ "js-sha3": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz",
+ "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q=="
+ },
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.12.2",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.2.tgz",
+ "integrity": "sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q==",
+ "dev": true,
+ "requires": {
+ "argparse": "1.0.10",
+ "esprima": "4.0.1"
+ }
+ },
+ "jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "dev": true
+ },
+ "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-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+ "dev": true
+ },
+ "json5": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz",
+ "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==",
+ "dev": true,
+ "requires": {
+ "minimist": "1.2.0"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ }
+ }
+ },
+ "jsonparse": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
+ "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ },
+ "lazystream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
+ "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "2.3.6"
+ }
+ },
+ "lcid": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
+ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+ "dev": true,
+ "requires": {
+ "invert-kv": "1.0.0"
+ }
+ },
+ "lead": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz",
+ "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=",
+ "dev": true,
+ "requires": {
+ "flush-write-stream": "1.1.1"
+ }
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "1.1.2",
+ "type-check": "0.3.2"
+ }
+ },
+ "livereload-js": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz",
+ "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==",
+ "dev": true
+ },
+ "load-json-file": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.15",
+ "parse-json": "4.0.0",
+ "pify": "3.0.0",
+ "strip-bom": "3.0.0"
+ }
+ },
+ "loader-runner": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz",
+ "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==",
+ "dev": true
+ },
+ "loader-utils": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz",
+ "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==",
+ "dev": true,
+ "requires": {
+ "big.js": "5.2.2",
+ "emojis-list": "2.1.0",
+ "json5": "1.0.1"
+ },
+ "dependencies": {
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "requires": {
+ "minimist": "1.2.0"
+ }
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ }
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "2.0.0",
+ "path-exists": "3.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.11",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
+ "dev": true
+ },
+ "lodash.unescape": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz",
+ "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=",
+ "dev": true
+ },
+ "longest-streak": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.2.tgz",
+ "integrity": "sha512-TmYTeEYxiAmSVdpbnQDXGtvYOIRsCMg89CVZzwzc2o7GFL1CjoiRPjH5ec0NFAVlAx3fVof9dX/t6KKRAo2OWA==",
+ "dev": true
+ },
+ "loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "dev": true,
+ "requires": {
+ "js-tokens": "4.0.0"
+ }
+ },
+ "lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "dev": true,
+ "requires": {
+ "pseudomap": "1.0.2",
+ "yallist": "2.1.2"
+ }
+ },
+ "make-dir": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
+ "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+ "dev": true,
+ "requires": {
+ "pify": "3.0.0"
+ }
+ },
+ "mamacro": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz",
+ "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==",
+ "dev": true
+ },
+ "map-age-cleaner": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
+ "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
+ "dev": true,
+ "requires": {
+ "p-defer": "1.0.0"
+ }
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+ "dev": true
+ },
+ "map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "dev": true,
+ "requires": {
+ "object-visit": "1.0.1"
+ }
+ },
+ "markdown-escapes": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.2.tgz",
+ "integrity": "sha512-lbRZ2mE3Q9RtLjxZBZ9+IMl68DKIXaVAhwvwn9pmjnPLS0h/6kyBMgNhqi1xFJ/2yv6cSyv0jbiZavZv93JkkA==",
+ "dev": true
+ },
+ "markdown-table": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.2.tgz",
+ "integrity": "sha512-NcWuJFHDA8V3wkDgR/j4+gZx+YQwstPgfQDV8ndUeWWzta3dnDTBxpVzqS9lkmJAuV5YX35lmyojl6HO5JXAgw==",
+ "dev": true
+ },
+ "md5.js": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
+ "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
+ "dev": true,
+ "requires": {
+ "hash-base": "3.0.4",
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "mdast-util-compact": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.2.tgz",
+ "integrity": "sha512-d2WS98JSDVbpSsBfVvD9TaDMlqPRz7ohM/11G0rp5jOBb5q96RJ6YLszQ/09AAixyzh23FeIpCGqfaamEADtWg==",
+ "dev": true,
+ "requires": {
+ "unist-util-visit": "1.4.0"
+ }
+ },
+ "mdast-util-definitions": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-1.2.3.tgz",
+ "integrity": "sha512-P6wpRO8YVQ1iv30maMc93NLh7COvufglBE8/ldcOyYmk5EbfF0YeqlLgtqP/FOBU501Kqar1x5wYWwB3Nga74g==",
+ "dev": true,
+ "requires": {
+ "unist-util-visit": "1.4.0"
+ }
+ },
+ "mdast-util-inject": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-inject/-/mdast-util-inject-1.1.0.tgz",
+ "integrity": "sha1-2wa4tYW+lZotzS+H9HK6m3VvNnU=",
+ "dev": true,
+ "requires": {
+ "mdast-util-to-string": "1.0.5"
+ }
+ },
+ "mdast-util-to-hast": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-3.0.4.tgz",
+ "integrity": "sha512-/eIbly2YmyVgpJNo+bFLLMCI1XgolO/Ffowhf+pHDq3X4/V6FntC9sGQCDLM147eTS+uSXv5dRzJyFn+o0tazA==",
+ "dev": true,
+ "requires": {
+ "collapse-white-space": "1.0.4",
+ "detab": "2.0.1",
+ "mdast-util-definitions": "1.2.3",
+ "mdurl": "1.0.1",
+ "trim": "0.0.1",
+ "trim-lines": "1.1.1",
+ "unist-builder": "1.0.3",
+ "unist-util-generated": "1.1.3",
+ "unist-util-position": "3.0.2",
+ "unist-util-visit": "1.4.0",
+ "xtend": "4.0.1"
+ }
+ },
+ "mdast-util-to-string": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.0.5.tgz",
+ "integrity": "sha512-2qLt/DEOo5F6nc2VFScQiHPzQ0XXcabquRJxKMhKte8nt42o08HUxNDPk7tt0YPxnWjAT11I1SYi0X0iPnfI5A==",
+ "dev": true
+ },
+ "mdast-util-toc": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-toc/-/mdast-util-toc-3.1.0.tgz",
+ "integrity": "sha512-Za0hqL1PqWrvxGtA/3NH9D5nhGAUS9grMM4obEAz5+zsk1RIw/vWUchkaoDLNdrwk05A0CSC5eEXng36/1qE5w==",
+ "dev": true,
+ "requires": {
+ "github-slugger": "1.2.1",
+ "mdast-util-to-string": "1.0.5",
+ "unist-util-is": "2.1.2",
+ "unist-util-visit": "1.4.0"
+ },
+ "dependencies": {
+ "emoji-regex": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.1.tgz",
+ "integrity": "sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4=",
+ "dev": true
+ },
+ "github-slugger": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.2.1.tgz",
+ "integrity": "sha512-SsZUjg/P03KPzQBt7OxJPasGw6NRO5uOgiZ5RGXVud5iSIZ0eNZeNp5rTwCxtavrRUa/A77j8mePVc5lEvk0KQ==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "6.1.1"
+ }
+ }
+ }
+ },
+ "mdurl": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
+ "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=",
+ "dev": true
+ },
+ "mem": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
+ "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "1.2.0"
+ }
+ },
+ "memory-fs": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
+ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+ "dev": true,
+ "requires": {
+ "errno": "0.1.7",
+ "readable-stream": "2.3.6"
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "4.0.0",
+ "array-unique": "0.3.2",
+ "braces": "2.3.2",
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "extglob": "2.0.4",
+ "fragment-cache": "0.2.1",
+ "kind-of": "6.0.2",
+ "nanomatch": "1.2.13",
+ "object.pick": "1.3.0",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ }
+ },
+ "miller-rabin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
+ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "brorand": "1.1.0"
+ }
+ },
+ "mime": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz",
+ "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==",
+ "dev": true
+ },
+ "mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+ "dev": true
+ },
+ "minimalistic-assert": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
+ "dev": true
+ },
+ "minimalistic-crypto-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.11"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ },
+ "mississippi": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
+ "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
+ "dev": true,
+ "requires": {
+ "concat-stream": "1.6.2",
+ "duplexify": "3.7.1",
+ "end-of-stream": "1.4.1",
+ "flush-write-stream": "1.1.1",
+ "from2": "2.3.0",
+ "parallel-transform": "1.1.0",
+ "pump": "3.0.0",
+ "pumpify": "1.5.1",
+ "stream-each": "1.2.3",
+ "through2": "2.0.5"
+ },
+ "dependencies": {
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "1.4.1",
+ "once": "1.4.0"
+ }
+ }
+ }
+ },
+ "mixin-deep": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
+ "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
+ "dev": true,
+ "requires": {
+ "for-in": "1.0.2",
+ "is-extendable": "1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "2.0.4"
+ }
+ }
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "mocha": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz",
+ "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==",
+ "dev": true,
+ "requires": {
+ "browser-stdout": "1.3.1",
+ "commander": "2.15.1",
+ "debug": "3.1.0",
+ "diff": "3.5.0",
+ "escape-string-regexp": "1.0.5",
+ "glob": "7.1.2",
+ "growl": "1.10.5",
+ "he": "1.1.1",
+ "minimatch": "3.0.4",
+ "mkdirp": "0.5.1",
+ "supports-color": "5.4.0"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.15.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
+ "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==",
+ "dev": true
+ },
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "supports-color": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
+ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
+ "dev": true,
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "module-deps-sortable": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/module-deps-sortable/-/module-deps-sortable-5.0.0.tgz",
+ "integrity": "sha512-bnGGeghQmz/t/6771/KC4FmxpVm126iR6AAzzq4N6hVZQVl4+ZZBv+VF3PJmDyxXtVtgcgTSSP7NL+jq1QAHrg==",
+ "dev": true,
+ "requires": {
+ "JSONStream": "1.3.5",
+ "browser-resolve": "1.11.3",
+ "cached-path-relative": "1.0.2",
+ "concat-stream": "1.5.2",
+ "defined": "1.0.0",
+ "detective": "4.7.1",
+ "duplexer2": "0.1.4",
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.6",
+ "resolve": "1.10.0",
+ "stream-combiner2": "1.1.1",
+ "subarg": "1.0.0",
+ "through2": "2.0.5",
+ "xtend": "4.0.1"
+ },
+ "dependencies": {
+ "concat-stream": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz",
+ "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "readable-stream": "2.0.6",
+ "typedarray": "0.0.6"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
+ "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "string_decoder": "0.10.31",
+ "util-deprecate": "1.0.2"
+ }
+ }
+ }
+ },
+ "process-nextick-args": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
+ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ },
+ "move-concurrently": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
+ "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
+ "dev": true,
+ "requires": {
+ "aproba": "1.2.0",
+ "copy-concurrently": "1.0.5",
+ "fs-write-stream-atomic": "1.0.10",
+ "mkdirp": "0.5.1",
+ "rimraf": "2.6.3",
+ "run-queue": "1.0.3"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "mute-stream": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
+ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
+ "dev": true
+ },
+ "nan": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz",
+ "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==",
+ "dev": true,
+ "optional": true
+ },
+ "nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "4.0.0",
+ "array-unique": "0.3.2",
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "fragment-cache": "0.2.1",
+ "is-windows": "1.0.2",
+ "kind-of": "6.0.2",
+ "object.pick": "1.3.0",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ }
+ },
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "dev": true
+ },
+ "neo-async": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz",
+ "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==",
+ "dev": true
+ },
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
+ "node-fetch": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz",
+ "integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA==",
+ "dev": true
+ },
+ "node-libs-browser": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz",
+ "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==",
+ "dev": true,
+ "requires": {
+ "assert": "1.4.1",
+ "browserify-zlib": "0.2.0",
+ "buffer": "4.9.1",
+ "console-browserify": "1.1.0",
+ "constants-browserify": "1.0.0",
+ "crypto-browserify": "3.12.0",
+ "domain-browser": "1.2.0",
+ "events": "3.0.0",
+ "https-browserify": "1.0.0",
+ "os-browserify": "0.3.0",
+ "path-browserify": "0.0.0",
+ "process": "0.11.10",
+ "punycode": "1.4.1",
+ "querystring-es3": "0.2.1",
+ "readable-stream": "2.3.6",
+ "stream-browserify": "2.0.2",
+ "stream-http": "2.8.3",
+ "string_decoder": "1.1.1",
+ "timers-browserify": "2.0.10",
+ "tty-browserify": "0.0.0",
+ "url": "0.11.0",
+ "util": "0.11.1",
+ "vm-browserify": "0.0.4"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "dev": true
+ },
+ "util": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
+ "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3"
+ }
+ }
+ }
+ },
+ "node-modules-regexp": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz",
+ "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=",
+ "dev": true
+ },
+ "node-releases": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.8.tgz",
+ "integrity": "sha512-gQm+K9mGCiT/NXHy+V/ZZS1N/LOaGGqRAAJJs3X9Ah1g+CIbRcBgNyoNYQ+SEtcyAtB9KqDruu+fF7nWjsqRaA==",
+ "dev": true,
+ "requires": {
+ "semver": "5.6.0"
+ }
+ },
+ "normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "2.7.1",
+ "resolve": "1.10.0",
+ "semver": "5.6.0",
+ "validate-npm-package-license": "3.0.4"
+ }
+ },
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true
+ },
+ "normalize-url": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
+ "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
+ "dev": true,
+ "requires": {
+ "object-assign": "4.1.1",
+ "prepend-http": "1.0.4",
+ "query-string": "4.3.4",
+ "sort-keys": "1.1.2"
+ }
+ },
+ "now-and-later": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.0.tgz",
+ "integrity": "sha1-vGHLtFbXnLMiB85HygUTb/Ln1u4=",
+ "dev": true,
+ "requires": {
+ "once": "1.4.0"
+ }
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "dev": true,
+ "requires": {
+ "path-key": "2.0.1"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+ "dev": true
+ },
+ "nyc": {
+ "version": "13.3.0",
+ "resolved": "https://registry.npmjs.org/nyc/-/nyc-13.3.0.tgz",
+ "integrity": "sha512-P+FwIuro2aFG6B0Esd9ZDWUd51uZrAEoGutqZxzrVmYl3qSfkLgcQpBPBjtDFsUQLFY1dvTQJPOyeqr8S9GF8w==",
+ "dev": true,
+ "requires": {
+ "archy": "1.0.0",
+ "arrify": "1.0.1",
+ "caching-transform": "3.0.1",
+ "convert-source-map": "1.6.0",
+ "find-cache-dir": "2.0.0",
+ "find-up": "3.0.0",
+ "foreground-child": "1.5.6",
+ "glob": "7.1.3",
+ "istanbul-lib-coverage": "2.0.3",
+ "istanbul-lib-hook": "2.0.3",
+ "istanbul-lib-instrument": "3.1.0",
+ "istanbul-lib-report": "2.0.4",
+ "istanbul-lib-source-maps": "3.0.2",
+ "istanbul-reports": "2.1.1",
+ "make-dir": "1.3.0",
+ "merge-source-map": "1.1.0",
+ "resolve-from": "4.0.0",
+ "rimraf": "2.6.3",
+ "signal-exit": "3.0.2",
+ "spawn-wrap": "1.4.2",
+ "test-exclude": "5.1.0",
+ "uuid": "3.3.2",
+ "yargs": "12.0.5",
+ "yargs-parser": "11.1.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "append-transform": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "default-require-extensions": "2.0.0"
+ }
+ },
+ "archy": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "arrify": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "async": {
+ "version": "2.6.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "lodash": "4.17.11"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "balanced-match": "1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "caching-transform": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "hasha": "3.0.0",
+ "make-dir": "1.3.0",
+ "package-hash": "3.0.0",
+ "write-file-atomic": "2.4.2"
+ }
+ },
+ "camelcase": {
+ "version": "5.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "cliui": {
+ "version": "4.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "string-width": "2.1.1",
+ "strip-ansi": "4.0.0",
+ "wrap-ansi": "2.1.0"
+ }
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "commander": {
+ "version": "2.17.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "commondir": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "convert-source-map": {
+ "version": "1.6.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "cross-spawn": {
+ "version": "4.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "lru-cache": "4.1.5",
+ "which": "1.3.1"
+ }
+ },
+ "debug": {
+ "version": "4.1.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ms": "2.1.1"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true
+ },
+ "default-require-extensions": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "strip-bom": "3.0.0"
+ }
+ },
+ "end-of-stream": {
+ "version": "1.4.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "once": "1.4.0"
+ }
+ },
+ "error-ex": {
+ "version": "1.3.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-arrayish": "0.2.1"
+ }
+ },
+ "es6-error": {
+ "version": "4.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "execa": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "cross-spawn": "6.0.5",
+ "get-stream": "4.1.0",
+ "is-stream": "1.1.0",
+ "npm-run-path": "2.0.2",
+ "p-finally": "1.0.0",
+ "signal-exit": "3.0.2",
+ "strip-eof": "1.0.0"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "6.0.5",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "nice-try": "1.0.5",
+ "path-key": "2.0.1",
+ "semver": "5.6.0",
+ "shebang-command": "1.2.0",
+ "which": "1.3.1"
+ }
+ }
+ }
+ },
+ "find-cache-dir": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "commondir": "1.0.1",
+ "make-dir": "1.3.0",
+ "pkg-dir": "3.0.0"
+ }
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "locate-path": "3.0.0"
+ }
+ },
+ "foreground-child": {
+ "version": "1.5.6",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "cross-spawn": "4.0.2",
+ "signal-exit": "3.0.2"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "get-caller-file": {
+ "version": "1.0.3",
+ "bundled": true,
+ "dev": true
+ },
+ "get-stream": {
+ "version": "4.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "pump": "3.0.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.3",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.15",
+ "bundled": true,
+ "dev": true
+ },
+ "handlebars": {
+ "version": "4.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "async": "2.6.2",
+ "optimist": "0.6.1",
+ "source-map": "0.6.1",
+ "uglify-js": "3.4.9"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "hasha": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-stream": "1.1.0"
+ }
+ },
+ "hosted-git-info": {
+ "version": "2.7.1",
+ "bundled": true,
+ "dev": true
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "bundled": true,
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true,
+ "dev": true
+ },
+ "invert-kv": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "bundled": true,
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "istanbul-lib-coverage": {
+ "version": "2.0.3",
+ "bundled": true,
+ "dev": true
+ },
+ "istanbul-lib-hook": {
+ "version": "2.0.3",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "append-transform": "1.0.0"
+ }
+ },
+ "istanbul-lib-report": {
+ "version": "2.0.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "istanbul-lib-coverage": "2.0.3",
+ "make-dir": "1.3.0",
+ "supports-color": "6.1.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "6.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "istanbul-lib-source-maps": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "debug": "4.1.1",
+ "istanbul-lib-coverage": "2.0.3",
+ "make-dir": "1.3.0",
+ "rimraf": "2.6.3",
+ "source-map": "0.6.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "istanbul-reports": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "handlebars": "4.1.0"
+ }
+ },
+ "json-parse-better-errors": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "lcid": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "invert-kv": "2.0.0"
+ }
+ },
+ "load-json-file": {
+ "version": "4.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.15",
+ "parse-json": "4.0.0",
+ "pify": "3.0.0",
+ "strip-bom": "3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "p-locate": "3.0.0",
+ "path-exists": "3.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.11",
+ "bundled": true,
+ "dev": true
+ },
+ "lodash.flattendeep": {
+ "version": "4.4.0",
+ "bundled": true,
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "4.1.5",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "pseudomap": "1.0.2",
+ "yallist": "2.1.2"
+ }
+ },
+ "make-dir": {
+ "version": "1.3.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "pify": "3.0.0"
+ }
+ },
+ "map-age-cleaner": {
+ "version": "0.1.3",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "p-defer": "1.0.0"
+ }
+ },
+ "mem": {
+ "version": "4.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "map-age-cleaner": "0.1.3",
+ "mimic-fn": "1.2.0",
+ "p-is-promise": "2.0.0"
+ }
+ },
+ "merge-source-map": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "source-map": "0.6.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "mimic-fn": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.11"
+ }
+ },
+ "minimist": {
+ "version": "0.0.10",
+ "bundled": true,
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "ms": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "nice-try": {
+ "version": "1.0.5",
+ "bundled": true,
+ "dev": true
+ },
+ "normalize-package-data": {
+ "version": "2.5.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "2.7.1",
+ "resolve": "1.10.0",
+ "semver": "5.6.0",
+ "validate-npm-package-license": "3.0.4"
+ }
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "path-key": "2.0.1"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "wrappy": "1.0.2"
+ }
+ },
+ "optimist": {
+ "version": "0.6.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.10",
+ "wordwrap": "0.0.3"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "os-locale": {
+ "version": "3.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "execa": "1.0.0",
+ "lcid": "2.0.0",
+ "mem": "4.1.0"
+ }
+ },
+ "p-defer": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "p-finally": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "p-is-promise": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "p-limit": {
+ "version": "2.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "p-try": "2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "p-limit": "2.1.0"
+ }
+ },
+ "p-try": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "package-hash": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.15",
+ "hasha": "3.0.0",
+ "lodash.flattendeep": "4.4.0",
+ "release-zalgo": "1.0.0"
+ }
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "error-ex": "1.3.2",
+ "json-parse-better-errors": "1.0.2"
+ }
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "path-parse": {
+ "version": "1.0.6",
+ "bundled": true,
+ "dev": true
+ },
+ "path-type": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "pify": "3.0.0"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "pkg-dir": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "find-up": "3.0.0"
+ }
+ },
+ "pseudomap": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "pump": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "end-of-stream": "1.4.1",
+ "once": "1.4.0"
+ }
+ },
+ "read-pkg": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "load-json-file": "4.0.0",
+ "normalize-package-data": "2.5.0",
+ "path-type": "3.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "4.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "find-up": "3.0.0",
+ "read-pkg": "3.0.0"
+ }
+ },
+ "release-zalgo": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "es6-error": "4.1.1"
+ }
+ },
+ "require-directory": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "require-main-filename": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "resolve": {
+ "version": "1.10.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "path-parse": "1.0.6"
+ }
+ },
+ "resolve-from": {
+ "version": "4.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "rimraf": {
+ "version": "2.6.3",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "glob": "7.1.3"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "bundled": true,
+ "dev": true
+ },
+ "semver": {
+ "version": "5.6.0",
+ "bundled": true,
+ "dev": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "shebang-regex": "1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "spawn-wrap": {
+ "version": "1.4.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "foreground-child": "1.5.6",
+ "mkdirp": "0.5.1",
+ "os-homedir": "1.0.2",
+ "rimraf": "2.6.3",
+ "signal-exit": "3.0.2",
+ "which": "1.3.1"
+ }
+ },
+ "spdx-correct": {
+ "version": "3.1.0",
+ "bundled": true,
"dev": true,
"requires": {
- "is-plain-object": "2.0.4"
+ "spdx-expression-parse": "3.0.0",
+ "spdx-license-ids": "3.0.3"
}
- }
- }
- },
- "mkdirp": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
- "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
- "dev": true,
- "requires": {
- "minimist": "0.0.8"
- }
- },
- "mocha": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz",
- "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==",
- "dev": true,
- "requires": {
- "browser-stdout": "1.3.1",
- "commander": "2.15.1",
- "debug": "3.1.0",
- "diff": "3.5.0",
- "escape-string-regexp": "1.0.5",
- "glob": "7.1.2",
- "growl": "1.10.5",
- "he": "1.1.1",
- "minimatch": "3.0.4",
- "mkdirp": "0.5.1",
- "supports-color": "5.4.0"
- }
- },
- "module-deps-sortable": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/module-deps-sortable/-/module-deps-sortable-5.0.0.tgz",
- "integrity": "sha512-bnGGeghQmz/t/6771/KC4FmxpVm126iR6AAzzq4N6hVZQVl4+ZZBv+VF3PJmDyxXtVtgcgTSSP7NL+jq1QAHrg==",
- "dev": true,
- "requires": {
- "JSONStream": "1.3.5",
- "browser-resolve": "1.11.3",
- "cached-path-relative": "1.0.2",
- "concat-stream": "1.5.2",
- "defined": "1.0.0",
- "detective": "4.7.1",
- "duplexer2": "0.1.4",
- "inherits": "2.0.3",
- "readable-stream": "2.3.6",
- "resolve": "1.9.0",
- "stream-combiner2": "1.1.1",
- "subarg": "1.0.0",
- "through2": "2.0.5",
- "xtend": "4.0.1"
- },
- "dependencies": {
- "concat-stream": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz",
- "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=",
+ },
+ "spdx-exceptions": {
+ "version": "2.2.0",
+ "bundled": true,
+ "dev": true
+ },
+ "spdx-expression-parse": {
+ "version": "3.0.0",
+ "bundled": true,
"dev": true,
"requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.0.6",
- "typedarray": "0.0.6"
+ "spdx-exceptions": "2.2.0",
+ "spdx-license-ids": "3.0.3"
+ }
+ },
+ "spdx-license-ids": {
+ "version": "3.0.3",
+ "bundled": true,
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "2.0.0",
+ "strip-ansi": "4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ansi-regex": "3.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "strip-eof": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "test-exclude": {
+ "version": "5.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "arrify": "1.0.1",
+ "minimatch": "3.0.4",
+ "read-pkg-up": "4.0.0",
+ "require-main-filename": "1.0.1"
+ }
+ },
+ "uglify-js": {
+ "version": "3.4.9",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "commander": "2.17.1",
+ "source-map": "0.6.1"
},
"dependencies": {
- "readable-stream": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
- "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
+ "source-map": {
+ "version": "0.6.1",
+ "bundled": true,
"dev": true,
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "1.0.0",
- "process-nextick-args": "1.0.7",
- "string_decoder": "0.10.31",
- "util-deprecate": "1.0.2"
- }
+ "optional": true
}
}
},
- "process-nextick-args": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
- "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
+ "uuid": {
+ "version": "3.3.2",
+ "bundled": true,
"dev": true
},
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "validate-npm-package-license": {
+ "version": "3.0.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "spdx-correct": "3.1.0",
+ "spdx-expression-parse": "3.0.0"
+ }
+ },
+ "which": {
+ "version": "1.3.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "isexe": "2.0.0"
+ }
+ },
+ "which-module": {
+ "version": "2.0.0",
+ "bundled": true,
"dev": true
- }
- }
- },
- "moment": {
- "version": "2.24.0",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz",
- "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg=="
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- },
- "mute-stream": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
- "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
- "dev": true
- },
- "nanomatch": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
- "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
- "dev": true,
- "requires": {
- "arr-diff": "4.0.0",
- "array-unique": "0.3.2",
- "define-property": "2.0.2",
- "extend-shallow": "3.0.2",
- "fragment-cache": "0.2.1",
- "is-windows": "1.0.2",
- "kind-of": "6.0.2",
- "object.pick": "1.3.0",
- "regex-not": "1.0.2",
- "snapdragon": "0.8.2",
- "to-regex": "3.0.2"
- }
- },
- "natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
- "dev": true
- },
- "nice-try": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
- "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
- "dev": true
- },
- "node-addon-api": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.6.2.tgz",
- "integrity": "sha512-479Bjw9nTE5DdBSZZWprFryHGjUaQC31y1wHo19We/k0BZlrmhqQitWoUL0cD8+scljCbIUL+E58oRDEakdGGA=="
- },
- "node-releases": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.3.tgz",
- "integrity": "sha512-6VrvH7z6jqqNFY200kdB6HdzkgM96Oaj9v3dqGfgp6mF+cHmU4wyQKZ2/WPDRVoR0Jz9KqbamaBN0ZhdUaysUQ==",
- "dev": true,
- "requires": {
- "semver": "5.6.0"
- }
- },
- "normalize-package-data": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
- "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
- "dev": true,
- "requires": {
- "hosted-git-info": "2.7.1",
- "is-builtin-module": "1.0.0",
- "semver": "5.6.0",
- "validate-npm-package-license": "3.0.4"
- }
- },
- "normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
- "dev": true,
- "requires": {
- "remove-trailing-separator": "1.1.0"
- }
- },
- "normalize-url": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
- "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
- "dev": true,
- "requires": {
- "object-assign": "4.1.1",
- "prepend-http": "1.0.4",
- "query-string": "4.3.4",
- "sort-keys": "1.1.2"
- }
- },
- "now-and-later": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.0.tgz",
- "integrity": "sha1-vGHLtFbXnLMiB85HygUTb/Ln1u4=",
- "dev": true,
- "requires": {
- "once": "1.4.0"
- }
- },
- "npm-run-path": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
- "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
- "dev": true,
- "requires": {
- "path-key": "2.0.1"
+ },
+ "wordwrap": {
+ "version": "0.0.3",
+ "bundled": true,
+ "dev": true
+ },
+ "wrap-ansi": {
+ "version": "2.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ }
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "write-file-atomic": {
+ "version": "2.4.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.15",
+ "imurmurhash": "0.1.4",
+ "signal-exit": "3.0.2"
+ }
+ },
+ "y18n": {
+ "version": "4.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "bundled": true,
+ "dev": true
+ },
+ "yargs": {
+ "version": "12.0.5",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "cliui": "4.1.0",
+ "decamelize": "1.2.0",
+ "find-up": "3.0.0",
+ "get-caller-file": "1.0.3",
+ "os-locale": "3.1.0",
+ "require-directory": "2.1.1",
+ "require-main-filename": "1.0.1",
+ "set-blocking": "2.0.0",
+ "string-width": "2.1.1",
+ "which-module": "2.0.0",
+ "y18n": "4.0.0",
+ "yargs-parser": "11.1.1"
+ }
+ },
+ "yargs-parser": {
+ "version": "11.1.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "camelcase": "5.0.0",
+ "decamelize": "1.2.0"
+ }
+ }
}
},
- "number-is-nan": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
- "dev": true
- },
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -4471,9 +6771,9 @@
}
},
"object-keys": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz",
- "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz",
+ "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==",
"dev": true
},
"object-visit": {
@@ -4494,7 +6794,7 @@
"define-properties": "1.1.3",
"function-bind": "1.1.1",
"has-symbols": "1.0.0",
- "object-keys": "1.0.12"
+ "object-keys": "1.1.0"
}
},
"object.pick": {
@@ -4547,6 +6847,12 @@
"readable-stream": "2.3.6"
}
},
+ "os-browserify": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
+ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
+ "dev": true
+ },
"os-locale": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
@@ -4564,12 +6870,35 @@
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
"dev": true
},
+ "output-file-sync": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-2.0.1.tgz",
+ "integrity": "sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.15",
+ "is-plain-obj": "1.1.0",
+ "mkdirp": "0.5.1"
+ }
+ },
+ "p-defer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
+ "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
+ "dev": true
+ },
"p-finally": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
"integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
"dev": true
},
+ "p-is-promise": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz",
+ "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==",
+ "dev": true
+ },
"p-limit": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
@@ -4594,10 +6923,50 @@
"integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
"dev": true
},
+ "pako": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz",
+ "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==",
+ "dev": true
+ },
+ "parallel-transform": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz",
+ "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=",
+ "dev": true,
+ "requires": {
+ "cyclist": "0.2.2",
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.6"
+ }
+ },
+ "parent-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.0.tgz",
+ "integrity": "sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA==",
+ "dev": true,
+ "requires": {
+ "callsites": "3.0.0"
+ }
+ },
+ "parse-asn1": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz",
+ "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==",
+ "dev": true,
+ "requires": {
+ "asn1.js": "4.10.1",
+ "browserify-aes": "1.2.0",
+ "create-hash": "1.2.0",
+ "evp_bytestokey": "1.0.3",
+ "pbkdf2": "3.0.17",
+ "safe-buffer": "5.1.2"
+ }
+ },
"parse-entities": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.0.tgz",
- "integrity": "sha512-XXtDdOPLSB0sHecbEapQi6/58U/ODj/KWfIXmmMCJF/eRn8laX6LZbOyioMoETOOJoWRW8/qTSl5VQkUIfKM5g==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.1.tgz",
+ "integrity": "sha512-NBWYLQm1KSoDKk7GAHyioLTvCZ5QjdH/ASBBQTD3iLiAWJXS5bg1jEWI8nIJ+vgVvsceBVBcDGRWSo0KVQBvvg==",
"dev": true,
"requires": {
"character-entities": "1.2.2",
@@ -4629,14 +6998,21 @@
}
},
"parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
"dev": true,
"requires": {
- "error-ex": "1.3.2"
+ "error-ex": "1.3.2",
+ "json-parse-better-errors": "1.0.2"
}
},
+ "parse-passwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
+ "dev": true
+ },
"parse-path": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/parse-path/-/parse-path-3.0.4.tgz",
@@ -4665,6 +7041,12 @@
"integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
"dev": true
},
+ "path-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz",
+ "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=",
+ "dev": true
+ },
"path-dirname": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
@@ -4672,13 +7054,10 @@
"dev": true
},
"path-exists": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
- "dev": true,
- "requires": {
- "pinkie-promise": "2.0.1"
- }
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
},
"path-is-absolute": {
"version": "1.0.1",
@@ -4720,12 +7099,12 @@
"dev": true
},
"path-type": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
- "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
"dev": true,
"requires": {
- "pify": "2.3.0"
+ "pify": "3.0.0"
}
},
"pathval": {
@@ -4738,6 +7117,7 @@
"version": "3.0.17",
"resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
"integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
+ "dev": true,
"requires": {
"create-hash": "1.2.0",
"create-hmac": "1.1.7",
@@ -4747,101 +7127,29 @@
}
},
"pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- },
- "pinkie": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
"dev": true
},
- "pinkie-promise": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
- "dev": true,
- "requires": {
- "pinkie": "2.0.4"
- }
- },
- "pkg-conf": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz",
- "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=",
- "dev": true,
- "requires": {
- "find-up": "2.1.0",
- "load-json-file": "4.0.0"
- },
- "dependencies": {
- "find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "dev": true,
- "requires": {
- "locate-path": "2.0.0"
- }
- },
- "load-json-file": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
- "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
- "dev": true,
- "requires": {
- "graceful-fs": "4.1.15",
- "parse-json": "4.0.0",
- "pify": "3.0.0",
- "strip-bom": "3.0.0"
- }
- },
- "parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
- "dev": true,
- "requires": {
- "error-ex": "1.3.2",
- "json-parse-better-errors": "1.0.2"
- }
- },
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- }
- }
- },
- "pkg-config": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz",
- "integrity": "sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=",
+ "pirates": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz",
+ "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==",
"dev": true,
"requires": {
- "debug-log": "1.0.1",
- "find-root": "1.1.0",
- "xtend": "4.0.1"
+ "node-modules-regexp": "1.0.0"
}
},
"pkg-dir": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
- "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
+ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
"dev": true,
"requires": {
- "find-up": "1.1.2"
+ "find-up": "2.1.0"
}
},
- "pluralize": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz",
- "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==",
- "dev": true
- },
"posix-character-classes": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
@@ -4866,6 +7174,12 @@
"integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
"dev": true
},
+ "process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+ "dev": true
+ },
"process-nextick-args": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
@@ -4878,15 +7192,11 @@
"integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
"dev": true
},
- "prop-types": {
- "version": "15.6.2",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz",
- "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==",
- "dev": true,
- "requires": {
- "loose-envify": "1.4.0",
- "object-assign": "4.1.1"
- }
+ "promise-inflight": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
+ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
+ "dev": true
},
"property-information": {
"version": "4.2.0",
@@ -4903,12 +7213,32 @@
"integrity": "sha512-Fx65lf9/YDn3hUX08XUc0J8rSux36rEsyiv21ZGUC1mOyeM3lTRpZLcrm8aAolzS4itwVfm7TAPyxC2E5zd6xg==",
"dev": true
},
+ "prr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
+ "dev": true
+ },
"pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
"dev": true
},
+ "public-encrypt": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
+ "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "browserify-rsa": "4.0.1",
+ "create-hash": "1.2.0",
+ "parse-asn1": "5.1.4",
+ "randombytes": "2.1.0",
+ "safe-buffer": "5.1.2"
+ }
+ },
"pump": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
@@ -4925,7 +7255,7 @@
"integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
"dev": true,
"requires": {
- "duplexify": "3.6.1",
+ "duplexify": "3.7.1",
"inherits": "2.0.3",
"pump": "2.0.1"
}
@@ -4952,11 +7282,34 @@
"strict-uri-encode": "1.1.0"
}
},
+ "querystring": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+ "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
+ "dev": true
+ },
+ "querystring-es3": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
+ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+ "dev": true
+ },
"randombytes": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz",
- "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "randomfill": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
+ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+ "dev": true,
"requires": {
+ "randombytes": "2.1.0",
"safe-buffer": "5.1.2"
}
},
@@ -4979,34 +7332,68 @@
}
},
"read-pkg": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
- "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
"dev": true,
"requires": {
- "load-json-file": "2.0.0",
- "normalize-package-data": "2.4.0",
- "path-type": "2.0.0"
+ "load-json-file": "4.0.0",
+ "normalize-package-data": "2.5.0",
+ "path-type": "3.0.0"
}
},
"read-pkg-up": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
- "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz",
+ "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==",
"dev": true,
"requires": {
- "find-up": "2.1.0",
- "read-pkg": "2.0.0"
+ "find-up": "3.0.0",
+ "read-pkg": "3.0.0"
},
"dependencies": {
"find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "3.0.0",
+ "path-exists": "3.0.0"
+ }
+ },
+ "p-limit": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz",
+ "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==",
+ "dev": true,
+ "requires": {
+ "p-try": "2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
"dev": true,
"requires": {
- "locate-path": "2.0.0"
+ "p-limit": "2.1.0"
}
+ },
+ "p-try": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
+ "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
+ "dev": true
}
}
},
@@ -5051,15 +7438,10 @@
"regenerate": "1.4.0"
}
},
- "regenerator-runtime": {
- "version": "0.12.1",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz",
- "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg=="
- },
"regenerator-transform": {
- "version": "0.13.3",
- "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.3.tgz",
- "integrity": "sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA==",
+ "version": "0.13.4",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.4.tgz",
+ "integrity": "sha512-T0QMBjK3J0MtxjPmdIMXm72Wvj2Abb0Bd4HADdfijwMdoIsyQZ6fWC7kDFhk2YinBBEMZDL7Y7wh0J1sGx3S4A==",
"dev": true,
"requires": {
"private": "0.1.8"
@@ -5069,54 +7451,18 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
"integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
- "dev": true,
- "requires": {
- "extend-shallow": "3.0.2",
- "safe-regex": "1.1.0"
- }
- },
- "regexp-tree": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.0.tgz",
- "integrity": "sha512-rHQv+tzu+0l3KS/ERabas1yK49ahNVxuH40WcPg53CzP5p8TgmmyBgHELLyJcvjhTD0e5ahSY6C76LbEVtr7cg==",
- "dev": true,
- "requires": {
- "cli-table3": "0.5.1",
- "colors": "1.3.3",
- "yargs": "10.1.2"
- },
- "dependencies": {
- "find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "dev": true,
- "requires": {
- "locate-path": "2.0.0"
- }
- },
- "yargs": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz",
- "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==",
- "dev": true,
- "requires": {
- "cliui": "4.1.0",
- "decamelize": "1.2.0",
- "find-up": "2.1.0",
- "get-caller-file": "1.0.3",
- "os-locale": "2.1.0",
- "require-directory": "2.1.1",
- "require-main-filename": "1.0.1",
- "set-blocking": "2.0.0",
- "string-width": "2.1.1",
- "which-module": "2.0.0",
- "y18n": "3.2.1",
- "yargs-parser": "8.1.0"
- }
- }
+ "dev": true,
+ "requires": {
+ "extend-shallow": "3.0.2",
+ "safe-regex": "1.1.0"
}
},
+ "regexp-tree": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.5.tgz",
+ "integrity": "sha512-nUmxvfJyAODw+0B13hj8CFVAxhe7fDEAgJgaotBu3nnR+IgGgZq59YedJP5VYTlkEfqjuK6TuRpnymKdatLZfQ==",
+ "dev": true
+ },
"regexpp": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
@@ -5195,7 +7541,7 @@
"is-whitespace-character": "1.0.2",
"is-word-character": "1.0.2",
"markdown-escapes": "1.0.2",
- "parse-entities": "1.2.0",
+ "parse-entities": "1.2.1",
"repeat-string": "1.6.1",
"state-toggle": "1.0.1",
"trim": "0.0.1",
@@ -5240,7 +7586,7 @@
"markdown-escapes": "1.0.2",
"markdown-table": "1.1.2",
"mdast-util-compact": "1.0.2",
- "parse-entities": "1.2.0",
+ "parse-entities": "1.2.1",
"repeat-string": "1.6.1",
"state-toggle": "1.0.1",
"stringify-entities": "1.3.2",
@@ -5254,7 +7600,7 @@
"integrity": "sha512-vCPW4YOsm2CfyuScdktM9KDnJXVHJsd/ZeRtst+dnBU3B3KKvt8bc+bs5syJjyptAHfqo7H+5Uhz+2blWBfwow==",
"dev": true,
"requires": {
- "mdast-util-toc": "3.0.1",
+ "mdast-util-toc": "3.1.0",
"remark-slug": "5.1.1"
}
},
@@ -5324,29 +7670,52 @@
"integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
"dev": true
},
- "require-uncached": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
- "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=",
+ "requireindex": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz",
+ "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==",
+ "dev": true
+ },
+ "resolve": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz",
+ "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==",
"dev": true,
"requires": {
- "caller-path": "0.1.0",
- "resolve-from": "1.0.1"
+ "path-parse": "1.0.6"
}
},
- "resolve": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.9.0.tgz",
- "integrity": "sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ==",
+ "resolve-cwd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
+ "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
"dev": true,
"requires": {
- "path-parse": "1.0.6"
+ "resolve-from": "3.0.0"
+ },
+ "dependencies": {
+ "resolve-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+ "dev": true
+ }
}
},
- "resolve-from": {
+ "resolve-dir": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
- "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=",
+ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
+ "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
+ "dev": true,
+ "requires": {
+ "expand-tilde": "2.0.2",
+ "global-modules": "1.0.0"
+ }
+ },
+ "resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
"dev": true
},
"resolve-options": {
@@ -5387,28 +7756,13 @@
"dev": true,
"requires": {
"glob": "7.1.3"
- },
- "dependencies": {
- "glob": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
- "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
- "dev": true,
- "requires": {
- "fs.realpath": "1.0.0",
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
- }
- }
}
},
"ripemd160": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
"integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+ "dev": true,
"requires": {
"hash-base": "3.0.4",
"inherits": "2.0.3"
@@ -5423,25 +7777,29 @@
"is-promise": "2.1.0"
}
},
- "run-parallel": {
- "version": "1.1.9",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz",
- "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==",
- "dev": true
+ "run-queue": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
+ "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
+ "dev": true,
+ "requires": {
+ "aproba": "1.2.0"
+ }
},
"rxjs": {
- "version": "5.5.12",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz",
- "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==",
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz",
+ "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==",
"dev": true,
"requires": {
- "symbol-observable": "1.0.1"
+ "tslib": "1.9.3"
}
},
"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=="
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
},
"safe-json-parse": {
"version": "1.0.1",
@@ -5464,12 +7822,29 @@
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"dev": true
},
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "requires": {
+ "ajv": "6.9.2",
+ "ajv-errors": "1.0.1",
+ "ajv-keywords": "3.4.0"
+ }
+ },
"semver": {
"version": "5.6.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
"integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
"dev": true
},
+ "serialize-javascript": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.6.1.tgz",
+ "integrity": "sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==",
+ "dev": true
+ },
"set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
@@ -5499,10 +7874,17 @@
}
}
},
+ "setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
+ "dev": true
+ },
"sha.js": {
"version": "2.4.11",
"resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
"integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+ "dev": true,
"requires": {
"inherits": "2.0.3",
"safe-buffer": "5.1.2"
@@ -5529,12 +7911,20 @@
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
"dev": true
},
+ "slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "dev": true
+ },
"slice-ansi": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz",
- "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
+ "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
"dev": true,
"requires": {
+ "ansi-styles": "3.2.1",
+ "astral-regex": "1.0.0",
"is-fullwidth-code-point": "2.0.0"
}
},
@@ -5554,15 +7944,6 @@
"use": "3.1.1"
},
"dependencies": {
- "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"
- }
- },
"define-property": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
@@ -5663,6 +8044,12 @@
"is-plain-obj": "1.1.0"
}
},
+ "source-list-map": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
+ "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
+ "dev": true
+ },
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
@@ -5682,6 +8069,24 @@
"urix": "0.1.0"
}
},
+ "source-map-support": {
+ "version": "0.5.10",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz",
+ "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "1.1.1",
+ "source-map": "0.6.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
"source-map-url": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
@@ -5744,41 +8149,13 @@
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
"dev": true
},
- "standard": {
- "version": "12.0.1",
- "resolved": "https://registry.npmjs.org/standard/-/standard-12.0.1.tgz",
- "integrity": "sha512-UqdHjh87OG2gUrNCSM4QRLF5n9h3TFPwrCNyVlkqu31Hej0L/rc8hzKqVvkb2W3x0WMq7PzZdkLfEcBhVOR6lg==",
- "dev": true,
- "requires": {
- "eslint": "5.4.0",
- "eslint-config-standard": "12.0.0",
- "eslint-config-standard-jsx": "6.0.2",
- "eslint-plugin-import": "2.14.0",
- "eslint-plugin-node": "7.0.1",
- "eslint-plugin-promise": "4.0.1",
- "eslint-plugin-react": "7.11.1",
- "eslint-plugin-standard": "4.0.0",
- "standard-engine": "9.0.0"
- }
- },
- "standard-engine": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-9.0.0.tgz",
- "integrity": "sha512-ZfNfCWZ2Xq67VNvKMPiVMKHnMdvxYzvZkf1AH8/cw2NLDBm5LRsxMqvEJpsjLI/dUosZ3Z1d6JlHDp5rAvvk2w==",
+ "ssri": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
+ "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
"dev": true,
"requires": {
- "deglob": "2.1.1",
- "get-stdin": "6.0.0",
- "minimist": "1.2.0",
- "pkg-conf": "2.1.0"
- },
- "dependencies": {
- "minimist": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
- "dev": true
- }
+ "figgy-pudding": "3.5.1"
}
},
"state-toggle": {
@@ -5846,6 +8223,16 @@
}
}
},
+ "stream-browserify": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
+ "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.6"
+ }
+ },
"stream-combiner2": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz",
@@ -5856,6 +8243,29 @@
"readable-stream": "2.3.6"
}
},
+ "stream-each": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
+ "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "1.4.1",
+ "stream-shift": "1.0.0"
+ }
+ },
+ "stream-http": {
+ "version": "2.8.3",
+ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
+ "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
+ "dev": true,
+ "requires": {
+ "builtin-status-codes": "3.0.0",
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.6",
+ "to-arraybuffer": "1.0.1",
+ "xtend": "4.0.1"
+ }
+ },
"stream-shift": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
@@ -5912,14 +8322,6 @@
"dev": true,
"requires": {
"ansi-regex": "3.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- }
}
},
"strip-bom": {
@@ -5958,31 +8360,181 @@
}
},
"supports-color": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
- "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
"requires": {
"has-flag": "3.0.0"
}
},
- "symbol-observable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz",
- "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=",
- "dev": true
- },
"table": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz",
- "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==",
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/table/-/table-5.2.3.tgz",
+ "integrity": "sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ==",
"dev": true,
"requires": {
- "ajv": "6.7.0",
- "ajv-keywords": "3.2.0",
- "chalk": "2.4.2",
+ "ajv": "6.9.2",
"lodash": "4.17.11",
- "slice-ansi": "1.0.0",
- "string-width": "2.1.1"
+ "slice-ansi": "2.1.0",
+ "string-width": "3.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz",
+ "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.0.0.tgz",
+ "integrity": "sha512-rr8CUxBbvOZDUvc5lNIJ+OC1nPVpz+Siw9VBtUjB9b6jZehZLFt0JMCZzShFHIsI8cbhm0EsNIfWJMFV3cu3Ew==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "7.0.3",
+ "is-fullwidth-code-point": "2.0.0",
+ "strip-ansi": "5.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz",
+ "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "4.0.0"
+ }
+ }
+ }
+ },
+ "tapable": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz",
+ "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==",
+ "dev": true
+ },
+ "teeny-request": {
+ "version": "3.11.3",
+ "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-3.11.3.tgz",
+ "integrity": "sha512-CKncqSF7sH6p4rzCgkb/z/Pcos5efl0DmolzvlqRQUNcpRIruOhY9+T1FsIlyEbfWd7MsFpodROOwHYh2BaXzw==",
+ "dev": true,
+ "requires": {
+ "https-proxy-agent": "2.2.1",
+ "node-fetch": "2.3.0",
+ "uuid": "3.3.2"
+ }
+ },
+ "terser": {
+ "version": "3.16.1",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-3.16.1.tgz",
+ "integrity": "sha512-JDJjgleBROeek2iBcSNzOHLKsB/MdDf+E/BOAJ0Tk9r7p9/fVobfv7LMJ/g/k3v9SXdmjZnIlFd5nfn/Rt0Xow==",
+ "dev": true,
+ "requires": {
+ "commander": "2.17.1",
+ "source-map": "0.6.1",
+ "source-map-support": "0.5.10"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.17.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
+ "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "terser-webpack-plugin": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.3.tgz",
+ "integrity": "sha512-GOK7q85oAb/5kE12fMuLdn2btOS9OBZn4VsecpHDywoUC/jLhSAKOiYo0ezx7ss2EXPMzyEWFoE0s1WLE+4+oA==",
+ "dev": true,
+ "requires": {
+ "cacache": "11.3.2",
+ "find-cache-dir": "2.0.0",
+ "schema-utils": "1.0.0",
+ "serialize-javascript": "1.6.1",
+ "source-map": "0.6.1",
+ "terser": "3.16.1",
+ "webpack-sources": "1.3.0",
+ "worker-farm": "1.6.0"
+ },
+ "dependencies": {
+ "find-cache-dir": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz",
+ "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==",
+ "dev": true,
+ "requires": {
+ "commondir": "1.0.1",
+ "make-dir": "1.3.0",
+ "pkg-dir": "3.0.0"
+ }
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "3.0.0",
+ "path-exists": "3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz",
+ "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==",
+ "dev": true,
+ "requires": {
+ "p-try": "2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "2.1.0"
+ }
+ },
+ "p-try": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
+ "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
+ "dev": true
+ },
+ "pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "dev": true,
+ "requires": {
+ "find-up": "3.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
}
},
"text-table": {
@@ -6017,6 +8569,15 @@
"xtend": "4.0.1"
}
},
+ "timers-browserify": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz",
+ "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==",
+ "dev": true,
+ "requires": {
+ "setimmediate": "1.0.5"
+ }
+ },
"tiny-lr": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz",
@@ -6024,11 +8585,28 @@
"dev": true,
"requires": {
"body": "5.1.0",
- "debug": "3.1.0",
+ "debug": "3.2.6",
"faye-websocket": "0.10.0",
"livereload-js": "2.4.0",
"object-assign": "4.1.1",
"qs": "6.6.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
+ }
}
},
"tmp": {
@@ -6050,6 +8628,12 @@
"is-negated-glob": "1.0.0"
}
},
+ "to-arraybuffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
+ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
+ "dev": true
+ },
"to-fast-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
@@ -6137,10 +8721,26 @@
"integrity": "sha512-fwkLWH+DimvA4YCy+/nvJd61nWQQ2liO/nF/RjkTpiOGi+zxZzVkhb1mvbHIIW4b/8nDsYI8uTmAlc0nNkRMOw==",
"dev": true
},
- "tweetnacl": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.0.tgz",
- "integrity": "sha1-cT2LgY2kIGh0C/aDhtBHnmb8ins="
+ "tslib": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
+ "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
+ "dev": true
+ },
+ "tsutils": {
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.8.0.tgz",
+ "integrity": "sha512-XQdPhgcoTbCD8baXC38PQ0vpTZ8T3YrE+vR66YIj/xvDt1//8iAhafpIT/4DmvzzC1QFapEImERu48Pa01dIUA==",
+ "dev": true,
+ "requires": {
+ "tslib": "1.9.3"
+ }
+ },
+ "tty-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
+ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
+ "dev": true
},
"type-check": {
"version": "0.3.2",
@@ -6154,7 +8754,8 @@
"type-detect": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
- "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g=="
+ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+ "dev": true
},
"typedarray": {
"version": "0.0.6",
@@ -6162,6 +8763,11 @@
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
"dev": true
},
+ "typescript": {
+ "version": "3.3.3333",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.3.3333.tgz",
+ "integrity": "sha512-JjSKsAfuHBE/fB2oZ8NxtRTk5iGcg6hkYXMnZ3Wc+b2RSqejEqTaem11mHASMnFilHrax3sLK0GDzcJrekZYLw=="
+ },
"unc-path-regex": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
@@ -6269,11 +8875,23 @@
}
}
},
- "uniq": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
- "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
- "dev": true
+ "unique-filename": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
+ "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
+ "dev": true,
+ "requires": {
+ "unique-slug": "2.0.1"
+ }
+ },
+ "unique-slug": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz",
+ "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==",
+ "dev": true,
+ "requires": {
+ "imurmurhash": "0.1.4"
+ }
},
"unique-stream": {
"version": "2.3.1",
@@ -6345,11 +8963,6 @@
"unist-util-is": "2.1.2"
}
},
- "unorm": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.4.1.tgz",
- "integrity": "sha1-NkIA1fE2RsqLzURJAnEzVhR5IwA="
- },
"unset-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
@@ -6411,18 +9024,69 @@
"integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
"dev": true
},
+ "url": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
+ "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+ "dev": true,
+ "requires": {
+ "punycode": "1.3.2",
+ "querystring": "0.2.0"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+ "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+ "dev": true
+ }
+ }
+ },
+ "urlgrey": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-0.4.4.tgz",
+ "integrity": "sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8=",
+ "dev": true
+ },
"use": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
"integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
"dev": true
},
+ "util": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
+ "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+ "requires": {
+ "inherits": "2.0.1"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE="
+ }
+ }
+ },
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
"dev": true
},
+ "uuid": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
+ "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
+ "dev": true
+ },
+ "v8-compile-cache": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz",
+ "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==",
+ "dev": true
+ },
"validate-npm-package-license": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
@@ -6482,7 +9146,7 @@
"requires": {
"repeat-string": "1.6.1",
"string-width": "2.1.1",
- "supports-color": "5.4.0",
+ "supports-color": "5.5.0",
"unist-util-stringify-position": "1.1.2",
"vfile-sort": "2.2.0",
"vfile-statistics": "1.1.2"
@@ -6552,18 +9216,281 @@
"now-and-later": "2.0.0",
"remove-bom-buffer": "3.0.0",
"vinyl": "2.2.0"
+ },
+ "dependencies": {
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "1.1.0"
+ }
+ }
+ }
+ },
+ "vm-browserify": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
+ "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
+ "dev": true,
+ "requires": {
+ "indexof": "0.0.1"
}
},
"vue-template-compiler": {
- "version": "2.5.22",
- "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.5.22.tgz",
- "integrity": "sha512-1VTw/NPTUeHNiwhkq6NkFzO7gYLjFCueBN0FX8NEiQIemd5EUMQ5hxrF7O0zCPo5tae+U9S/scETPea+hIz8Eg==",
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.7.tgz",
+ "integrity": "sha512-ZjxJLr6Lw2gj6aQGKwBWTxVNNd28/qggIdwvr5ushrUHUvqgbHD0xusOVP2yRxT4pX3wRIJ2LfxjgFT41dEtoQ==",
"dev": true,
"requires": {
"de-indent": "1.0.2",
"he": "1.1.1"
}
},
+ "watchpack": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz",
+ "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==",
+ "dev": true,
+ "requires": {
+ "chokidar": "2.1.2",
+ "graceful-fs": "4.1.15",
+ "neo-async": "2.6.0"
+ }
+ },
+ "webpack": {
+ "version": "4.29.6",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.29.6.tgz",
+ "integrity": "sha512-MwBwpiE1BQpMDkbnUUaW6K8RFZjljJHArC6tWQJoFm0oQtfoSebtg4Y7/QHnJ/SddtjYLHaKGX64CFjG5rehJw==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-module-context": "1.8.5",
+ "@webassemblyjs/wasm-edit": "1.8.5",
+ "@webassemblyjs/wasm-parser": "1.8.5",
+ "acorn": "6.1.1",
+ "acorn-dynamic-import": "4.0.0",
+ "ajv": "6.9.2",
+ "ajv-keywords": "3.4.0",
+ "chrome-trace-event": "1.0.0",
+ "enhanced-resolve": "4.1.0",
+ "eslint-scope": "4.0.0",
+ "json-parse-better-errors": "1.0.2",
+ "loader-runner": "2.4.0",
+ "loader-utils": "1.2.3",
+ "memory-fs": "0.4.1",
+ "micromatch": "3.1.10",
+ "mkdirp": "0.5.1",
+ "neo-async": "2.6.0",
+ "node-libs-browser": "2.2.0",
+ "schema-utils": "1.0.0",
+ "tapable": "1.1.1",
+ "terser-webpack-plugin": "1.2.3",
+ "watchpack": "1.6.0",
+ "webpack-sources": "1.3.0"
+ }
+ },
+ "webpack-cli": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.2.3.tgz",
+ "integrity": "sha512-Ik3SjV6uJtWIAN5jp5ZuBMWEAaP5E4V78XJ2nI+paFPh8v4HPSwo/myN0r29Xc/6ZKnd2IdrAlpSgNOu2CDQ6Q==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.4.2",
+ "cross-spawn": "6.0.5",
+ "enhanced-resolve": "4.1.0",
+ "findup-sync": "2.0.0",
+ "global-modules": "1.0.0",
+ "import-local": "2.0.0",
+ "interpret": "1.2.0",
+ "loader-utils": "1.2.3",
+ "supports-color": "5.5.0",
+ "v8-compile-cache": "2.0.2",
+ "yargs": "12.0.5"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz",
+ "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==",
+ "dev": true
+ },
+ "cliui": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
+ "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "2.1.1",
+ "strip-ansi": "4.0.0",
+ "wrap-ansi": "2.1.0"
+ }
+ },
+ "execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "6.0.5",
+ "get-stream": "4.1.0",
+ "is-stream": "1.1.0",
+ "npm-run-path": "2.0.2",
+ "p-finally": "1.0.0",
+ "signal-exit": "3.0.2",
+ "strip-eof": "1.0.0"
+ }
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "3.0.0"
+ }
+ },
+ "get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
+ "requires": {
+ "pump": "3.0.0"
+ }
+ },
+ "invert-kv": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
+ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
+ "dev": true
+ },
+ "lcid": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
+ "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
+ "dev": true,
+ "requires": {
+ "invert-kv": "2.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "3.0.0",
+ "path-exists": "3.0.0"
+ }
+ },
+ "mem": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz",
+ "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==",
+ "dev": true,
+ "requires": {
+ "map-age-cleaner": "0.1.3",
+ "mimic-fn": "1.2.0",
+ "p-is-promise": "2.0.0"
+ }
+ },
+ "os-locale": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
+ "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
+ "dev": true,
+ "requires": {
+ "execa": "1.0.0",
+ "lcid": "2.0.0",
+ "mem": "4.1.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz",
+ "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==",
+ "dev": true,
+ "requires": {
+ "p-try": "2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "2.1.0"
+ }
+ },
+ "p-try": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
+ "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
+ "dev": true
+ },
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "1.4.1",
+ "once": "1.4.0"
+ }
+ },
+ "yargs": {
+ "version": "12.0.5",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
+ "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
+ "dev": true,
+ "requires": {
+ "cliui": "4.1.0",
+ "decamelize": "1.2.0",
+ "find-up": "3.0.0",
+ "get-caller-file": "1.0.3",
+ "os-locale": "3.1.0",
+ "require-directory": "2.1.1",
+ "require-main-filename": "1.0.1",
+ "set-blocking": "2.0.0",
+ "string-width": "2.1.1",
+ "which-module": "2.0.0",
+ "y18n": "3.2.1",
+ "yargs-parser": "11.1.1"
+ }
+ },
+ "yargs-parser": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
+ "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "5.0.0",
+ "decamelize": "1.2.0"
+ }
+ }
+ }
+ },
+ "webpack-sources": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz",
+ "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==",
+ "dev": true,
+ "requires": {
+ "source-list-map": "2.0.1",
+ "source-map": "0.6.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
"websocket-driver": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz",
@@ -6601,6 +9528,15 @@
"integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
"dev": true
},
+ "worker-farm": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz",
+ "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==",
+ "dev": true,
+ "requires": {
+ "errno": "0.1.7"
+ }
+ },
"wrap-ansi": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
@@ -6611,6 +9547,12 @@
"strip-ansi": "3.0.1"
},
"dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
"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",
@@ -6649,9 +9591,9 @@
"dev": true
},
"write": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
- "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
+ "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
"dev": true,
"requires": {
"mkdirp": "0.5.1"
@@ -6669,14 +9611,6 @@
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
"dev": true
},
- "xxhashjs": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz",
- "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==",
- "requires": {
- "cuint": "0.2.2"
- }
- },
"y18n": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
@@ -6710,80 +9644,72 @@
"yargs-parser": "7.0.0"
},
"dependencies": {
- "camelcase": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
- "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
- "dev": true
+ "load-json-file": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.15",
+ "parse-json": "2.2.0",
+ "pify": "2.3.0",
+ "strip-bom": "3.0.0"
+ }
},
- "cliui": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
- "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
"dev": true,
"requires": {
- "string-width": "1.0.2",
- "strip-ansi": "3.0.1",
- "wrap-ansi": "2.1.0"
- },
- "dependencies": {
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "dev": true,
- "requires": {
- "code-point-at": "1.1.0",
- "is-fullwidth-code-point": "1.0.0",
- "strip-ansi": "3.0.1"
- }
- }
+ "error-ex": "1.3.2"
}
},
- "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": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "path-type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
"dev": true,
"requires": {
- "number-is-nan": "1.0.1"
+ "pify": "2.3.0"
}
},
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
"dev": true,
"requires": {
- "ansi-regex": "2.1.1"
+ "load-json-file": "2.0.0",
+ "normalize-package-data": "2.5.0",
+ "path-type": "2.0.0"
}
},
- "yargs-parser": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz",
- "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=",
+ "read-pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
"dev": true,
"requires": {
- "camelcase": "4.1.0"
+ "find-up": "2.1.0",
+ "read-pkg": "2.0.0"
}
}
}
},
"yargs-parser": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz",
- "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz",
+ "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=",
"dev": true,
"requires": {
"camelcase": "4.1.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
- "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
- "dev": true
- }
}
}
}
diff --git a/package.json b/package.json
index 54775df..210890a 100644
--- a/package.json
+++ b/package.json
@@ -1,43 +1,47 @@
{
- "name": "@chainsafesystems/ssz",
- "version": "1.6.0",
- "description": "A pure JS implementation of simple serialize",
- "main": "src/index.js",
+ "name": "@chainsafe/ssz",
+ "version": "0.1.0",
+ "description": "Simple Serialize",
+ "main": "lib/index.js",
"scripts": {
- "docs": "documentation build src/index.js -f md > API.md",
- "test": "mocha",
- "lint": "standard",
- "lint-fix": "standard --fix"
+ "build": "npm run build-lib && npm run build-web && npm run build-docs",
+ "build-docs": "documentation build lib/ -f md > docs/API.md",
+ "build-lib": "babel src -x .ts -d lib",
+ "build-web": "webpack --mode production --entry ./lib/web.js --output ./dist/ssz.min.js",
+ "check-types": "tsc --noEmit",
+ "lint": "eslint --ext .ts src/ test/",
+ "pretest": "npm run check-types",
+ "test": "nyc -r lcov -e .ts mocha -r ./.babel-register test/**/*.test.ts && nyc report"
},
- "repository": {
- "type": "git",
- "url": "git+https://github.com/ChainSafeSystems/ssz-js.git"
- },
- "keywords": [
- "\"ssz\"",
- "\"simple",
- "serialize\""
- ],
- "author": "ChainSafe Systems and contributors",
+ "author": "ChainSafe",
"license": "MIT",
- "bugs": {
- "url": "https://github.com/ChainSafeSystems/ssz-js/issues"
- },
- "homepage": "https://github.com/ChainSafeSystems/ssz-js#readme",
"devDependencies": {
- "chai": "^4.1.2",
- "documentation": "^9.1.1",
+ "@babel/cli": "^7.2.3",
+ "@babel/core": "^7.3.4",
+ "@babel/plugin-proposal-class-properties": "^7.3.4",
+ "@babel/plugin-proposal-object-rest-spread": "^7.3.4",
+ "@babel/preset-env": "^7.3.4",
+ "@babel/preset-typescript": "^7.3.3",
+ "@babel/register": "^7.0.0",
+ "@types/chai": "^4.1.7",
+ "@types/mocha": "^5.2.5",
+ "@types/node": "^10.12.17",
+ "@typescript-eslint/eslint-plugin": "^1.4.2",
+ "@typescript-eslint/parser": "^1.4.2",
+ "chai": "^4.2.0",
+ "codecov": "^3.2.0",
+ "documentation": "^9.3.0",
+ "eslint": "^5.14.1",
"mocha": "^5.2.0",
- "standard": "^12.0.1"
+ "nyc": "^13.3.0",
+ "webpack": "^4.29.6",
+ "webpack-cli": "^3.2.3"
},
"dependencies": {
- "@polkadot/util-crypto": "^0.33.35",
+ "@types/bn.js": "^4.11.4",
+ "assert": "^1.4.1",
"bn.js": "^4.11.8",
- "deepcopy": "^1.0.0"
- },
- "standard": {
- "ignore": [
- "test/"
- ]
+ "js-sha3": "^0.8.0",
+ "typescript": "^3.3.3333"
}
}
diff --git a/src/constants.ts b/src/constants.ts
new file mode 100644
index 0000000..570a190
--- /dev/null
+++ b/src/constants.ts
@@ -0,0 +1,4 @@
+// Number of bytes per chunk.
+export const BYTES_PER_CHUNK = 32;
+// Number of bytes per serialized length prefix.
+export const BYTES_PER_LENGTH_PREFIX = 4;
diff --git a/src/deserialize.ts b/src/deserialize.ts
new file mode 100644
index 0000000..ec0ba60
--- /dev/null
+++ b/src/deserialize.ts
@@ -0,0 +1,115 @@
+import assert from "assert";
+import BN from "bn.js";
+
+import {
+ ArrayType,
+ DeserializedValue,
+ ObjectType,
+ SerializableType,
+ SerializableObject,
+ SerializableValue,
+ SerializableList,
+} from "./types";
+
+import { BYTES_PER_LENGTH_PREFIX } from "./constants";
+
+function _deserializeUint(data: Buffer, byteLength: number, alwaysNumber: boolean, start: number): DeserializedValue {
+ const offset = start + byteLength;
+ const bn = new BN(data.slice(start, offset), 16, "le");
+ const value = (alwaysNumber || byteLength <= 4) ? bn.toNumber() : bn;
+ return {
+ offset,
+ value,
+ }
+}
+
+function _deserializeBool(data: Buffer, start: number): DeserializedValue {
+ return {
+ offset: start + 1,
+ value: data[start] ? true : false,
+ }
+}
+
+function _deserializeByteArray(data: Buffer, start: number): DeserializedValue {
+ const length = data.readUIntLE(start, BYTES_PER_LENGTH_PREFIX);
+ const index0 = start + BYTES_PER_LENGTH_PREFIX;
+ const offset = index0 + length;
+ const value = Buffer.alloc(length);
+ data.copy(value, 0, index0, offset);
+ return {
+ offset,
+ value,
+ }
+}
+
+function _deserializeArray(data: Buffer, type: ArrayType, start: number): DeserializedValue {
+ const elementType = type[0];
+ if (elementType === "byte") {
+ return _deserializeByteArray(data, start);
+ }
+ const length = data.readUIntLE(start, BYTES_PER_LENGTH_PREFIX);
+ const index0 = start + BYTES_PER_LENGTH_PREFIX;
+ const offset = index0 + length;
+ let index = index0;
+ const value: SerializableList = [];
+ for (; index < offset;) {
+ const deserialized = _deserialize(data, elementType, index);
+ index = deserialized.offset;
+ value.push(deserialized.value);
+ }
+ return {
+ offset,
+ value,
+ }
+}
+
+function _deserializeObject(data: Buffer, type: ObjectType, start: number): DeserializedValue {
+ const length = data.readUIntLE(start, BYTES_PER_LENGTH_PREFIX);
+ const index0 = start + BYTES_PER_LENGTH_PREFIX;
+ const offset = index0 + length;
+ let index = index0;
+ const value: SerializableObject = {};
+ for (const [fieldName, fieldType] of type.fields) {
+ const deserialized = _deserialize(data, fieldType, index);
+ index = deserialized.offset;
+ value[fieldName] = deserialized.value;
+ }
+ return {
+ offset,
+ value,
+ }
+}
+
+export function _deserialize(data: Buffer, type: SerializableType, start: number): DeserializedValue {
+ if (typeof type === "string") {
+ if (type === "bool") {
+ return _deserializeBool(data, start);
+ }
+ if (type.match(/^bytes\d*$/)) {
+ return _deserializeByteArray(data, start);
+ }
+ if (type.match(/^uint\d+$/)) {
+ const bits = parseInt(type.match(/\d+$/) as unknown as string);
+ assert([8, 16, 32, 64, 128, 256].find((b) => b === bits), `Invalid uint type: ${type}`);
+ return _deserializeUint(data, bits / 8, false, start);
+ }
+ } else if (Array.isArray(type)) {
+ assert(type.length <= 2, `Invalid array type: ${type}`);
+ return _deserializeArray(data, type, start);
+ } else if (type === Object(type)) {
+ assert(Array.isArray(type.fields), `Invalid object type: ${type}`);
+ return _deserializeObject(data, type, start);
+ }
+ throw new Error(`Invalid type: ${type}`);
+}
+
+/**
+ * Deserialize, according to the SSZ spec
+ * @method deserialize
+ * @param {Buffer} data
+ * @param {SerializableType} type
+ * @returns {SerializableType}
+ */
+export function deserialize(data: Buffer, type: SerializableType): SerializableValue {
+ return _deserialize(data, type, 0).value;
+}
diff --git a/src/hashTreeRoot.ts b/src/hashTreeRoot.ts
new file mode 100644
index 0000000..b9af9ae
--- /dev/null
+++ b/src/hashTreeRoot.ts
@@ -0,0 +1,73 @@
+import assert from "assert";
+
+import {
+ ByteArray,
+ ObjectType,
+ SerializableArray,
+ SerializableList,
+ SerializableType,
+ SerializableValue,
+ SerializableObject,
+} from "./types";
+
+import {
+ merkleize,
+ mixInLength,
+ pack,
+} from "./hashUtils";
+
+/**
+ * Merkleize an SSZ value
+ * @method hashTreeRoot
+ * @param {SerializableValue} value
+ * @param {SerializableType} type
+ * @returns {Buffer}
+ */
+export function hashTreeRoot(value: SerializableValue, type: SerializableType): Buffer {
+ if (typeof type === "string") {
+ if (type === "bool") {
+ return merkleize(pack([value], type));
+ }
+ if (type === "bytes") {
+ return mixInLength(
+ merkleize(pack([value], type)),
+ (value as ByteArray).length);
+ }
+ if (type.match(/^bytes\d+?$/)) {
+ return merkleize(pack([value], type));
+ }
+ if (type.match(/^uint\d+?$/)) {
+ return merkleize(pack([value], type));
+ }
+ } else if (Array.isArray(type)) {
+ assert((value as SerializableArray).length !== undefined, `Invalid array value: ${value}`);
+ assert(type.length <= 2, `Invalid array type: ${type}`);
+ const elementType = type[0];
+ if (elementType === "byte") {
+ if (type.length === 1) {
+ return mixInLength(
+ merkleize(pack([value], type)),
+ (value as ByteArray).length);
+ } else { // type.length === 2
+ return merkleize(pack([value], type));
+ }
+ }
+ value = value as SerializableList;
+ if (type.length === 1) {
+ return mixInLength(
+ merkleize(value.map((v) => hashTreeRoot(v, elementType))),
+ value.length);
+ }
+ if (type.length === 2) {
+ if (typeof elementType === "string") {
+ return merkleize(pack(value, elementType));
+ } else {
+ return merkleize(value.map((v) => hashTreeRoot(v, elementType)));
+ }
+ }
+ } else if (typeof type === "object") {
+ return merkleize((type as ObjectType).fields
+ .map(([fieldName, fieldType]) => hashTreeRoot((value as SerializableObject)[fieldName], fieldType)));
+ }
+ throw new Error(`Invalid type: ${type}`);
+}
diff --git a/src/hashUtils.ts b/src/hashUtils.ts
new file mode 100644
index 0000000..0697b13
--- /dev/null
+++ b/src/hashUtils.ts
@@ -0,0 +1,71 @@
+import {keccak256} from "js-sha3";
+
+import {
+ SerializableType,
+ SerializableValue,
+} from "./types";
+
+import { BYTES_PER_CHUNK } from "./constants";
+
+import { size } from "./size";
+
+import { _serialize } from "./serialize";
+
+export function pack (input: SerializableValue[], type: SerializableType): Buffer[] {
+ const packedLength = input.map((v) => size(v, type)).reduce((a, b) => a + b);
+ const packedBuf = Buffer.alloc(packedLength);
+ let index = 0;
+ for (const v of input) {
+ index = _serialize(v, type, packedBuf, index);
+ }
+ const chunkLength = Math.ceil(packedLength / BYTES_PER_CHUNK);
+ const chunks = Array.from({ length: chunkLength },
+ (_, i) => packedBuf.slice(i * BYTES_PER_CHUNK, i * BYTES_PER_CHUNK + BYTES_PER_CHUNK));
+ const lastChunk = chunks[chunkLength - 1];
+ if (lastChunk.length < BYTES_PER_CHUNK) {
+ chunks[chunkLength - 1] = Buffer.concat([lastChunk, Buffer.alloc(BYTES_PER_CHUNK - lastChunk.length)]);
+ }
+ return chunks;
+}
+
+function bitLength (n: number): number {
+ let length = 0;
+ while (n !== 0) {
+ n = n >> 1;
+ length++;
+ }
+ return length;
+}
+
+function nextPowerOf2 (n: number): number {
+ return n === 0 ? 1 : Math.pow(2, bitLength(n - 1));
+}
+
+export function hash(input: Buffer): Buffer {
+ return Buffer.from(keccak256.arrayBuffer(input));
+}
+
+export function merkleize(chunks: Buffer[]): Buffer {
+ const lengthToPad = nextPowerOf2(chunks.length) - chunks.length;
+ if (lengthToPad) {
+ // Add zeroed chunks as leaf nodes to create full binary tree
+ const emptyChunk = Buffer.alloc(BYTES_PER_CHUNK);
+ chunks = chunks.concat(
+ Array.from({ length: lengthToPad }, () => emptyChunk)
+ );
+ }
+ while (chunks.length > 1) {
+ for (let i = 0; i < chunks.length; i += 2) {
+ chunks[i / 2] = hash(Buffer.concat([chunks[i], chunks[i + 1]]));
+ }
+ chunks.splice(chunks.length / 2, chunks.length / 2);
+ }
+ return hash(chunks[0]);
+}
+
+export function mixInLength(root: Buffer, length: number): Buffer {
+ const buf = Buffer.alloc(64);
+ root.copy(buf);
+ buf.writeUInt32LE(length, 32);
+ return hash(buf);
+}
diff --git a/src/index.js b/src/index.js
deleted file mode 100644
index 96844fb..0000000
--- a/src/index.js
+++ /dev/null
@@ -1,345 +0,0 @@
-const intByteLength = require('./intBytes').intByteLength
-const readIntFromBuffer = require('./intBytes').readIntFromBuffer
-const writeIntToBuffer = require('./intBytes').writeIntToBuffer
-const deepCopy = require('deepcopy')
-const keccakAsU8a = require('@polkadot/util-crypto').keccakAsU8a
-
-// Number of bytes used for the length added before a variable-length serialized object.
-const LENGTH_BYTES = 4
-// Number of bytes for the chunk size of the Merkle tree leaf.
-const SSZ_CHUNK_SIZE = 128
-
-/**
- * Simply Serializes, as specified [here](https://github.com/ethereum/eth2.0-specs/blob/master/specs/simple-serialize.md#serializeencode)
- * @method serialize
- * @param {Array|BN|boolean|Buffer|number|object} value - value to serialize
- * @param {Array|string|object} type - type of value to serialize: A string ('bool', 'uintN','bytesN', 'bytes'), an Array [type], or object containing a `fields` property
- * @return {Buffer} serialized value
- */
-function serialize (value, type) {
- // serialize bool
- if (type === 'bool') {
- let result = Buffer.alloc(1)
- result.writeInt8(value ? 1 : 0)
- return result
- }
-
- // serialize integers (incl. BNs)
- if ((typeof type === 'string') && !!type.match(/^u?int\d+$/g)) {
- // determine int size
- const byteLength = intByteLength(type)
-
- // return bytes
- let buffer = Buffer.alloc(byteLength)
- writeIntToBuffer(buffer, value, byteLength)
- return buffer
- }
-
- // serialize bytesN
- if ((typeof type === 'string') && !!type.match(/^bytes\d+$/g)) {
- let bytesSize = parseInt(type.match(/\d+/g))
- // check byte length
- if (value.byteLength !== bytesSize) {
- throw Error(`given ${type} ${value} should be ${bytesSize} bytes`)
- }
- return value
- }
-
- // serialize bytes
- if (type === 'bytes') {
- // return (length + bytes)
- let byteLengthBuffer = Buffer.alloc(4)
- // write length to buffer as 4 byte int
- byteLengthBuffer.writeUInt32LE(value.byteLength) // little endian
- // write bytes to buffer
- return Buffer.concat([byteLengthBuffer, value])
- }
-
- // serialize array of a specified type
- if (Array.isArray(value) && Array.isArray(type)) {
- // only 1 element type is allowed
- if (type.length > 1) {
- throw Error('array type should only have one element type')
- }
-
- // serialize each element of the array
- let elementType = type[0]
- let serializedValues = value.map((element) => serialize(element, elementType))
- let totalByteLength = serializedValues.reduce((acc, v) => acc + v.byteLength, 0)
-
- // write length to buffer as 4 byte int
- let byteLengthBuffer = Buffer.alloc(4)
- byteLengthBuffer.writeUInt32LE(totalByteLength) // little endian
-
- // start from end of the length number (4 bytes)
- let ass = serializedValues.map((ab) => Buffer.from(ab))
- return Buffer.concat([byteLengthBuffer, ...ass], totalByteLength + 4)
- }
-
- // serializes objects (including compound objects)
- if ((typeof type === 'object' || typeof type === 'function') && type.hasOwnProperty('fields')) {
- const buffers = type.fields
- .map(([fieldName, fieldType]) => {
- return serialize(value[fieldName], fieldType)
- })
-
- let totalByteLength = buffers.reduce((acc, v) => acc + v.byteLength, 0)
- let byteLengthBuffer = Buffer.alloc(4)
- byteLengthBuffer.writeUInt32LE(totalByteLength) // little endian
-
- return Buffer.concat([byteLengthBuffer, ...buffers])
- }
-
- // cannot serialize
- throw new Error(`Unrecognized type: ${type}`)
-}
-
-/**
- * Simply Deserializes, as specified [here](https://github.com/ethereum/eth2.0-specs/blob/master/specs/simple-serialize.md#deserializedecode)
- * @method deserialize
- * @param {Buffer} data - byte array to deserialize
- * @param {Array|string|object} type - type of value to deserialize: A string ('bool', 'uintN','bytesN', 'bytes'), an Array [type], or object containing a `fields` property
- * @param {number} [start=0] - starting offset index in data
- * @return {object} deserialized value object: {deserializedData, offset}
- */
-function deserialize (data, type, start = 0) {
- // deserializes booleans
- if (type === 'bool') {
- let intResult = readIntFromBuffer(data, 1, start)
- if (intResult === 0 || intResult === 1) {
- return {
- deserializedData: intResult === 1,
- offset: start + 1
- }
- }
- }
-
- // deserializes unsigned integers
- if ((typeof type === 'string') && !!type.match(/^u?int\d+$/g)) {
- // determine int size
- const byteLength = intByteLength(type)
- assertEnoughBytes(data, start, byteLength)
-
- return {
- deserializedData: readIntFromBuffer(data, byteLength, start),
- offset: start + byteLength
- }
- }
-
- // deserializes bytesN
- if ((typeof type === 'string') && !!type.match(/^bytes\d+$/g)) {
- let bytesSize = parseInt(type.match(/\d+/g))
-
- assertEnoughBytes(data, start, bytesSize)
-
- return {
- deserializedData: data.slice(start, (start + bytesSize)),
- offset: start + bytesSize
- }
- }
-
- // deserialize bytes
- if (type === 'bytes') {
- let length = readIntFromBuffer(data, LENGTH_BYTES, start)
-
- assertEnoughBytes(data, start, LENGTH_BYTES + length)
-
- return {
- deserializedData: data.slice(start + LENGTH_BYTES, (start + LENGTH_BYTES + length)),
- offset: start + LENGTH_BYTES + length
- }
- }
-
- // deserializes array of a specified type
- if (Array.isArray(type)) {
- // only 1 element type is allowed
- if (type.length > 1) {
- throw Error('array type should only have one element type')
- }
-
- // deserialize each element of the array
- let elementType = type[0]
-
- let length = readIntFromBuffer(data, LENGTH_BYTES, start)
- let output = []
- let position = start + LENGTH_BYTES
-
- // work through the data deserializing the array elements
- while (position < (start + LENGTH_BYTES + length)) {
- let response = deserialize(data, elementType, position)
- position = response.offset
- output.push(response.deserializedData)
- }
-
- // check that we have have arrived at the end of the byte stream
- if (position !== (start + LENGTH_BYTES + length)) {
- throw Error('We did not arrive at the end of the byte length')
- }
-
- return {
- deserializedData: output,
- offset: position
- }
- }
-
- // deserializes objects (including compound objects)
- if ((typeof type === 'object' || typeof type === 'function') && type.hasOwnProperty('fields')) {
- let output = {}
- let position = start + LENGTH_BYTES
-
- type.fields
- .forEach(([fieldName, fieldType]) => {
- let fieldResult = deserialize(data, fieldType, position)
- position = fieldResult.offset
- output[fieldName] = fieldResult.deserializedData
- })
-
- return {
- deserializedData: output,
- offset: position
- }
- }
-
- // cannot deserialize
- throw new Error(`Unrecognized type: ${type}`)
-}
-
-function treeHashInternal (value, type) {
- if (typeof type === 'string') {
- // bool
- // bytes
- if (type === 'bool') {
- return serialize(value, type)
- // uint
- } else if (type.match(/^u?int\d+$/g)) {
- const bitSize = parseInt(type.match(/\d+/g))
- if (bitSize <= 256) {
- return serialize(value, type)
- } else {
- return hash(serialize(value, type))
- }
- // bytesN
- } else if (type.match(/^bytes\d+$/g)) {
- const bytesSize = parseInt(type.match(/\d+/g))
- if (bytesSize <= 32) {
- return serialize(value, type)
- } else {
- return hash(serialize(value, type))
- }
- // bytes
- } else if (type === 'bytes') {
- return hash(serialize(value, type))
- } else {
- throw Error(`Unable to hash: unknown type ${type}`)
- }
- } else if (Array.isArray(value) && Array.isArray(type)) {
- const elementType = type[0]
- return merkleHash(value.map(v => treeHashInternal(v, elementType)))
- } else if ((typeof type === 'object' || typeof type === 'function') && type.hasOwnProperty('fields')) {
- return merkleHash(type.fields.map(([fieldName, fieldType]) => treeHashInternal(value[fieldName], fieldType)))
- }
-}
-
-/**
- * Returns a tree hash of a simple-serializable value, as specified [here](https://github.com/ethereum/eth2.0-specs/blob/master/specs/simple-serialize.md#tree-hash)
- * @method treeHash
- * @param {Array|boolean|Buffer|number|object} value - Value to hash
- * @param {Array|string|object} type - The type of the value to hash: A string ('bool', 'uintN','bytesN', 'bytes'), an Array [type], or object containing a `fields` property
- * @return {Buffer} the hash, length <= 32
- */
-function treeHash (value, type) {
- return zpad(treeHashInternal(value, type), 32)
-}
-
-/**
- * Checks if two serialized objects are equal by value
- * @method eq
- * @param {Buffer} x - serialized object
- * @param {Buffer} y - serialized object
- * @return {boolean} x equals y
- */
-function eq (x, y) {
- // Since we serialized x and y as buffers and buffers in JS are deterministic, we can do the following
- return x.equals(y)
-}
-
-/**
- * Returns a deep copy of a serialized object
- * @method deepcopy
- * @param {Buffer} x - Value to deep copy
- * @return {Buffer} the deep copy of x
- */
-function deepcopy (x) {
- return deepCopy(x)
-}
-
-function assertEnoughBytes (data, start, length) {
- if (data.byteLength < start + length) {
- throw Error('Data bytes is not enough for data type')
- }
-}
-
-// Merkle tree hash of a list of homogenous, non-empty items
-function merkleHash (list) {
- // Store length of list (to compensate for non-bijectiveness of padding)
- const dataLen = Buffer.alloc(32)
- dataLen.writeUInt32LE(list.length) // little endian
- let chunkz
- if (list.length === 0) {
- chunkz = [Buffer.alloc(SSZ_CHUNK_SIZE)]
- } else if (list[0].length < SSZ_CHUNK_SIZE) {
- // See how many items fit in a chunk
- const itemsPerChunk = Math.floor(SSZ_CHUNK_SIZE / list[0].length)
-
- // Build a list of chunks based on the number of items in the chunk
- chunkz = []
- for (let i = 0; i < list.length; i += itemsPerChunk) {
- chunkz.push(zpad(Buffer.concat(list.slice(i, i + itemsPerChunk)), SSZ_CHUNK_SIZE))
- }
- } else {
- chunkz = list
- }
-
- const bitLength = (x) => {
- let numBits = 0
- while (x !== 0) {
- x = x >> 1
- numBits++
- }
- return numBits
- }
- const nextPowerOf2 = (x) => x === 0 ? 1 : Math.pow(2, bitLength(x - 1))
- // Add zeroed chunks as leaf nodes to create full binary tree
- chunkz = chunkz.concat(
- Array.from({ length: nextPowerOf2(chunkz.length) - chunkz.length },
- () => Buffer.alloc(SSZ_CHUNK_SIZE)))
- // Merkleise
- while (chunkz.length > 1) {
- const chunkz2 = []
- for (let i = 0; i < chunkz.length; i += 2) {
- chunkz2.push(hash(Buffer.concat([chunkz[i], chunkz[i + 1]])))
- }
- chunkz = chunkz2
- }
-
- // Return hash of root and length data
- return hash(Buffer.concat([chunkz[0], dataLen]))
-}
-
-function hash (x) {
- return Buffer.from(keccakAsU8a(x))
-}
-
-function zpad (input, length) {
- if (input.length < length) {
- return Buffer.concat([input, Buffer.alloc(length - input.length)])
- }
- return input
-}
-
-exports.serialize = serialize
-exports.deserialize = deserialize
-exports.eq = eq
-exports.deepcopy = deepcopy
-exports.merkleHash = merkleHash
-exports.treeHash = treeHash
diff --git a/src/index.ts b/src/index.ts
new file mode 100644
index 0000000..b2a1ae3
--- /dev/null
+++ b/src/index.ts
@@ -0,0 +1,9 @@
+import { hashTreeRoot } from "./hashTreeRoot";
+import { deserialize } from "./deserialize";
+import { serialize } from "./serialize";
+
+export {
+ deserialize,
+ serialize,
+ hashTreeRoot,
+};
diff --git a/src/intBytes.js b/src/intBytes.js
deleted file mode 100644
index f7a663f..0000000
--- a/src/intBytes.js
+++ /dev/null
@@ -1,28 +0,0 @@
-const BN = require('bn.js')
-
-/**
- * Counts number of bytes in an integer
- * @ignore
- * @param type
- * @returns {number}
- */
-function intByteLength (type) {
- const bits = parseInt(type.match(/\d+/g))
- if (bits < 0 || bits % 8 !== 0) {
- throw Error('given int type has invalid size, must be size > 0 and size % 8 == 0')
- }
- return bits / 8
-}
-
-function readIntFromBuffer (buffer, byteSize, offset = 0) {
- const bnResult = new BN(buffer.slice(offset, (offset + byteSize)), 16, 'le').fromTwos(byteSize * 8)
- return byteSize <= 4 ? bnResult.toNumber() : bnResult
-}
-
-function writeIntToBuffer (buffer, value, byteSize, offset = 0) {
- new BN(value).toTwos(byteSize * 8).toArrayLike(Buffer, 'le', byteSize).copy(buffer, offset)
-}
-
-exports.intByteLength = intByteLength
-exports.readIntFromBuffer = readIntFromBuffer
-exports.writeIntToBuffer = writeIntToBuffer
diff --git a/src/serialize.ts b/src/serialize.ts
new file mode 100644
index 0000000..a5888af
--- /dev/null
+++ b/src/serialize.ts
@@ -0,0 +1,107 @@
+import BN from "bn.js";
+
+import {
+ ArrayType,
+ Bool,
+ ByteArray,
+ ObjectType,
+ SerializableArray,
+ SerializableObject,
+ SerializableType,
+ SerializableValue,
+ Uint,
+ SerializableList,
+} from "./types";
+
+import { BYTES_PER_LENGTH_PREFIX } from "./constants";
+
+import { size } from "./size";
+
+function _serializeUint(value: Uint, byteLength: number, output: Buffer, start: number): number {
+ const offset = start + byteLength;
+ if (BN.isBN(value)) {
+ value.toArrayLike(Buffer, "le", byteLength)
+ .copy(output, start);
+ } else {
+ output.writeUIntLE(value, start, byteLength);
+ }
+ return offset;
+}
+
+function _serializeBool(value: Bool, output: Buffer, start: number): number {
+ const offset = start + 1;
+ if (value) {
+ output.writeUInt8(1, start);
+ } else {
+ output.writeUInt8(0, start);
+ }
+ return offset;
+}
+
+function _serializeByteArray(value: ByteArray, typeLength: number, output: Buffer, start: number): number {
+ const index0 = start + BYTES_PER_LENGTH_PREFIX;
+ const length = !isNaN(typeLength) ? typeLength : value.length;
+ const offset = start + length + BYTES_PER_LENGTH_PREFIX;
+ output.writeUIntLE(length, start, BYTES_PER_LENGTH_PREFIX);
+ (Buffer.isBuffer(value) ? value : Buffer.from(value))
+ .copy(output, index0);
+ return offset;
+}
+
+function _serializeArray(value: SerializableArray, type: ArrayType, output: Buffer, start: number): number {
+ const elementType = type[0];
+ if (elementType === "byte") {
+ return _serializeByteArray((value as ByteArray), parseInt(type[1] as string), output, start);
+ }
+ const index0 = start + BYTES_PER_LENGTH_PREFIX;
+ let index = index0;
+ for (const v of (value as SerializableList)) {
+ index = _serialize(v, elementType, output, index);
+ }
+ output.writeUIntLE(index - index0, start, BYTES_PER_LENGTH_PREFIX)
+ return index;
+}
+
+function _serializeObject(value: SerializableObject, type: ObjectType, output: Buffer, start: number): number {
+ const index0 = start + BYTES_PER_LENGTH_PREFIX;
+ let index = index0;
+ for (const [fieldName, fieldType] of type.fields) {
+ index = _serialize(value[fieldName], fieldType, output, index);
+ }
+ output.writeUIntLE(index - index0, start, BYTES_PER_LENGTH_PREFIX)
+ return index;
+}
+
+export function _serialize(value: SerializableValue, type: SerializableType, output: Buffer, start: number): number {
+ if (typeof type === "string") {
+ if (type === "bool") {
+ return _serializeBool(value as Bool, output, start);
+ }
+ if (type.match(/^bytes\d*$/)) {
+ const typeLength = parseInt(type.match(/\d+$/) as unknown as string);
+ return _serializeByteArray(value as ByteArray, typeLength, output, start);
+ }
+ if (type.match(/^uint\d+$/)) {
+ const byteLength = parseInt(type.match(/\d+$/) as unknown as string) / 8;
+ return _serializeUint(value as Uint, byteLength, output, start);
+ }
+ } else if (Array.isArray(type)) {
+ return _serializeArray(value as SerializableArray, type, output, start);
+ } else if (type === Object(type)) {
+ return _serializeObject(value as SerializableObject, type, output, start);
+ }
+ throw new Error(`Invalid type: ${type}`);
+}
+
+/**
+ * Serialize, according to the SSZ spec
+ * @method serialize
+ * @param {SerializableValue} value
+ * @param {SerializableType} type
+ * @returns {Buffer}
+ */
+export function serialize(value: SerializableValue, type: SerializableType): Buffer {
+ const buf = Buffer.alloc(size(value, type));
+ _serialize(value, type, buf, 0);
+ return buf;
+}
diff --git a/src/size.ts b/src/size.ts
new file mode 100644
index 0000000..718f9cb
--- /dev/null
+++ b/src/size.ts
@@ -0,0 +1,57 @@
+import assert from "assert";
+
+import {
+ ByteArray,
+ SerializableArray,
+ SerializableList,
+ SerializableObject,
+ SerializableType,
+ SerializableValue,
+} from "./types";
+
+import { BYTES_PER_LENGTH_PREFIX } from "./constants";
+
+function _sizeByteArray(value: ByteArray, type: SerializableType, typeLength: number): number {
+ if (!isNaN(typeLength)) {
+ assert(typeLength > 0, `Invalid byte array type: ${type}`);
+ return typeLength + BYTES_PER_LENGTH_PREFIX;
+ }
+ return value.length + BYTES_PER_LENGTH_PREFIX;
+}
+
+export function size(value: SerializableValue, type: SerializableType): number {
+ if (typeof type === "string") {
+ if (type === "bool") {
+ assert(value === true || value === false, `Invalid bool value: ${value}`);
+ return 1;
+ }
+ if (type.match(/^bytes\d*$/)) {
+ value = value as ByteArray;
+ assert(value.length !== undefined, `Invalid byte array value: ${value}`);
+ const typeLength = parseInt(type.match(/\d+$/) as unknown as string);
+ return _sizeByteArray(value, type, typeLength);
+ }
+ if (type.match(/^uint\d+$/)) {
+ const bits = parseInt(type.match(/\d+$/) as unknown as string);
+ assert([8, 16, 32, 64, 128, 256].find((b) => b === bits), `Invalid uint type: ${type}`);
+ return bits / 8;
+ }
+ } else if (Array.isArray(type)) {
+ assert((value as SerializableArray).length !== undefined, `Invalid array value: ${value}`);
+ assert(type.length <= 2, `Invalid array type: ${type}`);
+ const elementType = type[0];
+ if (elementType === "byte") {
+ return _sizeByteArray(value as ByteArray, type, parseInt(type[1] as string));
+ }
+ return (value as SerializableList)
+ .map((v) => size(v, elementType))
+ .reduce((a, b) => a + b) + BYTES_PER_LENGTH_PREFIX;
+ } else if (type === Object(type)) {
+ assert(value === Object(value), `Invalid object value: ${value}`);
+ assert(Array.isArray(type.fields), `Invalid object type: ${type}`);
+ return type.fields
+ .map(([fieldName, fieldType]) => size((value as SerializableObject)[fieldName], fieldType))
+ .reduce((a, b) => a + b) + BYTES_PER_LENGTH_PREFIX;
+ }
+ throw new Error(`Invalid type: ${type}`);
+}
diff --git a/src/types.ts b/src/types.ts
new file mode 100644
index 0000000..a747178
--- /dev/null
+++ b/src/types.ts
@@ -0,0 +1,33 @@
+import BN from "bn.js";
+
+export type Uint = number | BN;
+export type Bool = boolean;
+export type ByteArray = Buffer | Uint8Array;
+// eslint-disable-next-line @typescript-eslint/no-empty-interface
+export interface SerializableList extends Array {}
+export type SerializableArray = ByteArray | SerializableList;
+export interface SerializableObject {
+ [field: string]: SerializableValue;
+}
+export type SerializableValue = Uint | Bool | SerializableArray | SerializableObject;
+
+export interface DeserializedValue {
+ offset: number;
+ value: SerializableValue;
+}
+
+export type PrimitiveType = string;
+export interface ListType extends Array {
+ 0: SerializableType;
+}
+export interface TupleType extends Array {
+ 0: SerializableType;
+ 1: number;
+}
+export type ArrayType = ListType | TupleType;
+export interface ObjectType {
+ name: string;
+ fields: [string, SerializableType][];
+}
+export type CompositeType = ArrayType | ObjectType;
+export type SerializableType = PrimitiveType | CompositeType;
diff --git a/src/web.ts b/src/web.ts
new file mode 100644
index 0000000..920f438
--- /dev/null
+++ b/src/web.ts
@@ -0,0 +1,14 @@
+import {
+ hashTreeRoot,
+ deserialize,
+ serialize,
+} from "./index";
+
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+(function (window: any) {
+ window.ssz = {
+ hashTreeRoot,
+ deserialize,
+ serialize,
+ }
+})(window)
diff --git a/test/deserialize.test.ts b/test/deserialize.test.ts
new file mode 100644
index 0000000..35f17ed
--- /dev/null
+++ b/test/deserialize.test.ts
@@ -0,0 +1,82 @@
+import { assert } from "chai";
+
+import BN from "bn.js";
+
+import {
+ SerializableType,
+ SerializableValue,
+} from "../src/types";
+
+import { deserialize } from "../src/deserialize";
+
+import {
+ ArrayObject,
+ OuterObject,
+ SimpleObject,
+} from "./objects";
+
+import { stringifyType } from "./utils";
+
+describe("deserialize", () => {
+ const testCases: {
+ value: string;
+ type: SerializableType;
+ expected: SerializableValue;
+ }[] = [
+ {value: "01", type: "bool", expected: true},
+ {value: "00", type: "bool", expected: false},
+ {value: "00", type: "uint8", expected: 0},
+ {value: "01", type: "uint8", expected: 1},
+ {value: "ff", type: "uint8", expected: 255},
+ {value: "0001", type: "uint16", expected: 2**8},
+ {value: "ff0f", type: "uint16", expected: 2**12-1},
+ {value: "0010", type: "uint16", expected: 2**12},
+ {value: "ffff", type: "uint16", expected: 2**16-1},
+ {value: "00000100", type: "uint32", expected: 2**16},
+ {value: "ffffff0f", type: "uint32", expected: 2**28-1},
+ {value: "00000010", type: "uint32", expected: 2**28},
+ {value: "ffffffff", type: "uint32", expected: 2**32-1},
+ {value: "0000000001000000", type: "uint64", expected: new BN(2**32)},
+ {value: "ffffffffffff0f00", type: "uint64", expected: new BN(2**52-1)},
+ {value: "0100000000000000", type: "uint64", expected: new BN("01", 16)},
+ {value: "0000000000000010", type: "uint64", expected: new BN("1000000000000000", 16)},
+ {value: "ffffffffffffffff", type: "uint64", expected: new BN("ffffffffffffffff", 16)},
+ {value: "ffffffffffffffffffffffffffffffff", type: "uint128", expected: new BN("ffffffffffffffffffffffffffffffff", 16)},
+ {value: "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", type: "uint256", expected: new BN("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16)},
+ {value: "04000000deadbeef", type: "bytes8", expected: Buffer.from("deadbeef", "hex")},
+ {value: "10000000deadbeefdeadbeefdeadbeefdeadbeef", type: "bytes32", expected: Buffer.from("deadbeefdeadbeefdeadbeefdeadbeef", "hex")},
+ {value: "04000000deadbeef", type: "bytes", expected: Buffer.from("deadbeef", "hex")},
+ {value: "04000000deadbeef", type: ["byte",8], expected: Buffer.from("deadbeef", "hex")},
+ {value: "10000000deadbeefdeadbeefdeadbeefdeadbeef", type: ["byte",32], expected: Buffer.from("deadbeefdeadbeefdeadbeefdeadbeef", "hex")},
+ {value: "04000000deadbeef", type: ["byte"], expected: Buffer.from("deadbeef", "hex")},
+ {value: "03000000000000", type: SimpleObject, expected: {b:0,a:0}},
+ {value: "03000000020001", type: SimpleObject, expected: {b:2,a:1}},
+ {value: "0700000003020000000600", type: OuterObject, expected: {v:3, subV:{v:6}}},
+ {value: "120000000e0000000300000002000103000000040003", type: ArrayObject, expected: {v: [{b:2,a:1}, {b:4,a:3}]}},
+ {value: "1600000007000000030200000006000700000005020000000700", type: [OuterObject], expected: [{v:3, subV:{v:6}}, {v:5, subV:{v:7}}]},
+ ];
+ for (const {value, type, expected} of testCases) {
+ it(`should correctly deserialize ${stringifyType(type)}`, () => {
+ const actual = deserialize(Buffer.from(value, "hex"), type);
+ if (BN.isBN(expected)) {
+ assert(expected.eq(actual as BN), `actual: ${actual}, expected: ${expected}`);
+ } else {
+ assert.deepEqual(actual, expected);
+ }
+ });
+ }
+
+ const failCases: {
+ value: string;
+ type: SerializableType;
+ reason: string;
+ }[] = [
+ {value: "01", type: "foo", reason: "Invalid type"},
+ {value: "01", type: "bar", reason: "Invalid type"},
+ ];
+ for (const {value, type, reason} of failCases) {
+ it(`should throw an error for ${stringifyType(type)}: ${reason}`, () => {
+ assert.throws(() => deserialize(Buffer.from(value, "hex"), type));
+ });
+ }
+});
diff --git a/test/hashTreeRoot.test.ts b/test/hashTreeRoot.test.ts
new file mode 100644
index 0000000..d5006e5
--- /dev/null
+++ b/test/hashTreeRoot.test.ts
@@ -0,0 +1,79 @@
+import { assert } from "chai";
+
+import BN from "bn.js";
+
+import {
+ SerializableType,
+ SerializableValue,
+} from "../src/types";
+
+import { hashTreeRoot } from "../src/hashTreeRoot";
+
+import {
+ ArrayObject,
+ OuterObject,
+ SimpleObject,
+} from "./objects";
+
+import { stringifyType } from "./utils";
+
+describe("hashTreeRoot", () => {
+ const testCases: {
+ value: SerializableValue;
+ type: SerializableType;
+ expected: string;
+ }[] = [
+ {value: true, type: "bool", expected: ""},
+ {value: false, type: "bool", expected: ""},
+ {value: 0, type: "uint8", expected: ""},
+ {value: 1, type: "uint8", expected: ""},
+ {value: 255, type: "uint8", expected: ""},
+ {value: 2**8, type: "uint16", expected: ""},
+ {value: 2**12-1, type: "uint16", expected: ""},
+ {value: 2**12, type: "uint16", expected: ""},
+ {value: 2**16-1, type: "uint16", expected: ""},
+ {value: 2**16, type: "uint32", expected: ""},
+ {value: 2**28-1, type: "uint32", expected: ""},
+ {value: 2**28, type: "uint32", expected: ""},
+ {value: 2**32-1, type: "uint32", expected: ""},
+ {value: 2**32, type: "uint64", expected: ""},
+ {value: 2**52-1, type: "uint64", expected: ""},
+ {value: new BN("01", 16), type: "uint64", expected: ""},
+ {value: new BN("1000000000000000", 16), type: "uint64", expected: ""},
+ {value: new BN("ffffffffffffffff", 16), type: "uint64", expected: ""},
+ {value: new BN("ffffffffffffffffffffffffffffffff", 16), type: "uint128", expected: ""},
+ {value: new BN("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16), type: "uint256", expected: ""},
+ {value: Buffer.from("deadbeef", "hex"), type: "bytes4", expected: ""},
+ {value: Buffer.from("deadbeefdeadbeefdeadbeefdeadbeef", "hex"), type: "bytes32", expected: ""},
+ {value: Buffer.from("deadbeef", "hex"), type: "bytes", expected: ""},
+ {value: Buffer.from("deadbeef", "hex"), type: ["byte", 4], expected: ""},
+ {value: Buffer.from("deadbeefdeadbeefdeadbeefdeadbeef", "hex"), type: ["byte", 16], expected: ""},
+ {value: Buffer.from("deadbeef", "hex"), type: ["byte"], expected: ""},
+ {value: {b:0,a:0}, type: SimpleObject, expected: ""},
+ {value: {b:2,a:1}, type: SimpleObject, expected: ""},
+ {value: {v:3, subV:{v:6}}, type: OuterObject, expected: ""},
+ {value: {v: [{b:2,a:1}, {b:4,a:3}]}, type: ArrayObject, expected: ""},
+ {value: [{v:3, subV:{v:6}}, {v:5, subV:{v:7}}], type: [OuterObject], expected: ""},
+ ];
+ for (const {value, type, expected} of testCases) {
+ it(`should correctly serialize ${stringifyType(type)}`, () => {
+ const actual = hashTreeRoot(value, type).toString('hex');
+ assert(actual);
+ });
+ }
+
+ const failCases: {
+ value: SerializableValue;
+ type: SerializableType;
+ reason: string;
+ }[] = [
+ {value: 1, type: "foo", reason: "Invalid type"},
+ {value: 1, type: "bar", reason: "Invalid type"},
+ ];
+ for (const {value, type, reason} of failCases) {
+ it(`should throw an error for ${stringifyType(type)}: ${reason}`, () => {
+ assert.throws(() => hashTreeRoot(value, type));
+ });
+ }
+});
+
diff --git a/test/utils/objects.js b/test/objects.ts
similarity index 51%
rename from test/utils/objects.js
rename to test/objects.ts
index 3087b2a..c9cb6fd 100644
--- a/test/utils/objects.js
+++ b/test/objects.ts
@@ -1,32 +1,33 @@
// Adapted from https://github.com/prysmaticlabs/prysm/blob/master/shared/ssz/encode_test.go#L296
-const SimpleObject = {
+import { ObjectType } from "../src/types";
+
+export const SimpleObject: ObjectType = {
+ name: "SimpleObject",
fields: [
['b', 'uint16'],
['a', 'uint8'],
],
}
-const InnerObject = {
+export const InnerObject: ObjectType = {
+ name: "InnerObject",
fields: [
['v', 'uint16'],
],
}
-const OuterObject = {
+export const OuterObject: ObjectType = {
+ name: "OuterObject",
fields: [
['v', 'uint8'],
['subV', InnerObject],
],
}
-const ArrayObject = {
+export const ArrayObject: ObjectType = {
+ name: "ArrayObject",
fields: [
['v', [SimpleObject]],
],
}
-
-exports.SimpleObject = SimpleObject
-exports.InnerObject = InnerObject
-exports.OuterObject = OuterObject
-exports.ArrayObject = ArrayObject
diff --git a/test/serialize.test.ts b/test/serialize.test.ts
new file mode 100644
index 0000000..7ccd9e2
--- /dev/null
+++ b/test/serialize.test.ts
@@ -0,0 +1,80 @@
+import { assert } from "chai";
+
+import BN from "bn.js";
+
+import {
+ SerializableType,
+ SerializableValue,
+} from "../src/types";
+
+import { serialize } from "../src/serialize";
+
+import {
+ ArrayObject,
+ OuterObject,
+ SimpleObject,
+} from "./objects";
+
+import { stringifyType } from "./utils";
+
+describe("serialize", () => {
+ const testCases: {
+ value: SerializableValue;
+ type: SerializableType;
+ expected: string;
+ }[] = [
+ {value: true, type: "bool", expected: "01"},
+ {value: false, type: "bool", expected: "00"},
+ {value: 0, type: "uint8", expected: "00"},
+ {value: 1, type: "uint8", expected: "01"},
+ {value: 255, type: "uint8", expected: "ff"},
+ {value: 2**8, type: "uint16", expected: "0001"},
+ {value: 2**12-1, type: "uint16", expected: "ff0f"},
+ {value: 2**12, type: "uint16", expected: "0010"},
+ {value: 2**16-1, type: "uint16", expected: "ffff"},
+ {value: 2**16, type: "uint32", expected: "00000100"},
+ {value: 2**28-1, type: "uint32", expected: "ffffff0f"},
+ {value: 2**28, type: "uint32", expected: "00000010"},
+ {value: 2**32-1, type: "uint32", expected: "ffffffff"},
+ {value: 2**32, type: "uint64", expected: "0000000001000000"},
+ {value: 2**52-1, type: "uint64", expected: "ffffffffffff0f00"},
+ {value: new BN("01", 16), type: "uint64", expected: "0100000000000000"},
+ {value: new BN("1000000000000000", 16), type: "uint64", expected: "0000000000000010"},
+ {value: new BN("ffffffffffffffff", 16), type: "uint64", expected: "ffffffffffffffff"},
+ {value: new BN("ffffffffffffffffffffffffffffffff", 16), type: "uint128", expected: "ffffffffffffffffffffffffffffffff"},
+ {value: new BN("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16), type: "uint256", expected: "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},
+ {value: Buffer.from("deadbeef", "hex"), type: "bytes4", expected: "04000000deadbeef"},
+ {value: Buffer.from("deadbeefdeadbeefdeadbeefdeadbeef", "hex"), type: "bytes16", expected: "10000000deadbeefdeadbeefdeadbeefdeadbeef"},
+ {value: Buffer.from("deadbeefdeadbeefdeadbeefdeadbeef", "hex"), type: "bytes32", expected: "20000000deadbeefdeadbeefdeadbeefdeadbeef00000000000000000000000000000000"},
+ {value: Buffer.from("deadbeef", "hex"), type: "bytes", expected: "04000000deadbeef"},
+ {value: Buffer.from("deadbeef", "hex"), type: ["byte", 4], expected: "04000000deadbeef"},
+ {value: Buffer.from("deadbeefdeadbeefdeadbeefdeadbeef", "hex"), type: ["byte", 16], expected: "10000000deadbeefdeadbeefdeadbeefdeadbeef"},
+ {value: Buffer.from("deadbeef", "hex"), type: ["byte"], expected: "04000000deadbeef"},
+ {value: {b:0,a:0}, type: SimpleObject, expected: "03000000000000"},
+ {value: {b:2,a:1}, type: SimpleObject, expected: "03000000020001"},
+ {value: {v:3, subV:{v:6}}, type: OuterObject, expected: "0700000003020000000600"},
+ {value: {v: [{b:2,a:1}, {b:4,a:3}]}, type: ArrayObject, expected: "120000000e0000000300000002000103000000040003"},
+ {value: [{v:3, subV:{v:6}}, {v:5, subV:{v:7}}], type: [OuterObject], expected: "1600000007000000030200000006000700000005020000000700"},
+ ];
+ for (const {value, type, expected} of testCases) {
+ it(`should correctly serialize ${stringifyType(type)}`, () => {
+ const actual = serialize(value, type).toString('hex');
+ assert.equal(actual, expected);
+ });
+ }
+
+ const failCases: {
+ value: SerializableValue;
+ type: SerializableType;
+ reason: string;
+ }[] = [
+ {value: 1, type: "foo", reason: "Invalid type"},
+ {value: 1, type: "bar", reason: "Invalid type"},
+ ];
+ for (const {value, type, reason} of failCases) {
+ it(`should throw an error for ${stringifyType(type)}: ${reason}`, () => {
+ assert.throws(() => serialize(value, type));
+ });
+ }
+});
+
diff --git a/test/test_ssz_deserialize.js b/test/test_ssz_deserialize.js
deleted file mode 100644
index c910768..0000000
--- a/test/test_ssz_deserialize.js
+++ /dev/null
@@ -1,522 +0,0 @@
-const assert = require('chai').assert;
-const BN = require('bn.js');
-const hexToBytes = require('./utils/hexToBytes').hexToBytes;
-const intByteLength = require('../src/intBytes').intByteLength;
-const ActiveState = require('./utils/activeState').ActiveState;
-const AttestationRecord = require('./utils/activeState').AttestationRecord;
-const serialize = require('../src').serialize;
-const deserialize = require('../src').deserialize;
-const testObjects = require('./utils/objects')
-
-const SimpleObject = testObjects.SimpleObject
-const OuterObject = testObjects.OuterObject
-const InnerObject = testObjects.InnerObject
-const ArrayObject = testObjects.ArrayObject
-
-describe(`SimpleSerialize - deserializes boolean`, () => {
-
- it(`deserializes boolean true value`, () => {
-
- let boolInput = true;
- let result = deserialize(serialize(boolInput, 'bool'), 'bool');
-
- assert.equal(result.deserializedData, boolInput);
- });
-
- it(`deserializes boolean false value`, () => {
-
- let boolInput = false;
- let result = deserialize(serialize(boolInput, 'bool'), 'bool');
-
- assert.equal(result.deserializedData, boolInput);
- });
-
-});
-
-
-describe(`SimpleSerialize - deserializes bytes32, bytes96, bytes97`, () => {
-
- it(`deserializes bytes32`, () => {
-
- let bytesInput = hexToBytes('ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad');
- let result = deserialize(serialize(bytesInput, 'bytes32'), 'bytes32');
-
- assert.isNotNull(result, 'bytes32 result should not be null');
- assert.equal(result.deserializedData.toString('hex'), bytesInput.toString('hex'), 'bytes32 result should be same as input');
- assert.equal(result.offset, 32, 'Offset is should be 32');
-
- });
-
- it(`deserializes bytes96`, () => {
-
- let bytesInput = hexToBytes('ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad');
- let result = deserialize(serialize(bytesInput, 'bytes96'), 'bytes96');
-
- assert.isNotNull(result, 'bytes96 result should not be null');
- assert.equal(result.deserializedData.toString('hex'), bytesInput.toString('hex'), 'bytes96 result should be same as input');
- assert.equal(result.offset, 96, 'Offset is should be 96');
-
- });
-
- it(`deserializes bytes97`, () => {
-
- let bytesInput = hexToBytes('ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adaa');
- let result = deserialize(serialize(bytesInput, 'bytes97'), 'bytes97');
-
- assert.isNotNull(result, 'bytes97 result should not be null');
- assert.equal(result.deserializedData.toString('hex'), bytesInput.toString('hex'), 'bytes97 result should be same as input');
- assert.equal(result.offset, 97, 'Offset is should be 97');
-
- });
-});
-
-describe('SimpleSerialize - deserializes bytes20', () => {
-
- it(`deserializes bytes20`, () => {
-
- let bytes20Input = hexToBytes('e17cb53f339a726e0b347bbad221ad7b50dc2a30');
- let result = deserialize(serialize(bytes20Input, 'bytes20'), 'bytes20');
-
- assert.isNotNull(result, 'bytes result should not be null');
- assert.equal(result.deserializedData.toString('hex'), bytes20Input.toString('hex'), 'bytes result should be same as input');
- assert.equal(result.offset, 20, 'Offset is should be 20')
-
- });
-
-});
-
-describe('SimpleSerialize - deserializes signed integers', () => {
-
- it(`deserializes int8`, () => {
-
- let intInput = 5;
- let result = deserialize(serialize(intInput, 'int8'), 'int8');
-
- assert.isNotNull(result, 'int8 result should not be null');
- assert.equal(result.deserializedData, intInput, 'int8 result should be same as input');
- assert.equal(result.offset, 1, 'Offset should be 1 byte');
-
- });
-
- it(`deserializes int16`, () => {
-
- let intInput = 32000;
- let result = deserialize(serialize(intInput, 'int16'), 'int16');
-
- assert.isNotNull(result, 'int16 result should not be null');
- assert.equal(result.deserializedData, intInput, 'int16 result should be same as input');
- assert.equal(result.offset, 2, 'Offset should be 2 bytes');
-
- });
-
- it(`deserializes int24`, () => {
-
- let intInput = 8355840;
- let result = deserialize(serialize(intInput, 'int24'), 'int24');
-
- assert.isNotNull(result, 'int24 result should not be null');
- assert.equal(result.deserializedData, intInput, 'int24 result should be same as input');
- assert.equal(result.offset, 3, 'Offset should be 2 bytes');
-
- });
-
- it(`deserializes int32`, () => {
-
- let intInput = 1000000000;
- let result = deserialize(serialize(intInput, 'int32'), 'int32');
-
- assert.isNotNull(result, 'int32 result should not be null');
- assert.equal(result.deserializedData, intInput, 'int32 result should be same as input');
- assert.equal(result.offset, 4, 'Offset should be 4 bytes');
-
- });
-
- it(`deserializes int64`, () => {
-
- let intInput = new BN(100000000000);
- let result = deserialize(serialize(intInput, 'int64'), 'int64');
-
- assert.isNotNull(result, 'int64 result should not be null');
- assert.isTrue(result.deserializedData.eq(intInput), `int64 result should be same as input actual: ${result.deserializedData} expected: ${intInput}`);
- assert.equal(result.offset, 8, 'Offset should be 8 bytes');
-
- });
-
- it(`deserializes int64 (negative)`, () => {
-
- let intInput = new BN(-100000000000);
- let result = deserialize(serialize(intInput, 'int64'), 'int64');
-
- assert.isNotNull(result, 'int64 result should not be null');
- assert.isTrue(result.deserializedData.eq(intInput), `int64 result should be same as input actual: ${result.deserializedData} expected: ${intInput}`);
- assert.equal(result.offset, 8, 'Offset should be 8 bytes');
-
- });
-
- it(`deserializes int256`, () => {
-
- let intInput = new BN('123').pow(new BN(25));
- let result = deserialize(serialize(intInput, 'int256'), 'int256');
-
- assert.isNotNull(result, 'int256 result should not be null');
- assert.isTrue(result.deserializedData.eq(intInput), `int256 result should be same as input actual: ${result.deserializedData} expected: ${intInput}`);
- assert.equal(result.offset, 32, 'Offset should be 32 bytes');
-
- });
-
- it(`deserializes int256 (negative)`, () => {
-
- let intInput = new BN('-123').pow(new BN(25));
- let result = deserialize(serialize(intInput, 'int256'), 'int256');
-
- assert.isNotNull(result, 'int256 result should not be null');
- assert.isTrue(result.deserializedData.eq(intInput), `int256 result should be same as input actual: ${result.deserializedData} expected: ${intInput}`);
- assert.equal(result.offset, 32, 'Offset should be 32 bytes');
-
- });
-
-});
-
-describe('SimpleSerialize - deserializes unsigned integers', () => {
-
- it(`deserializes uint8`, () => {
-
- let intInput = 5;
- let result = deserialize(serialize(intInput, 'uint8'), 'uint8');
-
- assert.isNotNull(result, 'uint8 result should not be null');
- assert.equal(result.deserializedData, intInput, 'uint8 result should be same as input');
- assert.equal(result.offset, 1, 'Offset should be 1 byte');
-
- });
-
- it(`deserializes uint16`, () => {
-
- let intInput = 32000;
- let result = deserialize(serialize(intInput, 'uint16'), 'uint16');
-
- assert.isNotNull(result, 'uint16 result should not be null');
- assert.equal(result.deserializedData, intInput, 'uint16 result should be same as input');
- assert.equal(result.offset, 2, 'Offset should be 2 bytes');
-
- });
-
- it(`deserializes uint24`, () => {
-
- let intInput = 8355840;
- let result = deserialize(serialize(intInput, 'uint24'), 'uint24');
-
- assert.isNotNull(result, 'uint24 result should not be null');
- assert.equal(result.deserializedData, intInput, 'uint24 result should be same as input');
- assert.equal(result.offset, 3, 'Offset should be 4 bytes');
-
- });
-
- it(`deserializes uint32`, () => {
-
- let intInput = 1000000000;
- let result = deserialize(serialize(intInput, 'uint32'), 'uint32');
-
- assert.isNotNull(result, 'uint32 result should not be null');
- assert.equal(result.deserializedData, intInput, 'uint32 result should be same as input');
- assert.equal(result.offset, 4, 'Offset should be 4 bytes');
-
- });
-
- it(`deserializes uint64`, () => {
-
- let intInput = new BN(100000000000);
- let result = deserialize(serialize(intInput, 'uint64'), 'uint64');
-
- assert.isNotNull(result, 'uint64 result should not be null');
-
- assert.isTrue(result.deserializedData.eq(intInput), `uint64 result should be same as input actual: ${result.deserializedData} expected: ${intInput}`);
- assert.equal(result.offset, 8, 'Offset should be 8 bytes');
-
- });
-
- it(`deserializes uint128`, () => {
-
- let intInput = new BN(1000000000);
- let result = deserialize(serialize(intInput, 'uint128'), 'uint128');
-
- assert.isNotNull(result, 'uint128 result should not be null');
-
- assert.isTrue(result.deserializedData.eq(intInput), `uint128 result should be same as input actual: ${result.deserializedData} expected: ${intInput}`);
- assert.equal(result.offset, 16, 'Offset should be 16 bytes');
-
- });
-
- it(`deserializes uint256`, () => {
-
- let intInput = new BN(100000000000000);
- let result = deserialize(serialize(intInput, 'uint256'), 'uint256');
-
- assert.isNotNull(result, 'uint256 result should not be null');
-
- assert.isTrue(result.deserializedData.eq(intInput), `uint256 result should be same as input actual: ${result.deserializedData} expected: ${intInput}`);
- assert.equal(result.offset, 32, 'Offset should be 32 bytes');
-
- });
-
-});
-
-describe('SimpleSerialize - deserialize bytes', () => {
-
- it(`deserializes bytes`, () => {
- let bytesArray = [];
- for(var i = 0; i < 280; i++){
- bytesArray.push(1);
- }
-
- let bytesInput = Buffer.from(bytesArray);
- let result = deserialize(serialize(bytesInput, 'bytes'), 'bytes');
-
- assert.isNotNull(result);
- assert.deepEqual(result.deserializedData.toString('hex'), bytesInput.toString('hex'));
- assert.equal(result.offset, 4 + bytesInput.byteLength, 'Offset should be int32 bytes (4) + byte input length');
- });
-
-});
-
-describe('SimpleSerialize - deserialize arrays', () => {
-
- it(`deserializes arrays of elements (of same type) - bool`, () => {
- let arrayInput = [true, false, true];
- let result = deserialize(serialize(arrayInput, ['bool']), ['bool']);
- assert.deepEqual(result.deserializedData, arrayInput);
- });
-
- it(`deserializes arrays of elements (of the same type) - bytes32`, () => {
-
- scenarioDeserializeByteArrays(
- [
- hexToBytes('ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad'),
- hexToBytes('dd7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015bb')
- ],
- 'bytes32'
- );
-
- });
-
- it(`deserializes arrays of elements (of the same type) - bytes20`, () => {
-
- scenarioDeserializeByteArrays(
- [
- hexToBytes('e17cb53f339a726e0b347bbad221ad7b50dc2a30'),
- hexToBytes('ccccb53f339a726e0b347bbad221ad7b50daaaaa')
- ],
- 'bytes20'
- );
-
- });
-
- it(`deserializes arrays of elements (of the same type) - int8`, () => {
- scenarioDeserializeIntArrays(
- [1, 2, 3],
- 'int8'
- );
- });
-
- it(`deserializes arrays of elements (of the same type) - int16`, () => {
- scenarioDeserializeIntArrays(
- [32000, 32001, 32002],
- 'int16'
- );
- });
-
- it(`deserializes arrays of elements (of the same type) - int32`, () => {
- scenarioDeserializeIntArrays(
- [1000000000, 1000000001, 1000000002],
- 'int32'
- );
- });
-
- it(`deserializes arrays of elements (of the same type) - int64`, () => {
- scenarioDeserializeIntArrays(
- [new BN(-100000000000), new BN(100000000000), new BN(-100000000000)],
- 'int64'
- );
- });
-
- it(`deserializes arrays of elements (of the same type) - int256`, () => {
- scenarioDeserializeIntArrays(
- [new BN(-1).pow(new BN(20)), new BN(1).pow(new BN(21)), new BN(-1).pow(new BN(22))],
- 'int256'
- );
- });
-
- it(`deserializes arrays of elements (of the same type) - uint8`, () => {
- scenarioDeserializeIntArrays(
- [1, 2, 3],
- 'uint8'
- );
- });
-
- it(`deserializes arrays of elements (of the same type) - uint16`, () => {
- scenarioDeserializeIntArrays(
- [32000, 32001, 32002],
- 'uint16'
- );
- });
-
- it(`deserializes arrays of elements (of the same type) - uint32`, () => {
- scenarioDeserializeIntArrays(
- [1000000000, 1000000001, 1000000002],
- 'uint32'
- );
- });
-
- it(`deserializes arrays of elements (of the same type) - uint64`, () => {
- scenarioDeserializeIntArrays(
- [new BN(100000000000), new BN(100000000000), new BN(100000000000)],
- 'uint64'
- );
- });
-
- it(`deserializes arrays of elements (of the same type) - uint256`, () => {
- scenarioDeserializeIntArrays(
- [new BN(1).pow(new BN(20)), new BN(1).pow(new BN(21)), new BN(1).pow(new BN(22))],
- 'uint256'
- );
- });
-
- function scenarioDeserializeByteArrays(arrayInput, type) {
- let result = deserialize(serialize(arrayInput, [type]), [type]);
-
- let flatInput = Buffer.from([...arrayInput[0], ...arrayInput[1]]);
- let expectedLength = flatInput.length;
-
- assert.isNotNull(result);
- assert.deepEqual(result.deserializedData, arrayInput);
- assert.equal(result.offset, 4 + expectedLength, 'Offset should be int32 bytes (4) + array bytes length');
- }
-
- function scenarioDeserializeIntArrays(arrayInput, type){
- let result = deserialize(serialize(arrayInput, [type]), [type]);
-
- assert.isNotNull(result);
- for (let index = 0; index < result.deserializedData.length; index++) {
- const elementResult = result.deserializedData[index];
- const elementInput = arrayInput[index];
- if (typeof elementResult === 'object') {
- assert.isTrue(elementResult.eq(elementInput), `Serialised elements do not match input - actual ${elementResult} expected ${elementInput}`);
- }
- else{
- assert.equal(elementResult, elementInput, 'Serialised elements do not match input');
- }
- }
- assert.equal(result.offset, 4 + intByteLength(type) * arrayInput.length, `Offset should be length (4 bytes) + (${intByteLength(type)} * number of elements)`);
- }
-
-});
-
-describe('SimpleSerialize - deserialize objects', () => {
-
- it(`deserialises objects of simple types`, () => {
- let bytesArray = [];
- for(var i = 0; i < 280; i++){
- bytesArray.push(8);
- }
-
- let valueObject = {
- 'publicAddress':hexToBytes('e17cb53f339a726e0b347bbad221ad7b50dc2a30'),
- 'secret': hexToBytes('ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad'),
- 'age': 30,
- 'distance': 32000,
- 'halfLife': 1000000000,
- 'file': Buffer.from(bytesArray),
- 'zz1': new BN(1000000000),
- 'zz2': new BN(-5).pow(new BN(16)),
- 'zz3': true
- };
-
- let fields = {
- 'fields': [
- ['age', 'int8'],
- ['distance', 'int16'],
- ['file', 'bytes'],
- ['halfLife', 'int32'],
- ['publicAddress', 'bytes20'],
- ['secret', 'bytes32'],
- ['zz1', 'uint64'],
- ['zz2', 'int256'],
- ['zz3', 'bool'],
- ]
- };
-
- let result = deserialize(serialize(valueObject, fields), fields);
-
- // assert fields
- fields['fields']
- .forEach(([fieldName, fieldType]) => {
- let expectedValue = valueObject[fieldName];
- let actualValue = result.deserializedData[fieldName];
- if(typeof actualValue.eq === 'function'){
- assert.isTrue(actualValue.eq(expectedValue), `Object serialised properties do not match input - actual ${actualValue} expected ${expectedValue}`);
- }
- else if(typeof actualValue.equals === 'function'){
- assert.isTrue(actualValue.equals(expectedValue), `Object serialised properties do not match input - actual ${actualValue} expected ${expectedValue}`);
- }
- else {
- assert.equal(actualValue, expectedValue, 'Object serialised properties do not match input');
- }
- });
-
- });
-
- it(`deserializes objects containing objects`, () => {
-
- let testObj = new ActiveState();
- let recentHash1 = 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad';
- let recentHash2 = 'aa1116bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad';
- testObj.recentBlockHashes = [
- hexToBytes(recentHash1),
- hexToBytes(recentHash2)
- ];
-
- let attestRecord1 = new AttestationRecord(0, 1, Buffer.from([11, 12, 13, 14]));
- let attestRecord2 = new AttestationRecord(2, 3, Buffer.from([255, 254, 253, 252]));
- testObj.pendingAttestations = [
- attestRecord1,
- attestRecord2
- ];
-
- let result = deserialize(serialize(testObj, ActiveState), ActiveState);
- assert.deepEqual(result.deserializedData, testObj);
-
- });
-
- const testCases = [
- [["30000000000000", SimpleObject], {b:0,a:0}],
- [["03000000020001", SimpleObject], {b:2,a:1}],
- [["0700000003020000000600", OuterObject], {v:3, subV: {v:6}}],
- [["120000000E0000000300000002000103000000040003", ArrayObject], {v: [{b:2,a:1}, {b:4,a:3}]}],
- [["1600000007000000030200000006000700000005020000020700", [OuterObject]], [{v:3, subV: {v:6}}, {v:5, subV: {v:7}}]],
- ];
-
- // like a deepEqual,but reliant on type, instead of inspection of ownProperties
- const genericEqual = (obj1, obj2, type) => {
- if (typeof type === 'string') { // simple type
- assert.equal(obj1, obj2)
- } else if (Array.isArray(type)) { // array type
- const elementType = type[0];
- assert.equal(obj1.length, obj2.length);
- for (let i = 0; i < obj1.length; i++) {
- genericEqual(obj1[i], obj2[i], elementType)
- }
- } else if (typeof type === 'function') { // object type
- for (const [fieldName, fieldType] of type.fields) {
- genericEqual(obj1[fieldName], obj2[fieldName], fieldType)
- }
- }
- };
-
- for (const [input, output] of testCases) {
- const [bytes, type] = input;
- it(`successfully decodes objects - ${type.name || typeof type}`, () => {
- const result = deserialize(Buffer.from(bytes, 'hex'), type).deserializedData;
- genericEqual(result, output, type)
- })
- }
-});
diff --git a/test/test_ssz_eq.js b/test/test_ssz_eq.js
deleted file mode 100644
index 266c798..0000000
--- a/test/test_ssz_eq.js
+++ /dev/null
@@ -1,144 +0,0 @@
-const assert = require('chai').assert;
-const hexToBytes = require('./utils/hexToBytes').hexToBytes;
-const intByteLength = require('../src/intBytes').intByteLength;
-const ActiveState = require('./utils/activeState').ActiveState;
-const AttestationRecord = require('./utils/activeState').AttestationRecord;
-const serialize = require('../src/index').serialize;
-const eq = require('../src/index').eq;
-
-describe('SimpleSerialize eq', () => {
-
- it('should be reflexive with bytes32 object that was simply serialized', () => {
- let bytesInput = hexToBytes('ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad');
- let result = serialize(bytesInput, 'bytes32');
-
- assert(eq(result,result) === true, "bytes32 result should be the same as itself");
- })
-
- it('should be false given different bytes32 objects that were simply serialized', () => {
- let bytesInput1 = hexToBytes('ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad');
- let result1 = serialize(bytesInput1, 'bytes32');
-
- let bytesInput2 = hexToBytes('bb7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad');
- let result2 = serialize(bytesInput2, 'bytes32');
-
- assert(eq(result1,result2) === false, "both bytes32 objects should be different");
- })
-
- it('should be reflexive with bytes20 object that was simply serialized', () => {
- let bytes20Input = hexToBytes('e17cb53f339a726e0b347bbad221ad7b50dc2a30');
- let result = serialize(bytes20Input, 'bytes20');
-
- assert(eq(result,result) === true, "bytes20 result should be the same as itself");
- })
-
- it('should be false given different bytes32 objects that were simply serialized', () => {
- let bytes20Input1 = hexToBytes('e17cb53f339a726e0b347bbad221ad7b50dc2a30');
- let result1 = serialize(bytes20Input1, 'bytes20');
-
- let bytes20Input2 = hexToBytes('e17db53f339a726e0b347bbad221ad7b50dc2a30');
- let result2 = serialize(bytes20Input2, 'bytes20');
-
- assert(eq(result1,result2) === false, "both bytes20 objects should be different");
- })
-
- it('should be reflexive with int8 object that was simply serialized', () => {
- let intInput = 5;
- let result = serialize(intInput, 'int8');
-
- assert(eq(result, result) === true, "int8 result should be the same as itself");
- })
-
- it('should be false given different int8 objects that were simply serialized', () => {
- let intInput1 = 5;
- let result1 = serialize(intInput1, 'int8');
-
- let intInput2 = 10;
- let result2 = serialize(intInput2, 'int8');
-
- assert(eq(result1,result2) === false, "both int8 objects should be different");
- })
-
- it('should be reflexive with int16 object that was simply serialized', () => {
- let intInput = 32000;
- let result = serialize(intInput, 'int16');
-
- assert(eq(result, result) === true, "int16 result should be the same as itself");
- })
-
- it('should be false given different int16 objects that were simply serialized', () => {
- let intInput1 = 32000;
- let result1 = serialize(intInput1, 'int16');
-
- let intInput2 = 32001;
- let result2 = serialize(intInput2, 'int16');
-
- assert(eq(result1,result2) === false, "both int16 objects should be different");
- })
-
- it('should be reflexive with int24 object that was simply serialized', () => {
- let intInput = 8355840;
- let result = serialize(intInput, 'int24');
-
- assert(eq(result, result) === true === true, "int24 result should be the same as itself");
- })
-
- it('should be false given different int24 objects that were simply serialized', () => {
- let intInput1 = 8355840;
- let result1 = serialize(intInput1, 'int24');
-
- let intInput2 = 16777213;
- let result2 = serialize(intInput2, 'int24');
-
- assert(eq(result1,result2) === false, "both int24 objects should be different");
- })
-
- it('should be reflexive with int32 object that was simply serialized', () => {
- let intInput = 1000000000;
- let result = serialize(intInput, 'int32');
-
- assert(eq(result, result) === true === true, "int32 result should be the same as itself");
- })
-
- it('should be false given different int32 objects that were simply serialized', () => {
- let intInput1 = 1000000000;
- let result1 = serialize(intInput1, 'int32');
-
- let intInput2 = 2147483645;
- let result2 = serialize(intInput2, 'int32');
-
- assert(eq(result1,result2) === false, "both int32 objects should be different");
- })
-
- it('should be reflexive with bytes object that was simply serialized', () => {
- let bytesArray = [];
- for(var i = 0; i < 280; i++){
- bytesArray.push(1);
- }
- let bytesInput = Buffer.from(bytesArray);
- let result = serialize(bytesInput, 'bytes');
-
-
- assert(eq(result, result) === true === true, "int32 result should be the same as itself");
- })
-
- it('should be false given different bytes objects that were simply serialized', () => {
- let bytesArray1 = [];
- for(var i = 0; i < 280; i++){
- bytesArray1.push(1);
- }
- let bytesInput1 = Buffer.from(bytesArray1);
- let result1 = serialize(bytesInput1, 'bytes');
-
- let bytesArray2 = [];
- for(var i = 0; i < 280; i++){
- bytesArray2.push(2);
- }
- let bytesInput2 = Buffer.from(bytesArray2);
- let result2 = serialize(bytesInput2, 'bytes');
-
- assert(eq(result1,result2) === false, "both bytes objects should be different");
- })
-
-
-})
diff --git a/test/test_ssz_helpers.js b/test/test_ssz_helpers.js
deleted file mode 100644
index 0deb822..0000000
--- a/test/test_ssz_helpers.js
+++ /dev/null
@@ -1,21 +0,0 @@
-const intByteLength = require("../src/intBytes").intByteLength;
-const assert = require('chai').assert
-
-describe("SSZ Helper Functions", () => {
- describe("intByteLength", () => {
- it("should return size 32 for int32", () => {
- const res = intByteLength('int32')
- assert(4 === res, `Got: ${res}, expected: ${4}`)
- });
-
- it("should error on int23 (not a multiple of 8)", () => {
- try {
- const res = intByteLength('int23')
- assert.fail('No error thrown')
- } catch (e) {
- assert(e.message === 'given int type has invalid size, must be size > 0 and size % 8 == 0',
- `wrong error thrown: ${e.message}`)
- }
- })
- })
-})
\ No newline at end of file
diff --git a/test/test_ssz_serialize.js b/test/test_ssz_serialize.js
deleted file mode 100644
index e74a76c..0000000
--- a/test/test_ssz_serialize.js
+++ /dev/null
@@ -1,787 +0,0 @@
-const assert = require('chai').assert;
-const BN = require('bn.js');
-const hexToBytes = require('./utils/hexToBytes').hexToBytes;
-const readIntFromBuffer = require('../src/intBytes').readIntFromBuffer;
-const intByteLength = require('../src/intBytes').intByteLength;
-const ActiveState = require('./utils/activeState').ActiveState;
-const AttestationRecord = require('./utils/activeState').AttestationRecord;
-const serialize = require('../src').serialize;
-const testObjects = require('./utils/objects')
-
-const SimpleObject = testObjects.SimpleObject
-const OuterObject = testObjects.OuterObject
-const InnerObject = testObjects.InnerObject
-const ArrayObject = testObjects.ArrayObject
-
-describe('SimpleSerialize - serializes booleans', () => {
-
- /** bool */
-
- it(`successfully serializes boolean true value`, () => {
- let boolInput = true;
- let result = serialize(boolInput, 'bool');
-
- assert.isNotNull(result, 'bool result should not be null');
- let intResult = result.readInt8(0);
- assert.isTrue(intResult == 1, boolInput, 'bool result should be same as input');
-
- });
-
- it(`successfully serializes boolean false value`, () => {
- let boolInput = false;
- let result = serialize(boolInput, 'bool');
-
- assert.isNotNull(result, 'bool result should not be null');
- let intResult = result.readInt8(0);
- assert.isTrue(intResult == 0, boolInput, 'bool result should be same as input');
-
- });
-
-});
-
-describe('SimpleSerialize - serializes bytes32', () => {
-
- /** bytes32 */
-
- it(`successfully serializes bytes32`, () => {
-
- let bytesInput = hexToBytes('ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad');
- let result = serialize(bytesInput, 'bytes32');
-
- assert.isNotNull(result, 'bytes32 result should not be null');
- assert.equal(result, bytesInput, 'bytes32 result should be same as input');
-
- });
-
- it(`errors when serializing bytes32, given bytes less than 32 bytes`, () => {
-
- let bytesWithIncorrectLength = hexToBytes('ba7816bf8f01cfea414140de5dae2223');
-
- assert.throws(
- () => serialize(bytesWithIncorrectLength, 'bytes32'),
- Error,
- `given bytes32 ${bytesWithIncorrectLength} should be 32 bytes`
- );
-
- });
-
- it(`errors when serializing bytes32, given bytes greater than 32 bytes`, () => {
-
- let bytesWithIncorrectLength = hexToBytes('ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015addfsdfds');
-
- assert.throws(
- () => serialize(bytesWithIncorrectLength, 'bytes32'),
- Error,
- `given bytes32 ${bytesWithIncorrectLength} should be 32 bytes`
- );
-
- });
-});
-
-describe('SimpleSerialize - serializes bytes96', () => {
-
- /** bytes32 */
-
- it(`successfully serializes bytes96`, () => {
-
- let bytesInput = hexToBytes('ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad');
- let result = serialize(bytesInput, 'bytes96');
-
- assert.isNotNull(result, 'bytes96 result should not be null');
- assert.equal(result, bytesInput, 'bytes96 result should be same as input');
-
- });
-
- it(`errors when serializing bytes96, given bytes less than 96 bytes`, () => {
-
- let bytesWithIncorrectLength = hexToBytes('ba7816bf8f01cfea414140de5dae2223ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad');
-
- assert.throws(
- () => serialize(bytesWithIncorrectLength, 'bytes96'),
- Error,
- `given bytes96 ${bytesWithIncorrectLength} should be 96 bytes`
- );
-
- });
-
- it(`errors when serializing bytes96, given bytes greater than 96 bytes`, () => {
-
- let bytesWithIncorrectLength = hexToBytes('ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015addfsdfds');
-
- assert.throws(
- () => serialize(bytesWithIncorrectLength, 'bytes96'),
- Error,
- `given bytes96 ${bytesWithIncorrectLength} should be 96 bytes`
- );
-
- });
-});
-
-describe('SimpleSerialize - serializes bytes97', () => {
-
- /** bytes32 */
-
- it(`successfully serializes bytes97`, () => {
-
- let bytesInput = hexToBytes('ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adqq');
- let result = serialize(bytesInput, 'bytes97');
-
- assert.isNotNull(result, 'bytes97 result should not be null');
- assert.equal(result, bytesInput, 'bytes97 result should be same as input');
-
- });
-
- it(`errors when serializing bytes97, given bytes less than 97 bytes`, () => {
-
- let bytesWithIncorrectLength = hexToBytes('ba7816bf8f01cfea414140de5dae2223ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad');
-
- assert.throws(
- () => serialize(bytesWithIncorrectLength, 'bytes97'),
- Error,
- `given bytes97 ${bytesWithIncorrectLength} should be 97 bytes`
- );
-
- });
-
- it(`errors when serializing bytes97, given bytes greater than 97 bytes`, () => {
-
- let bytesWithIncorrectLength = hexToBytes('ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015addfsdfds');
-
- assert.throws(
- () => serialize(bytesWithIncorrectLength, 'bytes97'),
- Error,
- `given bytes97 ${bytesWithIncorrectLength} should be 97 bytes`
- );
-
- });
-});
-
-describe('SimpleSerialize - serializes bytes20', () => {
-
- /** bytes20 */
-
- it(`serializes bytes20`, () => {
-
- let bytes20Input = hexToBytes('e17cb53f339a726e0b347bbad221ad7b50dc2a30');
- let result = serialize(bytes20Input, 'bytes20');
-
- assert.isNotNull(result, 'bytes20 result should not be null');
- assert.equal(result, bytes20Input, 'bytes20 result should be same as input');
-
- });
-
- it(`errors when serializing bytes20, given bytes20 less than 20 bytes`, () => {
-
- let bytes20WithIncorrectLength = hexToBytes('e17cb53f339a726e0b34');
-
- assert.throws(
- () => serialize(bytes20WithIncorrectLength, 'bytes20'),
- Error,
- `given bytes20 ${bytes20WithIncorrectLength} should be 20 bytes`
- );
-
- });
-
- it(`errors when serializing bytes20, given bytes20 greater than 20 bytes`, () => {
-
- let bytes20WithIncorrectLength = hexToBytes('e17cb53f339a726e0b347bbad221ad7b50dc2a300000000');
-
- assert.throws(
- () => serialize(bytes20WithIncorrectLength, 'bytes20'),
- Error,
- `given bytes20 ${bytes20WithIncorrectLength} should be 20 bytes`
- );
-
- });
-});
-
-describe('SimpleSerialize - serializes signed integers', () => {
-
- it(`serializes int8`, () => {
-
- let intInput = 5;
- let result = serialize(intInput, 'int8');
- let intResult = result.readInt8(0);
-
- assert.isNotNull(result, 'int8 result should not be null');
- assert.equal(intResult, intInput, 'int8 result should be same as input');
-
- });
-
- it(`serializes int8 (negative)`, () => {
-
- let intInput = -5;
- let result = serialize(intInput, 'int8');
- let intResult = result.readInt8(0);
-
- assert.isNotNull(result, 'int8 result should not be null');
- assert.equal(intResult, intInput, 'int8 result should be same as input');
-
- });
-
- it(`serializes int16`, () => {
-
- let intInput = 32000;
- let result = serialize(intInput, 'int16');
- let intResult = result.readInt16LE(0);
-
- assert.isNotNull(result, 'int16 result should not be null');
- assert.equal(intResult, intInput, 'int16 result should be same as input');
-
- });
-
- it(`serializes int16 (negative)`, () => {
-
- let intInput = -32000;
- let result = serialize(intInput, 'int16');
- let intResult = result.readInt16LE(0);
-
- assert.isNotNull(result, 'int16 result should not be null');
- assert.equal(intResult, intInput, 'int16 result should be same as input');
-
- });
-
- it(`serializes int24`, () => {
-
- let intInput = 8355840;
- let result = serialize(intInput, 'int24');
- let intResult = result.readIntLE(0, 3);
-
- assert.isNotNull(result, 'int24 result should not be null');
- assert.equal(intResult, intInput, 'int24 result should be same as input');
-
- });
-
- it(`serializes int24 (negative)`, () => {
-
- let intInput = -8355840;
- let result = serialize(intInput, 'int24');
- let intResult = result.readIntLE(0, 3);
-
- assert.isNotNull(result, 'int24 result should not be null');
- assert.equal(intResult, intInput, 'int24 result should be same as input');
-
- });
-
- it(`serializes int32`, () => {
-
- let intInput = 1000000000;
- let result = serialize(intInput, 'int32');
- let intResult = result.readInt32LE(0);
-
- assert.isNotNull(result, 'int32 result should not be null');
- assert.equal(intResult, intInput, 'int32 result should be same as input');
-
- });
-
- it(`serializes int32 (negative)`, () => {
-
- let intInput = -1000000000;
- let result = serialize(intInput, 'int32');
- let intResult = result.readInt32LE(0);
-
- assert.isNotNull(result, 'int32 result should not be null');
- assert.equal(intResult, intInput, 'int32 result should be same as input');
-
- });
-
- it(`serializes int64`, () => {
-
- let intInput = new BN(100000000000);
- let result = serialize(intInput, 'int64');
- let intResult = new BN([...result], 16, 'le').fromTwos(64);
-
- assert.isNotNull(result, 'int64 result should not be null');
- assert.isTrue(intResult.eq(intInput), 'int64 result should be same as input');
-
- });
-
- it(`serializes int64 (negative)`, () => {
-
- let intInput = new BN(-100000000000);
- let result = serialize(intInput, 'int64');
- let intResult = new BN([...result], 16, 'le').fromTwos(64);
-
- assert.isNotNull(result, 'int64 result should not be null');
- assert.isTrue(intResult.eq(intInput), 'int64 result should be same as input');
-
- });
-
- it(`serializes int128`, () => {
-
- let intInput = new BN('123').pow(new BN(5));
- let result = serialize(intInput, 'int128');
- let intResult = new BN([...result], 32, 'le').fromTwos(256);
-
- assert.isNotNull(result, 'int128 result should not be null');
- assert.isTrue(intResult.eq(intInput), 'int128 result should be same as input');
-
- });
-
- it(`serializes int256 (negative)`, () => {
-
- let intInput = new BN('-123').pow(new BN(25));
- let result = serialize(intInput, 'int256');
- let intResult = new BN([...result], 32, 'le').fromTwos(256);
-
- assert.isNotNull(result, 'int256 result should not be null');
- assert.isTrue(intResult.eq(intInput), 'int256 result should be same as input');
-
- });
-
-
- it(`serializes int256`, () => {
-
- let intInput = new BN('123').pow(new BN(25));
- let result = serialize(intInput, 'int256');
- let intResult = new BN([...result], 32, 'le').fromTwos(256);
-
- assert.isNotNull(result, 'int256 result should not be null');
- assert.isTrue(intResult.eq(intInput), 'int256 result should be same as input');
-
- });
-
- it(`serializes int256 (negative)`, () => {
-
- let intInput = new BN('-123').pow(new BN(25));
- let result = serialize(intInput, 'int256');
- let intResult = new BN([...result], 32, 'le').fromTwos(256);
-
- assert.isNotNull(result, 'int256 result should not be null');
- assert.isTrue(intResult.eq(intInput), 'int256 result should be same as input');
-
- });
-
-});
-
-describe('SimpleSerialize - serializes unsigned integers', () => {
-
- it(`serializes uint8`, () => {
-
- let intInput = 5;
- let result = serialize(intInput, 'uint8');
- let intResult = result.readUInt8(0);
-
- assert.isNotNull(result, 'uint8 result should not be null');
- assert.equal(intResult, intInput, 'uint8 result should be same as input');
-
- });
-
- it(`serializes uint16`, () => {
-
- let intInput = 32000;
- let result = serialize(intInput, 'uint16');
- let intResult = result.readInt16LE(0);
-
- assert.isNotNull(result, 'uint16 result should not be null');
- assert.equal(intResult, intInput, 'uint16 result should be same as input');
-
- });
-
- it(`serializes uint32`, () => {
-
- let intInput = 1000000000;
- let result = serialize(intInput, 'uint32');
- let intResult = result.readInt32LE(0);
-
- assert.isNotNull(result, 'uint32 result should not be null');
- assert.equal(intResult, intInput, 'uint32 result should be same as input');
-
- });
-
- it(`serializes uint64`, () => {
-
- let intInput = new BN(100000000000);
- let result = serialize(intInput, 'uint64');
- let intResult = new BN([...result], 16, 'le');
-
- assert.isNotNull(result, 'uint64 result should not be null');
- assert.isTrue(intResult.eq(intInput), 'uint64 result should be same as input');
-
- });
-
- it(`serializes uint128`, () => {
-
- let intInput = new BN('123').pow(new BN(5));
- let result = serialize(intInput, 'uint128');
- let intResult = new BN([...result], 32, 'le').fromTwos(256);
-
- assert.isNotNull(result, 'uint128 result should not be null');
- assert.isTrue(intResult.eq(intInput), 'uint128 result should be same as input');
-
- });
-
- it(`serializes uint256`, () => {
-
- let intInput = new BN('123').pow(new BN(25));
- let result = serialize(intInput, 'uint256');
- let intResult = new BN([...result], 32, 'le').fromTwos(256);
-
- assert.isNotNull(result, 'uint256 result should not be null');
- assert.isTrue(intResult.eq(intInput), 'uint256 result should be same as input');
-
- });
-
-});
-
-describe('SimpleSerialize - serializes bytes', () => {
-
- it(`serializes bytes`, () => {
-
- let bytesArray = [];
- for(var i = 0; i < 280; i++){
- bytesArray.push(1);
- }
- let bytesInput = Buffer.from(bytesArray);
- let result = serialize(bytesInput, 'bytes');
-
- assert.isNotNull(result);
- assert.equal(result.readUInt32LE(0), bytesInput.byteLength)
- let bytesResult = result.slice(4);
- assert.deepEqual(bytesResult, bytesInput);
-
- });
-
-});
-
-describe('SimpleSerialize - serializes arrays of elements (of same type)', () => {
-
- it(`serializes arrays of elements (of same type) - boolean`, () => {
- let arrayInput = [true, false, false];
-
- let result = serialize(arrayInput, ['bool']);
-
- let actualLength = result.readUInt32LE(0);
- assert.equal(actualLength, arrayInput.length, 'Byte length should equal 3');
- let boolResult = result.slice(4);
- for (let index = 0; index < arrayInput.length; index++) {
- const input = arrayInput[index];
- assert.equal(boolResult.readUInt8(index), input ? 1 : 0, 'Booleans not serialized correctly');
- }
- });
-
- it(`serializes arrays of elements (of the same type) - bytes32`, () => {
-
- let arrayInput = [
- hexToBytes('ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad'),
- hexToBytes('dd7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015bb')
- ];
- let result = serialize(arrayInput, ['bytes32']);
-
- let flatInput = Buffer.from([...arrayInput[0], ...arrayInput[1]]);
- let expectedLength = flatInput.length; // (length + bytes)
-
- assert.isNotNull(result);
-
- assert.equal(result.readUInt32LE(0), expectedLength)
-
- let arrayResult = result.slice(4);
- assert.deepEqual(arrayResult, flatInput);
-
- });
-
- it(`serializes arrays of elements (of the same type) - bytes20`, () => {
-
- let arrayInput = [
- hexToBytes('e17cb53f339a726e0b347bbad221ad7b50dc2a30'),
- hexToBytes('ccccb53f339a726e0b347bbad221ad7b50daaaaa')
- ];
- let result = serialize(arrayInput, ['bytes20']);
-
- let flatInput = Buffer.from([...arrayInput[0], ...arrayInput[1]]);
- let expectedLength = flatInput.length; // (length + bytes)
-
- assert.isNotNull(result);
-
- assert.equal(result.readUInt32LE(0), expectedLength)
-
- let arrayResult = result.slice(4);
- assert.deepEqual(arrayResult, flatInput);
-
- });
-
- it(`serializes arrays of elements (of the same type) - int8`, () => {
-
- scenarioTestArrayOfInts([1, 2, 3], 'int8');
-
- });
-
- it(`serializes arrays of elements (of the same type) - int16`, () => {
-
- scenarioTestArrayOfInts([32000, 32001, 32002], 'int16');
-
- });
-
- it(`serializes arrays of elements (of the same type) - int32`, () => {
-
- scenarioTestArrayOfInts([1000000000, 1000000001, 1000000002], 'int32');
-
- });
-
- it(`serializes arrays of elements (of the same type) - int64`, () => {
-
- scenarioTestArrayOfInts([new BN(100000000000), new BN(100000000001), new BN(100000000002)], 'int64');
-
- });
-
- it(`serializes arrays of elements (of the same type) - int256`, () => {
-
- scenarioTestArrayOfInts([new BN('1').pow(new BN(20)), new BN('1').pow(new BN(21)), new BN('1').pow(new BN(22))], 'int64');
-
- });
-
- it(`serializes arrays of elements (of the same type) - uint8`, () => {
-
- scenarioTestArrayOfInts([1, 2, 3], 'uint8');
-
- });
-
- it(`serializes arrays of elements (of the same type) - uint16`, () => {
-
- scenarioTestArrayOfInts([32000, 32001, 32002], 'uint16');
-
- });
-
- it(`serializes arrays of elements (of the same type) - uint32`, () => {
-
- scenarioTestArrayOfInts([1000000000, 1000000001, 1000000002], 'uint32');
-
- });
-
- it(`serializes arrays of elements (of the same type) - uint64`, () => {
-
- scenarioTestArrayOfInts([new BN(100000000000), new BN(100000000001), new BN(100000000002)], 'uint64');
-
- });
-
- it(`serializes arrays of elements (of the same type) - uint256`, () => {
-
- scenarioTestArrayOfInts([new BN('1').pow(new BN(20)), new BN('1').pow(new BN(21)), new BN('1').pow(new BN(22))], 'uint64');
-
- });
-
- it(`errors when serializing array, given more than one element type provided`, () =>{
-
- assert.throws(
- () => serialize([1,2], ['int32', 'int8']),
- Error,
- `array type should only have one element type`
- );
-
- });
-
- function scenarioTestArrayOfInts(arrayInput, type){
- let result = serialize(arrayInput, [type]);
-
- assert.isNotNull(result);
- let lengthResult = result.readUInt32LE(0);
- assert.equal(lengthResult, (arrayInput.length * intByteLength(type)));
- let resultView = result.slice(4);
- let inputIndex = 0;
- for(var i = 0; i < (result.byteLength-4); i+=intByteLength(type)) {
- const byteLength = intByteLength(type)
- let elementResult = readIntFromBuffer(resultView, byteLength, i);
- let elementInput = arrayInput[inputIndex++];
- if (typeof elementResult === 'object') {
- assert.isTrue(elementResult.eq(elementInput), `Serialised elements do not match input - actual ${elementResult} expected ${elementInput}`);
- }
- else{
- assert.equal(elementResult, elementInput, 'Serialised elements do not match input');
- }
-
- }
-
- }
-
-});
-
-
-describe('SimpleSerialize - serializes objects', () => {
-
- it(`serialises objects of simple types`, () => {
- let bytes20Value = 'e17cb53f339a726e0b347bbad221ad7b50dc2a30';
- let bytes32Value = 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad';
- let int8Value = 30;
- let int16Value = 32000;
- let int32Value = 1000000000;
- let uint64Value = new BN(1000000000);
- let int256Value = new BN(-5).pow(new BN(16));
- let boolValue = true;
-
- let bytesArray = [];
- for(var i = 0; i < 280; i++){
- bytesArray.push(8);
- }
- let bytesValue = Buffer.from(bytesArray);
-
- let result = serialize(
- {
- 'publicAddress':hexToBytes(bytes20Value),
- 'secret': hexToBytes(bytes32Value),
- 'age': int8Value,
- 'distance': int16Value,
- 'halfLife': int32Value,
- 'file': bytesValue,
- 'zz1': uint64Value,
- 'zz2': int256Value,
- 'zz3': boolValue
- },
- {
- 'fields': [
- ['age', 'int8'],
- ['distance', 'int16'],
- ['file', 'bytes'],
- ['halfLife', 'int32'],
- ['publicAddress', 'bytes20'],
- ['secret', 'bytes32'],
- ['zz1', 'uint64'],
- ['zz2', 'int256'],
- ['zz3', 'bool'],
- ]
- }
- );
-
- let offset = 0;
-
- // assert byte length
- let expectedByteLength = 384;
- let actualByteLength = result.readInt32LE(offset);
- offset += 4;
- assert.equal(actualByteLength, expectedByteLength, 'Byte length is not correct');
-
- // assert int8 value
- let actualInt8 = result.readUInt8(offset);
- offset += 1;
- assert.equal(actualInt8, int8Value, 'Int8 value not serialised correctly');
-
- // assert int16 value
- let actualInt16 = result.readUInt16LE(offset);
- offset += 2;
- assert.equal(actualInt16, int16Value, 'Int16 value not serialised correctly');
-
- // assert bytes value
- let actualBytesLength = result.readUInt32LE(offset);
- assert.equal(actualBytesLength, 280);
- offset += 4;
- let actualBytes = result.slice(offset, (offset + 280));
- offset += 280;
- assert.equal(actualBytes.toString('hex'), bytesValue.toString('hex'), 'Bytes type not serialised correctly');
-
- // assert int32 value
- let actualInt32 = result.readUInt32LE(offset);
- offset += 4;
- assert.equal(actualInt32, int32Value, 'Int32 value not serialised correctly');
-
- // assert bytes20 value
- let actualBytes20 = result.slice(offset, (offset + 20));
- offset += 20;
- assert.equal(actualBytes20.toString('hex'), bytes20Value, 'Bytes20 type not serialised correctly');
-
- // assert bytes32 value
- let actualBytes32 = result.slice(offset, (offset + 32));
- offset += 32;
- assert.equal(actualBytes32.toString('hex'), bytes32Value, 'Bytes32 type not serialised correctly');
-
- // assert uint64 value
- let actualUint64 = new BN([...result.slice(offset, (offset + 8))], 16, 'le');
- offset += 8;
- assert.isTrue(actualUint64.eq(uint64Value), `Serialised object values are not correct actual ${actualUint64} expected ${uint64Value}`);
-
- // assert int256 value
- let actualInt256 = new BN([...result.slice(offset, (offset + 32))], 16, 'le');
- offset += 32;
- assert.isTrue(actualInt256.eq(int256Value), `Serialised object values are not correct actual ${actualInt256} expected ${int256Value}`);
-
- // assert bool value
- let actualBool = result.readUInt8(offset);
- offset += 1;
- assert.equal(actualBool === 1 ? true : false, boolValue, 'Bool value not serialised correctly');
-
- });
-
- it(`serializes objects containing objects`, () => {
- let testObj = new ActiveState();
- let recentBytes1 = 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad';
- let recentBytes2 = 'aa1116bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad';
- testObj.recentBlockHashes = [
- hexToBytes(recentBytes1),
- hexToBytes(recentBytes2)
- ]
-
- let attestRecord1 = new AttestationRecord(0, 1, Buffer.from([11, 12, 13, 14]));
- let attestRecord2 = new AttestationRecord(2, 3, Buffer.from([255, 254, 253, 252]));
- testObj.pendingAttestations = [
- attestRecord1,
- attestRecord2
- ]
-
- let result = serialize(testObj, ActiveState);
-
- let offset = 0;
-
- // assert byte length
- let expectedByteLength = 112;
- let actualByteLength = result.readInt32LE(offset);
- offset += 4;
- assert.equal(actualByteLength, expectedByteLength, 'Byte length is not correct');
-
- // assert pending attestations array
- // skip attestation record array byte length because it could vary
- offset += 4;
- offset = assertAttestationRecord(offset, result, attestRecord1);
- offset = assertAttestationRecord(offset, result, attestRecord2);
-
- // assert bytes32 array
- let expectedBytesArrayLength = testObj.recentBlockHashes.length * 32; // 32 byte bytes
- let actualBytesArrayLength = result.readInt32LE(offset);
- offset += 4;
- assert.equal(actualBytesArrayLength, expectedBytesArrayLength, 'Bytes32 array length is not correct');
- let actualBytes1 = result.slice(offset, (offset + 32));
- offset += 32;
- assert.equal(actualBytes1.toString('hex'), recentBytes1, 'Bytes32 1 not serialised correctly');
- let actualBytes2 = result.slice(offset, (offset + 32));
- offset += 32;
- assert.equal(actualBytes2.toString('hex'), recentBytes2, 'Bytes32 2 not serialised correctly');
- });
-
- function assertAttestationRecord(startOffset, result, attestRecord){
- let offset = startOffset;
- // skip attestation record byte length because it could vary
- offset += 4;
-
- // assert bitfield value
- let expectedBitfieldByteLength = 4;
- let actualBitfieldByteLength = result.readUInt32LE(offset);
- assert.equal(actualBitfieldByteLength, expectedBitfieldByteLength, 'Attester bitfield array not serialised correctly');
- offset += 4;
- let actualBitfield = result.slice(offset, (offset + expectedBitfieldByteLength));
- offset += expectedBitfieldByteLength;
- assert.equal(actualBitfield.toString('hex'), attestRecord.attesterBitfield.toString('hex'), 'Attester Bitfield type not serialised correctly');
-
- // check shard id
- let actualShardId = result.readUInt32LE(offset);
- offset += 4;
- assert.equal(actualShardId, attestRecord.shardId, 'ShardId value not serialised correctly');
-
- // check slot id
- let actualSlotId = result.readUInt32LE(offset);
- offset += 4;
- assert.equal(actualSlotId, attestRecord.slotId, 'SlotId value not serialised correctly');
-
- return offset;
- }
- const testCases = [
- [[{b:0,a:0}, SimpleObject], "03000000000000"],
- [[{b:2,a:1}, SimpleObject], "03000000020001"],
- [[{v:3, subV:{v:6}}, OuterObject], "0700000003020000000600"],
- [[{v: [{b:2,a:1}, {b:4,a:3}]}, ArrayObject], "120000000e0000000300000002000103000000040003"],
- [[[{v:3, subV:{v:6}}, {v:5, subV:{v:7}}], [OuterObject]], "1600000007000000030200000006000700000005020000000700"],
- ];
-
- for (const [input, output] of testCases) {
- const [value, type] = input;
- it(`serializes objects - ${type.name || typeof type}`, () => {
- assert.equal(serialize(value, type).toString('hex'), output)
- })
- }
-});
diff --git a/test/test_ssz_treehash.js b/test/test_ssz_treehash.js
deleted file mode 100644
index 1873eb0..0000000
--- a/test/test_ssz_treehash.js
+++ /dev/null
@@ -1,98 +0,0 @@
-const assert = require('chai').assert
-const BN = require('bn.js')
-
-const hexToBytes = require('./utils/hexToBytes').hexToBytes
-const treeHash = require('../src').treeHash
-const merkleHash = require('../src').merkleHash
-const testObjects = require('./utils/objects')
-
-const SimpleObject = testObjects.SimpleObject
-const OuterObject = testObjects.OuterObject
-const InnerObject = testObjects.InnerObject
-const ArrayObject = testObjects.ArrayObject
-
-
-describe('SimpleSerialize - tree hashes', () => {
- const testCases = [
- // bool
- [[false, 'bool'], '0000000000000000000000000000000000000000000000000000000000000000'],
- [[true, 'bool'], '0100000000000000000000000000000000000000000000000000000000000000'],
- // uint8
- [[0, 'uint8'], "0000000000000000000000000000000000000000000000000000000000000000"],
- [[1, 'uint8'], "0100000000000000000000000000000000000000000000000000000000000000"],
- [[16, 'uint8'], "1000000000000000000000000000000000000000000000000000000000000000"],
- [[128, 'uint8'], "8000000000000000000000000000000000000000000000000000000000000000"],
- [[255, 'uint8'], "ff00000000000000000000000000000000000000000000000000000000000000"],
- // uint16
- [[0, 'uint16'], "0000000000000000000000000000000000000000000000000000000000000000"],
- [[1, 'uint16'], "0100000000000000000000000000000000000000000000000000000000000000"],
- [[16, 'uint16'], "1000000000000000000000000000000000000000000000000000000000000000"],
- [[128, 'uint16'], "8000000000000000000000000000000000000000000000000000000000000000"],
- [[255, 'uint16'], "ff00000000000000000000000000000000000000000000000000000000000000"],
- [[65535, 'uint16'], "ffff000000000000000000000000000000000000000000000000000000000000"],
- // uint32
- [[0, 'uint32'], "0000000000000000000000000000000000000000000000000000000000000000"],
- [[1, 'uint32'], "0100000000000000000000000000000000000000000000000000000000000000"],
- [[16, 'uint32'], "1000000000000000000000000000000000000000000000000000000000000000"],
- [[128, 'uint32'], "8000000000000000000000000000000000000000000000000000000000000000"],
- [[255, 'uint32'], "ff00000000000000000000000000000000000000000000000000000000000000"],
- [[65535, 'uint32'], "ffff000000000000000000000000000000000000000000000000000000000000"],
- [[4294967295, 'uint32'], "ffffffff00000000000000000000000000000000000000000000000000000000"],
- // uint64
- [[0, 'uint64'], "0000000000000000000000000000000000000000000000000000000000000000"],
- [[1, 'uint64'], "0100000000000000000000000000000000000000000000000000000000000000"],
- [[16, 'uint64'], "1000000000000000000000000000000000000000000000000000000000000000"],
- [[128, 'uint64'], "8000000000000000000000000000000000000000000000000000000000000000"],
- [[255, 'uint64'], "ff00000000000000000000000000000000000000000000000000000000000000"],
- [[65535, 'uint64'], "ffff000000000000000000000000000000000000000000000000000000000000"],
- [[4294967295, 'uint64'], "ffffffff00000000000000000000000000000000000000000000000000000000"],
- [[new BN('18446744073709551615'), 'uint64'], "ffffffffffffffff000000000000000000000000000000000000000000000000"],
- // bytes
- [[Buffer.alloc(0), 'bytes'],'e8e77626586f73b955364c7b4bbf0bb7f7685ebd40e852b164633a4acbd3244c'],
- [[Buffer.from([1]), 'bytes'], 'b2559fed89f0ec17542c216683dc6b75506f3754e0c045742936742cae6343ca'],
- [[Buffer.from([1, 2, 3, 4, 5, 6]), 'bytes'], '1310542d28be8e0b3ff72e985bc06232b9a30d93ae1ad2e33c5383a54ab5c9a7'],
- // array
- [[[], ['uint16']], 'dfded4ed5ac76ba7379cfe7b3b0f53e768dca8d45a34854e649cfc3c18cbd9cd'],
- [[[1], ['uint16']], 'c06186a930277b15545e5b499386cb8f1f03028c080ae5b1542d9e40d52098e5'],
- [[[1, 2], ['uint16']], 'da760e411ffbada0568ea1a2f6adedde9534ed86320cf87703800a5c3332ce32'],
- [[[[1,2,3,4],[5,6,7,8]], [['uint16']]], '6dbe0a9d5becd51d752bb3af7422a7970ec94174013f9667a516b1a07c55fea7'],
- // object
- [[{b:0,a:0}, SimpleObject], 'c87b68af113458ce95144697bc32a6f5158133dfdaab2054c17dad360b628a3b'],
- [[{b:2,a:1}, SimpleObject], '3d13b1009c21fadfc3786bdbf86b25c4e4a6626d5b353a3ac00d26ee133872d6'],
- [[{v:3,subV: {v:6}}, OuterObject], '14ffea433bc95132556da00e311261e4ffaa789cf8a184adb7bcad116355a311'],
- [[{v: [{b:2,a:1}, {b:4,a:3}]}, ArrayObject], 'cc89fba7753b94c4a6f31809851c0de8daad90d08f2d7b042b94a55aabc91b24'],
- [[[{v:3, subV:{v:6}}, {v:5, subV:{v:7}}], [OuterObject]], '4573b60a4a9e123b97155bf945e1b3f9bd0b273a1c2d3f0d464d8fc4219c2c15'],
- ];
-
- const stringifyType = type => {
- if (typeof type === 'string') {
- return type
- } else if (Array.isArray(type)) {
- return `[${stringifyType(type[0])}]`
- } else if (typeof type === 'function') {
- return type.name
- } else return ''
- };
-
- for (const [input, output] of testCases) {
- const [value, type] = input;
- it(`successfully tree hashes ${stringifyType(type)}`, () => {
- assert.equal(treeHash(value, type).toString('hex'), output)
- })
- }
-});
-
-describe('SimpleSerialize - merkle hashes', () => {
- const testCases = [
- [[], 'dfded4ed5ac76ba7379cfe7b3b0f53e768dca8d45a34854e649cfc3c18cbd9cd'],
- [[Buffer.from([1,2]), Buffer.from([3,4])], '82ebb0994e3eb23d08ec5d00415de7b14ff8f21e34396710f561b6ab4e83bd24'],
- [[1,2,3,4,5,6,7,8,9,10].map(i => Buffer.alloc(16,i)), '29f50926f6e96cd360b39ecc55d0b29cb9a6c28bb2960df801c5353b3ddd249c'],
- [[1,2,3,4,5,6,7,8,9,10].map(i => Buffer.alloc(32,i)), '9b40b5dd36ee986ffaa104a8ffe2492fdd79d433ebf0702075fa7d6d557b6cdd'],
- ]
- for (const [input, output] of testCases) {
- it('successfully merkle hashes', () => {
- assert.equal(merkleHash(input).toString('hex'), output)
- })
- }
-})
-
diff --git a/test/utils.ts b/test/utils.ts
new file mode 100644
index 0000000..9c79ae8
--- /dev/null
+++ b/test/utils.ts
@@ -0,0 +1,18 @@
+import {
+ SerializableType,
+} from "../src/types";
+
+export function stringifyType (type: SerializableType): string {
+ if (typeof type === 'string') {
+ return type;
+ } else if (Array.isArray(type)) {
+ if (type.length === 1) {
+ return `[${stringifyType(type[0])}]`;
+ } else if (type.length === 2) {
+ return `[${stringifyType(type[0])}, ${type[1]}]`;
+ }
+ } else if (type === Object(type)) {
+ return type.name;
+ }
+ return "";
+}
diff --git a/test/utils/activeState.js b/test/utils/activeState.js
deleted file mode 100644
index 83b6869..0000000
--- a/test/utils/activeState.js
+++ /dev/null
@@ -1,33 +0,0 @@
-class ActiveState {
- static get fields(){
- return [
- ['pendingAttestations', [AttestationRecord]],
- ['recentBlockHashes', ['bytes32']]
-
- ];
- }
-
- constructor(){
- this.pendingAttestations = [];
- this.recentBlockHashes = [];
- }
-}
-
-class AttestationRecord {
- static get fields(){
- return [
- ['attesterBitfield', 'bytes'],
- ['shardId', 'int32'],
- ['slotId', 'int32'],
- ]
- }
-
- constructor(slotId, shardId, attesterBitfield) {
- this.slotId = slotId || 0;
- this.shardId = shardId || 0;
- this.attesterBitfield = attesterBitfield || Buffer.from([]);
- }
-}
-
-exports.ActiveState = ActiveState;
-exports.AttestationRecord = AttestationRecord;
diff --git a/test/utils/hexToBytes.js b/test/utils/hexToBytes.js
deleted file mode 100644
index b93402d..0000000
--- a/test/utils/hexToBytes.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * Convert a hex string to a byte array
- *
- * @method hexToBytes
- * @param {string} hex
- * @return {Buffer} the byte buffer
- */
-function hexToBytes(hex) {
- hex = hex.toString(16);
-
- hex = hex.replace(/^0x/i,'');
-
- let bytes = new Uint8Array(hex.length/2);
- for (let i = 0, c = 0; c < hex.length; c += 2, i += 1){
- bytes[i] = parseInt(hex.substr(c, 2), 16);
- }
- return Buffer.from(bytes.buffer);
-};
-
-exports.hexToBytes = hexToBytes;
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..669a5ae
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,60 @@
+{
+ "compilerOptions": {
+ /* Basic Options */
+ "target": "esnext", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */
+ "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
+ // "lib": [], /* Specify library files to be included in the compilation. */
+ // "allowJs": true, /* Allow javascript files to be compiled. */
+ // "checkJs": true, /* Report errors in .js files. */
+ // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
+ // "declaration": true, /* Generates corresponding '.d.ts' file. */
+ // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
+ // "sourceMap": true, /* Generates corresponding '.map' file. */
+ // "outFile": "./", /* Concatenate and emit output to single file. */
+ "outDir": "dist", /* Redirect output structure to the directory. */
+ // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
+ // "composite": true, /* Enable project compilation */
+ // "removeComments": true, /* Do not emit comments to output. */
+ // "noEmit": true, /* Do not emit outputs. */
+ // "importHelpers": true, /* Import emit helpers from 'tslib'. */
+ // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
+ // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
+
+ /* Strict Type-Checking Options */
+ "strict": true, /* Enable all strict type-checking options. */
+ // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */
+ // "strictNullChecks": true, /* Enable strict null checks. */
+ // "strictFunctionTypes": true, /* Enable strict checking of function types. */
+ // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */
+ // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */
+ // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */
+ // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */
+
+ /* Additional Checks */
+ // "noUnusedLocals": true, /* Report errors on unused locals. */
+ // "noUnusedParameters": true, /* Report errors on unused parameters. */
+ // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
+ // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
+
+ /* Module Resolution Options */
+ // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
+ // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
+ // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
+ // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
+ // "typeRoots": [], /* List of folders to include type definitions from. */
+ // "types": [], /* Type declaration files to be included in compilation. */
+ // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
+ "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
+ // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
+
+ /* Source Map Options */
+ // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
+ // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
+ // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
+ // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
+
+ /* Experimental Options */
+ // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
+ // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
+ }
+}