├── .babelrc
├── .editorconfig
├── .eslintignore
├── .eslintrc
├── .github
└── workflows
│ └── test.yml
├── .gitignore
├── .npmignore
├── .npmrc
├── .prettierrc.js
├── LICENSE
├── README.md
├── doc-files
├── README.md.tmpl
├── featureToH3Set.png
├── h3SetToFeature.png
└── h3SetToFeatureCollection.png
├── index.js
├── package.json
├── src
└── geojson2h3.js
├── test
├── benchmarks.js
├── geojson2h3.spec.js
└── index.js
├── types.d.ts
└── yarn.lock
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | "es2015",
4 | "stage-2"
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig: http://editorconfig.org
2 |
3 | root = true
4 |
5 | [*]
6 | indent_style = space
7 | indent_size = 4
8 | end_of_line = lf
9 | charset = utf-8
10 | trim_trailing_whitespace = true
11 | insert_final_newline = true
12 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | node_modules/*
2 | dist/*
3 | coverage/*
4 |
--------------------------------------------------------------------------------
/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "plugins": [
3 | "prettier"
4 | ],
5 | "extends": [
6 | "eslint-config-uber-es2015",
7 | "prettier"
8 | ]
9 | }
10 |
--------------------------------------------------------------------------------
/.github/workflows/test.yml:
--------------------------------------------------------------------------------
1 | name: test
2 |
3 | on:
4 | push:
5 | branches: [master]
6 | pull_request:
7 | branches: [master]
8 |
9 | jobs:
10 | tests:
11 | name: Test Node ${{ matrix.node_version }}
12 | runs-on: ubuntu-latest
13 |
14 | strategy:
15 | matrix:
16 | node_version: [10, 12, 14]
17 |
18 | steps:
19 | - uses: actions/checkout@v2.1.1
20 |
21 | - uses: actions/setup-node@v2
22 | with:
23 | node-version: '${{ matrix.node_version }}'
24 |
25 | - name: Tests
26 | run: |
27 | yarn
28 | yarn run dist-test
29 | yarn test-ci
30 | yarn cover
31 |
32 | - uses: coverallsapp/github-action@master
33 | with:
34 | path-to-lcov: ./coverage/lcov.info
35 | github-token: ${{ secrets.GITHUB_TOKEN }}
36 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.log
2 | *.tmp
3 | .DS_Store
4 | coverage/
5 | node_modules/
6 | dist/
7 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | .*
2 | *.log
3 | src/
4 | test/
5 | coverage/
6 | node_modules/
7 |
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | registry = https://registry.npmjs.org
2 | always-auth = false
3 |
--------------------------------------------------------------------------------
/.prettierrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | printWidth: 100,
3 | semi: true,
4 | singleQuote: true,
5 | trailingComma: 'none',
6 | bracketSpacing: false
7 | };
8 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
3 |
4 | # geojson2h3
5 |
6 | [](https://github.com/uber/geojson2h3/actions)
7 | [](https://coveralls.io/github/uber/geojson2h3?branch=master)
8 | [](LICENSE)
9 | [](https://badge.fury.io/js/geojson2h3)
10 |
11 | The `geojson2h3` library includes a set of utilities for conversion between GeoJSON polygons and [H3 hexagon indexes](https://h3geo.org), using [h3-js](https://github.com/uber/h3-js).
12 |
13 | - Post **bug reports or feature requests** to the [Github Issues page](https://github.com/uber/geojson2h3/issues)
14 | - Ask **questions** by posting to the [H3 tag on StackOverflow](https://stackoverflow.com/questions/tagged/h3)
15 |
16 | ## Installation
17 |
18 | ```
19 | npm install geojson2h3
20 | ```
21 |
22 | ## Example Usage
23 |
24 | ```javascript
25 | import geojson2h3 from 'geojson2h3';
26 |
27 | const polygon = {
28 | type: 'Feature',
29 | geometry: {
30 | type: 'Polygon',
31 | coordinates: [[
32 | [-122.47485823276713, 37.85878356045377],
33 | [-122.47504834087829, 37.86196795698972],
34 | [-122.47845104316997, 37.86010614563313],
35 | [-122.47485823276713, 37.85878356045377]
36 | ]]
37 | }
38 | };
39 |
40 | const hexagons = geojson2h3.featureToH3Set(polygon, 10);
41 | // -> ['8a2830855047fff', '8a2830855077fff', '8a283085505ffff', '8a283085506ffff']
42 |
43 | const feature = geojson2h3.h3SetToFeature(hexagons);
44 | // -> {type: 'Feature', properties: {}, geometry: {type: 'Polygon', coordinates: [...]}}
45 | ```
46 |
47 | ## API Reference
48 |
49 |
50 |
51 | ## geojson2h3
52 |
53 | * [geojson2h3](#module_geojson2h3)
54 | * [.featureToH3Set(feature, resolution, [options])](#module_geojson2h3.featureToH3Set) ⇒ Array.<String>
55 | * [.h3ToFeature(hexAddress, [properties])](#module_geojson2h3.h3ToFeature) ⇒ Feature
56 | * [.h3SetToFeature(hexagons, [properties])](#module_geojson2h3.h3SetToFeature) ⇒ Feature
57 | * [.h3SetToMultiPolygonFeature(hexagons, [properties])](#module_geojson2h3.h3SetToMultiPolygonFeature) ⇒ Feature
58 | * [.h3SetToFeatureCollection(hexagons, [getProperties])](#module_geojson2h3.h3SetToFeatureCollection) ⇒ FeatureCollection
59 |
60 |
61 | * * *
62 |
63 |
64 |
65 | ### geojson2h3.featureToH3Set(feature, resolution, [options]) ⇒ Array.<String>
66 | Convert a GeoJSON feature to a set of hexagons. *Only hexagons whose centers
67 | fall within the feature will be included.* Note that conversion from GeoJSON
68 | is lossy; the resulting hexagon set only approximately describes the original
69 | shape, at a level of precision determined by the hexagon resolution.
70 |
71 | If the polygon is small in comparison with the chosen resolution, there may be
72 | no cell whose center lies within it, resulting in an empty set. To fall back
73 | to a single H3 cell representing the centroid of the polygon in this case, use
74 | the `ensureOutput` option.
75 |
76 | 
77 |
78 | **Kind**: static method of [geojson2h3
](#module_geojson2h3)
79 | **Returns**: Array.<String>
- H3 indexes
80 |
81 | | Param | Type | Description |
82 | | --- | --- | --- |
83 | | feature | Object
| Input GeoJSON: type must be either `Feature` or `FeatureCollection`, and geometry type must be either `Polygon` or `MultiPolygon` |
84 | | resolution | Number
| Resolution of hexagons, between 0 and 15 |
85 | | [options] | Object
| Options |
86 | | [options.ensureOutput] | Boolean
| Whether to ensure that at least one cell is returned in the set |
87 |
88 |
89 | * * *
90 |
91 |
92 |
93 | ### geojson2h3.h3ToFeature(hexAddress, [properties]) ⇒ Feature
94 | Convert a single H3 hexagon to a `Polygon` feature
95 |
96 | **Kind**: static method of [geojson2h3
](#module_geojson2h3)
97 | **Returns**: Feature
- GeoJSON Feature object
98 |
99 | | Param | Type | Description |
100 | | --- | --- | --- |
101 | | hexAddress | String
| Hexagon address |
102 | | [properties] | Object
| Optional feature properties |
103 |
104 |
105 | * * *
106 |
107 |
108 |
109 | ### geojson2h3.h3SetToFeature(hexagons, [properties]) ⇒ Feature
110 | Convert a set of hexagons to a GeoJSON `Feature` with the set outline(s). The
111 | feature's geometry type will be either `Polygon` or `MultiPolygon` depending on
112 | the number of outlines required for the set.
113 |
114 | 
115 |
116 | **Kind**: static method of [geojson2h3
](#module_geojson2h3)
117 | **Returns**: Feature
- GeoJSON Feature object
118 |
119 | | Param | Type | Description |
120 | | --- | --- | --- |
121 | | hexagons | Array.<String>
| Hexagon addresses |
122 | | [properties] | Object
| Optional feature properties |
123 |
124 |
125 | * * *
126 |
127 |
128 |
129 | ### geojson2h3.h3SetToMultiPolygonFeature(hexagons, [properties]) ⇒ Feature
130 | Convert a set of hexagons to a GeoJSON `MultiPolygon` feature with the
131 | outlines of each individual hexagon.
132 |
133 | 
134 |
135 | **Kind**: static method of [geojson2h3
](#module_geojson2h3)
136 | **Returns**: Feature
- GeoJSON Feature object
137 |
138 | | Param | Type | Description |
139 | | --- | --- | --- |
140 | | hexagons | Array.<String>
| Hexagon addresses |
141 | | [properties] | Object
| Optional feature properties |
142 |
143 |
144 | * * *
145 |
146 |
147 |
148 | ### geojson2h3.h3SetToFeatureCollection(hexagons, [getProperties]) ⇒ FeatureCollection
149 | Convert a set of hexagons to a GeoJSON `FeatureCollection` with each hexagon
150 | in a separate `Polygon` feature with optional properties.
151 |
152 | 
153 |
154 | **Kind**: static method of [geojson2h3
](#module_geojson2h3)
155 | **Returns**: FeatureCollection
- GeoJSON FeatureCollection object
156 |
157 | | Param | Type | Description |
158 | | --- | --- | --- |
159 | | hexagons | Array.<String>
| Hexagon addresses |
160 | | [getProperties] | function
| Optional function returning properties for a hexagon: f(h3Index) => Object |
161 |
162 |
163 | * * *
164 |
165 |
166 | ## Development
167 |
168 | The `geojson2h3` library uses `yarn` as the preferred package manager. To install the dev dependencies, just run:
169 |
170 | yarn
171 |
172 | To run the tests in both native ES6 (requires Node >= 6) and transpiled ES5:
173 |
174 | yarn test
175 |
176 | To format the code:
177 |
178 | yarn prettier
179 |
180 | To rebuild the API documentation in the README file:
181 |
182 | yarn build-docs
183 |
184 | ## Contributing
185 |
186 | Pull requests and [Github issues](https://github.com/uber/geojson2h3/issues) are welcome. Please include tests for new work, and keep the library test coverage at 100%. Before we can merge your changes, you must agree to the [Uber Contributor License Agreement](http://cla-assistant.io/uber/geojson2h3).
187 |
188 | ## Legal and Licensing
189 |
190 | The `geojson2h3` library is licensed under the [Apache 2.0 License](https://github.com/uber/geojson2h3/blob/master/LICENSE).
191 |
--------------------------------------------------------------------------------
/doc-files/README.md.tmpl:
--------------------------------------------------------------------------------
1 |
3 |
4 | # geojson2h3
5 |
6 | [](https://github.com/uber/geojson2h3/actions)
7 | [](https://coveralls.io/github/uber/geojson2h3?branch=master)
8 | [](LICENSE)
9 | [](https://badge.fury.io/js/geojson2h3)
10 |
11 | The `geojson2h3` library includes a set of utilities for conversion between GeoJSON polygons and [H3 hexagon indexes](https://h3geo.org), using [h3-js](https://github.com/uber/h3-js).
12 |
13 | - Post **bug reports or feature requests** to the [Github Issues page](https://github.com/uber/geojson2h3/issues)
14 | - Ask **questions** by posting to the [H3 tag on StackOverflow](https://stackoverflow.com/questions/tagged/h3)
15 |
16 | ## Installation
17 |
18 | ```
19 | npm install geojson2h3
20 | ```
21 |
22 | ## Example Usage
23 |
24 | ```javascript
25 | import geojson2h3 from 'geojson2h3';
26 |
27 | const polygon = {
28 | type: 'Feature',
29 | geometry: {
30 | type: 'Polygon',
31 | coordinates: [[
32 | [-122.47485823276713, 37.85878356045377],
33 | [-122.47504834087829, 37.86196795698972],
34 | [-122.47845104316997, 37.86010614563313],
35 | [-122.47485823276713, 37.85878356045377]
36 | ]]
37 | }
38 | };
39 |
40 | const hexagons = geojson2h3.featureToH3Set(polygon, 10);
41 | // -> ['8a2830855047fff', '8a2830855077fff', '8a283085505ffff', '8a283085506ffff']
42 |
43 | const feature = geojson2h3.h3SetToFeature(hexagons);
44 | // -> {type: 'Feature', properties: {}, geometry: {type: 'Polygon', coordinates: [...]}}
45 | ```
46 |
47 | ## API Reference
48 |
49 | {{>main}}
50 |
51 | ## Development
52 |
53 | The `geojson2h3` library uses `yarn` as the preferred package manager. To install the dev dependencies, just run:
54 |
55 | yarn
56 |
57 | To run the tests in both native ES6 (requires Node >= 6) and transpiled ES5:
58 |
59 | yarn test
60 |
61 | To format the code:
62 |
63 | yarn prettier
64 |
65 | To rebuild the API documentation in the README file:
66 |
67 | yarn build-docs
68 |
69 | ## Contributing
70 |
71 | Pull requests and [Github issues](https://github.com/uber/geojson2h3/issues) are welcome. Please include tests for new work, and keep the library test coverage at 100%. Before we can merge your changes, you must agree to the [Uber Contributor License Agreement](http://cla-assistant.io/uber/geojson2h3).
72 |
73 | ## Legal and Licensing
74 |
75 | The `geojson2h3` library is licensed under the [Apache 2.0 License](https://github.com/uber/geojson2h3/blob/master/LICENSE).
76 |
--------------------------------------------------------------------------------
/doc-files/featureToH3Set.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/uber/geojson2h3/eada4ab9db3ff04a6fb029d29e669deda5b203e0/doc-files/featureToH3Set.png
--------------------------------------------------------------------------------
/doc-files/h3SetToFeature.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/uber/geojson2h3/eada4ab9db3ff04a6fb029d29e669deda5b203e0/doc-files/h3SetToFeature.png
--------------------------------------------------------------------------------
/doc-files/h3SetToFeatureCollection.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/uber/geojson2h3/eada4ab9db3ff04a6fb029d29e669deda5b203e0/doc-files/h3SetToFeatureCollection.png
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2018 Uber Technologies, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | module.exports = require('./dist/src/geojson2h3');
18 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "geojson2h3",
3 | "description": "Conversion utilities between H3 indexes and GeoJSON",
4 | "version": "1.2.0",
5 | "author": "Nick Rabinowitz ",
6 | "keywords": [
7 | "h3",
8 | "hexagon",
9 | "geojson"
10 | ],
11 | "license": "Apache-2.0",
12 | "repository": {
13 | "type": "git",
14 | "url": "https://github.com/uber/geojson2h3.git"
15 | },
16 | "main": "index.js",
17 | "es2015": "lib/geojson2h3.js",
18 | "types": "dist/types.d.ts",
19 | "dependencies": {
20 | "h3-js": "^3.6.1"
21 | },
22 | "devDependencies": {
23 | "@types/geojson": "^7946.0.7",
24 | "benchmark": "^2.1.4",
25 | "buble": "^0.19.3",
26 | "eslint": "^4.19.1",
27 | "eslint-config-prettier": "^2.9.0",
28 | "eslint-config-uber-es2015": "^3.1.2",
29 | "eslint-plugin-prettier": "^2.6.0",
30 | "faucet": "^0.0.1",
31 | "istanbul": "^0.4.3",
32 | "jsdoc": "^3.6.6",
33 | "jsdoc-to-markdown": "^6.0.1",
34 | "prettier": "^1.19.1",
35 | "tape": "^4.8.0",
36 | "typescript": "^4.1.5"
37 | },
38 | "scripts": {
39 | "lint": "eslint src test",
40 | "cover": "istanbul cover --report lcov --report html -- test/index.js",
41 | "test": "yarn dist-test && yarn lint && yarn test-es6 && yarn test-dist",
42 | "test-raw": "node test/index.js",
43 | "test-es6": "yarn test-raw | faucet",
44 | "test-dist": "node dist/test/index.js | faucet",
45 | "test-ci": "yarn lint && yarn run test-es6 && yarn run test-dist && yarn run check-prettier && yarn run check-docs && yarn run check-types",
46 | "check-prettier": "yarn prettier && git diff --exit-code",
47 | "check-types": "tsc --strict --noEmit types.d.ts",
48 | "check-docs": "yarn build-docs && git diff --exit-code",
49 | "build-docs": "jsdoc2md --no-cache --global-index-format grouped --separators --template doc-files/README.md.tmpl src/geojson2h3.js > README.md",
50 | "dist": "yarn dist-clean && buble -i src -o dist/src && cp types.d.ts dist",
51 | "dist-clean": "rm -rf dist && mkdir dist",
52 | "dist-test": "yarn dist && buble -i test -o dist/test",
53 | "benchmarks": "yarn dist-test && node dist/test/benchmarks.js",
54 | "prepublish": "yarn dist",
55 | "prettier": "prettier --write 'src/**/*.js' 'test/**/*.js' '*.d.ts'"
56 | },
57 | "engines": {
58 | "node": ">=4",
59 | "npm": ">=3",
60 | "yarn": ">=1.3.0"
61 | },
62 | "volta": {
63 | "node": "12.19.0",
64 | "yarn": "1.22.10"
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/src/geojson2h3.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2018 Uber Technologies, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /**
18 | * @module geojson2h3
19 | */
20 |
21 | const h3 = require('h3-js');
22 |
23 | const FEATURE = 'Feature';
24 | const FEATURE_COLLECTION = 'FeatureCollection';
25 | const POLYGON = 'Polygon';
26 | const MULTI_POLYGON = 'MultiPolygon';
27 |
28 | // ----------------------------------------------------------------------------
29 | // Private utilities
30 |
31 | /**
32 | * Utility for efficient flattening of arrays. This mutates input,
33 | * flattening into the first array in the list.
34 | * @private
35 | * @param {String[][]} arrays Arrays to flatten
36 | * @return {String} Single array with all values from all input arrays
37 | */
38 | function flatten(arrays) {
39 | let out = null;
40 | for (let i = 0; i < arrays.length; i++) {
41 | if (out !== null) {
42 | for (let j = 0; j < arrays[i].length; j++) {
43 | out.push(arrays[i][j]);
44 | }
45 | } else {
46 | out = arrays[i];
47 | }
48 | }
49 | return Array.from(new Set(out));
50 | }
51 |
52 | /**
53 | * Utility to compute the centroid of a polygon, based on @turf/centroid
54 | * @private
55 | * @param {Number[][][]} polygon Polygon, as an array of loops
56 | * @return {Number[]} lngLat Lng/lat centroid
57 | */
58 | function centroid(polygon) {
59 | let lngSum = 0;
60 | let latSum = 0;
61 | let count = 0;
62 | const loop = polygon[0];
63 | for (let i = 0; i < loop.length; i++) {
64 | lngSum += loop[i][0];
65 | latSum += loop[i][1];
66 | count++;
67 | }
68 | return [lngSum / count, latSum / count];
69 | }
70 |
71 | /**
72 | * Convert a GeoJSON feature collection to a set of hexagons. Only hexagons whose centers
73 | * fall within the features will be included.
74 | * @private
75 | * @param {Object} feature GeoJSON FeatureCollection
76 | * @param {Number} resolution Resolution of hexagons, between 0 and 15
77 | * @return {String[]} H3 indexes
78 | */
79 | function featureCollectionToH3Set(featureCollection, resolution) {
80 | const {features} = featureCollection;
81 | if (!features) {
82 | throw new Error('No features found');
83 | }
84 | return flatten(features.map(feature => featureToH3Set(feature, resolution)));
85 | }
86 |
87 | // ----------------------------------------------------------------------------
88 | // Public API functions
89 |
90 | /**
91 | * Convert a GeoJSON feature to a set of hexagons. *Only hexagons whose centers
92 | * fall within the feature will be included.* Note that conversion from GeoJSON
93 | * is lossy; the resulting hexagon set only approximately describes the original
94 | * shape, at a level of precision determined by the hexagon resolution.
95 | *
96 | * If the polygon is small in comparison with the chosen resolution, there may be
97 | * no cell whose center lies within it, resulting in an empty set. To fall back
98 | * to a single H3 cell representing the centroid of the polygon in this case, use
99 | * the `ensureOutput` option.
100 | *
101 | * 
102 | * @static
103 | * @param {Object} feature Input GeoJSON: type must be either `Feature` or
104 | * `FeatureCollection`, and geometry type must be
105 | * either `Polygon` or `MultiPolygon`
106 | * @param {Number} resolution Resolution of hexagons, between 0 and 15
107 | * @param {Object} [options] Options
108 | * @param {Boolean} [options.ensureOutput] Whether to ensure that at least one
109 | * cell is returned in the set
110 | * @return {String[]} H3 indexes
111 | */
112 | function featureToH3Set(feature, resolution, options = {}) {
113 | const {type, geometry} = feature;
114 | const geometryType = geometry && geometry.type;
115 |
116 | if (type === FEATURE_COLLECTION) {
117 | return featureCollectionToH3Set(feature, resolution);
118 | }
119 |
120 | if (type !== FEATURE) {
121 | throw new Error(`Unhandled type: ${type}`);
122 | }
123 | if (geometryType !== POLYGON && geometryType !== MULTI_POLYGON) {
124 | throw new Error(`Unhandled geometry type: ${geometryType}`);
125 | }
126 |
127 | // Normalize to MultiPolygon
128 | const polygons = geometryType === POLYGON ? [geometry.coordinates] : geometry.coordinates;
129 |
130 | // Polyfill each polygon and flatten the results
131 | return flatten(
132 | polygons.map(polygon => {
133 | const result = h3.polyfill(polygon, resolution, true);
134 | if (result.length || !options.ensureOutput) {
135 | return result;
136 | }
137 | // If we got no results, index the centroid
138 | const [lng, lat] = centroid(polygon);
139 | return [h3.geoToH3(lat, lng, resolution)];
140 | })
141 | );
142 | }
143 |
144 | /**
145 | * Convert a single H3 hexagon to a `Polygon` feature
146 | * @static
147 | * @param {String} hexAddress Hexagon address
148 | * @param {Object} [properties] Optional feature properties
149 | * @return {Feature} GeoJSON Feature object
150 | */
151 | function h3ToFeature(h3Index, properties = {}) {
152 | // Wrap in an array for a single-loop polygon
153 | const coordinates = [h3.h3ToGeoBoundary(h3Index, true)];
154 | return {
155 | type: FEATURE,
156 | id: h3Index,
157 | properties,
158 | geometry: {
159 | type: POLYGON,
160 | coordinates
161 | }
162 | };
163 | }
164 |
165 | /**
166 | * Convert a set of hexagons to a GeoJSON `Feature` with the set outline(s). The
167 | * feature's geometry type will be either `Polygon` or `MultiPolygon` depending on
168 | * the number of outlines required for the set.
169 | *
170 | * 
171 | * @static
172 | * @param {String[]} hexagons Hexagon addresses
173 | * @param {Object} [properties] Optional feature properties
174 | * @return {Feature} GeoJSON Feature object
175 | */
176 | function h3SetToFeature(hexagons, properties = {}) {
177 | const polygons = h3.h3SetToMultiPolygon(hexagons, true);
178 | // See if we can unwrap to a simple Polygon.
179 | const isMultiPolygon = polygons.length > 1;
180 | const type = isMultiPolygon ? MULTI_POLYGON : POLYGON;
181 | // MultiPolygon, single polygon, or empty array for an empty hex set
182 | const coordinates = isMultiPolygon ? polygons : polygons[0] || [];
183 | return {
184 | type: FEATURE,
185 | properties,
186 | geometry: {
187 | type,
188 | coordinates
189 | }
190 | };
191 | }
192 |
193 | /**
194 | * Convert a set of hexagons to a GeoJSON `MultiPolygon` feature with the
195 | * outlines of each individual hexagon.
196 | *
197 | * 
198 | * @static
199 | * @param {String[]} hexagons Hexagon addresses
200 | * @param {Object} [properties] Optional feature properties
201 | * @return {Feature} GeoJSON Feature object
202 | */
203 | function h3SetToMultiPolygonFeature(hexagons, properties = {}) {
204 | const coordinates = hexagons.map(h3Index =>
205 | // Wrap in an array for a single-loop polygon
206 | [h3.h3ToGeoBoundary(h3Index, {geoJson: true})]
207 | );
208 | return {
209 | type: FEATURE,
210 | properties,
211 | geometry: {
212 | type: MULTI_POLYGON,
213 | coordinates
214 | }
215 | };
216 | }
217 |
218 | /**
219 | * Convert a set of hexagons to a GeoJSON `FeatureCollection` with each hexagon
220 | * in a separate `Polygon` feature with optional properties.
221 | *
222 | * 
223 | * @static
224 | * @param {String[]} hexagons Hexagon addresses
225 | * @param {Function} [getProperties] Optional function returning properties
226 | * for a hexagon: f(h3Index) => Object
227 | * @return {FeatureCollection} GeoJSON FeatureCollection object
228 | */
229 | function h3SetToFeatureCollection(hexagons, getProperties) {
230 | const features = [];
231 | for (let i = 0; i < hexagons.length; i++) {
232 | const h3Index = hexagons[i];
233 | const properties = getProperties ? getProperties(h3Index) : {};
234 | features.push(h3ToFeature(h3Index, properties));
235 | }
236 | return {
237 | type: FEATURE_COLLECTION,
238 | features
239 | };
240 | }
241 |
242 | module.exports = {
243 | featureToH3Set,
244 | h3ToFeature,
245 | h3SetToFeature,
246 | h3SetToMultiPolygonFeature,
247 | h3SetToFeatureCollection
248 | };
249 |
--------------------------------------------------------------------------------
/test/benchmarks.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2018 Uber Technologies, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /* eslint-env node */
18 | /* eslint-disable no-console */
19 | const Benchmark = require('benchmark');
20 | const h3 = require('h3-js');
21 | const geojson2h3 = require('../src/geojson2h3');
22 |
23 | const suite = new Benchmark.Suite();
24 |
25 | // fixtures
26 |
27 | const h3Index = '89283080ddbffff';
28 | const ring50 = h3.kRing(h3Index, 50);
29 | const ring50Feature = geojson2h3.h3SetToFeature(ring50, 9);
30 | const ring50Donuts = h3
31 | .kRing(h3Index, 10)
32 | .concat(h3.kRing(h3, 20))
33 | .concat(h3.kRing(h3, 30))
34 | .concat(h3.kRing(h3, 40))
35 | .concat(h3.kRing(h3, 50));
36 | const ring50DonutsFeature = geojson2h3.h3SetToFeature(ring50Donuts, 9);
37 |
38 | // add tests
39 |
40 | suite.add('h3SetToFeature - ring50', () => {
41 | geojson2h3.h3SetToFeature(ring50);
42 | });
43 |
44 | suite.add('h3SetToFeature - ring50Donuts', () => {
45 | geojson2h3.h3SetToFeature(ring50Donuts);
46 | });
47 |
48 | suite.add('featureToH3Set - ring50', () => {
49 | geojson2h3.featureToH3Set(ring50Feature, 9);
50 | });
51 |
52 | suite.add('featureToH3Set - ring50Donuts', () => {
53 | geojson2h3.featureToH3Set(ring50DonutsFeature, 9);
54 | });
55 |
56 | // add listeners
57 | suite
58 | .on('cycle', event => {
59 | console.log(String(event.target));
60 | })
61 | // run async
62 | .run({async: true});
63 |
--------------------------------------------------------------------------------
/test/geojson2h3.spec.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2018 Uber Technologies, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | const test = require('tape');
18 | const h3 = require('h3-js');
19 | const geojson2h3 = require('../src/geojson2h3');
20 |
21 | const DEFAULT_RES = 9;
22 |
23 | const {
24 | featureToH3Set,
25 | h3ToFeature,
26 | h3SetToFeature,
27 | h3SetToMultiPolygonFeature,
28 | h3SetToFeatureCollection
29 | } = geojson2h3;
30 |
31 | const GEO_PRECISION = 12;
32 |
33 | // 89283085507ffff
34 | const HEX_OUTLINE_1 = [
35 | [
36 | [-122.47485823276713, 37.85878356045377],
37 | [-122.47378734444064, 37.860465621984154],
38 | [-122.47504834087829, 37.86196795698972],
39 | [-122.47738022442019, 37.861788207189115],
40 | [-122.47845104316997, 37.86010614563313],
41 | [-122.4771900479571, 37.85860383390307],
42 | [-122.47485823276713, 37.85878356045377]
43 | ]
44 | ];
45 |
46 | // 892830855b3ffff
47 | const HEX_OUTLINE_2 = [
48 | [
49 | [-122.48147295617736, 37.85187534491365],
50 | [-122.48040229236011, 37.85355749750206],
51 | [-122.48166324644575, 37.85505983954851],
52 | [-122.48399486310532, 37.85488000572598],
53 | [-122.48506545734224, 37.85319785312151],
54 | [-122.48380450450253, 37.851695534355315],
55 | [-122.48147295617736, 37.85187534491365]
56 | ]
57 | ];
58 |
59 | const POLYGON = [
60 | [
61 | [-122.26184837431902, 37.8346695948541],
62 | [-122.26299146613795, 37.8315769200876],
63 | [-122.26690391101923, 37.830681442651134],
64 | [-122.2696734085486, 37.83287856171719],
65 | [-122.26853055028259, 37.835971208076515],
66 | [-122.26461796082103, 37.83686676365336],
67 | [-122.26184837431902, 37.8346695948541]
68 | ]
69 | ];
70 | const POLYGON_CONTIGUOUS = [
71 | [
72 | [-122.25793560913665, 37.835564941293676],
73 | [-122.26184837431902, 37.8346695948541],
74 | [-122.26299146613795, 37.8315769200876],
75 | [-122.26022202614566, 37.82937956347423],
76 | [-122.25630940542779, 37.830274831952494],
77 | [-122.25516608024519, 37.83336753500189],
78 | [-122.25793560913665, 37.835564941293676]
79 | ]
80 | ];
81 | const POLYGON_NONCONTIGUOUS = [
82 | [
83 | [-122.23511849129424, 37.829458676659385],
84 | [-122.23788784659696, 37.831656795184344],
85 | [-122.24180113856318, 37.83076207598435],
86 | [-122.24294493056115, 37.827669316312495],
87 | [-122.24017566397347, 37.825471247577006],
88 | [-122.2362625166653, 37.82636588872747],
89 | [-122.23511849129424, 37.829458676659385]
90 | ]
91 | ];
92 |
93 | function toLowPrecision(maybeNumber) {
94 | if (typeof maybeNumber === 'number') {
95 | return Number(maybeNumber.toPrecision(GEO_PRECISION));
96 | }
97 | if (Array.isArray(maybeNumber)) {
98 | return maybeNumber.map(toLowPrecision);
99 | }
100 | if (typeof maybeNumber === 'object') {
101 | /* eslint-disable guard-for-in */
102 | for (const key in maybeNumber) {
103 | maybeNumber[key] = toLowPrecision(maybeNumber[key]);
104 | }
105 | }
106 | return maybeNumber;
107 | }
108 |
109 | function assertEqualFeatures(assert, feature1, feature2, msg) {
110 | assert.deepEqual(
111 | toLowPrecision(feature1),
112 | toLowPrecision(feature2),
113 | msg || 'Features are equivalent'
114 | );
115 | }
116 |
117 | function assertSymmetrical(assert, feature, hexagons) {
118 | assert.deepEqual(
119 | featureToH3Set(feature, DEFAULT_RES).sort(),
120 | hexagons.sort(),
121 | 'featureToH3Set matches expected'
122 | );
123 | assertEqualFeatures(
124 | assert,
125 | h3SetToFeature(hexagons),
126 | feature,
127 | 'h3SetToFeature matches expected'
128 | );
129 | // not sure this adds anything, but it makes me feel good
130 | assert.deepEqual(
131 | featureToH3Set(h3SetToFeature(hexagons), DEFAULT_RES).sort(),
132 | hexagons.sort(),
133 | 'featureToH3Set round-trip matches expected'
134 | );
135 | assertEqualFeatures(
136 | assert,
137 | h3SetToFeature(featureToH3Set(feature, DEFAULT_RES).sort()),
138 | feature,
139 | 'h3SetToFeature round-trip matches expected'
140 | );
141 | }
142 |
143 | test('Symmetrical - Empty', assert => {
144 | const feature = {
145 | type: 'Feature',
146 | properties: {},
147 | geometry: {
148 | type: 'Polygon',
149 | coordinates: []
150 | }
151 | };
152 | const hexagons = [];
153 |
154 | assertSymmetrical(assert, feature, hexagons);
155 |
156 | assert.end();
157 | });
158 |
159 | test('Symmetrical - One hexagon', assert => {
160 | const hexagons = ['89283082837ffff'];
161 | const vertices = h3.h3ToGeoBoundary(hexagons[0], true);
162 | const feature = {
163 | type: 'Feature',
164 | properties: {},
165 | geometry: {
166 | type: 'Polygon',
167 | coordinates: [
168 | // Note that this is a little brittle; iterating from any
169 | // starting vertex would be correct
170 | [...vertices]
171 | ]
172 | }
173 | };
174 |
175 | assertSymmetrical(assert, feature, hexagons);
176 |
177 | assert.end();
178 | });
179 |
180 | test('Symmetrical - Two hexagons', assert => {
181 | const feature = {
182 | type: 'Feature',
183 | properties: {},
184 | geometry: {
185 | type: 'Polygon',
186 | coordinates: [
187 | [
188 | [-122.42778275313196, 37.775989518837726],
189 | [-122.42652309807923, 37.77448508566524],
190 | [-122.42419231791126, 37.7746633251758],
191 | [-122.42312112449315, 37.776346021077586],
192 | [-122.42438078060647, 37.77785047757876],
193 | [-122.42671162907993, 37.777672214849176],
194 | [-122.42797132395157, 37.7791765946462],
195 | [-122.4303021418057, 37.778998255103545],
196 | [-122.4313731964829, 37.77731555898803],
197 | [-122.43011350268344, 37.77581120251896],
198 | [-122.42778275313196, 37.775989518837726]
199 | ]
200 | ]
201 | }
202 | };
203 |
204 | const hexagons = ['89283082833ffff', '89283082837ffff'];
205 |
206 | assertSymmetrical(assert, feature, hexagons);
207 |
208 | assert.end();
209 | });
210 |
211 | test('featureToH3Set - one contained hex', assert => {
212 | const hexagons = ['89283085507ffff'];
213 |
214 | const feature = {
215 | type: 'Feature',
216 | properties: {},
217 | geometry: {
218 | type: 'MultiPolygon',
219 | coordinates: HEX_OUTLINE_1
220 | }
221 | };
222 |
223 | assert.deepEqual(
224 | featureToH3Set(feature, DEFAULT_RES),
225 | hexagons,
226 | 'featureToH3Set matches expected'
227 | );
228 |
229 | assert.end();
230 | });
231 |
232 | const SMALL_POLY = {
233 | type: 'Feature',
234 | properties: {},
235 | geometry: {
236 | type: 'Polygon',
237 | coordinates: [
238 | [
239 | [-122.26985598997341, 37.83598006884068],
240 | [-122.26836960154117, 37.83702107154188],
241 | [-122.26741606933939, 37.835426338014386],
242 | [-122.26985598997341, 37.83598006884068]
243 | ]
244 | ]
245 | }
246 | };
247 |
248 | test('featureToH3Set - no contained hex centers', assert => {
249 | assert.deepEqual(featureToH3Set(SMALL_POLY, 8), [], 'featureToH3Set matches expected');
250 | assert.end();
251 | });
252 |
253 | test('featureToH3Set - no contained hex centers, ensureOutput', assert => {
254 | const hexagons = ['8828308137fffff'];
255 | assert.deepEqual(
256 | featureToH3Set(SMALL_POLY, 8, {ensureOutput: true}),
257 | hexagons,
258 | 'featureToH3Set matches expected'
259 | );
260 | assert.end();
261 | });
262 |
263 | test('featureToH3Set - Polygon', assert => {
264 | const feature = {
265 | type: 'Feature',
266 | properties: {},
267 | geometry: {
268 | type: 'Polygon',
269 | coordinates: POLYGON
270 | }
271 | };
272 |
273 | const hexagons = ['89283081347ffff', '89283081343ffff', '8928308134fffff', '8928308137bffff'];
274 |
275 | assert.deepEqual(
276 | featureToH3Set(feature, DEFAULT_RES).sort(),
277 | hexagons.sort(),
278 | 'featureToH3Set matches expected'
279 | );
280 |
281 | assert.end();
282 | });
283 |
284 | test('featureToH3Set - MultiPolygon, duplicates', assert => {
285 | const feature = {
286 | type: 'Feature',
287 | properties: {},
288 | geometry: {
289 | type: 'MultiPolygon',
290 | coordinates: [POLYGON, POLYGON]
291 | }
292 | };
293 |
294 | const hexagons = ['89283081347ffff', '89283081343ffff', '8928308134fffff', '8928308137bffff'];
295 |
296 | assert.deepEqual(
297 | featureToH3Set(feature, DEFAULT_RES).sort(),
298 | hexagons.sort(),
299 | 'featureToH3Set matches expected'
300 | );
301 |
302 | assert.end();
303 | });
304 |
305 | test('featureToH3Set - MultiPolygon, contiguous', assert => {
306 | const feature = {
307 | type: 'Feature',
308 | properties: {},
309 | geometry: {
310 | type: 'MultiPolygon',
311 | coordinates: [POLYGON, POLYGON_CONTIGUOUS]
312 | }
313 | };
314 |
315 | const hexagons = [
316 | '89283081347ffff',
317 | '89283081343ffff',
318 | '8928308134fffff',
319 | '8928308137bffff',
320 | '8928308134bffff',
321 | '8928308ac97ffff',
322 | '8928308135bffff'
323 | ];
324 |
325 | assert.deepEqual(
326 | featureToH3Set(feature, DEFAULT_RES).sort(),
327 | hexagons.sort(),
328 | 'featureToH3Set matches expected'
329 | );
330 |
331 | assert.end();
332 | });
333 |
334 | test('featureToH3Set - MultiPolygon, non-contiguous', assert => {
335 | const feature = {
336 | type: 'Feature',
337 | properties: {},
338 | geometry: {
339 | type: 'MultiPolygon',
340 | coordinates: [POLYGON, POLYGON_NONCONTIGUOUS]
341 | }
342 | };
343 |
344 | const hexagons = [
345 | '89283081347ffff',
346 | '89283081343ffff',
347 | '8928308134fffff',
348 | '8928308137bffff',
349 | '8928308a1b7ffff'
350 | ];
351 |
352 | assert.deepEqual(
353 | featureToH3Set(feature, DEFAULT_RES).sort(),
354 | hexagons.sort(),
355 | 'featureToH3Set matches expected'
356 | );
357 |
358 | assert.end();
359 | });
360 |
361 | test('featureToH3Set - FeatureCollection', assert => {
362 | const feature = {
363 | type: 'FeatureCollection',
364 | features: [
365 | {
366 | type: 'Feature',
367 | geometry: {
368 | type: 'Polygon',
369 | coordinates: POLYGON
370 | }
371 | },
372 | {
373 | type: 'Feature',
374 | geometry: {
375 | type: 'Polygon',
376 | coordinates: POLYGON_CONTIGUOUS
377 | }
378 | }
379 | ]
380 | };
381 |
382 | const hexagons = [
383 | '89283081347ffff',
384 | '89283081343ffff',
385 | '8928308134fffff',
386 | '8928308137bffff',
387 | '8928308134bffff',
388 | '8928308ac97ffff',
389 | '8928308135bffff'
390 | ];
391 |
392 | assert.deepEqual(
393 | featureToH3Set(feature, DEFAULT_RES).sort(),
394 | hexagons.sort(),
395 | 'featureToH3Set matches expected'
396 | );
397 |
398 | assert.end();
399 | });
400 |
401 | test('featureToH3Set - resolution 10', assert => {
402 | const parentHex = '89283082837ffff';
403 | const vertices = h3.h3ToGeoBoundary(parentHex, true);
404 | const feature = {
405 | type: 'Feature',
406 | properties: {},
407 | geometry: {
408 | type: 'Polygon',
409 | coordinates: [
410 | [
411 | vertices[2],
412 | vertices[3],
413 | vertices[4],
414 | vertices[5],
415 | vertices[0],
416 | vertices[1],
417 | vertices[2]
418 | ]
419 | ]
420 | }
421 | };
422 | const resolution = 10;
423 |
424 | const expected = h3.uncompact([parentHex], resolution).sort();
425 |
426 | assert.equal(expected.length, 7, 'Got expected child hexagons');
427 |
428 | assert.deepEqual(
429 | featureToH3Set(feature, resolution).sort(),
430 | expected,
431 | 'featureToH3Set matches expected'
432 | );
433 |
434 | assert.end();
435 | });
436 |
437 | test('featureToH3Set - errors', assert => {
438 | assert.throws(
439 | () => featureToH3Set({}),
440 | /Unhandled type/,
441 | 'got expected error for empty object'
442 | );
443 |
444 | assert.throws(
445 | () =>
446 | featureToH3Set({
447 | type: 'LineString',
448 | coordinates: []
449 | }),
450 | /Unhandled type/,
451 | 'got expected error for non-feature'
452 | );
453 |
454 | assert.throws(
455 | () =>
456 | featureToH3Set({
457 | type: 'Feature',
458 | properties: {},
459 | geometry: {
460 | type: 'LineString',
461 | coordinates: []
462 | }
463 | }),
464 | /Unhandled geometry type/,
465 | 'got expected error for unknown geometry type'
466 | );
467 |
468 | assert.throws(
469 | () =>
470 | featureToH3Set({
471 | type: 'FeatureCollection'
472 | }),
473 | /No features/,
474 | 'got expected error for missing features'
475 | );
476 |
477 | assert.end();
478 | });
479 |
480 | test('h3SetToFeature - MultiPolygon', assert => {
481 | const hexagons = ['8928308137bffff', '8928308a1b7ffff'];
482 | const feature = h3SetToFeature(hexagons);
483 |
484 | assert.strictEqual(
485 | feature.geometry.type,
486 | 'MultiPolygon',
487 | 'MultiPolygon generated for two non-contiguous hexagons'
488 | );
489 | assert.ok(feature.geometry.coordinates.length === 2, 'Generated polygon for each hex');
490 | assert.ok(
491 | feature.geometry.coordinates[0][0][0][0],
492 | 'Generated MultiPolygon coordinate structure for first loop'
493 | );
494 | assert.ok(
495 | feature.geometry.coordinates[1][0][0][0],
496 | 'Generated MultiPolygon coordinate structure second loop'
497 | );
498 |
499 | assert.end();
500 | });
501 |
502 | test('h3SetToFeature - Polygon hole', assert => {
503 | const hexagons = [
504 | '89283082877ffff',
505 | '89283082863ffff',
506 | '8928308287bffff',
507 | '89283082847ffff',
508 | '8928308280bffff',
509 | '8928308280fffff'
510 | ];
511 | const feature = h3SetToFeature(hexagons);
512 |
513 | assert.strictEqual(
514 | feature.geometry.type,
515 | 'Polygon',
516 | 'Polygon generated for cluster with a hole'
517 | );
518 | assert.strictEqual(feature.geometry.coordinates.length, 2, 'Generated expected loop count');
519 | assert.ok(
520 | feature.geometry.coordinates[0].length > feature.geometry.coordinates[1].length,
521 | 'Outer loop is first'
522 | );
523 | assert.strictEqual(feature.geometry.coordinates[1].length, 7, 'Hole has expected coord count');
524 |
525 | assert.end();
526 | });
527 |
528 | test('h3SetToFeature - two-hole Polygon', assert => {
529 | const hexagons = [
530 | '89283081357ffff',
531 | '89283081343ffff',
532 | '8928308134fffff',
533 | '8928308137bffff',
534 | '89283081373ffff',
535 | '8928308130bffff',
536 | '892830813c3ffff',
537 | '892830813cbffff',
538 | '89283081353ffff',
539 | '8928308131bffff',
540 | '892830813c7ffff'
541 | ];
542 | const feature = h3SetToFeature(hexagons);
543 |
544 | assert.strictEqual(
545 | feature.geometry.type,
546 | 'Polygon',
547 | 'Polygon generated for cluster with a hole'
548 | );
549 | assert.strictEqual(feature.geometry.coordinates.length, 3, 'Generated expected loop count');
550 | assert.ok(
551 | feature.geometry.coordinates[0].length > feature.geometry.coordinates[1].length,
552 | 'Outer loop is first'
553 | );
554 | assert.strictEqual(feature.geometry.coordinates[1].length, 7, 'Hole has expected coord count');
555 | assert.strictEqual(feature.geometry.coordinates[2].length, 7, 'Hole has expected coord count');
556 |
557 | assert.end();
558 | });
559 |
560 | test('h3SetToFeature - multi donut', assert => {
561 | const hexagons = [
562 | // donut one
563 | '89283082877ffff',
564 | '89283082863ffff',
565 | '8928308287bffff',
566 | '89283082847ffff',
567 | '8928308280bffff',
568 | '8928308280fffff',
569 | // donut two
570 | '892830829b3ffff',
571 | '892830829bbffff',
572 | '8928308298fffff',
573 | '89283082983ffff',
574 | '89283082997ffff',
575 | '89283095a4bffff'
576 | ];
577 | const feature = h3SetToFeature(hexagons);
578 | const coords = feature.geometry.coordinates;
579 |
580 | assert.strictEqual(coords.length, 2, 'expected polygon count');
581 | assert.strictEqual(coords[0].length, 2, 'expected loop count for p1');
582 | assert.strictEqual(coords[1].length, 2, 'expected loop count for p2');
583 | assert.strictEqual(coords[0][0].length, 19, 'expected outer coord count p1');
584 | assert.strictEqual(coords[0][1].length, 7, 'expected inner coord count p1');
585 | assert.strictEqual(coords[1][0].length, 19, 'expected outer coord count p2');
586 | assert.strictEqual(coords[1][1].length, 7, 'expected inner coord count p2');
587 |
588 | assert.end();
589 | });
590 |
591 | test('h3SetToFeature - nested donut', assert => {
592 | const middle = '89283082877ffff';
593 | const hexagons = h3.hexRing(middle, 1).concat(h3.hexRing(middle, 3));
594 | const feature = h3SetToFeature(hexagons);
595 | const coords = feature.geometry.coordinates;
596 |
597 | assert.strictEqual(coords.length, 2, 'expected polygon count');
598 | assert.strictEqual(coords[0].length, 2, 'expected loop count for p1');
599 | assert.strictEqual(coords[1].length, 2, 'expected loop count for p2');
600 | assert.strictEqual(coords[0][0].length, 6 * 3 + 1, 'expected outer coord count p1');
601 | assert.strictEqual(coords[0][1].length, 7, 'expected inner coord count p1');
602 | assert.strictEqual(coords[1][0].length, 6 * 7 + 1, 'expected outer coord count p2');
603 | assert.strictEqual(coords[1][1].length, 6 * 5 + 1, 'expected inner coord count p2');
604 |
605 | assert.end();
606 | });
607 |
608 | test('h3SetToFeature - properties', assert => {
609 | const properties = {
610 | foo: 1,
611 | bar: 'baz'
612 | };
613 | const hexagons = ['500428f003a9f'];
614 | const feature = h3SetToFeature(hexagons, properties);
615 |
616 | assert.deepEqual(feature.properties, properties, 'Properties included in feature');
617 |
618 | assert.end();
619 | });
620 |
621 | test('h3ToFeature', assert => {
622 | const hexagon = '89283082837ffff';
623 | const vertices = h3.h3ToGeoBoundary(hexagon, true);
624 | const feature = {
625 | id: hexagon,
626 | type: 'Feature',
627 | properties: {},
628 | geometry: {
629 | type: 'Polygon',
630 | coordinates: [vertices]
631 | }
632 | };
633 |
634 | assert.deepEqual(h3ToFeature(hexagon), feature, 'h3ToFeature matches expected');
635 |
636 | assert.end();
637 | });
638 |
639 | test('h3SetToMultiPolygonFeature', assert => {
640 | const hexagons = ['89283085507ffff', '892830855b3ffff'];
641 |
642 | const feature = {
643 | type: 'Feature',
644 | properties: {},
645 | geometry: {
646 | type: 'MultiPolygon',
647 | coordinates: [HEX_OUTLINE_1, HEX_OUTLINE_2]
648 | }
649 | };
650 |
651 | const result = h3SetToMultiPolygonFeature(hexagons);
652 |
653 | assertEqualFeatures(assert, result, feature);
654 |
655 | assert.deepEqual(
656 | featureToH3Set(result, DEFAULT_RES),
657 | hexagons,
658 | 'featureToH3Set round-trip matches expected'
659 | );
660 |
661 | assert.end();
662 | });
663 |
664 | test('h3SetToMultiPolygonFeature - properties', assert => {
665 | const properties = {
666 | foo: 1,
667 | bar: 'baz'
668 | };
669 | const hexagons = ['89283085507ffff'];
670 | const feature = h3SetToMultiPolygonFeature(hexagons, properties);
671 |
672 | assert.deepEqual(feature.properties, properties, 'Properties included in feature');
673 |
674 | assert.end();
675 | });
676 |
677 | test('h3SetToFeatureCollection', assert => {
678 | const hexagons = ['89283085507ffff', '892830855b3ffff'];
679 |
680 | const expected = {
681 | type: 'FeatureCollection',
682 | features: [
683 | {
684 | type: 'Feature',
685 | id: hexagons[0],
686 | properties: {},
687 | geometry: {
688 | type: 'Polygon',
689 | coordinates: HEX_OUTLINE_1
690 | }
691 | },
692 | {
693 | type: 'Feature',
694 | id: hexagons[1],
695 | properties: {},
696 | geometry: {
697 | type: 'Polygon',
698 | coordinates: HEX_OUTLINE_2
699 | }
700 | }
701 | ]
702 | };
703 |
704 | const result = h3SetToFeatureCollection(hexagons);
705 |
706 | assertEqualFeatures(assert, result, expected);
707 |
708 | assert.end();
709 | });
710 |
711 | test('h3SetToFeatureCollection - properties', assert => {
712 | const hexagons = ['89283085507ffff', '892830855b3ffff'];
713 | const properties = {
714 | '89283085507ffff': {foo: 1},
715 | '892830855b3ffff': {bar: 'baz'}
716 | };
717 |
718 | function getProperties(hexAddress) {
719 | return properties[hexAddress];
720 | }
721 |
722 | const result = h3SetToFeatureCollection(hexagons, getProperties);
723 |
724 | assert.deepEqual(
725 | result.features[0].properties,
726 | properties[hexagons[0]],
727 | 'Properties match expected for hexagon'
728 | );
729 |
730 | assert.deepEqual(
731 | result.features[1].properties,
732 | properties[hexagons[1]],
733 | 'Properties match expected for hexagon'
734 | );
735 |
736 | assert.end();
737 | });
738 |
--------------------------------------------------------------------------------
/test/index.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2018 Uber Technologies, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | require('./geojson2h3.spec.js');
18 |
--------------------------------------------------------------------------------
/types.d.ts:
--------------------------------------------------------------------------------
1 | declare module 'geojson2h3' {
2 | import {Feature, FeatureCollection, GeoJsonProperties} from 'geojson';
3 |
4 | /**
5 | * Convert a GeoJSON feature to a set of hexagons. Only hexagons whose centers
6 | * fall within the feature will be included. Note that conversion from GeoJSON
7 | * is lossy; the resulting hexagon set only approximately describes the original
8 | * shape, at a level of precision determined by the hexagon resolution.
9 | */
10 | export function featureToH3Set(
11 | feature: Feature | FeatureCollection,
12 | resolution: number,
13 | options?: {ensureOutput?: boolean}
14 | ): string[];
15 |
16 | /**
17 | * Convert a single H3 hexagon to a GeoJSON `Polygon` feature
18 | */
19 | export function h3ToFeature(h3Index: string, properties?: GeoJsonProperties): Feature;
20 |
21 | /**
22 | * Convert a set of hexagons to a GeoJSON `Feature` with the set outline(s). The
23 | * feature's geometry type will be either `Polygon` or `MultiPolygon` depending on
24 | * the number of outlines required for the set.
25 | */
26 | export function h3SetToFeature(hexagons: string[], properties?: GeoJsonProperties): Feature;
27 |
28 | /**
29 | * Convert a set of hexagons to a GeoJSON `MultiPolygon` feature with the
30 | * outlines of each individual hexagon.
31 | */
32 | export function h3SetToMultiPolygonFeature(
33 | hexagons: string[],
34 | properties?: GeoJsonProperties
35 | ): Feature;
36 |
37 | /**
38 | * Convert a set of hexagons to a GeoJSON `FeatureCollection` with each hexagon
39 | * in a separate `Polygon` feature with optional properties.
40 | */
41 | export function h3SetToFeatureCollection(
42 | hexagons: string[],
43 | getProperties?: (h3Index: string) => GeoJsonProperties
44 | ): FeatureCollection;
45 | }
46 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@babel/parser@^7.9.4":
6 | version "7.12.17"
7 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.17.tgz#bc85d2d47db38094e5bb268fc761716e7d693848"
8 | integrity sha512-r1yKkiUTYMQ8LiEI0UcQx5ETw5dpTLn9wijn9hk6KkTtOK95FndDN10M+8/s6k/Ymlbivw0Av9q4SlgF80PtHg==
9 |
10 | "@types/geojson@^7946.0.7":
11 | version "7946.0.7"
12 | resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.7.tgz#c8fa532b60a0042219cdf173ca21a975ef0666ad"
13 | integrity sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ==
14 |
15 | abbrev@1:
16 | version "1.1.1"
17 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
18 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
19 |
20 | abbrev@1.0.x:
21 | version "1.0.9"
22 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
23 | integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU=
24 |
25 | acorn-dynamic-import@^4.0.0:
26 | version "4.0.0"
27 | resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948"
28 | integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==
29 |
30 | acorn-jsx@^3.0.0:
31 | version "3.0.1"
32 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
33 | integrity sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=
34 | dependencies:
35 | acorn "^3.0.4"
36 |
37 | acorn-jsx@^5.0.1:
38 | version "5.3.1"
39 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b"
40 | integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==
41 |
42 | acorn@^3.0.4:
43 | version "3.3.0"
44 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
45 | integrity sha1-ReN/s56No/JbruP/U2niu18iAXo=
46 |
47 | acorn@^5.5.0:
48 | version "5.7.4"
49 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e"
50 | integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==
51 |
52 | acorn@^6.1.1:
53 | version "6.4.2"
54 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6"
55 | integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==
56 |
57 | ajv-keywords@^2.1.0:
58 | version "2.1.1"
59 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762"
60 | integrity sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=
61 |
62 | ajv@^5.2.3, ajv@^5.3.0:
63 | version "5.5.2"
64 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
65 | integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=
66 | dependencies:
67 | co "^4.6.0"
68 | fast-deep-equal "^1.0.0"
69 | fast-json-stable-stringify "^2.0.0"
70 | json-schema-traverse "^0.3.0"
71 |
72 | amdefine@>=0.0.4:
73 | version "1.0.1"
74 | resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
75 | integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=
76 |
77 | ansi-escape-sequences@^4.0.0:
78 | version "4.1.0"
79 | resolved "https://registry.yarnpkg.com/ansi-escape-sequences/-/ansi-escape-sequences-4.1.0.tgz#2483c8773f50dd9174dd9557e92b1718f1816097"
80 | integrity sha512-dzW9kHxH011uBsidTXd14JXgzye/YLb2LzeKZ4bsgl/Knwx8AtbSFkkGxagdNOoh0DlqHCmfiEjWKBaqjOanVw==
81 | dependencies:
82 | array-back "^3.0.1"
83 |
84 | ansi-escapes@^3.0.0:
85 | version "3.2.0"
86 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
87 | integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
88 |
89 | ansi-regex@^2.0.0:
90 | version "2.1.1"
91 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
92 | integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
93 |
94 | ansi-regex@^3.0.0:
95 | version "3.0.0"
96 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
97 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
98 |
99 | ansi-styles@^2.2.1:
100 | version "2.2.1"
101 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
102 | integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
103 |
104 | ansi-styles@^3.2.1:
105 | version "3.2.1"
106 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
107 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
108 | dependencies:
109 | color-convert "^1.9.0"
110 |
111 | argparse@^1.0.7:
112 | version "1.0.10"
113 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
114 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
115 | dependencies:
116 | sprintf-js "~1.0.2"
117 |
118 | array-back@^1.0.2, array-back@^1.0.3:
119 | version "1.0.4"
120 | resolved "https://registry.yarnpkg.com/array-back/-/array-back-1.0.4.tgz#644ba7f095f7ffcf7c43b5f0dc39d3c1f03c063b"
121 | integrity sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=
122 | dependencies:
123 | typical "^2.6.0"
124 |
125 | array-back@^2.0.0:
126 | version "2.0.0"
127 | resolved "https://registry.yarnpkg.com/array-back/-/array-back-2.0.0.tgz#6877471d51ecc9c9bfa6136fb6c7d5fe69748022"
128 | integrity sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==
129 | dependencies:
130 | typical "^2.6.1"
131 |
132 | array-back@^3.0.1:
133 | version "3.1.0"
134 | resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0"
135 | integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==
136 |
137 | array-back@^4.0.1:
138 | version "4.0.1"
139 | resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.1.tgz#9b80312935a52062e1a233a9c7abeb5481b30e90"
140 | integrity sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg==
141 |
142 | array-back@^5.0.0:
143 | version "5.0.0"
144 | resolved "https://registry.yarnpkg.com/array-back/-/array-back-5.0.0.tgz#e196609edcec48376236d163958df76e659a0d36"
145 | integrity sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==
146 |
147 | async@1.x:
148 | version "1.5.2"
149 | resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
150 | integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
151 |
152 | babel-code-frame@^6.22.0:
153 | version "6.26.0"
154 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
155 | integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=
156 | dependencies:
157 | chalk "^1.1.3"
158 | esutils "^2.0.2"
159 | js-tokens "^3.0.2"
160 |
161 | balanced-match@^1.0.0:
162 | version "1.0.0"
163 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
164 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
165 |
166 | benchmark@^2.1.4:
167 | version "2.1.4"
168 | resolved "https://registry.yarnpkg.com/benchmark/-/benchmark-2.1.4.tgz#09f3de31c916425d498cc2ee565a0ebf3c2a5629"
169 | integrity sha1-CfPeMckWQl1JjMLuVloOvzwqVik=
170 | dependencies:
171 | lodash "^4.17.4"
172 | platform "^1.3.3"
173 |
174 | bluebird@^3.7.2:
175 | version "3.7.2"
176 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
177 | integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
178 |
179 | brace-expansion@^1.1.7:
180 | version "1.1.11"
181 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
182 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
183 | dependencies:
184 | balanced-match "^1.0.0"
185 | concat-map "0.0.1"
186 |
187 | buble@^0.19.3:
188 | version "0.19.8"
189 | resolved "https://registry.yarnpkg.com/buble/-/buble-0.19.8.tgz#d642f0081afab66dccd897d7b6360d94030b9d3d"
190 | integrity sha512-IoGZzrUTY5fKXVkgGHw3QeXFMUNBFv+9l8a4QJKG1JhG3nCMHTdEX1DCOg8568E2Q9qvAQIiSokv6Jsgx8p2cA==
191 | dependencies:
192 | acorn "^6.1.1"
193 | acorn-dynamic-import "^4.0.0"
194 | acorn-jsx "^5.0.1"
195 | chalk "^2.4.2"
196 | magic-string "^0.25.3"
197 | minimist "^1.2.0"
198 | os-homedir "^2.0.0"
199 | regexpu-core "^4.5.4"
200 |
201 | buffer-from@^1.0.0:
202 | version "1.1.1"
203 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
204 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
205 |
206 | cache-point@^2.0.0:
207 | version "2.0.0"
208 | resolved "https://registry.yarnpkg.com/cache-point/-/cache-point-2.0.0.tgz#91e03c38da9cfba9d95ac6a34d24cfe6eff8920f"
209 | integrity sha512-4gkeHlFpSKgm3vm2gJN5sPqfmijYRFYCQ6tv5cLw0xVmT6r1z1vd4FNnpuOREco3cBs1G709sZ72LdgddKvL5w==
210 | dependencies:
211 | array-back "^4.0.1"
212 | fs-then-native "^2.0.0"
213 | mkdirp2 "^1.0.4"
214 |
215 | call-bind@^1.0.0, call-bind@^1.0.2:
216 | version "1.0.2"
217 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
218 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
219 | dependencies:
220 | function-bind "^1.1.1"
221 | get-intrinsic "^1.0.2"
222 |
223 | caller-path@^0.1.0:
224 | version "0.1.0"
225 | resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
226 | integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=
227 | dependencies:
228 | callsites "^0.2.0"
229 |
230 | callsites@^0.2.0:
231 | version "0.2.0"
232 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
233 | integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=
234 |
235 | catharsis@^0.8.11:
236 | version "0.8.11"
237 | resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.8.11.tgz#d0eb3d2b82b7da7a3ce2efb1a7b00becc6643468"
238 | integrity sha512-a+xUyMV7hD1BrDQA/3iPV7oc+6W26BgVJO05PGEoatMyIuPScQKsde6i3YorWX1qs+AZjnJ18NqdKoCtKiNh1g==
239 | dependencies:
240 | lodash "^4.17.14"
241 |
242 | chalk@^1.1.3:
243 | version "1.1.3"
244 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
245 | integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
246 | dependencies:
247 | ansi-styles "^2.2.1"
248 | escape-string-regexp "^1.0.2"
249 | has-ansi "^2.0.0"
250 | strip-ansi "^3.0.0"
251 | supports-color "^2.0.0"
252 |
253 | chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2:
254 | version "2.4.2"
255 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
256 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
257 | dependencies:
258 | ansi-styles "^3.2.1"
259 | escape-string-regexp "^1.0.5"
260 | supports-color "^5.3.0"
261 |
262 | chardet@^0.4.0:
263 | version "0.4.2"
264 | resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2"
265 | integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=
266 |
267 | circular-json@^0.3.1:
268 | version "0.3.3"
269 | resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66"
270 | integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==
271 |
272 | cli-cursor@^2.1.0:
273 | version "2.1.0"
274 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
275 | integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=
276 | dependencies:
277 | restore-cursor "^2.0.0"
278 |
279 | cli-width@^2.0.0:
280 | version "2.2.1"
281 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48"
282 | integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==
283 |
284 | co@^4.6.0:
285 | version "4.6.0"
286 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
287 | integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
288 |
289 | collect-all@^1.0.3:
290 | version "1.0.4"
291 | resolved "https://registry.yarnpkg.com/collect-all/-/collect-all-1.0.4.tgz#50cd7119ac24b8e12a661f0f8c3aa0ea7222ddfc"
292 | integrity sha512-RKZhRwJtJEP5FWul+gkSMEnaK6H3AGPTTWOiRimCcs+rc/OmQE3Yhy1Q7A7KsdkG3ZXVdZq68Y6ONSdvkeEcKA==
293 | dependencies:
294 | stream-connect "^1.0.2"
295 | stream-via "^1.0.4"
296 |
297 | color-convert@^1.9.0:
298 | version "1.9.3"
299 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
300 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
301 | dependencies:
302 | color-name "1.1.3"
303 |
304 | color-name@1.1.3:
305 | version "1.1.3"
306 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
307 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
308 |
309 | command-line-args@^5.0.0:
310 | version "5.1.1"
311 | resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.1.1.tgz#88e793e5bb3ceb30754a86863f0401ac92fd369a"
312 | integrity sha512-hL/eG8lrll1Qy1ezvkant+trihbGnaKaeEjj6Scyr3DN+RC7iQ5Rz84IeLERfAWDGo0HBSNAakczwgCilDXnWg==
313 | dependencies:
314 | array-back "^3.0.1"
315 | find-replace "^3.0.0"
316 | lodash.camelcase "^4.3.0"
317 | typical "^4.0.0"
318 |
319 | command-line-tool@^0.8.0:
320 | version "0.8.0"
321 | resolved "https://registry.yarnpkg.com/command-line-tool/-/command-line-tool-0.8.0.tgz#b00290ef1dfc11cc731dd1f43a92cfa5f21e715b"
322 | integrity sha512-Xw18HVx/QzQV3Sc5k1vy3kgtOeGmsKIqwtFFoyjI4bbcpSgnw2CWVULvtakyw4s6fhyAdI6soQQhXc2OzJy62g==
323 | dependencies:
324 | ansi-escape-sequences "^4.0.0"
325 | array-back "^2.0.0"
326 | command-line-args "^5.0.0"
327 | command-line-usage "^4.1.0"
328 | typical "^2.6.1"
329 |
330 | command-line-usage@^4.1.0:
331 | version "4.1.0"
332 | resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-4.1.0.tgz#a6b3b2e2703b4dcf8bd46ae19e118a9a52972882"
333 | integrity sha512-MxS8Ad995KpdAC0Jopo/ovGIroV/m0KHwzKfXxKag6FHOkGsH8/lv5yjgablcRxCJJC0oJeUMuO/gmaq+Wq46g==
334 | dependencies:
335 | ansi-escape-sequences "^4.0.0"
336 | array-back "^2.0.0"
337 | table-layout "^0.4.2"
338 | typical "^2.6.1"
339 |
340 | common-sequence@^2.0.0:
341 | version "2.0.0"
342 | resolved "https://registry.yarnpkg.com/common-sequence/-/common-sequence-2.0.0.tgz#a4f01aaf5aebd0ac1ce43653e8c8fe6f0ef3a987"
343 | integrity sha512-f0QqPLpRTgMQn/pQIynf+SdE73Lw5Q1jn4hjirHLgH/NJ71TiHjXusV16BmOyuK5rRQ1W2f++II+TFZbQOh4hA==
344 |
345 | concat-map@0.0.1:
346 | version "0.0.1"
347 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
348 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
349 |
350 | concat-stream@^1.6.0:
351 | version "1.6.2"
352 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
353 | integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
354 | dependencies:
355 | buffer-from "^1.0.0"
356 | inherits "^2.0.3"
357 | readable-stream "^2.2.2"
358 | typedarray "^0.0.6"
359 |
360 | config-master@^3.1.0:
361 | version "3.1.0"
362 | resolved "https://registry.yarnpkg.com/config-master/-/config-master-3.1.0.tgz#667663590505a283bf26a484d68489d74c5485da"
363 | integrity sha1-ZnZjWQUFooO/JqSE1oSJ10xUhdo=
364 | dependencies:
365 | walk-back "^2.0.1"
366 |
367 | core-util-is@~1.0.0:
368 | version "1.0.2"
369 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
370 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
371 |
372 | cross-spawn@^5.1.0:
373 | version "5.1.0"
374 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
375 | integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=
376 | dependencies:
377 | lru-cache "^4.0.1"
378 | shebang-command "^1.2.0"
379 | which "^1.2.9"
380 |
381 | debug@^3.1.0:
382 | version "3.2.7"
383 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
384 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
385 | dependencies:
386 | ms "^2.1.1"
387 |
388 | deep-equal@~0.1.0:
389 | version "0.1.2"
390 | resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-0.1.2.tgz#b246c2b80a570a47c11be1d9bd1070ec878b87ce"
391 | integrity sha1-skbCuApXCkfBG+HZvRBw7IeLh84=
392 |
393 | deep-equal@~1.1.1:
394 | version "1.1.1"
395 | resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a"
396 | integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==
397 | dependencies:
398 | is-arguments "^1.0.4"
399 | is-date-object "^1.0.1"
400 | is-regex "^1.0.4"
401 | object-is "^1.0.1"
402 | object-keys "^1.1.1"
403 | regexp.prototype.flags "^1.2.0"
404 |
405 | deep-extend@~0.6.0:
406 | version "0.6.0"
407 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
408 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
409 |
410 | deep-is@~0.1.3:
411 | version "0.1.3"
412 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
413 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
414 |
415 | define-properties@^1.1.3:
416 | version "1.1.3"
417 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
418 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
419 | dependencies:
420 | object-keys "^1.0.12"
421 |
422 | defined@0.0.0, defined@~0.0.0:
423 | version "0.0.0"
424 | resolved "https://registry.yarnpkg.com/defined/-/defined-0.0.0.tgz#f35eea7d705e933baf13b2f03b3f83d921403b3e"
425 | integrity sha1-817qfXBekzuvE7LwOz+D2SFAOz4=
426 |
427 | defined@~1.0.0:
428 | version "1.0.0"
429 | resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
430 | integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=
431 |
432 | dmd@^5.0.1:
433 | version "5.0.2"
434 | resolved "https://registry.yarnpkg.com/dmd/-/dmd-5.0.2.tgz#a911c8dbab10ec64fbc134eeb69b933618ebeb07"
435 | integrity sha512-npXsE2+/onRPk/LCrUmx7PcUSqcSVnbrDDMi2nBSawNZ8QXlHE/8xaEZ6pNqPD1lQZv8LGr1xEIpyxP336xyfw==
436 | dependencies:
437 | array-back "^4.0.1"
438 | cache-point "^2.0.0"
439 | common-sequence "^2.0.0"
440 | file-set "^4.0.1"
441 | handlebars "^4.7.6"
442 | marked "^1.1.0"
443 | object-get "^2.1.1"
444 | reduce-flatten "^3.0.0"
445 | reduce-unique "^2.0.1"
446 | reduce-without "^1.0.1"
447 | test-value "^3.0.0"
448 | walk-back "^4.0.0"
449 |
450 | doctrine@^2.1.0:
451 | version "2.1.0"
452 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
453 | integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
454 | dependencies:
455 | esutils "^2.0.2"
456 |
457 | dotignore@~0.1.2:
458 | version "0.1.2"
459 | resolved "https://registry.yarnpkg.com/dotignore/-/dotignore-0.1.2.tgz#f942f2200d28c3a76fbdd6f0ee9f3257c8a2e905"
460 | integrity sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==
461 | dependencies:
462 | minimatch "^3.0.4"
463 |
464 | duplexer@~0.1.1:
465 | version "0.1.2"
466 | resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
467 | integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
468 |
469 | entities@~2.0.0:
470 | version "2.0.3"
471 | resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f"
472 | integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==
473 |
474 | es-abstract@^1.18.0-next.1:
475 | version "1.18.0-next.2"
476 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.2.tgz#088101a55f0541f595e7e057199e27ddc8f3a5c2"
477 | integrity sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==
478 | dependencies:
479 | call-bind "^1.0.2"
480 | es-to-primitive "^1.2.1"
481 | function-bind "^1.1.1"
482 | get-intrinsic "^1.0.2"
483 | has "^1.0.3"
484 | has-symbols "^1.0.1"
485 | is-callable "^1.2.2"
486 | is-negative-zero "^2.0.1"
487 | is-regex "^1.1.1"
488 | object-inspect "^1.9.0"
489 | object-keys "^1.1.1"
490 | object.assign "^4.1.2"
491 | string.prototype.trimend "^1.0.3"
492 | string.prototype.trimstart "^1.0.3"
493 |
494 | es-to-primitive@^1.2.1:
495 | version "1.2.1"
496 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
497 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
498 | dependencies:
499 | is-callable "^1.1.4"
500 | is-date-object "^1.0.1"
501 | is-symbol "^1.0.2"
502 |
503 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
504 | version "1.0.5"
505 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
506 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
507 |
508 | escape-string-regexp@^2.0.0:
509 | version "2.0.0"
510 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
511 | integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
512 |
513 | escodegen@1.8.x:
514 | version "1.8.1"
515 | resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018"
516 | integrity sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=
517 | dependencies:
518 | esprima "^2.7.1"
519 | estraverse "^1.9.1"
520 | esutils "^2.0.2"
521 | optionator "^0.8.1"
522 | optionalDependencies:
523 | source-map "~0.2.0"
524 |
525 | eslint-config-prettier@^2.9.0:
526 | version "2.10.0"
527 | resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-2.10.0.tgz#ec07bc1d01f87d09f61d3840d112dc8a9791e30b"
528 | integrity sha512-Mhl90VLucfBuhmcWBgbUNtgBiK955iCDK1+aHAz7QfDQF6wuzWZ6JjihZ3ejJoGlJWIuko7xLqNm8BA5uenKhA==
529 | dependencies:
530 | get-stdin "^5.0.1"
531 |
532 | eslint-config-uber-es2015@^3.1.2:
533 | version "3.1.2"
534 | resolved "https://registry.yarnpkg.com/eslint-config-uber-es2015/-/eslint-config-uber-es2015-3.1.2.tgz#77acd8800141f75dde997a87bb451e3490b07e54"
535 | integrity sha1-d6zYgAFB913emXqHu0UeNJCwflQ=
536 | dependencies:
537 | eslint-config-uber-es5 "^2.0.3"
538 |
539 | eslint-config-uber-es5@^2.0.3:
540 | version "2.0.3"
541 | resolved "https://registry.yarnpkg.com/eslint-config-uber-es5/-/eslint-config-uber-es5-2.0.3.tgz#4991bc80103a7f5a39dc77a7eb13dbd860568fe5"
542 | integrity sha512-lHdjmCumgT72R6t4ZAvjErmOB1l9d6fg1IoX+MZ11F/7CFLMinmsMQW/r9aFWKPMdTkP+rR5NBpSTDnRE20oEw==
543 |
544 | eslint-plugin-prettier@^2.6.0:
545 | version "2.7.0"
546 | resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.7.0.tgz#b4312dcf2c1d965379d7f9d5b5f8aaadc6a45904"
547 | integrity sha512-CStQYJgALoQBw3FsBzH0VOVDRnJ/ZimUlpLm226U8qgqYJfPOY/CPK6wyRInMxh73HSKg5wyRwdS4BVYYHwokA==
548 | dependencies:
549 | fast-diff "^1.1.1"
550 | jest-docblock "^21.0.0"
551 |
552 | eslint-scope@^3.7.1:
553 | version "3.7.3"
554 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535"
555 | integrity sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==
556 | dependencies:
557 | esrecurse "^4.1.0"
558 | estraverse "^4.1.1"
559 |
560 | eslint-visitor-keys@^1.0.0:
561 | version "1.3.0"
562 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
563 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
564 |
565 | eslint@^4.19.1:
566 | version "4.19.1"
567 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300"
568 | integrity sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==
569 | dependencies:
570 | ajv "^5.3.0"
571 | babel-code-frame "^6.22.0"
572 | chalk "^2.1.0"
573 | concat-stream "^1.6.0"
574 | cross-spawn "^5.1.0"
575 | debug "^3.1.0"
576 | doctrine "^2.1.0"
577 | eslint-scope "^3.7.1"
578 | eslint-visitor-keys "^1.0.0"
579 | espree "^3.5.4"
580 | esquery "^1.0.0"
581 | esutils "^2.0.2"
582 | file-entry-cache "^2.0.0"
583 | functional-red-black-tree "^1.0.1"
584 | glob "^7.1.2"
585 | globals "^11.0.1"
586 | ignore "^3.3.3"
587 | imurmurhash "^0.1.4"
588 | inquirer "^3.0.6"
589 | is-resolvable "^1.0.0"
590 | js-yaml "^3.9.1"
591 | json-stable-stringify-without-jsonify "^1.0.1"
592 | levn "^0.3.0"
593 | lodash "^4.17.4"
594 | minimatch "^3.0.2"
595 | mkdirp "^0.5.1"
596 | natural-compare "^1.4.0"
597 | optionator "^0.8.2"
598 | path-is-inside "^1.0.2"
599 | pluralize "^7.0.0"
600 | progress "^2.0.0"
601 | regexpp "^1.0.1"
602 | require-uncached "^1.0.3"
603 | semver "^5.3.0"
604 | strip-ansi "^4.0.0"
605 | strip-json-comments "~2.0.1"
606 | table "4.0.2"
607 | text-table "~0.2.0"
608 |
609 | espree@^3.5.4:
610 | version "3.5.4"
611 | resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7"
612 | integrity sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==
613 | dependencies:
614 | acorn "^5.5.0"
615 | acorn-jsx "^3.0.0"
616 |
617 | esprima@2.7.x, esprima@^2.7.1:
618 | version "2.7.3"
619 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
620 | integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=
621 |
622 | esprima@^4.0.0:
623 | version "4.0.1"
624 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
625 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
626 |
627 | esquery@^1.0.0:
628 | version "1.4.0"
629 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5"
630 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==
631 | dependencies:
632 | estraverse "^5.1.0"
633 |
634 | esrecurse@^4.1.0:
635 | version "4.3.0"
636 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
637 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
638 | dependencies:
639 | estraverse "^5.2.0"
640 |
641 | estraverse@^1.9.1:
642 | version "1.9.3"
643 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44"
644 | integrity sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=
645 |
646 | estraverse@^4.1.1:
647 | version "4.3.0"
648 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
649 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
650 |
651 | estraverse@^5.1.0, estraverse@^5.2.0:
652 | version "5.2.0"
653 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
654 | integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
655 |
656 | esutils@^2.0.2:
657 | version "2.0.3"
658 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
659 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
660 |
661 | external-editor@^2.0.4:
662 | version "2.2.0"
663 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5"
664 | integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==
665 | dependencies:
666 | chardet "^0.4.0"
667 | iconv-lite "^0.4.17"
668 | tmp "^0.0.33"
669 |
670 | fast-deep-equal@^1.0.0:
671 | version "1.1.0"
672 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614"
673 | integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=
674 |
675 | fast-diff@^1.1.1:
676 | version "1.2.0"
677 | resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
678 | integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
679 |
680 | fast-json-stable-stringify@^2.0.0:
681 | version "2.1.0"
682 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
683 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
684 |
685 | fast-levenshtein@~2.0.6:
686 | version "2.0.6"
687 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
688 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
689 |
690 | faucet@^0.0.1:
691 | version "0.0.1"
692 | resolved "https://registry.yarnpkg.com/faucet/-/faucet-0.0.1.tgz#597dcf1d2189a2c062321b591e8f151ed2039d9c"
693 | integrity sha1-WX3PHSGJosBiMhtZHo8VHtIDnZw=
694 | dependencies:
695 | defined "0.0.0"
696 | duplexer "~0.1.1"
697 | minimist "0.0.5"
698 | sprintf "~0.1.3"
699 | tap-parser "~0.4.0"
700 | tape "~2.3.2"
701 | through2 "~0.2.3"
702 |
703 | figures@^2.0.0:
704 | version "2.0.0"
705 | resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
706 | integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=
707 | dependencies:
708 | escape-string-regexp "^1.0.5"
709 |
710 | file-entry-cache@^2.0.0:
711 | version "2.0.0"
712 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361"
713 | integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=
714 | dependencies:
715 | flat-cache "^1.2.1"
716 | object-assign "^4.0.1"
717 |
718 | file-set@^4.0.1:
719 | version "4.0.1"
720 | resolved "https://registry.yarnpkg.com/file-set/-/file-set-4.0.1.tgz#d8a4485a89c8db7ca414f05a043bce44a2d6a913"
721 | integrity sha512-tRzX4kGPmxS2HDK2q2L4qcPopTl/gcyahve2/O8l8hHNJgJ7m+r/ZncCJ1MmFWEMp1yHxJGIU9gAcsWu5jPMpg==
722 | dependencies:
723 | array-back "^4.0.1"
724 | glob "^7.1.6"
725 |
726 | find-replace@^3.0.0:
727 | version "3.0.0"
728 | resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38"
729 | integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==
730 | dependencies:
731 | array-back "^3.0.1"
732 |
733 | flat-cache@^1.2.1:
734 | version "1.3.4"
735 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f"
736 | integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==
737 | dependencies:
738 | circular-json "^0.3.1"
739 | graceful-fs "^4.1.2"
740 | rimraf "~2.6.2"
741 | write "^0.2.1"
742 |
743 | for-each@~0.3.3:
744 | version "0.3.3"
745 | resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e"
746 | integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==
747 | dependencies:
748 | is-callable "^1.1.3"
749 |
750 | fs-then-native@^2.0.0:
751 | version "2.0.0"
752 | resolved "https://registry.yarnpkg.com/fs-then-native/-/fs-then-native-2.0.0.tgz#19a124d94d90c22c8e045f2e8dd6ebea36d48c67"
753 | integrity sha1-GaEk2U2QwiyOBF8ujdbr6jbUjGc=
754 |
755 | fs.realpath@^1.0.0:
756 | version "1.0.0"
757 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
758 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
759 |
760 | function-bind@^1.1.1, function-bind@~1.1.1:
761 | version "1.1.1"
762 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
763 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
764 |
765 | functional-red-black-tree@^1.0.1:
766 | version "1.0.1"
767 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
768 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
769 |
770 | get-intrinsic@^1.0.2:
771 | version "1.1.1"
772 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
773 | integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==
774 | dependencies:
775 | function-bind "^1.1.1"
776 | has "^1.0.3"
777 | has-symbols "^1.0.1"
778 |
779 | get-stdin@^5.0.1:
780 | version "5.0.1"
781 | resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398"
782 | integrity sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=
783 |
784 | glob@^5.0.15:
785 | version "5.0.15"
786 | resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
787 | integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=
788 | dependencies:
789 | inflight "^1.0.4"
790 | inherits "2"
791 | minimatch "2 || 3"
792 | once "^1.3.0"
793 | path-is-absolute "^1.0.0"
794 |
795 | glob@^7.1.2, glob@^7.1.3, glob@^7.1.6, glob@~7.1.6:
796 | version "7.1.6"
797 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
798 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
799 | dependencies:
800 | fs.realpath "^1.0.0"
801 | inflight "^1.0.4"
802 | inherits "2"
803 | minimatch "^3.0.4"
804 | once "^1.3.0"
805 | path-is-absolute "^1.0.0"
806 |
807 | globals@^11.0.1:
808 | version "11.12.0"
809 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
810 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
811 |
812 | graceful-fs@^4.1.2, graceful-fs@^4.1.9:
813 | version "4.2.6"
814 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee"
815 | integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==
816 |
817 | h3-js@^3.6.1:
818 | version "3.7.0"
819 | resolved "https://registry.yarnpkg.com/h3-js/-/h3-js-3.7.0.tgz#f0ff5563ae04ce448cbe6b8573d9796a6c97f5ad"
820 | integrity sha512-EcH/qGU4khZsAEG39Uu8MvaCing0JFcuoe3K4Xmg5MofDIu1cNJl7z2AQS8ggvXGxboiLJqsGirhEqFKdd2gAA==
821 |
822 | handlebars@^4.0.1, handlebars@^4.7.6:
823 | version "4.7.7"
824 | resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1"
825 | integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==
826 | dependencies:
827 | minimist "^1.2.5"
828 | neo-async "^2.6.0"
829 | source-map "^0.6.1"
830 | wordwrap "^1.0.0"
831 | optionalDependencies:
832 | uglify-js "^3.1.4"
833 |
834 | has-ansi@^2.0.0:
835 | version "2.0.0"
836 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
837 | integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
838 | dependencies:
839 | ansi-regex "^2.0.0"
840 |
841 | has-flag@^1.0.0:
842 | version "1.0.0"
843 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
844 | integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=
845 |
846 | has-flag@^3.0.0:
847 | version "3.0.0"
848 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
849 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
850 |
851 | has-symbols@^1.0.1:
852 | version "1.0.1"
853 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
854 | integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
855 |
856 | has@^1.0.3, has@~1.0.3:
857 | version "1.0.3"
858 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
859 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
860 | dependencies:
861 | function-bind "^1.1.1"
862 |
863 | iconv-lite@^0.4.17:
864 | version "0.4.24"
865 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
866 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
867 | dependencies:
868 | safer-buffer ">= 2.1.2 < 3"
869 |
870 | ignore@^3.3.3:
871 | version "3.3.10"
872 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
873 | integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==
874 |
875 | imurmurhash@^0.1.4:
876 | version "0.1.4"
877 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
878 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
879 |
880 | inflight@^1.0.4:
881 | version "1.0.6"
882 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
883 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
884 | dependencies:
885 | once "^1.3.0"
886 | wrappy "1"
887 |
888 | inherits@2, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4:
889 | version "2.0.4"
890 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
891 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
892 |
893 | inquirer@^3.0.6:
894 | version "3.3.0"
895 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9"
896 | integrity sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==
897 | dependencies:
898 | ansi-escapes "^3.0.0"
899 | chalk "^2.0.0"
900 | cli-cursor "^2.1.0"
901 | cli-width "^2.0.0"
902 | external-editor "^2.0.4"
903 | figures "^2.0.0"
904 | lodash "^4.3.0"
905 | mute-stream "0.0.7"
906 | run-async "^2.2.0"
907 | rx-lite "^4.0.8"
908 | rx-lite-aggregates "^4.0.8"
909 | string-width "^2.1.0"
910 | strip-ansi "^4.0.0"
911 | through "^2.3.6"
912 |
913 | is-arguments@^1.0.4:
914 | version "1.1.0"
915 | resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9"
916 | integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==
917 | dependencies:
918 | call-bind "^1.0.0"
919 |
920 | is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.2:
921 | version "1.2.3"
922 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e"
923 | integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==
924 |
925 | is-date-object@^1.0.1:
926 | version "1.0.2"
927 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e"
928 | integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
929 |
930 | is-fullwidth-code-point@^2.0.0:
931 | version "2.0.0"
932 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
933 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
934 |
935 | is-negative-zero@^2.0.1:
936 | version "2.0.1"
937 | resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
938 | integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==
939 |
940 | is-regex@^1.0.4, is-regex@^1.1.1:
941 | version "1.1.2"
942 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251"
943 | integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==
944 | dependencies:
945 | call-bind "^1.0.2"
946 | has-symbols "^1.0.1"
947 |
948 | is-regex@~1.0.5:
949 | version "1.0.5"
950 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae"
951 | integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==
952 | dependencies:
953 | has "^1.0.3"
954 |
955 | is-resolvable@^1.0.0:
956 | version "1.1.0"
957 | resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
958 | integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
959 |
960 | is-symbol@^1.0.2:
961 | version "1.0.3"
962 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
963 | integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==
964 | dependencies:
965 | has-symbols "^1.0.1"
966 |
967 | isarray@0.0.1:
968 | version "0.0.1"
969 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
970 | integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
971 |
972 | isarray@~1.0.0:
973 | version "1.0.0"
974 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
975 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
976 |
977 | isexe@^2.0.0:
978 | version "2.0.0"
979 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
980 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
981 |
982 | istanbul@^0.4.3:
983 | version "0.4.5"
984 | resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b"
985 | integrity sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=
986 | dependencies:
987 | abbrev "1.0.x"
988 | async "1.x"
989 | escodegen "1.8.x"
990 | esprima "2.7.x"
991 | glob "^5.0.15"
992 | handlebars "^4.0.1"
993 | js-yaml "3.x"
994 | mkdirp "0.5.x"
995 | nopt "3.x"
996 | once "1.x"
997 | resolve "1.1.x"
998 | supports-color "^3.1.0"
999 | which "^1.1.1"
1000 | wordwrap "^1.0.0"
1001 |
1002 | jest-docblock@^21.0.0:
1003 | version "21.2.0"
1004 | resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414"
1005 | integrity sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==
1006 |
1007 | js-tokens@^3.0.2:
1008 | version "3.0.2"
1009 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
1010 | integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=
1011 |
1012 | js-yaml@3.x, js-yaml@^3.9.1:
1013 | version "3.14.1"
1014 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
1015 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
1016 | dependencies:
1017 | argparse "^1.0.7"
1018 | esprima "^4.0.0"
1019 |
1020 | js2xmlparser@^4.0.1:
1021 | version "4.0.1"
1022 | resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-4.0.1.tgz#670ef71bc5661f089cc90481b99a05a1227ae3bd"
1023 | integrity sha512-KrPTolcw6RocpYjdC7pL7v62e55q7qOMHvLX1UCLc5AAS8qeJ6nukarEJAF2KL2PZxlbGueEbINqZR2bDe/gUw==
1024 | dependencies:
1025 | xmlcreate "^2.0.3"
1026 |
1027 | jsdoc-api@^6.0.0:
1028 | version "6.0.0"
1029 | resolved "https://registry.yarnpkg.com/jsdoc-api/-/jsdoc-api-6.0.0.tgz#fbba403ef59de0480b7e5aadd563a7bb715b0187"
1030 | integrity sha512-zvfB63nAc9e+Rv2kKmJfE6tmo4x8KFho5vKr6VfYTlCCgqtrfPv0McCdqT4betUT9rWtw0zGkNUVkVqeQipY6Q==
1031 | dependencies:
1032 | array-back "^4.0.1"
1033 | cache-point "^2.0.0"
1034 | collect-all "^1.0.3"
1035 | file-set "^4.0.1"
1036 | fs-then-native "^2.0.0"
1037 | jsdoc "^3.6.4"
1038 | object-to-spawn-args "^2.0.0"
1039 | temp-path "^1.0.0"
1040 | walk-back "^4.0.0"
1041 |
1042 | jsdoc-parse@^5.0.0:
1043 | version "5.0.0"
1044 | resolved "https://registry.yarnpkg.com/jsdoc-parse/-/jsdoc-parse-5.0.0.tgz#01fb96e04955df05bca1ad722d76e969a30108f7"
1045 | integrity sha512-Khw8c3glrTeA3/PfUJUBvhrMhWpSClORBUvL4pvq2wFcqvUVmA96wxnMkCno2GfZY4pnd8BStK5WGKGyn4Vckg==
1046 | dependencies:
1047 | array-back "^4.0.1"
1048 | lodash.omit "^4.5.0"
1049 | lodash.pick "^4.4.0"
1050 | reduce-extract "^1.0.0"
1051 | sort-array "^4.1.1"
1052 | test-value "^3.0.0"
1053 |
1054 | jsdoc-to-markdown@^6.0.1:
1055 | version "6.0.1"
1056 | resolved "https://registry.yarnpkg.com/jsdoc-to-markdown/-/jsdoc-to-markdown-6.0.1.tgz#55640eea7a4f56fa9353316648bf0775531811ff"
1057 | integrity sha512-hUI2PAR5n/KlmQU3mAWO9i3D7jVbhyvUHfQ6oYVBt+wnnsyxpsAuhCODY1ryLOb2U9OPJd4GIK9mL2hqy7fHDg==
1058 | dependencies:
1059 | array-back "^4.0.1"
1060 | command-line-tool "^0.8.0"
1061 | config-master "^3.1.0"
1062 | dmd "^5.0.1"
1063 | jsdoc-api "^6.0.0"
1064 | jsdoc-parse "^5.0.0"
1065 | walk-back "^4.0.0"
1066 |
1067 | jsdoc@^3.6.4, jsdoc@^3.6.6:
1068 | version "3.6.6"
1069 | resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-3.6.6.tgz#9fe162bbdb13ee7988bf74352b5147565bcfd8e1"
1070 | integrity sha512-znR99e1BHeyEkSvgDDpX0sTiTu+8aQyDl9DawrkOGZTTW8hv0deIFXx87114zJ7gRaDZKVQD/4tr1ifmJp9xhQ==
1071 | dependencies:
1072 | "@babel/parser" "^7.9.4"
1073 | bluebird "^3.7.2"
1074 | catharsis "^0.8.11"
1075 | escape-string-regexp "^2.0.0"
1076 | js2xmlparser "^4.0.1"
1077 | klaw "^3.0.0"
1078 | markdown-it "^10.0.0"
1079 | markdown-it-anchor "^5.2.7"
1080 | marked "^0.8.2"
1081 | mkdirp "^1.0.4"
1082 | requizzle "^0.2.3"
1083 | strip-json-comments "^3.1.0"
1084 | taffydb "2.6.2"
1085 | underscore "~1.10.2"
1086 |
1087 | jsesc@~0.5.0:
1088 | version "0.5.0"
1089 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
1090 | integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
1091 |
1092 | json-schema-traverse@^0.3.0:
1093 | version "0.3.1"
1094 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
1095 | integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=
1096 |
1097 | json-stable-stringify-without-jsonify@^1.0.1:
1098 | version "1.0.1"
1099 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
1100 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
1101 |
1102 | jsonify@~0.0.0:
1103 | version "0.0.0"
1104 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
1105 | integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=
1106 |
1107 | klaw@^3.0.0:
1108 | version "3.0.0"
1109 | resolved "https://registry.yarnpkg.com/klaw/-/klaw-3.0.0.tgz#b11bec9cf2492f06756d6e809ab73a2910259146"
1110 | integrity sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==
1111 | dependencies:
1112 | graceful-fs "^4.1.9"
1113 |
1114 | levn@^0.3.0, levn@~0.3.0:
1115 | version "0.3.0"
1116 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
1117 | integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
1118 | dependencies:
1119 | prelude-ls "~1.1.2"
1120 | type-check "~0.3.2"
1121 |
1122 | linkify-it@^2.0.0:
1123 | version "2.2.0"
1124 | resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.2.0.tgz#e3b54697e78bf915c70a38acd78fd09e0058b1cf"
1125 | integrity sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==
1126 | dependencies:
1127 | uc.micro "^1.0.1"
1128 |
1129 | lodash.camelcase@^4.3.0:
1130 | version "4.3.0"
1131 | resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
1132 | integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY=
1133 |
1134 | lodash.omit@^4.5.0:
1135 | version "4.5.0"
1136 | resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60"
1137 | integrity sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA=
1138 |
1139 | lodash.padend@^4.6.1:
1140 | version "4.6.1"
1141 | resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e"
1142 | integrity sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4=
1143 |
1144 | lodash.pick@^4.4.0:
1145 | version "4.4.0"
1146 | resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3"
1147 | integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=
1148 |
1149 | lodash@^4.17.14, lodash@^4.17.4, lodash@^4.3.0:
1150 | version "4.17.21"
1151 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
1152 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
1153 |
1154 | lru-cache@^4.0.1:
1155 | version "4.1.5"
1156 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
1157 | integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
1158 | dependencies:
1159 | pseudomap "^1.0.2"
1160 | yallist "^2.1.2"
1161 |
1162 | magic-string@^0.25.3:
1163 | version "0.25.7"
1164 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
1165 | integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==
1166 | dependencies:
1167 | sourcemap-codec "^1.4.4"
1168 |
1169 | markdown-it-anchor@^5.2.7:
1170 | version "5.3.0"
1171 | resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz#d549acd64856a8ecd1bea58365ef385effbac744"
1172 | integrity sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==
1173 |
1174 | markdown-it@^10.0.0:
1175 | version "10.0.0"
1176 | resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-10.0.0.tgz#abfc64f141b1722d663402044e43927f1f50a8dc"
1177 | integrity sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==
1178 | dependencies:
1179 | argparse "^1.0.7"
1180 | entities "~2.0.0"
1181 | linkify-it "^2.0.0"
1182 | mdurl "^1.0.1"
1183 | uc.micro "^1.0.5"
1184 |
1185 | marked@^0.8.2:
1186 | version "0.8.2"
1187 | resolved "https://registry.yarnpkg.com/marked/-/marked-0.8.2.tgz#4faad28d26ede351a7a1aaa5fec67915c869e355"
1188 | integrity sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw==
1189 |
1190 | marked@^1.1.0:
1191 | version "1.2.9"
1192 | resolved "https://registry.yarnpkg.com/marked/-/marked-1.2.9.tgz#53786f8b05d4c01a2a5a76b7d1ec9943d29d72dc"
1193 | integrity sha512-H8lIX2SvyitGX+TRdtS06m1jHMijKN/XjfH6Ooii9fvxMlh8QdqBfBDkGUpMWH2kQNrtixjzYUa3SH8ROTgRRw==
1194 |
1195 | mdurl@^1.0.1:
1196 | version "1.0.1"
1197 | resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
1198 | integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=
1199 |
1200 | mimic-fn@^1.0.0:
1201 | version "1.2.0"
1202 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
1203 | integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
1204 |
1205 | "minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.4:
1206 | version "3.1.2"
1207 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
1208 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
1209 | dependencies:
1210 | brace-expansion "^1.1.7"
1211 |
1212 | minimist@0.0.5:
1213 | version "0.0.5"
1214 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.5.tgz#d7aa327bcecf518f9106ac6b8f003fa3bcea8566"
1215 | integrity sha1-16oye87PUY+RBqxrjwA/o7zqhWY=
1216 |
1217 | minimist@^1.2.0, minimist@^1.2.5, minimist@~1.2.5:
1218 | version "1.2.5"
1219 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
1220 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
1221 |
1222 | mkdirp2@^1.0.4:
1223 | version "1.0.4"
1224 | resolved "https://registry.yarnpkg.com/mkdirp2/-/mkdirp2-1.0.4.tgz#56de1f8f5c93cf2199906362eba0f9f262ee4437"
1225 | integrity sha512-Q2PKB4ZR4UPtjLl76JfzlgSCUZhSV1AXQgAZa1qt5RiaALFjP/CDrGvFBrOz7Ck6McPcwMAxTsJvWOUjOU8XMw==
1226 |
1227 | mkdirp@0.5.x, mkdirp@^0.5.1:
1228 | version "0.5.5"
1229 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
1230 | integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
1231 | dependencies:
1232 | minimist "^1.2.5"
1233 |
1234 | mkdirp@^1.0.4:
1235 | version "1.0.4"
1236 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
1237 | integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
1238 |
1239 | ms@^2.1.1:
1240 | version "2.1.3"
1241 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
1242 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
1243 |
1244 | mute-stream@0.0.7:
1245 | version "0.0.7"
1246 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
1247 | integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=
1248 |
1249 | natural-compare@^1.4.0:
1250 | version "1.4.0"
1251 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
1252 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
1253 |
1254 | neo-async@^2.6.0:
1255 | version "2.6.2"
1256 | resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
1257 | integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
1258 |
1259 | nopt@3.x:
1260 | version "3.0.6"
1261 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
1262 | integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k=
1263 | dependencies:
1264 | abbrev "1"
1265 |
1266 | object-assign@^4.0.1:
1267 | version "4.1.1"
1268 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
1269 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
1270 |
1271 | object-get@^2.1.1:
1272 | version "2.1.1"
1273 | resolved "https://registry.yarnpkg.com/object-get/-/object-get-2.1.1.tgz#1dad63baf6d94df184d1c58756cc9be55b174dac"
1274 | integrity sha512-7n4IpLMzGGcLEMiQKsNR7vCe+N5E9LORFrtNUVy4sO3dj9a3HedZCxEL2T7QuLhcHN1NBuBsMOKaOsAYI9IIvg==
1275 |
1276 | object-inspect@^1.9.0:
1277 | version "1.9.0"
1278 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a"
1279 | integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==
1280 |
1281 | object-inspect@~1.7.0:
1282 | version "1.7.0"
1283 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67"
1284 | integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==
1285 |
1286 | object-is@^1.0.1:
1287 | version "1.1.5"
1288 | resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac"
1289 | integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==
1290 | dependencies:
1291 | call-bind "^1.0.2"
1292 | define-properties "^1.1.3"
1293 |
1294 | object-keys@^1.0.12, object-keys@^1.1.1:
1295 | version "1.1.1"
1296 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
1297 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
1298 |
1299 | object-keys@~0.4.0:
1300 | version "0.4.0"
1301 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336"
1302 | integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=
1303 |
1304 | object-to-spawn-args@^2.0.0:
1305 | version "2.0.0"
1306 | resolved "https://registry.yarnpkg.com/object-to-spawn-args/-/object-to-spawn-args-2.0.0.tgz#00484be684e9213fb5a67f988b18a9d11ad5fcbd"
1307 | integrity sha512-ZMT4owlXg3JGegecLlAgAA/6BsdKHn63R3ayXcAa3zFkF7oUBHcSb0oxszeutYe0FO2c1lT5pwCuidLkC4Gx3g==
1308 |
1309 | object.assign@^4.1.2:
1310 | version "4.1.2"
1311 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
1312 | integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
1313 | dependencies:
1314 | call-bind "^1.0.0"
1315 | define-properties "^1.1.3"
1316 | has-symbols "^1.0.1"
1317 | object-keys "^1.1.1"
1318 |
1319 | once@1.x, once@^1.3.0:
1320 | version "1.4.0"
1321 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
1322 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
1323 | dependencies:
1324 | wrappy "1"
1325 |
1326 | onetime@^2.0.0:
1327 | version "2.0.1"
1328 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
1329 | integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=
1330 | dependencies:
1331 | mimic-fn "^1.0.0"
1332 |
1333 | optionator@^0.8.1, optionator@^0.8.2:
1334 | version "0.8.3"
1335 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
1336 | integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
1337 | dependencies:
1338 | deep-is "~0.1.3"
1339 | fast-levenshtein "~2.0.6"
1340 | levn "~0.3.0"
1341 | prelude-ls "~1.1.2"
1342 | type-check "~0.3.2"
1343 | word-wrap "~1.2.3"
1344 |
1345 | os-homedir@^2.0.0:
1346 | version "2.0.0"
1347 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-2.0.0.tgz#a0c76bb001a8392a503cbd46e7e650b3423a923c"
1348 | integrity sha512-saRNz0DSC5C/I++gFIaJTXoFJMRwiP5zHar5vV3xQ2TkgEw6hDCcU5F272JjUylpiVgBrZNQHnfjkLabTfb92Q==
1349 |
1350 | os-tmpdir@~1.0.2:
1351 | version "1.0.2"
1352 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
1353 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
1354 |
1355 | path-is-absolute@^1.0.0:
1356 | version "1.0.1"
1357 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
1358 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
1359 |
1360 | path-is-inside@^1.0.2:
1361 | version "1.0.2"
1362 | resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
1363 | integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
1364 |
1365 | path-parse@^1.0.6:
1366 | version "1.0.7"
1367 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
1368 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
1369 |
1370 | platform@^1.3.3:
1371 | version "1.3.6"
1372 | resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.6.tgz#48b4ce983164b209c2d45a107adb31f473a6e7a7"
1373 | integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==
1374 |
1375 | pluralize@^7.0.0:
1376 | version "7.0.0"
1377 | resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777"
1378 | integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==
1379 |
1380 | prelude-ls@~1.1.2:
1381 | version "1.1.2"
1382 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
1383 | integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
1384 |
1385 | prettier@^1.19.1:
1386 | version "1.19.1"
1387 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb"
1388 | integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==
1389 |
1390 | process-nextick-args@~2.0.0:
1391 | version "2.0.1"
1392 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
1393 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
1394 |
1395 | progress@^2.0.0:
1396 | version "2.0.3"
1397 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
1398 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
1399 |
1400 | pseudomap@^1.0.2:
1401 | version "1.0.2"
1402 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
1403 | integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
1404 |
1405 | readable-stream@^2.2.2:
1406 | version "2.3.7"
1407 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
1408 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
1409 | dependencies:
1410 | core-util-is "~1.0.0"
1411 | inherits "~2.0.3"
1412 | isarray "~1.0.0"
1413 | process-nextick-args "~2.0.0"
1414 | safe-buffer "~5.1.1"
1415 | string_decoder "~1.1.1"
1416 | util-deprecate "~1.0.1"
1417 |
1418 | readable-stream@~1.1.11, readable-stream@~1.1.9:
1419 | version "1.1.14"
1420 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
1421 | integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk=
1422 | dependencies:
1423 | core-util-is "~1.0.0"
1424 | inherits "~2.0.1"
1425 | isarray "0.0.1"
1426 | string_decoder "~0.10.x"
1427 |
1428 | reduce-extract@^1.0.0:
1429 | version "1.0.0"
1430 | resolved "https://registry.yarnpkg.com/reduce-extract/-/reduce-extract-1.0.0.tgz#67f2385beda65061b5f5f4312662e8b080ca1525"
1431 | integrity sha1-Z/I4W+2mUGG19fQxJmLosIDKFSU=
1432 | dependencies:
1433 | test-value "^1.0.1"
1434 |
1435 | reduce-flatten@^1.0.1:
1436 | version "1.0.1"
1437 | resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-1.0.1.tgz#258c78efd153ddf93cb561237f61184f3696e327"
1438 | integrity sha1-JYx479FT3fk8tWEjf2EYTzaW4yc=
1439 |
1440 | reduce-flatten@^3.0.0:
1441 | version "3.0.0"
1442 | resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-3.0.0.tgz#da477d68453fd9510f9a5fbef86e0fa04b4fd315"
1443 | integrity sha512-eczl8wAYBxJ6Egl6I1ECIF+8z6sHu+KE7BzaEDZTpPXKXfy9SUDQlVYwkRcNTjJLC3Iakxbhss50KuT/R6SYfg==
1444 |
1445 | reduce-unique@^2.0.1:
1446 | version "2.0.1"
1447 | resolved "https://registry.yarnpkg.com/reduce-unique/-/reduce-unique-2.0.1.tgz#fb34b90e89297c1e08d75dcf17e9a6443ea71081"
1448 | integrity sha512-x4jH/8L1eyZGR785WY+ePtyMNhycl1N2XOLxhCbzZFaqF4AXjLzqSxa2UHgJ2ZVR/HHyPOvl1L7xRnW8ye5MdA==
1449 |
1450 | reduce-without@^1.0.1:
1451 | version "1.0.1"
1452 | resolved "https://registry.yarnpkg.com/reduce-without/-/reduce-without-1.0.1.tgz#68ad0ead11855c9a37d4e8256c15bbf87972fc8c"
1453 | integrity sha1-aK0OrRGFXJo31OglbBW7+Hly/Iw=
1454 | dependencies:
1455 | test-value "^2.0.0"
1456 |
1457 | regenerate-unicode-properties@^8.2.0:
1458 | version "8.2.0"
1459 | resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec"
1460 | integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==
1461 | dependencies:
1462 | regenerate "^1.4.0"
1463 |
1464 | regenerate@^1.4.0:
1465 | version "1.4.2"
1466 | resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
1467 | integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
1468 |
1469 | regexp.prototype.flags@^1.2.0:
1470 | version "1.3.1"
1471 | resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26"
1472 | integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==
1473 | dependencies:
1474 | call-bind "^1.0.2"
1475 | define-properties "^1.1.3"
1476 |
1477 | regexpp@^1.0.1:
1478 | version "1.1.0"
1479 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab"
1480 | integrity sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==
1481 |
1482 | regexpu-core@^4.5.4:
1483 | version "4.7.1"
1484 | resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6"
1485 | integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==
1486 | dependencies:
1487 | regenerate "^1.4.0"
1488 | regenerate-unicode-properties "^8.2.0"
1489 | regjsgen "^0.5.1"
1490 | regjsparser "^0.6.4"
1491 | unicode-match-property-ecmascript "^1.0.4"
1492 | unicode-match-property-value-ecmascript "^1.2.0"
1493 |
1494 | regjsgen@^0.5.1:
1495 | version "0.5.2"
1496 | resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733"
1497 | integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==
1498 |
1499 | regjsparser@^0.6.4:
1500 | version "0.6.7"
1501 | resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.7.tgz#c00164e1e6713c2e3ee641f1701c4b7aa0a7f86c"
1502 | integrity sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ==
1503 | dependencies:
1504 | jsesc "~0.5.0"
1505 |
1506 | require-uncached@^1.0.3:
1507 | version "1.0.3"
1508 | resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
1509 | integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=
1510 | dependencies:
1511 | caller-path "^0.1.0"
1512 | resolve-from "^1.0.0"
1513 |
1514 | requizzle@^0.2.3:
1515 | version "0.2.3"
1516 | resolved "https://registry.yarnpkg.com/requizzle/-/requizzle-0.2.3.tgz#4675c90aacafb2c036bd39ba2daa4a1cb777fded"
1517 | integrity sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==
1518 | dependencies:
1519 | lodash "^4.17.14"
1520 |
1521 | resolve-from@^1.0.0:
1522 | version "1.0.1"
1523 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
1524 | integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=
1525 |
1526 | resolve@1.1.x:
1527 | version "1.1.7"
1528 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
1529 | integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
1530 |
1531 | resolve@~1.17.0:
1532 | version "1.17.0"
1533 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444"
1534 | integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==
1535 | dependencies:
1536 | path-parse "^1.0.6"
1537 |
1538 | restore-cursor@^2.0.0:
1539 | version "2.0.0"
1540 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
1541 | integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368=
1542 | dependencies:
1543 | onetime "^2.0.0"
1544 | signal-exit "^3.0.2"
1545 |
1546 | resumer@~0.0.0:
1547 | version "0.0.0"
1548 | resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759"
1549 | integrity sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=
1550 | dependencies:
1551 | through "~2.3.4"
1552 |
1553 | rimraf@~2.6.2:
1554 | version "2.6.3"
1555 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
1556 | integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
1557 | dependencies:
1558 | glob "^7.1.3"
1559 |
1560 | run-async@^2.2.0:
1561 | version "2.4.1"
1562 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
1563 | integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
1564 |
1565 | rx-lite-aggregates@^4.0.8:
1566 | version "4.0.8"
1567 | resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be"
1568 | integrity sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=
1569 | dependencies:
1570 | rx-lite "*"
1571 |
1572 | rx-lite@*, rx-lite@^4.0.8:
1573 | version "4.0.8"
1574 | resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
1575 | integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=
1576 |
1577 | safe-buffer@~5.1.0, safe-buffer@~5.1.1:
1578 | version "5.1.2"
1579 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
1580 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
1581 |
1582 | "safer-buffer@>= 2.1.2 < 3":
1583 | version "2.1.2"
1584 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
1585 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
1586 |
1587 | semver@^5.3.0:
1588 | version "5.7.2"
1589 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
1590 | integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
1591 |
1592 | shebang-command@^1.2.0:
1593 | version "1.2.0"
1594 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
1595 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
1596 | dependencies:
1597 | shebang-regex "^1.0.0"
1598 |
1599 | shebang-regex@^1.0.0:
1600 | version "1.0.0"
1601 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
1602 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
1603 |
1604 | signal-exit@^3.0.2:
1605 | version "3.0.3"
1606 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
1607 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
1608 |
1609 | slice-ansi@1.0.0:
1610 | version "1.0.0"
1611 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d"
1612 | integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==
1613 | dependencies:
1614 | is-fullwidth-code-point "^2.0.0"
1615 |
1616 | sort-array@^4.1.1:
1617 | version "4.1.3"
1618 | resolved "https://registry.yarnpkg.com/sort-array/-/sort-array-4.1.3.tgz#ede740ab6c82c900524b157feff79bcfd610b36d"
1619 | integrity sha512-6auiM0DNob/zF+7Ae/SM4BFL5D7DPK/HVcllhVu5V+FgoCPs0A6b6ZwJDuvJpXQgFpxqLZUOD2kdxqO4Z59dkg==
1620 | dependencies:
1621 | array-back "^5.0.0"
1622 | typical "^6.0.1"
1623 |
1624 | source-map@^0.6.1:
1625 | version "0.6.1"
1626 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
1627 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
1628 |
1629 | source-map@~0.2.0:
1630 | version "0.2.0"
1631 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d"
1632 | integrity sha1-2rc/vPwrqBm03gO9b26qSBZLP50=
1633 | dependencies:
1634 | amdefine ">=0.0.4"
1635 |
1636 | sourcemap-codec@^1.4.4:
1637 | version "1.4.8"
1638 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
1639 | integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
1640 |
1641 | sprintf-js@~1.0.2:
1642 | version "1.0.3"
1643 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
1644 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
1645 |
1646 | sprintf@~0.1.3:
1647 | version "0.1.5"
1648 | resolved "https://registry.yarnpkg.com/sprintf/-/sprintf-0.1.5.tgz#8f83e39a9317c1a502cb7db8050e51c679f6edcf"
1649 | integrity sha1-j4PjmpMXwaUCy324BQ5Rxnn27c8=
1650 |
1651 | stream-connect@^1.0.2:
1652 | version "1.0.2"
1653 | resolved "https://registry.yarnpkg.com/stream-connect/-/stream-connect-1.0.2.tgz#18bc81f2edb35b8b5d9a8009200a985314428a97"
1654 | integrity sha1-GLyB8u2zW4tdmoAJIAqYUxRCipc=
1655 | dependencies:
1656 | array-back "^1.0.2"
1657 |
1658 | stream-via@^1.0.4:
1659 | version "1.0.4"
1660 | resolved "https://registry.yarnpkg.com/stream-via/-/stream-via-1.0.4.tgz#8dccbb0ac909328eb8bc8e2a4bd3934afdaf606c"
1661 | integrity sha512-DBp0lSvX5G9KGRDTkR/R+a29H+Wk2xItOF+MpZLLNDWbEV9tGPnqLPxHEYjmiz8xGtJHRIqmI+hCjmNzqoA4nQ==
1662 |
1663 | string-width@^2.1.0, string-width@^2.1.1:
1664 | version "2.1.1"
1665 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
1666 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
1667 | dependencies:
1668 | is-fullwidth-code-point "^2.0.0"
1669 | strip-ansi "^4.0.0"
1670 |
1671 | string.prototype.trim@~1.2.1:
1672 | version "1.2.3"
1673 | resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.3.tgz#d23a22fde01c1e6571a7fadcb9be11decd8061a7"
1674 | integrity sha512-16IL9pIBA5asNOSukPfxX2W68BaBvxyiRK16H3RA/lWW9BDosh+w7f+LhomPHpXJ82QEe7w7/rY/S1CV97raLg==
1675 | dependencies:
1676 | call-bind "^1.0.0"
1677 | define-properties "^1.1.3"
1678 | es-abstract "^1.18.0-next.1"
1679 |
1680 | string.prototype.trimend@^1.0.3:
1681 | version "1.0.3"
1682 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b"
1683 | integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==
1684 | dependencies:
1685 | call-bind "^1.0.0"
1686 | define-properties "^1.1.3"
1687 |
1688 | string.prototype.trimstart@^1.0.3:
1689 | version "1.0.3"
1690 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa"
1691 | integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==
1692 | dependencies:
1693 | call-bind "^1.0.0"
1694 | define-properties "^1.1.3"
1695 |
1696 | string_decoder@~0.10.x:
1697 | version "0.10.31"
1698 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
1699 | integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
1700 |
1701 | string_decoder@~1.1.1:
1702 | version "1.1.1"
1703 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
1704 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
1705 | dependencies:
1706 | safe-buffer "~5.1.0"
1707 |
1708 | strip-ansi@^3.0.0:
1709 | version "3.0.1"
1710 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
1711 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
1712 | dependencies:
1713 | ansi-regex "^2.0.0"
1714 |
1715 | strip-ansi@^4.0.0:
1716 | version "4.0.0"
1717 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
1718 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
1719 | dependencies:
1720 | ansi-regex "^3.0.0"
1721 |
1722 | strip-json-comments@^3.1.0:
1723 | version "3.1.1"
1724 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
1725 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
1726 |
1727 | strip-json-comments@~2.0.1:
1728 | version "2.0.1"
1729 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
1730 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
1731 |
1732 | supports-color@^2.0.0:
1733 | version "2.0.0"
1734 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
1735 | integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
1736 |
1737 | supports-color@^3.1.0:
1738 | version "3.2.3"
1739 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
1740 | integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=
1741 | dependencies:
1742 | has-flag "^1.0.0"
1743 |
1744 | supports-color@^5.3.0:
1745 | version "5.5.0"
1746 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
1747 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
1748 | dependencies:
1749 | has-flag "^3.0.0"
1750 |
1751 | table-layout@^0.4.2:
1752 | version "0.4.5"
1753 | resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-0.4.5.tgz#d906de6a25fa09c0c90d1d08ecd833ecedcb7378"
1754 | integrity sha512-zTvf0mcggrGeTe/2jJ6ECkJHAQPIYEwDoqsiqBjI24mvRmQbInK5jq33fyypaCBxX08hMkfmdOqj6haT33EqWw==
1755 | dependencies:
1756 | array-back "^2.0.0"
1757 | deep-extend "~0.6.0"
1758 | lodash.padend "^4.6.1"
1759 | typical "^2.6.1"
1760 | wordwrapjs "^3.0.0"
1761 |
1762 | table@4.0.2:
1763 | version "4.0.2"
1764 | resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36"
1765 | integrity sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==
1766 | dependencies:
1767 | ajv "^5.2.3"
1768 | ajv-keywords "^2.1.0"
1769 | chalk "^2.1.0"
1770 | lodash "^4.17.4"
1771 | slice-ansi "1.0.0"
1772 | string-width "^2.1.1"
1773 |
1774 | taffydb@2.6.2:
1775 | version "2.6.2"
1776 | resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268"
1777 | integrity sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=
1778 |
1779 | tap-parser@~0.4.0:
1780 | version "0.4.3"
1781 | resolved "https://registry.yarnpkg.com/tap-parser/-/tap-parser-0.4.3.tgz#a4eae190c10d76c7a111921ff38bbe4d58f09eea"
1782 | integrity sha1-pOrhkMENdsehEZIf84u+TVjwnuo=
1783 | dependencies:
1784 | inherits "~2.0.1"
1785 | readable-stream "~1.1.11"
1786 |
1787 | tape@^4.8.0:
1788 | version "4.13.3"
1789 | resolved "https://registry.yarnpkg.com/tape/-/tape-4.13.3.tgz#51b3d91c83668c7a45b1a594b607dee0a0b46278"
1790 | integrity sha512-0/Y20PwRIUkQcTCSi4AASs+OANZZwqPKaipGCEwp10dQMipVvSZwUUCi01Y/OklIGyHKFhIcjock+DKnBfLAFw==
1791 | dependencies:
1792 | deep-equal "~1.1.1"
1793 | defined "~1.0.0"
1794 | dotignore "~0.1.2"
1795 | for-each "~0.3.3"
1796 | function-bind "~1.1.1"
1797 | glob "~7.1.6"
1798 | has "~1.0.3"
1799 | inherits "~2.0.4"
1800 | is-regex "~1.0.5"
1801 | minimist "~1.2.5"
1802 | object-inspect "~1.7.0"
1803 | resolve "~1.17.0"
1804 | resumer "~0.0.0"
1805 | string.prototype.trim "~1.2.1"
1806 | through "~2.3.8"
1807 |
1808 | tape@~2.3.2:
1809 | version "2.3.3"
1810 | resolved "https://registry.yarnpkg.com/tape/-/tape-2.3.3.tgz#2e7ce0a31df09f8d6851664a71842e0ca5057af7"
1811 | integrity sha1-Lnzgox3wn41oUWZKcYQuDKUFevc=
1812 | dependencies:
1813 | deep-equal "~0.1.0"
1814 | defined "~0.0.0"
1815 | inherits "~2.0.1"
1816 | jsonify "~0.0.0"
1817 | resumer "~0.0.0"
1818 | through "~2.3.4"
1819 |
1820 | temp-path@^1.0.0:
1821 | version "1.0.0"
1822 | resolved "https://registry.yarnpkg.com/temp-path/-/temp-path-1.0.0.tgz#24b1543973ab442896d9ad367dd9cbdbfafe918b"
1823 | integrity sha1-JLFUOXOrRCiW2a02fdnL2/r+kYs=
1824 |
1825 | test-value@^1.0.1:
1826 | version "1.1.0"
1827 | resolved "https://registry.yarnpkg.com/test-value/-/test-value-1.1.0.tgz#a09136f72ec043d27c893707c2b159bfad7de93f"
1828 | integrity sha1-oJE29y7AQ9J8iTcHwrFZv6196T8=
1829 | dependencies:
1830 | array-back "^1.0.2"
1831 | typical "^2.4.2"
1832 |
1833 | test-value@^2.0.0:
1834 | version "2.1.0"
1835 | resolved "https://registry.yarnpkg.com/test-value/-/test-value-2.1.0.tgz#11da6ff670f3471a73b625ca4f3fdcf7bb748291"
1836 | integrity sha1-Edpv9nDzRxpztiXKTz/c97t0gpE=
1837 | dependencies:
1838 | array-back "^1.0.3"
1839 | typical "^2.6.0"
1840 |
1841 | test-value@^3.0.0:
1842 | version "3.0.0"
1843 | resolved "https://registry.yarnpkg.com/test-value/-/test-value-3.0.0.tgz#9168c062fab11a86b8d444dd968bb4b73851ce92"
1844 | integrity sha512-sVACdAWcZkSU9x7AOmJo5TqE+GyNJknHaHsMrR6ZnhjVlVN9Yx6FjHrsKZ3BjIpPCT68zYesPWkakrNupwfOTQ==
1845 | dependencies:
1846 | array-back "^2.0.0"
1847 | typical "^2.6.1"
1848 |
1849 | text-table@~0.2.0:
1850 | version "0.2.0"
1851 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
1852 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
1853 |
1854 | through2@~0.2.3:
1855 | version "0.2.3"
1856 | resolved "https://registry.yarnpkg.com/through2/-/through2-0.2.3.tgz#eb3284da4ea311b6cc8ace3653748a52abf25a3f"
1857 | integrity sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=
1858 | dependencies:
1859 | readable-stream "~1.1.9"
1860 | xtend "~2.1.1"
1861 |
1862 | through@^2.3.6, through@~2.3.4, through@~2.3.8:
1863 | version "2.3.8"
1864 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
1865 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
1866 |
1867 | tmp@^0.0.33:
1868 | version "0.0.33"
1869 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
1870 | integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
1871 | dependencies:
1872 | os-tmpdir "~1.0.2"
1873 |
1874 | type-check@~0.3.2:
1875 | version "0.3.2"
1876 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
1877 | integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=
1878 | dependencies:
1879 | prelude-ls "~1.1.2"
1880 |
1881 | typedarray@^0.0.6:
1882 | version "0.0.6"
1883 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
1884 | integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
1885 |
1886 | typescript@^4.1.5:
1887 | version "4.1.5"
1888 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.5.tgz#123a3b214aaff3be32926f0d8f1f6e704eb89a72"
1889 | integrity sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA==
1890 |
1891 | typical@^2.4.2, typical@^2.6.0, typical@^2.6.1:
1892 | version "2.6.1"
1893 | resolved "https://registry.yarnpkg.com/typical/-/typical-2.6.1.tgz#5c080e5d661cbbe38259d2e70a3c7253e873881d"
1894 | integrity sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0=
1895 |
1896 | typical@^4.0.0:
1897 | version "4.0.0"
1898 | resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4"
1899 | integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==
1900 |
1901 | typical@^6.0.1:
1902 | version "6.0.1"
1903 | resolved "https://registry.yarnpkg.com/typical/-/typical-6.0.1.tgz#89bd1a6aa5e5e96fa907fb6b7579223bff558a06"
1904 | integrity sha512-+g3NEp7fJLe9DPa1TArHm9QAA7YciZmWnfAqEaFrBihQ7epOv9i99rjtgb6Iz0wh3WuQDjsCTDfgRoGnmHN81A==
1905 |
1906 | uc.micro@^1.0.1, uc.micro@^1.0.5:
1907 | version "1.0.6"
1908 | resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"
1909 | integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
1910 |
1911 | uglify-js@^3.1.4:
1912 | version "3.12.8"
1913 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.12.8.tgz#a82e6e53c9be14f7382de3d068ef1e26e7d4aaf8"
1914 | integrity sha512-fvBeuXOsvqjecUtF/l1dwsrrf5y2BCUk9AOJGzGcm6tE7vegku5u/YvqjyDaAGr422PLoLnrxg3EnRvTqsdC1w==
1915 |
1916 | underscore@~1.10.2:
1917 | version "1.10.2"
1918 | resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.10.2.tgz#73d6aa3668f3188e4adb0f1943bd12cfd7efaaaf"
1919 | integrity sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg==
1920 |
1921 | unicode-canonical-property-names-ecmascript@^1.0.4:
1922 | version "1.0.4"
1923 | resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818"
1924 | integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==
1925 |
1926 | unicode-match-property-ecmascript@^1.0.4:
1927 | version "1.0.4"
1928 | resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c"
1929 | integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==
1930 | dependencies:
1931 | unicode-canonical-property-names-ecmascript "^1.0.4"
1932 | unicode-property-aliases-ecmascript "^1.0.4"
1933 |
1934 | unicode-match-property-value-ecmascript@^1.2.0:
1935 | version "1.2.0"
1936 | resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531"
1937 | integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==
1938 |
1939 | unicode-property-aliases-ecmascript@^1.0.4:
1940 | version "1.1.0"
1941 | resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4"
1942 | integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==
1943 |
1944 | util-deprecate@~1.0.1:
1945 | version "1.0.2"
1946 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
1947 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
1948 |
1949 | walk-back@^2.0.1:
1950 | version "2.0.1"
1951 | resolved "https://registry.yarnpkg.com/walk-back/-/walk-back-2.0.1.tgz#554e2a9d874fac47a8cb006bf44c2f0c4998a0a4"
1952 | integrity sha1-VU4qnYdPrEeoywBr9EwvDEmYoKQ=
1953 |
1954 | walk-back@^4.0.0:
1955 | version "4.0.0"
1956 | resolved "https://registry.yarnpkg.com/walk-back/-/walk-back-4.0.0.tgz#9e4ad2bd72038f3beed2d83180f9fd40b233bfab"
1957 | integrity sha512-kudCA8PXVQfrqv2mFTG72vDBRi8BKWxGgFLwPpzHcpZnSwZk93WMwUDVcLHWNsnm+Y0AC4Vb6MUNRgaHfyV2DQ==
1958 |
1959 | which@^1.1.1, which@^1.2.9:
1960 | version "1.3.1"
1961 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
1962 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
1963 | dependencies:
1964 | isexe "^2.0.0"
1965 |
1966 | word-wrap@~1.2.3:
1967 | version "1.2.4"
1968 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f"
1969 | integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==
1970 |
1971 | wordwrap@^1.0.0:
1972 | version "1.0.0"
1973 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
1974 | integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
1975 |
1976 | wordwrapjs@^3.0.0:
1977 | version "3.0.0"
1978 | resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-3.0.0.tgz#c94c372894cadc6feb1a66bff64e1d9af92c5d1e"
1979 | integrity sha512-mO8XtqyPvykVCsrwj5MlOVWvSnCdT+C+QVbm6blradR7JExAhbkZ7hZ9A+9NUtwzSqrlUo9a67ws0EiILrvRpw==
1980 | dependencies:
1981 | reduce-flatten "^1.0.1"
1982 | typical "^2.6.1"
1983 |
1984 | wrappy@1:
1985 | version "1.0.2"
1986 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
1987 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
1988 |
1989 | write@^0.2.1:
1990 | version "0.2.1"
1991 | resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757"
1992 | integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=
1993 | dependencies:
1994 | mkdirp "^0.5.1"
1995 |
1996 | xmlcreate@^2.0.3:
1997 | version "2.0.3"
1998 | resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-2.0.3.tgz#df9ecd518fd3890ab3548e1b811d040614993497"
1999 | integrity sha512-HgS+X6zAztGa9zIK3Y3LXuJes33Lz9x+YyTxgrkIdabu2vqcGOWwdfCpf1hWLRrd553wd4QCDf6BBO6FfdsRiQ==
2000 |
2001 | xtend@~2.1.1:
2002 | version "2.1.2"
2003 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b"
2004 | integrity sha1-bv7MKk2tjmlixJAbM3znuoe10os=
2005 | dependencies:
2006 | object-keys "~0.4.0"
2007 |
2008 | yallist@^2.1.2:
2009 | version "2.1.2"
2010 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
2011 | integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
2012 |
--------------------------------------------------------------------------------