├── .babelrc
├── .eslintrc
├── .gitignore
├── .npmignore
├── .prettierrc
├── README.md
├── package-lock.json
├── package.json
├── rollup.config.js
├── src
└── index.js
└── tests
└── soon-uploaded
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | [
4 | "@babel/env",
5 | {
6 | "targets": {
7 | "browsers": [
8 | "last 1 versions",
9 | "ie >= 10"
10 | ]
11 | },
12 | "modules": false,
13 | "loose": true
14 | }
15 | ],
16 | "@babel/react"
17 | ],
18 | "plugins": [
19 | "@babel/plugin-proposal-export-default-from",
20 | "@babel/plugin-proposal-export-namespace-from",
21 | "@babel/plugin-transform-runtime",
22 | "@babel/plugin-proposal-class-properties",
23 | "@babel/plugin-proposal-object-rest-spread"
24 | ]
25 | }
--------------------------------------------------------------------------------
/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "parser": "babel-eslint",
3 | "extends": [
4 | "eslint:recommended",
5 | "plugin:react/recommended",
6 | "plugin:prettier/recommended"
7 | ],
8 | "plugins": [
9 | "react-hooks"
10 | ],
11 | "rules": {
12 | "react-hooks/rules-of-hooks": "error",
13 | "react-hooks/exhaustive-deps": "warn"
14 | },
15 | "globals": {
16 | "React": true,
17 | "document": true,
18 | "window": true
19 | },
20 | // Defining global variables
21 | "env": {
22 | "es6": true,
23 | // Browser Global variables example: Not put error on async/await.
24 | "browser": true,
25 | // Node.js global variables and Node.js scoping. window, document setTimeout
26 | "node": true
27 | // https, require
28 | },
29 | "settings": {
30 | "react": {
31 | "version": "detect"
32 | }
33 | }
34 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
2 | es
3 | lib
4 | node_modules
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | .babelrc
2 | .eslintrc
3 | test/
4 | node_modules
5 | src
6 | rollup.config.js
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "semi": true,
3 | "trailingComma": "all",
4 | "singleQuote": true,
5 | "printWidth": 100,
6 | "tabWidth": 4,
7 | "useTabs": true
8 | }
9 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## Story
2 | When I was working on a react project. I needed a component that sticks to the target when the user scrolls the page. After a search, I find that [Yahoo](https://github.com/yahoo/react-stickynode) has already developed a component for this task. I pulled out this package and tried to use it, the package was using react legacy code and I was getting warnings on my console. The package was not maintained so I decided to fix it and change the code to ES7. You can now download an updated version of this.
3 |
4 | ## Installation
5 | npm:
6 | ```
7 | npm install --save react-stickynode-update
8 | ```
9 |
10 | Yarn:
11 | ```
12 | yarn add react-stickynode-update
13 | ```
14 | ## Getting Started
15 |
16 | `react-stickynode` is a performant and comprehensive React sticky component.
17 |
18 | A sticky component wraps a sticky target and keeps the target in the viewport as the user scrolls the page. Most sticky components handle the case where the sticky target is shorter than the viewport, but not the case where a sticky target is taller than the viewport. The reason is that the expected behavior and implementation are much more complicated.
19 |
20 | `react-stickynode` handles not only regular cases but the long sticky target case in a natural way. In the regular case, when scrolling the page down, `react-stickynode` will stick to the top of the viewport. But in the case of a taller sticky target, it will scroll along with the page until its bottom reaches the bottom of the viewport. In other words, it looks like the bottom of viewport pulls the bottom of a sticky target down when scrolling the page down. On the other hand, when scrolling the page up, the top of viewport pulls the top of a sticky target up.
21 |
22 | This behavior gives the content in a tall sticky target more chance to be shown. This is especially good for the case where many ADs are in the right rail.
23 |
24 | Another highlight is that `react-stickynode` can handle the case where a sticky target uses a percentage as its width unit. For a responsive designed page, it is especially useful.
25 |
26 | ## Features
27 |
28 | - Retrieve `scrollTop` only once for all sticky components.
29 | - Listen to throttled scrolling to have better performance.
30 | - Use rAF (window.`requestanimationframe()`) to update sticky status to have better performance.
31 | - Support top offset from the top of the screen.
32 | - Support the bottom boundary to stop sticky status.
33 | - Support any sticky target with various width units.
34 |
35 | ## Usage
36 |
37 | The sticky uses Modernizr `csstransforms3d` and `prefixed` ([link](http://modernizr.com/download/?-csstransforms3d-prefixed)) features to detect IE8/9, so it can downgrade not to use transform3d.
38 |
39 | ```js
40 | import Sticky from 'react-stickynode-update';
41 |
42 |
43 |
44 |
45 | ```
46 |
47 | ```js
48 | import Sticky from 'react-stickynode-update';
49 |
50 |
51 |
52 |
53 | ```
54 |
55 | ### Props
56 |
57 | |Name| Type| Note|
58 | |-----|-----|-----|
59 | | `enabled` | Boolean| The switch to enable or disable Sticky (true by default). |
60 | | `top` | Number/String | The offset from the top of the window where the top of the element will be when the sticky state is triggered (0 by default). If it is a selector to a target (via `querySelector()`), the offset will be the height of the target. |
61 | | `bottomBoundary` | Number/String | The offset from the top of the document which release state will be triggered when the bottom of the element reaches at. If it is a selector to a target (via `querySelector()`), the offset will be the bottom of the target. |
62 | | `innerZ` | Number/String | z-index of the sticky. |
63 | | `enableTransforms` | Boolean | Enable the use of CSS3 transforms (true by default). |
64 | | `activeClass` | String | Class name to be applied to the element when the sticky state is active (`active` by default). |
65 | | `releasedClass` | String | Class name to be applied to the element when the sticky state is released (`released` by default). |
66 | | `onStateChange` | Function | Callback for when the sticky state changes. See below. |
67 | | `shouldFreeze` | Function | Callback to indicate when the sticky plugin should freeze position and ignore scroll/resize events. See below. |
68 |
69 | ### Handling State Change
70 |
71 | You can be notified when the state of the sticky component changes by passing a callback to the `onStateChange` prop. The callback will receive an object in the format `{status: CURRENT_STATUS}`, with `CURRENT_STATUS` being an integer representing the status:
72 |
73 | | Value | Name | Note|
74 | |-----|-----|-----|
75 | | `0` | `STATUS_ORIGINAL` | The default status, located at the original position.|
76 | | `1` | `STATUS_RELEASED` | The released status, located at somewhere on the document, but not default one.|
77 | | `2` | `STATUS_FIXED` | The sticky status, located fixed to the top or the bottom of the screen.|
78 |
79 | You can access the statuses as static constants to use for comparison.
80 | ```js
81 | import Sticky from 'react-stickynode-update';
82 |
83 | const handleStateChange = (status) => {
84 | if (status.status === Sticky.STATUS_FIXED) {
85 | console.log('the component is sticky');
86 | }
87 | }
88 |
89 |
90 |
91 |
92 | ```
93 |
94 | Also `Sticky` supports children functions:
95 |
96 | ```js
97 | import Sticky from 'react-stickynode-update';
98 |
99 |
100 | {status => {
101 | if (status.status === Sticky.STATUS_FIXED) {
102 | return 'the component is sticky';
103 | }
104 | if (status.status === Sticky.STATUS_ORIGINAL) {
105 | return 'the component in the original position';
106 | }
107 | return 'the component is released'
108 | }}
109 |
110 | ```
111 |
112 | ### Freezing
113 |
114 | You can provide a function in the `shouldFreeze` prop which will tell the component to temporarily stop updating during prop and state changes, as well as ignore scroll and resize events. This function should return a boolean indicating whether the component should currently be frozen.
115 |
116 |
117 | ## License
118 | MIT
119 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-stickynode-update",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@babel/code-frame": {
8 | "version": "7.5.5",
9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz",
10 | "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==",
11 | "dev": true,
12 | "requires": {
13 | "@babel/highlight": "^7.0.0"
14 | }
15 | },
16 | "@babel/core": {
17 | "version": "7.7.2",
18 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.2.tgz",
19 | "integrity": "sha512-eeD7VEZKfhK1KUXGiyPFettgF3m513f8FoBSWiQ1xTvl1RAopLs42Wp9+Ze911I6H0N9lNqJMDgoZT7gHsipeQ==",
20 | "dev": true,
21 | "requires": {
22 | "@babel/code-frame": "^7.5.5",
23 | "@babel/generator": "^7.7.2",
24 | "@babel/helpers": "^7.7.0",
25 | "@babel/parser": "^7.7.2",
26 | "@babel/template": "^7.7.0",
27 | "@babel/traverse": "^7.7.2",
28 | "@babel/types": "^7.7.2",
29 | "convert-source-map": "^1.7.0",
30 | "debug": "^4.1.0",
31 | "json5": "^2.1.0",
32 | "lodash": "^4.17.13",
33 | "resolve": "^1.3.2",
34 | "semver": "^5.4.1",
35 | "source-map": "^0.5.0"
36 | }
37 | },
38 | "@babel/generator": {
39 | "version": "7.7.2",
40 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz",
41 | "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==",
42 | "dev": true,
43 | "requires": {
44 | "@babel/types": "^7.7.2",
45 | "jsesc": "^2.5.1",
46 | "lodash": "^4.17.13",
47 | "source-map": "^0.5.0"
48 | }
49 | },
50 | "@babel/helper-annotate-as-pure": {
51 | "version": "7.7.0",
52 | "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.0.tgz",
53 | "integrity": "sha512-k50CQxMlYTYo+GGyUGFwpxKVtxVJi9yh61sXZji3zYHccK9RYliZGSTOgci85T+r+0VFN2nWbGM04PIqwfrpMg==",
54 | "dev": true,
55 | "requires": {
56 | "@babel/types": "^7.7.0"
57 | }
58 | },
59 | "@babel/helper-builder-binary-assignment-operator-visitor": {
60 | "version": "7.7.0",
61 | "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.0.tgz",
62 | "integrity": "sha512-Cd8r8zs4RKDwMG/92lpZcnn5WPQ3LAMQbCw42oqUh4s7vsSN5ANUZjMel0OOnxDLq57hoDDbai+ryygYfCTOsw==",
63 | "dev": true,
64 | "requires": {
65 | "@babel/helper-explode-assignable-expression": "^7.7.0",
66 | "@babel/types": "^7.7.0"
67 | }
68 | },
69 | "@babel/helper-builder-react-jsx": {
70 | "version": "7.7.0",
71 | "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.7.0.tgz",
72 | "integrity": "sha512-LSln3cexwInTMYYoFeVLKnYPPMfWNJ8PubTBs3hkh7wCu9iBaqq1OOyW+xGmEdLxT1nhsl+9SJ+h2oUDYz0l2A==",
73 | "dev": true,
74 | "requires": {
75 | "@babel/types": "^7.7.0",
76 | "esutils": "^2.0.0"
77 | }
78 | },
79 | "@babel/helper-call-delegate": {
80 | "version": "7.7.0",
81 | "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.7.0.tgz",
82 | "integrity": "sha512-Su0Mdq7uSSWGZayGMMQ+z6lnL00mMCnGAbO/R0ZO9odIdB/WNU/VfQKqMQU0fdIsxQYbRjDM4BixIa93SQIpvw==",
83 | "dev": true,
84 | "requires": {
85 | "@babel/helper-hoist-variables": "^7.7.0",
86 | "@babel/traverse": "^7.7.0",
87 | "@babel/types": "^7.7.0"
88 | }
89 | },
90 | "@babel/helper-create-class-features-plugin": {
91 | "version": "7.7.0",
92 | "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.7.0.tgz",
93 | "integrity": "sha512-MZiB5qvTWoyiFOgootmRSDV1udjIqJW/8lmxgzKq6oDqxdmHUjeP2ZUOmgHdYjmUVNABqRrHjYAYRvj8Eox/UA==",
94 | "dev": true,
95 | "requires": {
96 | "@babel/helper-function-name": "^7.7.0",
97 | "@babel/helper-member-expression-to-functions": "^7.7.0",
98 | "@babel/helper-optimise-call-expression": "^7.7.0",
99 | "@babel/helper-plugin-utils": "^7.0.0",
100 | "@babel/helper-replace-supers": "^7.7.0",
101 | "@babel/helper-split-export-declaration": "^7.7.0"
102 | }
103 | },
104 | "@babel/helper-create-regexp-features-plugin": {
105 | "version": "7.7.2",
106 | "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.2.tgz",
107 | "integrity": "sha512-pAil/ZixjTlrzNpjx+l/C/wJk002Wo7XbbZ8oujH/AoJ3Juv0iN/UTcPUHXKMFLqsfS0Hy6Aow8M31brUYBlQQ==",
108 | "dev": true,
109 | "requires": {
110 | "@babel/helper-regex": "^7.4.4",
111 | "regexpu-core": "^4.6.0"
112 | }
113 | },
114 | "@babel/helper-define-map": {
115 | "version": "7.7.0",
116 | "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.7.0.tgz",
117 | "integrity": "sha512-kPKWPb0dMpZi+ov1hJiwse9dWweZsz3V9rP4KdytnX1E7z3cTNmFGglwklzFPuqIcHLIY3bgKSs4vkwXXdflQA==",
118 | "dev": true,
119 | "requires": {
120 | "@babel/helper-function-name": "^7.7.0",
121 | "@babel/types": "^7.7.0",
122 | "lodash": "^4.17.13"
123 | }
124 | },
125 | "@babel/helper-explode-assignable-expression": {
126 | "version": "7.7.0",
127 | "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.0.tgz",
128 | "integrity": "sha512-CDs26w2shdD1urNUAji2RJXyBFCaR+iBEGnFz3l7maizMkQe3saVw9WtjG1tz8CwbjvlFnaSLVhgnu1SWaherg==",
129 | "dev": true,
130 | "requires": {
131 | "@babel/traverse": "^7.7.0",
132 | "@babel/types": "^7.7.0"
133 | }
134 | },
135 | "@babel/helper-function-name": {
136 | "version": "7.7.0",
137 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz",
138 | "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==",
139 | "dev": true,
140 | "requires": {
141 | "@babel/helper-get-function-arity": "^7.7.0",
142 | "@babel/template": "^7.7.0",
143 | "@babel/types": "^7.7.0"
144 | }
145 | },
146 | "@babel/helper-get-function-arity": {
147 | "version": "7.7.0",
148 | "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz",
149 | "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==",
150 | "dev": true,
151 | "requires": {
152 | "@babel/types": "^7.7.0"
153 | }
154 | },
155 | "@babel/helper-hoist-variables": {
156 | "version": "7.7.0",
157 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.7.0.tgz",
158 | "integrity": "sha512-LUe/92NqsDAkJjjCEWkNe+/PcpnisvnqdlRe19FahVapa4jndeuJ+FBiTX1rcAKWKcJGE+C3Q3tuEuxkSmCEiQ==",
159 | "dev": true,
160 | "requires": {
161 | "@babel/types": "^7.7.0"
162 | }
163 | },
164 | "@babel/helper-member-expression-to-functions": {
165 | "version": "7.7.0",
166 | "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.7.0.tgz",
167 | "integrity": "sha512-QaCZLO2RtBcmvO/ekOLp8p7R5X2JriKRizeDpm5ChATAFWrrYDcDxPuCIBXKyBjY+i1vYSdcUTMIb8psfxHDPA==",
168 | "dev": true,
169 | "requires": {
170 | "@babel/types": "^7.7.0"
171 | }
172 | },
173 | "@babel/helper-module-imports": {
174 | "version": "7.7.0",
175 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.7.0.tgz",
176 | "integrity": "sha512-Dv3hLKIC1jyfTkClvyEkYP2OlkzNvWs5+Q8WgPbxM5LMeorons7iPP91JM+DU7tRbhqA1ZeooPaMFvQrn23RHw==",
177 | "dev": true,
178 | "requires": {
179 | "@babel/types": "^7.7.0"
180 | }
181 | },
182 | "@babel/helper-module-transforms": {
183 | "version": "7.7.0",
184 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.7.0.tgz",
185 | "integrity": "sha512-rXEefBuheUYQyX4WjV19tuknrJFwyKw0HgzRwbkyTbB+Dshlq7eqkWbyjzToLrMZk/5wKVKdWFluiAsVkHXvuQ==",
186 | "dev": true,
187 | "requires": {
188 | "@babel/helper-module-imports": "^7.7.0",
189 | "@babel/helper-simple-access": "^7.7.0",
190 | "@babel/helper-split-export-declaration": "^7.7.0",
191 | "@babel/template": "^7.7.0",
192 | "@babel/types": "^7.7.0",
193 | "lodash": "^4.17.13"
194 | }
195 | },
196 | "@babel/helper-optimise-call-expression": {
197 | "version": "7.7.0",
198 | "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.7.0.tgz",
199 | "integrity": "sha512-48TeqmbazjNU/65niiiJIJRc5JozB8acui1OS7bSd6PgxfuovWsvjfWSzlgx+gPFdVveNzUdpdIg5l56Pl5jqg==",
200 | "dev": true,
201 | "requires": {
202 | "@babel/types": "^7.7.0"
203 | }
204 | },
205 | "@babel/helper-plugin-utils": {
206 | "version": "7.0.0",
207 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz",
208 | "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==",
209 | "dev": true
210 | },
211 | "@babel/helper-regex": {
212 | "version": "7.5.5",
213 | "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz",
214 | "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==",
215 | "dev": true,
216 | "requires": {
217 | "lodash": "^4.17.13"
218 | }
219 | },
220 | "@babel/helper-remap-async-to-generator": {
221 | "version": "7.7.0",
222 | "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.0.tgz",
223 | "integrity": "sha512-pHx7RN8X0UNHPB/fnuDnRXVZ316ZigkO8y8D835JlZ2SSdFKb6yH9MIYRU4fy/KPe5sPHDFOPvf8QLdbAGGiyw==",
224 | "dev": true,
225 | "requires": {
226 | "@babel/helper-annotate-as-pure": "^7.7.0",
227 | "@babel/helper-wrap-function": "^7.7.0",
228 | "@babel/template": "^7.7.0",
229 | "@babel/traverse": "^7.7.0",
230 | "@babel/types": "^7.7.0"
231 | }
232 | },
233 | "@babel/helper-replace-supers": {
234 | "version": "7.7.0",
235 | "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.7.0.tgz",
236 | "integrity": "sha512-5ALYEul5V8xNdxEeWvRsBzLMxQksT7MaStpxjJf9KsnLxpAKBtfw5NeMKZJSYDa0lKdOcy0g+JT/f5mPSulUgg==",
237 | "dev": true,
238 | "requires": {
239 | "@babel/helper-member-expression-to-functions": "^7.7.0",
240 | "@babel/helper-optimise-call-expression": "^7.7.0",
241 | "@babel/traverse": "^7.7.0",
242 | "@babel/types": "^7.7.0"
243 | }
244 | },
245 | "@babel/helper-simple-access": {
246 | "version": "7.7.0",
247 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.7.0.tgz",
248 | "integrity": "sha512-AJ7IZD7Eem3zZRuj5JtzFAptBw7pMlS3y8Qv09vaBWoFsle0d1kAn5Wq6Q9MyBXITPOKnxwkZKoAm4bopmv26g==",
249 | "dev": true,
250 | "requires": {
251 | "@babel/template": "^7.7.0",
252 | "@babel/types": "^7.7.0"
253 | }
254 | },
255 | "@babel/helper-split-export-declaration": {
256 | "version": "7.7.0",
257 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz",
258 | "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==",
259 | "dev": true,
260 | "requires": {
261 | "@babel/types": "^7.7.0"
262 | }
263 | },
264 | "@babel/helper-wrap-function": {
265 | "version": "7.7.0",
266 | "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.7.0.tgz",
267 | "integrity": "sha512-sd4QjeMgQqzshSjecZjOp8uKfUtnpmCyQhKQrVJBBgeHAB/0FPi33h3AbVlVp07qQtMD4QgYSzaMI7VwncNK/w==",
268 | "dev": true,
269 | "requires": {
270 | "@babel/helper-function-name": "^7.7.0",
271 | "@babel/template": "^7.7.0",
272 | "@babel/traverse": "^7.7.0",
273 | "@babel/types": "^7.7.0"
274 | }
275 | },
276 | "@babel/helpers": {
277 | "version": "7.7.0",
278 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.0.tgz",
279 | "integrity": "sha512-VnNwL4YOhbejHb7x/b5F39Zdg5vIQpUUNzJwx0ww1EcVRt41bbGRZWhAURrfY32T5zTT3qwNOQFWpn+P0i0a2g==",
280 | "dev": true,
281 | "requires": {
282 | "@babel/template": "^7.7.0",
283 | "@babel/traverse": "^7.7.0",
284 | "@babel/types": "^7.7.0"
285 | }
286 | },
287 | "@babel/highlight": {
288 | "version": "7.5.0",
289 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz",
290 | "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==",
291 | "dev": true,
292 | "requires": {
293 | "chalk": "^2.0.0",
294 | "esutils": "^2.0.2",
295 | "js-tokens": "^4.0.0"
296 | }
297 | },
298 | "@babel/parser": {
299 | "version": "7.7.2",
300 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.2.tgz",
301 | "integrity": "sha512-DDaR5e0g4ZTb9aP7cpSZLkACEBdoLGwJDWgHtBhrGX7Q1RjhdoMOfexICj5cqTAtpowjGQWfcvfnQG7G2kAB5w==",
302 | "dev": true
303 | },
304 | "@babel/plugin-proposal-async-generator-functions": {
305 | "version": "7.7.0",
306 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.7.0.tgz",
307 | "integrity": "sha512-ot/EZVvf3mXtZq0Pd0+tSOfGWMizqmOohXmNZg6LNFjHOV+wOPv7BvVYh8oPR8LhpIP3ye8nNooKL50YRWxpYA==",
308 | "dev": true,
309 | "requires": {
310 | "@babel/helper-plugin-utils": "^7.0.0",
311 | "@babel/helper-remap-async-to-generator": "^7.7.0",
312 | "@babel/plugin-syntax-async-generators": "^7.2.0"
313 | }
314 | },
315 | "@babel/plugin-proposal-class-properties": {
316 | "version": "7.7.0",
317 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.7.0.tgz",
318 | "integrity": "sha512-tufDcFA1Vj+eWvwHN+jvMN6QsV5o+vUlytNKrbMiCeDL0F2j92RURzUsUMWE5EJkLyWxjdUslCsMQa9FWth16A==",
319 | "dev": true,
320 | "requires": {
321 | "@babel/helper-create-class-features-plugin": "^7.7.0",
322 | "@babel/helper-plugin-utils": "^7.0.0"
323 | }
324 | },
325 | "@babel/plugin-proposal-dynamic-import": {
326 | "version": "7.7.0",
327 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.7.0.tgz",
328 | "integrity": "sha512-7poL3Xi+QFPC7sGAzEIbXUyYzGJwbc2+gSD0AkiC5k52kH2cqHdqxm5hNFfLW3cRSTcx9bN0Fl7/6zWcLLnKAQ==",
329 | "dev": true,
330 | "requires": {
331 | "@babel/helper-plugin-utils": "^7.0.0",
332 | "@babel/plugin-syntax-dynamic-import": "^7.2.0"
333 | }
334 | },
335 | "@babel/plugin-proposal-export-default-from": {
336 | "version": "7.5.2",
337 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.5.2.tgz",
338 | "integrity": "sha512-wr9Itk05L1/wyyZKVEmXWCdcsp/e185WUNl6AfYZeEKYaUPPvHXRDqO5K1VH7/UamYqGJowFRuCv30aDYZawsg==",
339 | "dev": true,
340 | "requires": {
341 | "@babel/helper-plugin-utils": "^7.0.0",
342 | "@babel/plugin-syntax-export-default-from": "^7.2.0"
343 | }
344 | },
345 | "@babel/plugin-proposal-export-namespace-from": {
346 | "version": "7.5.2",
347 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.5.2.tgz",
348 | "integrity": "sha512-TKUdOL07anjZEbR1iSxb5WFh810KyObdd29XLFLGo1IDsSuGrjH3ouWSbAxHNmrVKzr9X71UYl2dQ7oGGcRp0g==",
349 | "dev": true,
350 | "requires": {
351 | "@babel/helper-plugin-utils": "^7.0.0",
352 | "@babel/plugin-syntax-export-namespace-from": "^7.2.0"
353 | }
354 | },
355 | "@babel/plugin-proposal-json-strings": {
356 | "version": "7.2.0",
357 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz",
358 | "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==",
359 | "dev": true,
360 | "requires": {
361 | "@babel/helper-plugin-utils": "^7.0.0",
362 | "@babel/plugin-syntax-json-strings": "^7.2.0"
363 | }
364 | },
365 | "@babel/plugin-proposal-object-rest-spread": {
366 | "version": "7.6.2",
367 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz",
368 | "integrity": "sha512-LDBXlmADCsMZV1Y9OQwMc0MyGZ8Ta/zlD9N67BfQT8uYwkRswiu2hU6nJKrjrt/58aH/vqfQlR/9yId/7A2gWw==",
369 | "dev": true,
370 | "requires": {
371 | "@babel/helper-plugin-utils": "^7.0.0",
372 | "@babel/plugin-syntax-object-rest-spread": "^7.2.0"
373 | }
374 | },
375 | "@babel/plugin-proposal-optional-catch-binding": {
376 | "version": "7.2.0",
377 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz",
378 | "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==",
379 | "dev": true,
380 | "requires": {
381 | "@babel/helper-plugin-utils": "^7.0.0",
382 | "@babel/plugin-syntax-optional-catch-binding": "^7.2.0"
383 | }
384 | },
385 | "@babel/plugin-proposal-unicode-property-regex": {
386 | "version": "7.7.0",
387 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.7.0.tgz",
388 | "integrity": "sha512-mk34H+hp7kRBWJOOAR0ZMGCydgKMD4iN9TpDRp3IIcbunltxEY89XSimc6WbtSLCDrwcdy/EEw7h5CFCzxTchw==",
389 | "dev": true,
390 | "requires": {
391 | "@babel/helper-create-regexp-features-plugin": "^7.7.0",
392 | "@babel/helper-plugin-utils": "^7.0.0"
393 | }
394 | },
395 | "@babel/plugin-syntax-async-generators": {
396 | "version": "7.2.0",
397 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz",
398 | "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==",
399 | "dev": true,
400 | "requires": {
401 | "@babel/helper-plugin-utils": "^7.0.0"
402 | }
403 | },
404 | "@babel/plugin-syntax-dynamic-import": {
405 | "version": "7.2.0",
406 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz",
407 | "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==",
408 | "dev": true,
409 | "requires": {
410 | "@babel/helper-plugin-utils": "^7.0.0"
411 | }
412 | },
413 | "@babel/plugin-syntax-export-default-from": {
414 | "version": "7.2.0",
415 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.2.0.tgz",
416 | "integrity": "sha512-c7nqUnNST97BWPtoe+Ssi+fJukc9P9/JMZ71IOMNQWza2E+Psrd46N6AEvtw6pqK+gt7ChjXyrw4SPDO79f3Lw==",
417 | "dev": true,
418 | "requires": {
419 | "@babel/helper-plugin-utils": "^7.0.0"
420 | }
421 | },
422 | "@babel/plugin-syntax-export-namespace-from": {
423 | "version": "7.2.0",
424 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.2.0.tgz",
425 | "integrity": "sha512-1zGA3UNch6A+A11nIzBVEaE3DDJbjfB+eLIcf0GGOh/BJr/8NxL3546MGhV/r0RhH4xADFIEso39TKCfEMlsGA==",
426 | "dev": true,
427 | "requires": {
428 | "@babel/helper-plugin-utils": "^7.0.0"
429 | }
430 | },
431 | "@babel/plugin-syntax-json-strings": {
432 | "version": "7.2.0",
433 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz",
434 | "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==",
435 | "dev": true,
436 | "requires": {
437 | "@babel/helper-plugin-utils": "^7.0.0"
438 | }
439 | },
440 | "@babel/plugin-syntax-jsx": {
441 | "version": "7.2.0",
442 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz",
443 | "integrity": "sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw==",
444 | "dev": true,
445 | "requires": {
446 | "@babel/helper-plugin-utils": "^7.0.0"
447 | }
448 | },
449 | "@babel/plugin-syntax-object-rest-spread": {
450 | "version": "7.2.0",
451 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz",
452 | "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==",
453 | "dev": true,
454 | "requires": {
455 | "@babel/helper-plugin-utils": "^7.0.0"
456 | }
457 | },
458 | "@babel/plugin-syntax-optional-catch-binding": {
459 | "version": "7.2.0",
460 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz",
461 | "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==",
462 | "dev": true,
463 | "requires": {
464 | "@babel/helper-plugin-utils": "^7.0.0"
465 | }
466 | },
467 | "@babel/plugin-syntax-top-level-await": {
468 | "version": "7.7.0",
469 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.7.0.tgz",
470 | "integrity": "sha512-hi8FUNiFIY1fnUI2n1ViB1DR0R4QeK4iHcTlW6aJkrPoTdb8Rf1EMQ6GT3f67DDkYyWgew9DFoOZ6gOoEsdzTA==",
471 | "dev": true,
472 | "requires": {
473 | "@babel/helper-plugin-utils": "^7.0.0"
474 | }
475 | },
476 | "@babel/plugin-transform-arrow-functions": {
477 | "version": "7.2.0",
478 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz",
479 | "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==",
480 | "dev": true,
481 | "requires": {
482 | "@babel/helper-plugin-utils": "^7.0.0"
483 | }
484 | },
485 | "@babel/plugin-transform-async-to-generator": {
486 | "version": "7.7.0",
487 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.0.tgz",
488 | "integrity": "sha512-vLI2EFLVvRBL3d8roAMqtVY0Bm9C1QzLkdS57hiKrjUBSqsQYrBsMCeOg/0KK7B0eK9V71J5mWcha9yyoI2tZw==",
489 | "dev": true,
490 | "requires": {
491 | "@babel/helper-module-imports": "^7.7.0",
492 | "@babel/helper-plugin-utils": "^7.0.0",
493 | "@babel/helper-remap-async-to-generator": "^7.7.0"
494 | }
495 | },
496 | "@babel/plugin-transform-block-scoped-functions": {
497 | "version": "7.2.0",
498 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz",
499 | "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==",
500 | "dev": true,
501 | "requires": {
502 | "@babel/helper-plugin-utils": "^7.0.0"
503 | }
504 | },
505 | "@babel/plugin-transform-block-scoping": {
506 | "version": "7.6.3",
507 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.3.tgz",
508 | "integrity": "sha512-7hvrg75dubcO3ZI2rjYTzUrEuh1E9IyDEhhB6qfcooxhDA33xx2MasuLVgdxzcP6R/lipAC6n9ub9maNW6RKdw==",
509 | "dev": true,
510 | "requires": {
511 | "@babel/helper-plugin-utils": "^7.0.0",
512 | "lodash": "^4.17.13"
513 | }
514 | },
515 | "@babel/plugin-transform-classes": {
516 | "version": "7.7.0",
517 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.7.0.tgz",
518 | "integrity": "sha512-/b3cKIZwGeUesZheU9jNYcwrEA7f/Bo4IdPmvp7oHgvks2majB5BoT5byAql44fiNQYOPzhk2w8DbgfuafkMoA==",
519 | "dev": true,
520 | "requires": {
521 | "@babel/helper-annotate-as-pure": "^7.7.0",
522 | "@babel/helper-define-map": "^7.7.0",
523 | "@babel/helper-function-name": "^7.7.0",
524 | "@babel/helper-optimise-call-expression": "^7.7.0",
525 | "@babel/helper-plugin-utils": "^7.0.0",
526 | "@babel/helper-replace-supers": "^7.7.0",
527 | "@babel/helper-split-export-declaration": "^7.7.0",
528 | "globals": "^11.1.0"
529 | }
530 | },
531 | "@babel/plugin-transform-computed-properties": {
532 | "version": "7.2.0",
533 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz",
534 | "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==",
535 | "dev": true,
536 | "requires": {
537 | "@babel/helper-plugin-utils": "^7.0.0"
538 | }
539 | },
540 | "@babel/plugin-transform-destructuring": {
541 | "version": "7.6.0",
542 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.6.0.tgz",
543 | "integrity": "sha512-2bGIS5P1v4+sWTCnKNDZDxbGvEqi0ijeqM/YqHtVGrvG2y0ySgnEEhXErvE9dA0bnIzY9bIzdFK0jFA46ASIIQ==",
544 | "dev": true,
545 | "requires": {
546 | "@babel/helper-plugin-utils": "^7.0.0"
547 | }
548 | },
549 | "@babel/plugin-transform-dotall-regex": {
550 | "version": "7.7.0",
551 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.0.tgz",
552 | "integrity": "sha512-3QQlF7hSBnSuM1hQ0pS3pmAbWLax/uGNCbPBND9y+oJ4Y776jsyujG2k0Sn2Aj2a0QwVOiOFL5QVPA7spjvzSA==",
553 | "dev": true,
554 | "requires": {
555 | "@babel/helper-create-regexp-features-plugin": "^7.7.0",
556 | "@babel/helper-plugin-utils": "^7.0.0"
557 | }
558 | },
559 | "@babel/plugin-transform-duplicate-keys": {
560 | "version": "7.5.0",
561 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz",
562 | "integrity": "sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ==",
563 | "dev": true,
564 | "requires": {
565 | "@babel/helper-plugin-utils": "^7.0.0"
566 | }
567 | },
568 | "@babel/plugin-transform-exponentiation-operator": {
569 | "version": "7.2.0",
570 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz",
571 | "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==",
572 | "dev": true,
573 | "requires": {
574 | "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0",
575 | "@babel/helper-plugin-utils": "^7.0.0"
576 | }
577 | },
578 | "@babel/plugin-transform-for-of": {
579 | "version": "7.4.4",
580 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz",
581 | "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==",
582 | "dev": true,
583 | "requires": {
584 | "@babel/helper-plugin-utils": "^7.0.0"
585 | }
586 | },
587 | "@babel/plugin-transform-function-name": {
588 | "version": "7.7.0",
589 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.7.0.tgz",
590 | "integrity": "sha512-P5HKu0d9+CzZxP5jcrWdpe7ZlFDe24bmqP6a6X8BHEBl/eizAsY8K6LX8LASZL0Jxdjm5eEfzp+FIrxCm/p8bA==",
591 | "dev": true,
592 | "requires": {
593 | "@babel/helper-function-name": "^7.7.0",
594 | "@babel/helper-plugin-utils": "^7.0.0"
595 | }
596 | },
597 | "@babel/plugin-transform-literals": {
598 | "version": "7.2.0",
599 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz",
600 | "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==",
601 | "dev": true,
602 | "requires": {
603 | "@babel/helper-plugin-utils": "^7.0.0"
604 | }
605 | },
606 | "@babel/plugin-transform-member-expression-literals": {
607 | "version": "7.2.0",
608 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz",
609 | "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==",
610 | "dev": true,
611 | "requires": {
612 | "@babel/helper-plugin-utils": "^7.0.0"
613 | }
614 | },
615 | "@babel/plugin-transform-modules-amd": {
616 | "version": "7.5.0",
617 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz",
618 | "integrity": "sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg==",
619 | "dev": true,
620 | "requires": {
621 | "@babel/helper-module-transforms": "^7.1.0",
622 | "@babel/helper-plugin-utils": "^7.0.0",
623 | "babel-plugin-dynamic-import-node": "^2.3.0"
624 | }
625 | },
626 | "@babel/plugin-transform-modules-commonjs": {
627 | "version": "7.7.0",
628 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.0.tgz",
629 | "integrity": "sha512-KEMyWNNWnjOom8vR/1+d+Ocz/mILZG/eyHHO06OuBQ2aNhxT62fr4y6fGOplRx+CxCSp3IFwesL8WdINfY/3kg==",
630 | "dev": true,
631 | "requires": {
632 | "@babel/helper-module-transforms": "^7.7.0",
633 | "@babel/helper-plugin-utils": "^7.0.0",
634 | "@babel/helper-simple-access": "^7.7.0",
635 | "babel-plugin-dynamic-import-node": "^2.3.0"
636 | }
637 | },
638 | "@babel/plugin-transform-modules-systemjs": {
639 | "version": "7.7.0",
640 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.7.0.tgz",
641 | "integrity": "sha512-ZAuFgYjJzDNv77AjXRqzQGlQl4HdUM6j296ee4fwKVZfhDR9LAGxfvXjBkb06gNETPnN0sLqRm9Gxg4wZH6dXg==",
642 | "dev": true,
643 | "requires": {
644 | "@babel/helper-hoist-variables": "^7.7.0",
645 | "@babel/helper-plugin-utils": "^7.0.0",
646 | "babel-plugin-dynamic-import-node": "^2.3.0"
647 | }
648 | },
649 | "@babel/plugin-transform-modules-umd": {
650 | "version": "7.7.0",
651 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.7.0.tgz",
652 | "integrity": "sha512-u7eBA03zmUswQ9LQ7Qw0/ieC1pcAkbp5OQatbWUzY1PaBccvuJXUkYzoN1g7cqp7dbTu6Dp9bXyalBvD04AANA==",
653 | "dev": true,
654 | "requires": {
655 | "@babel/helper-module-transforms": "^7.7.0",
656 | "@babel/helper-plugin-utils": "^7.0.0"
657 | }
658 | },
659 | "@babel/plugin-transform-named-capturing-groups-regex": {
660 | "version": "7.7.0",
661 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.7.0.tgz",
662 | "integrity": "sha512-+SicSJoKouPctL+j1pqktRVCgy+xAch1hWWTMy13j0IflnyNjaoskj+DwRQFimHbLqO3sq2oN2CXMvXq3Bgapg==",
663 | "dev": true,
664 | "requires": {
665 | "@babel/helper-create-regexp-features-plugin": "^7.7.0"
666 | }
667 | },
668 | "@babel/plugin-transform-new-target": {
669 | "version": "7.4.4",
670 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz",
671 | "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==",
672 | "dev": true,
673 | "requires": {
674 | "@babel/helper-plugin-utils": "^7.0.0"
675 | }
676 | },
677 | "@babel/plugin-transform-object-super": {
678 | "version": "7.5.5",
679 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz",
680 | "integrity": "sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ==",
681 | "dev": true,
682 | "requires": {
683 | "@babel/helper-plugin-utils": "^7.0.0",
684 | "@babel/helper-replace-supers": "^7.5.5"
685 | }
686 | },
687 | "@babel/plugin-transform-parameters": {
688 | "version": "7.4.4",
689 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz",
690 | "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==",
691 | "dev": true,
692 | "requires": {
693 | "@babel/helper-call-delegate": "^7.4.4",
694 | "@babel/helper-get-function-arity": "^7.0.0",
695 | "@babel/helper-plugin-utils": "^7.0.0"
696 | }
697 | },
698 | "@babel/plugin-transform-property-literals": {
699 | "version": "7.2.0",
700 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz",
701 | "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==",
702 | "dev": true,
703 | "requires": {
704 | "@babel/helper-plugin-utils": "^7.0.0"
705 | }
706 | },
707 | "@babel/plugin-transform-react-display-name": {
708 | "version": "7.2.0",
709 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz",
710 | "integrity": "sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A==",
711 | "dev": true,
712 | "requires": {
713 | "@babel/helper-plugin-utils": "^7.0.0"
714 | }
715 | },
716 | "@babel/plugin-transform-react-jsx": {
717 | "version": "7.7.0",
718 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.7.0.tgz",
719 | "integrity": "sha512-mXhBtyVB1Ujfy+0L6934jeJcSXj/VCg6whZzEcgiiZHNS0PGC7vUCsZDQCxxztkpIdF+dY1fUMcjAgEOC3ZOMQ==",
720 | "dev": true,
721 | "requires": {
722 | "@babel/helper-builder-react-jsx": "^7.7.0",
723 | "@babel/helper-plugin-utils": "^7.0.0",
724 | "@babel/plugin-syntax-jsx": "^7.2.0"
725 | }
726 | },
727 | "@babel/plugin-transform-react-jsx-self": {
728 | "version": "7.2.0",
729 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz",
730 | "integrity": "sha512-v6S5L/myicZEy+jr6ielB0OR8h+EH/1QFx/YJ7c7Ua+7lqsjj/vW6fD5FR9hB/6y7mGbfT4vAURn3xqBxsUcdg==",
731 | "dev": true,
732 | "requires": {
733 | "@babel/helper-plugin-utils": "^7.0.0",
734 | "@babel/plugin-syntax-jsx": "^7.2.0"
735 | }
736 | },
737 | "@babel/plugin-transform-react-jsx-source": {
738 | "version": "7.5.0",
739 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.5.0.tgz",
740 | "integrity": "sha512-58Q+Jsy4IDCZx7kqEZuSDdam/1oW8OdDX8f+Loo6xyxdfg1yF0GE2XNJQSTZCaMol93+FBzpWiPEwtbMloAcPg==",
741 | "dev": true,
742 | "requires": {
743 | "@babel/helper-plugin-utils": "^7.0.0",
744 | "@babel/plugin-syntax-jsx": "^7.2.0"
745 | }
746 | },
747 | "@babel/plugin-transform-regenerator": {
748 | "version": "7.7.0",
749 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.0.tgz",
750 | "integrity": "sha512-AXmvnC+0wuj/cFkkS/HFHIojxH3ffSXE+ttulrqWjZZRaUOonfJc60e1wSNT4rV8tIunvu/R3wCp71/tLAa9xg==",
751 | "dev": true,
752 | "requires": {
753 | "regenerator-transform": "^0.14.0"
754 | }
755 | },
756 | "@babel/plugin-transform-reserved-words": {
757 | "version": "7.2.0",
758 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz",
759 | "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==",
760 | "dev": true,
761 | "requires": {
762 | "@babel/helper-plugin-utils": "^7.0.0"
763 | }
764 | },
765 | "@babel/plugin-transform-runtime": {
766 | "version": "7.6.2",
767 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.6.2.tgz",
768 | "integrity": "sha512-cqULw/QB4yl73cS5Y0TZlQSjDvNkzDbu0FurTZyHlJpWE5T3PCMdnyV+xXoH1opr1ldyHODe3QAX3OMAii5NxA==",
769 | "dev": true,
770 | "requires": {
771 | "@babel/helper-module-imports": "^7.0.0",
772 | "@babel/helper-plugin-utils": "^7.0.0",
773 | "resolve": "^1.8.1",
774 | "semver": "^5.5.1"
775 | }
776 | },
777 | "@babel/plugin-transform-shorthand-properties": {
778 | "version": "7.2.0",
779 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz",
780 | "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==",
781 | "dev": true,
782 | "requires": {
783 | "@babel/helper-plugin-utils": "^7.0.0"
784 | }
785 | },
786 | "@babel/plugin-transform-spread": {
787 | "version": "7.6.2",
788 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.6.2.tgz",
789 | "integrity": "sha512-DpSvPFryKdK1x+EDJYCy28nmAaIMdxmhot62jAXF/o99iA33Zj2Lmcp3vDmz+MUh0LNYVPvfj5iC3feb3/+PFg==",
790 | "dev": true,
791 | "requires": {
792 | "@babel/helper-plugin-utils": "^7.0.0"
793 | }
794 | },
795 | "@babel/plugin-transform-sticky-regex": {
796 | "version": "7.2.0",
797 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz",
798 | "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==",
799 | "dev": true,
800 | "requires": {
801 | "@babel/helper-plugin-utils": "^7.0.0",
802 | "@babel/helper-regex": "^7.0.0"
803 | }
804 | },
805 | "@babel/plugin-transform-template-literals": {
806 | "version": "7.4.4",
807 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz",
808 | "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==",
809 | "dev": true,
810 | "requires": {
811 | "@babel/helper-annotate-as-pure": "^7.0.0",
812 | "@babel/helper-plugin-utils": "^7.0.0"
813 | }
814 | },
815 | "@babel/plugin-transform-typeof-symbol": {
816 | "version": "7.2.0",
817 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz",
818 | "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==",
819 | "dev": true,
820 | "requires": {
821 | "@babel/helper-plugin-utils": "^7.0.0"
822 | }
823 | },
824 | "@babel/plugin-transform-unicode-regex": {
825 | "version": "7.7.0",
826 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.0.tgz",
827 | "integrity": "sha512-RrThb0gdrNwFAqEAAx9OWgtx6ICK69x7i9tCnMdVrxQwSDp/Abu9DXFU5Hh16VP33Rmxh04+NGW28NsIkFvFKA==",
828 | "dev": true,
829 | "requires": {
830 | "@babel/helper-create-regexp-features-plugin": "^7.7.0",
831 | "@babel/helper-plugin-utils": "^7.0.0"
832 | }
833 | },
834 | "@babel/preset-env": {
835 | "version": "7.7.1",
836 | "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.7.1.tgz",
837 | "integrity": "sha512-/93SWhi3PxcVTDpSqC+Dp4YxUu3qZ4m7I76k0w73wYfn7bGVuRIO4QUz95aJksbS+AD1/mT1Ie7rbkT0wSplaA==",
838 | "dev": true,
839 | "requires": {
840 | "@babel/helper-module-imports": "^7.7.0",
841 | "@babel/helper-plugin-utils": "^7.0.0",
842 | "@babel/plugin-proposal-async-generator-functions": "^7.7.0",
843 | "@babel/plugin-proposal-dynamic-import": "^7.7.0",
844 | "@babel/plugin-proposal-json-strings": "^7.2.0",
845 | "@babel/plugin-proposal-object-rest-spread": "^7.6.2",
846 | "@babel/plugin-proposal-optional-catch-binding": "^7.2.0",
847 | "@babel/plugin-proposal-unicode-property-regex": "^7.7.0",
848 | "@babel/plugin-syntax-async-generators": "^7.2.0",
849 | "@babel/plugin-syntax-dynamic-import": "^7.2.0",
850 | "@babel/plugin-syntax-json-strings": "^7.2.0",
851 | "@babel/plugin-syntax-object-rest-spread": "^7.2.0",
852 | "@babel/plugin-syntax-optional-catch-binding": "^7.2.0",
853 | "@babel/plugin-syntax-top-level-await": "^7.7.0",
854 | "@babel/plugin-transform-arrow-functions": "^7.2.0",
855 | "@babel/plugin-transform-async-to-generator": "^7.7.0",
856 | "@babel/plugin-transform-block-scoped-functions": "^7.2.0",
857 | "@babel/plugin-transform-block-scoping": "^7.6.3",
858 | "@babel/plugin-transform-classes": "^7.7.0",
859 | "@babel/plugin-transform-computed-properties": "^7.2.0",
860 | "@babel/plugin-transform-destructuring": "^7.6.0",
861 | "@babel/plugin-transform-dotall-regex": "^7.7.0",
862 | "@babel/plugin-transform-duplicate-keys": "^7.5.0",
863 | "@babel/plugin-transform-exponentiation-operator": "^7.2.0",
864 | "@babel/plugin-transform-for-of": "^7.4.4",
865 | "@babel/plugin-transform-function-name": "^7.7.0",
866 | "@babel/plugin-transform-literals": "^7.2.0",
867 | "@babel/plugin-transform-member-expression-literals": "^7.2.0",
868 | "@babel/plugin-transform-modules-amd": "^7.5.0",
869 | "@babel/plugin-transform-modules-commonjs": "^7.7.0",
870 | "@babel/plugin-transform-modules-systemjs": "^7.7.0",
871 | "@babel/plugin-transform-modules-umd": "^7.7.0",
872 | "@babel/plugin-transform-named-capturing-groups-regex": "^7.7.0",
873 | "@babel/plugin-transform-new-target": "^7.4.4",
874 | "@babel/plugin-transform-object-super": "^7.5.5",
875 | "@babel/plugin-transform-parameters": "^7.4.4",
876 | "@babel/plugin-transform-property-literals": "^7.2.0",
877 | "@babel/plugin-transform-regenerator": "^7.7.0",
878 | "@babel/plugin-transform-reserved-words": "^7.2.0",
879 | "@babel/plugin-transform-shorthand-properties": "^7.2.0",
880 | "@babel/plugin-transform-spread": "^7.6.2",
881 | "@babel/plugin-transform-sticky-regex": "^7.2.0",
882 | "@babel/plugin-transform-template-literals": "^7.4.4",
883 | "@babel/plugin-transform-typeof-symbol": "^7.2.0",
884 | "@babel/plugin-transform-unicode-regex": "^7.7.0",
885 | "@babel/types": "^7.7.1",
886 | "browserslist": "^4.6.0",
887 | "core-js-compat": "^3.1.1",
888 | "invariant": "^2.2.2",
889 | "js-levenshtein": "^1.1.3",
890 | "semver": "^5.5.0"
891 | }
892 | },
893 | "@babel/preset-react": {
894 | "version": "7.7.0",
895 | "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.7.0.tgz",
896 | "integrity": "sha512-IXXgSUYBPHUGhUkH+89TR6faMcBtuMW0h5OHbMuVbL3/5wK2g6a2M2BBpkLa+Kw0sAHiZ9dNVgqJMDP/O4GRBA==",
897 | "dev": true,
898 | "requires": {
899 | "@babel/helper-plugin-utils": "^7.0.0",
900 | "@babel/plugin-transform-react-display-name": "^7.0.0",
901 | "@babel/plugin-transform-react-jsx": "^7.7.0",
902 | "@babel/plugin-transform-react-jsx-self": "^7.0.0",
903 | "@babel/plugin-transform-react-jsx-source": "^7.0.0"
904 | }
905 | },
906 | "@babel/runtime": {
907 | "version": "7.7.2",
908 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.2.tgz",
909 | "integrity": "sha512-JONRbXbTXc9WQE2mAZd1p0Z3DZ/6vaQIkgYMSTP3KjRCyd7rCZCcfhCyX+YjwcKxcZ82UrxbRD358bpExNgrjw==",
910 | "dev": true,
911 | "requires": {
912 | "regenerator-runtime": "^0.13.2"
913 | }
914 | },
915 | "@babel/template": {
916 | "version": "7.7.0",
917 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz",
918 | "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==",
919 | "dev": true,
920 | "requires": {
921 | "@babel/code-frame": "^7.0.0",
922 | "@babel/parser": "^7.7.0",
923 | "@babel/types": "^7.7.0"
924 | }
925 | },
926 | "@babel/traverse": {
927 | "version": "7.7.2",
928 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz",
929 | "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==",
930 | "dev": true,
931 | "requires": {
932 | "@babel/code-frame": "^7.5.5",
933 | "@babel/generator": "^7.7.2",
934 | "@babel/helper-function-name": "^7.7.0",
935 | "@babel/helper-split-export-declaration": "^7.7.0",
936 | "@babel/parser": "^7.7.2",
937 | "@babel/types": "^7.7.2",
938 | "debug": "^4.1.0",
939 | "globals": "^11.1.0",
940 | "lodash": "^4.17.13"
941 | }
942 | },
943 | "@babel/types": {
944 | "version": "7.7.2",
945 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz",
946 | "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==",
947 | "dev": true,
948 | "requires": {
949 | "esutils": "^2.0.2",
950 | "lodash": "^4.17.13",
951 | "to-fast-properties": "^2.0.0"
952 | }
953 | },
954 | "@types/estree": {
955 | "version": "0.0.39",
956 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
957 | "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
958 | "dev": true
959 | },
960 | "@types/node": {
961 | "version": "12.12.6",
962 | "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.6.tgz",
963 | "integrity": "sha512-FjsYUPzEJdGXjwKqSpE0/9QEh6kzhTAeObA54rn6j3rR4C/mzpI9L0KNfoeASSPMMdxIsoJuCLDWcM/rVjIsSA==",
964 | "dev": true
965 | },
966 | "@types/resolve": {
967 | "version": "0.0.8",
968 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz",
969 | "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==",
970 | "dev": true,
971 | "requires": {
972 | "@types/node": "*"
973 | }
974 | },
975 | "acorn": {
976 | "version": "7.1.1",
977 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz",
978 | "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==",
979 | "dev": true
980 | },
981 | "acorn-jsx": {
982 | "version": "5.1.0",
983 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz",
984 | "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==",
985 | "dev": true
986 | },
987 | "ajv": {
988 | "version": "6.10.2",
989 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
990 | "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
991 | "dev": true,
992 | "requires": {
993 | "fast-deep-equal": "^2.0.1",
994 | "fast-json-stable-stringify": "^2.0.0",
995 | "json-schema-traverse": "^0.4.1",
996 | "uri-js": "^4.2.2"
997 | }
998 | },
999 | "ansi-escapes": {
1000 | "version": "4.2.1",
1001 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.2.1.tgz",
1002 | "integrity": "sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q==",
1003 | "dev": true,
1004 | "requires": {
1005 | "type-fest": "^0.5.2"
1006 | }
1007 | },
1008 | "ansi-regex": {
1009 | "version": "4.1.0",
1010 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
1011 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
1012 | "dev": true
1013 | },
1014 | "ansi-styles": {
1015 | "version": "3.2.1",
1016 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
1017 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
1018 | "dev": true,
1019 | "requires": {
1020 | "color-convert": "^1.9.0"
1021 | }
1022 | },
1023 | "argparse": {
1024 | "version": "1.0.10",
1025 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
1026 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
1027 | "dev": true,
1028 | "requires": {
1029 | "sprintf-js": "~1.0.2"
1030 | }
1031 | },
1032 | "aria-query": {
1033 | "version": "3.0.0",
1034 | "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz",
1035 | "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=",
1036 | "dev": true,
1037 | "requires": {
1038 | "ast-types-flow": "0.0.7",
1039 | "commander": "^2.11.0"
1040 | }
1041 | },
1042 | "array-includes": {
1043 | "version": "3.0.3",
1044 | "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz",
1045 | "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=",
1046 | "dev": true,
1047 | "requires": {
1048 | "define-properties": "^1.1.2",
1049 | "es-abstract": "^1.7.0"
1050 | }
1051 | },
1052 | "ast-types-flow": {
1053 | "version": "0.0.7",
1054 | "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
1055 | "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=",
1056 | "dev": true
1057 | },
1058 | "astral-regex": {
1059 | "version": "1.0.0",
1060 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
1061 | "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
1062 | "dev": true
1063 | },
1064 | "axobject-query": {
1065 | "version": "2.0.2",
1066 | "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz",
1067 | "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==",
1068 | "dev": true,
1069 | "requires": {
1070 | "ast-types-flow": "0.0.7"
1071 | }
1072 | },
1073 | "babel-eslint": {
1074 | "version": "10.0.3",
1075 | "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.3.tgz",
1076 | "integrity": "sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA==",
1077 | "dev": true,
1078 | "requires": {
1079 | "@babel/code-frame": "^7.0.0",
1080 | "@babel/parser": "^7.0.0",
1081 | "@babel/traverse": "^7.0.0",
1082 | "@babel/types": "^7.0.0",
1083 | "eslint-visitor-keys": "^1.0.0",
1084 | "resolve": "^1.12.0"
1085 | }
1086 | },
1087 | "babel-plugin-dynamic-import-node": {
1088 | "version": "2.3.0",
1089 | "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz",
1090 | "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==",
1091 | "dev": true,
1092 | "requires": {
1093 | "object.assign": "^4.1.0"
1094 | }
1095 | },
1096 | "balanced-match": {
1097 | "version": "1.0.0",
1098 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
1099 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
1100 | "dev": true
1101 | },
1102 | "brace-expansion": {
1103 | "version": "1.1.11",
1104 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
1105 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
1106 | "dev": true,
1107 | "requires": {
1108 | "balanced-match": "^1.0.0",
1109 | "concat-map": "0.0.1"
1110 | }
1111 | },
1112 | "browserslist": {
1113 | "version": "4.7.2",
1114 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.2.tgz",
1115 | "integrity": "sha512-uZavT/gZXJd2UTi9Ov7/Z340WOSQ3+m1iBVRUknf+okKxonL9P83S3ctiBDtuRmRu8PiCHjqyueqQ9HYlJhxiw==",
1116 | "dev": true,
1117 | "requires": {
1118 | "caniuse-lite": "^1.0.30001004",
1119 | "electron-to-chromium": "^1.3.295",
1120 | "node-releases": "^1.1.38"
1121 | }
1122 | },
1123 | "builtin-modules": {
1124 | "version": "3.1.0",
1125 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz",
1126 | "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==",
1127 | "dev": true
1128 | },
1129 | "callsites": {
1130 | "version": "3.1.0",
1131 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
1132 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
1133 | "dev": true
1134 | },
1135 | "caniuse-lite": {
1136 | "version": "1.0.30001008",
1137 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001008.tgz",
1138 | "integrity": "sha512-b8DJyb+VVXZGRgJUa30cbk8gKHZ3LOZTBLaUEEVr2P4xpmFigOCc62CO4uzquW641Ouq1Rm9N+rWLWdSYDaDIw==",
1139 | "dev": true
1140 | },
1141 | "chalk": {
1142 | "version": "2.4.2",
1143 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
1144 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
1145 | "dev": true,
1146 | "requires": {
1147 | "ansi-styles": "^3.2.1",
1148 | "escape-string-regexp": "^1.0.5",
1149 | "supports-color": "^5.3.0"
1150 | }
1151 | },
1152 | "chardet": {
1153 | "version": "0.7.0",
1154 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
1155 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
1156 | "dev": true
1157 | },
1158 | "classnames": {
1159 | "version": "2.2.6",
1160 | "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz",
1161 | "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q=="
1162 | },
1163 | "cli-cursor": {
1164 | "version": "3.1.0",
1165 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
1166 | "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
1167 | "dev": true,
1168 | "requires": {
1169 | "restore-cursor": "^3.1.0"
1170 | }
1171 | },
1172 | "cli-width": {
1173 | "version": "2.2.0",
1174 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
1175 | "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
1176 | "dev": true
1177 | },
1178 | "color-convert": {
1179 | "version": "1.9.3",
1180 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
1181 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
1182 | "dev": true,
1183 | "requires": {
1184 | "color-name": "1.1.3"
1185 | }
1186 | },
1187 | "color-name": {
1188 | "version": "1.1.3",
1189 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
1190 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
1191 | "dev": true
1192 | },
1193 | "commander": {
1194 | "version": "2.20.3",
1195 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
1196 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
1197 | "dev": true
1198 | },
1199 | "concat-map": {
1200 | "version": "0.0.1",
1201 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
1202 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
1203 | "dev": true
1204 | },
1205 | "contains-path": {
1206 | "version": "0.1.0",
1207 | "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
1208 | "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
1209 | "dev": true
1210 | },
1211 | "convert-source-map": {
1212 | "version": "1.7.0",
1213 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
1214 | "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
1215 | "dev": true,
1216 | "requires": {
1217 | "safe-buffer": "~5.1.1"
1218 | }
1219 | },
1220 | "core-js-compat": {
1221 | "version": "3.4.0",
1222 | "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.4.0.tgz",
1223 | "integrity": "sha512-pgQUcgT2+v9/yxHgMynYjNj7nmxLRXv3UC39rjCjDwpe63ev2rioQTju1PKLYUBbPCQQvZNWvQC8tBJd65q11g==",
1224 | "dev": true,
1225 | "requires": {
1226 | "browserslist": "^4.7.2",
1227 | "semver": "^6.3.0"
1228 | },
1229 | "dependencies": {
1230 | "semver": {
1231 | "version": "6.3.0",
1232 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
1233 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
1234 | "dev": true
1235 | }
1236 | }
1237 | },
1238 | "cross-spawn": {
1239 | "version": "6.0.5",
1240 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
1241 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
1242 | "dev": true,
1243 | "requires": {
1244 | "nice-try": "^1.0.4",
1245 | "path-key": "^2.0.1",
1246 | "semver": "^5.5.0",
1247 | "shebang-command": "^1.2.0",
1248 | "which": "^1.2.9"
1249 | }
1250 | },
1251 | "damerau-levenshtein": {
1252 | "version": "1.0.5",
1253 | "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.5.tgz",
1254 | "integrity": "sha512-CBCRqFnpu715iPmw1KrdOrzRqbdFwQTwAWyyyYS42+iAgHCuXZ+/TdMgQkUENPomxEz9z1BEzuQU2Xw0kUuAgA==",
1255 | "dev": true
1256 | },
1257 | "debug": {
1258 | "version": "4.1.1",
1259 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
1260 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
1261 | "dev": true,
1262 | "requires": {
1263 | "ms": "^2.1.1"
1264 | }
1265 | },
1266 | "deep-is": {
1267 | "version": "0.1.3",
1268 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
1269 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
1270 | "dev": true
1271 | },
1272 | "define-properties": {
1273 | "version": "1.1.3",
1274 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
1275 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
1276 | "dev": true,
1277 | "requires": {
1278 | "object-keys": "^1.0.12"
1279 | }
1280 | },
1281 | "doctrine": {
1282 | "version": "3.0.0",
1283 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
1284 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
1285 | "dev": true,
1286 | "requires": {
1287 | "esutils": "^2.0.2"
1288 | }
1289 | },
1290 | "electron-to-chromium": {
1291 | "version": "1.3.305",
1292 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.305.tgz",
1293 | "integrity": "sha512-jBEhRZ3eeJWf3eAnGYB1vDy09uBQpZWshC5fxiiIRofA9L3vkpa3SxsXleVS2MvuYir15oTVxzWPsOwj7KBzUw==",
1294 | "dev": true
1295 | },
1296 | "emoji-regex": {
1297 | "version": "8.0.0",
1298 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
1299 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
1300 | "dev": true
1301 | },
1302 | "error-ex": {
1303 | "version": "1.3.2",
1304 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
1305 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
1306 | "dev": true,
1307 | "requires": {
1308 | "is-arrayish": "^0.2.1"
1309 | }
1310 | },
1311 | "es-abstract": {
1312 | "version": "1.16.0",
1313 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz",
1314 | "integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==",
1315 | "dev": true,
1316 | "requires": {
1317 | "es-to-primitive": "^1.2.0",
1318 | "function-bind": "^1.1.1",
1319 | "has": "^1.0.3",
1320 | "has-symbols": "^1.0.0",
1321 | "is-callable": "^1.1.4",
1322 | "is-regex": "^1.0.4",
1323 | "object-inspect": "^1.6.0",
1324 | "object-keys": "^1.1.1",
1325 | "string.prototype.trimleft": "^2.1.0",
1326 | "string.prototype.trimright": "^2.1.0"
1327 | }
1328 | },
1329 | "es-to-primitive": {
1330 | "version": "1.2.0",
1331 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
1332 | "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
1333 | "dev": true,
1334 | "requires": {
1335 | "is-callable": "^1.1.4",
1336 | "is-date-object": "^1.0.1",
1337 | "is-symbol": "^1.0.2"
1338 | }
1339 | },
1340 | "escape-string-regexp": {
1341 | "version": "1.0.5",
1342 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
1343 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
1344 | "dev": true
1345 | },
1346 | "eslint": {
1347 | "version": "6.6.0",
1348 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.6.0.tgz",
1349 | "integrity": "sha512-PpEBq7b6qY/qrOmpYQ/jTMDYfuQMELR4g4WI1M/NaSDDD/bdcMb+dj4Hgks7p41kW2caXsPsEZAEAyAgjVVC0g==",
1350 | "dev": true,
1351 | "requires": {
1352 | "@babel/code-frame": "^7.0.0",
1353 | "ajv": "^6.10.0",
1354 | "chalk": "^2.1.0",
1355 | "cross-spawn": "^6.0.5",
1356 | "debug": "^4.0.1",
1357 | "doctrine": "^3.0.0",
1358 | "eslint-scope": "^5.0.0",
1359 | "eslint-utils": "^1.4.3",
1360 | "eslint-visitor-keys": "^1.1.0",
1361 | "espree": "^6.1.2",
1362 | "esquery": "^1.0.1",
1363 | "esutils": "^2.0.2",
1364 | "file-entry-cache": "^5.0.1",
1365 | "functional-red-black-tree": "^1.0.1",
1366 | "glob-parent": "^5.0.0",
1367 | "globals": "^11.7.0",
1368 | "ignore": "^4.0.6",
1369 | "import-fresh": "^3.0.0",
1370 | "imurmurhash": "^0.1.4",
1371 | "inquirer": "^7.0.0",
1372 | "is-glob": "^4.0.0",
1373 | "js-yaml": "^3.13.1",
1374 | "json-stable-stringify-without-jsonify": "^1.0.1",
1375 | "levn": "^0.3.0",
1376 | "lodash": "^4.17.14",
1377 | "minimatch": "^3.0.4",
1378 | "mkdirp": "^0.5.1",
1379 | "natural-compare": "^1.4.0",
1380 | "optionator": "^0.8.2",
1381 | "progress": "^2.0.0",
1382 | "regexpp": "^2.0.1",
1383 | "semver": "^6.1.2",
1384 | "strip-ansi": "^5.2.0",
1385 | "strip-json-comments": "^3.0.1",
1386 | "table": "^5.2.3",
1387 | "text-table": "^0.2.0",
1388 | "v8-compile-cache": "^2.0.3"
1389 | },
1390 | "dependencies": {
1391 | "semver": {
1392 | "version": "6.3.0",
1393 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
1394 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
1395 | "dev": true
1396 | }
1397 | }
1398 | },
1399 | "eslint-config-prettier": {
1400 | "version": "6.5.0",
1401 | "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.5.0.tgz",
1402 | "integrity": "sha512-cjXp8SbO9VFGW/Z7mbTydqS9to8Z58E5aYhj3e1+Hx7lS9s6gL5ILKNpCqZAFOVYRcSkWPFYljHrEh8QFEK5EQ==",
1403 | "dev": true,
1404 | "requires": {
1405 | "get-stdin": "^6.0.0"
1406 | }
1407 | },
1408 | "eslint-import-resolver-node": {
1409 | "version": "0.3.2",
1410 | "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz",
1411 | "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==",
1412 | "dev": true,
1413 | "requires": {
1414 | "debug": "^2.6.9",
1415 | "resolve": "^1.5.0"
1416 | },
1417 | "dependencies": {
1418 | "debug": {
1419 | "version": "2.6.9",
1420 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1421 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1422 | "dev": true,
1423 | "requires": {
1424 | "ms": "2.0.0"
1425 | }
1426 | },
1427 | "ms": {
1428 | "version": "2.0.0",
1429 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1430 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
1431 | "dev": true
1432 | }
1433 | }
1434 | },
1435 | "eslint-module-utils": {
1436 | "version": "2.4.1",
1437 | "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz",
1438 | "integrity": "sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw==",
1439 | "dev": true,
1440 | "requires": {
1441 | "debug": "^2.6.8",
1442 | "pkg-dir": "^2.0.0"
1443 | },
1444 | "dependencies": {
1445 | "debug": {
1446 | "version": "2.6.9",
1447 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1448 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1449 | "dev": true,
1450 | "requires": {
1451 | "ms": "2.0.0"
1452 | }
1453 | },
1454 | "ms": {
1455 | "version": "2.0.0",
1456 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1457 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
1458 | "dev": true
1459 | }
1460 | }
1461 | },
1462 | "eslint-plugin-import": {
1463 | "version": "2.18.2",
1464 | "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz",
1465 | "integrity": "sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==",
1466 | "dev": true,
1467 | "requires": {
1468 | "array-includes": "^3.0.3",
1469 | "contains-path": "^0.1.0",
1470 | "debug": "^2.6.9",
1471 | "doctrine": "1.5.0",
1472 | "eslint-import-resolver-node": "^0.3.2",
1473 | "eslint-module-utils": "^2.4.0",
1474 | "has": "^1.0.3",
1475 | "minimatch": "^3.0.4",
1476 | "object.values": "^1.1.0",
1477 | "read-pkg-up": "^2.0.0",
1478 | "resolve": "^1.11.0"
1479 | },
1480 | "dependencies": {
1481 | "debug": {
1482 | "version": "2.6.9",
1483 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1484 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1485 | "dev": true,
1486 | "requires": {
1487 | "ms": "2.0.0"
1488 | }
1489 | },
1490 | "doctrine": {
1491 | "version": "1.5.0",
1492 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
1493 | "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
1494 | "dev": true,
1495 | "requires": {
1496 | "esutils": "^2.0.2",
1497 | "isarray": "^1.0.0"
1498 | }
1499 | },
1500 | "ms": {
1501 | "version": "2.0.0",
1502 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1503 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
1504 | "dev": true
1505 | }
1506 | }
1507 | },
1508 | "eslint-plugin-jsx-a11y": {
1509 | "version": "6.2.3",
1510 | "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz",
1511 | "integrity": "sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg==",
1512 | "dev": true,
1513 | "requires": {
1514 | "@babel/runtime": "^7.4.5",
1515 | "aria-query": "^3.0.0",
1516 | "array-includes": "^3.0.3",
1517 | "ast-types-flow": "^0.0.7",
1518 | "axobject-query": "^2.0.2",
1519 | "damerau-levenshtein": "^1.0.4",
1520 | "emoji-regex": "^7.0.2",
1521 | "has": "^1.0.3",
1522 | "jsx-ast-utils": "^2.2.1"
1523 | },
1524 | "dependencies": {
1525 | "emoji-regex": {
1526 | "version": "7.0.3",
1527 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
1528 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
1529 | "dev": true
1530 | }
1531 | }
1532 | },
1533 | "eslint-plugin-prettier": {
1534 | "version": "3.1.1",
1535 | "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.1.tgz",
1536 | "integrity": "sha512-A+TZuHZ0KU0cnn56/9mfR7/KjUJ9QNVXUhwvRFSR7PGPe0zQR6PTkmyqg1AtUUEOzTqeRsUwyKFh0oVZKVCrtA==",
1537 | "dev": true,
1538 | "requires": {
1539 | "prettier-linter-helpers": "^1.0.0"
1540 | }
1541 | },
1542 | "eslint-plugin-react": {
1543 | "version": "7.16.0",
1544 | "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.16.0.tgz",
1545 | "integrity": "sha512-GacBAATewhhptbK3/vTP09CbFrgUJmBSaaRcWdbQLFvUZy9yVcQxigBNHGPU/KE2AyHpzj3AWXpxoMTsIDiHug==",
1546 | "dev": true,
1547 | "requires": {
1548 | "array-includes": "^3.0.3",
1549 | "doctrine": "^2.1.0",
1550 | "has": "^1.0.3",
1551 | "jsx-ast-utils": "^2.2.1",
1552 | "object.entries": "^1.1.0",
1553 | "object.fromentries": "^2.0.0",
1554 | "object.values": "^1.1.0",
1555 | "prop-types": "^15.7.2",
1556 | "resolve": "^1.12.0"
1557 | },
1558 | "dependencies": {
1559 | "doctrine": {
1560 | "version": "2.1.0",
1561 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
1562 | "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
1563 | "dev": true,
1564 | "requires": {
1565 | "esutils": "^2.0.2"
1566 | }
1567 | }
1568 | }
1569 | },
1570 | "eslint-plugin-react-hooks": {
1571 | "version": "2.2.0",
1572 | "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.2.0.tgz",
1573 | "integrity": "sha512-jSlnBjV2cmyIeL555H/FbvuSbQ1AtpHjLMHuPrQnt1eVA6lX8yufdygh7AArI2m8ct7ChHGx2uOaCuxq2MUn6g==",
1574 | "dev": true
1575 | },
1576 | "eslint-scope": {
1577 | "version": "5.0.0",
1578 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
1579 | "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==",
1580 | "dev": true,
1581 | "requires": {
1582 | "esrecurse": "^4.1.0",
1583 | "estraverse": "^4.1.1"
1584 | }
1585 | },
1586 | "eslint-utils": {
1587 | "version": "1.4.3",
1588 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
1589 | "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
1590 | "dev": true,
1591 | "requires": {
1592 | "eslint-visitor-keys": "^1.1.0"
1593 | }
1594 | },
1595 | "eslint-visitor-keys": {
1596 | "version": "1.1.0",
1597 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz",
1598 | "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==",
1599 | "dev": true
1600 | },
1601 | "espree": {
1602 | "version": "6.1.2",
1603 | "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz",
1604 | "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==",
1605 | "dev": true,
1606 | "requires": {
1607 | "acorn": "^7.1.0",
1608 | "acorn-jsx": "^5.1.0",
1609 | "eslint-visitor-keys": "^1.1.0"
1610 | }
1611 | },
1612 | "esprima": {
1613 | "version": "4.0.1",
1614 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
1615 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
1616 | "dev": true
1617 | },
1618 | "esquery": {
1619 | "version": "1.0.1",
1620 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
1621 | "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
1622 | "dev": true,
1623 | "requires": {
1624 | "estraverse": "^4.0.0"
1625 | }
1626 | },
1627 | "esrecurse": {
1628 | "version": "4.2.1",
1629 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
1630 | "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
1631 | "dev": true,
1632 | "requires": {
1633 | "estraverse": "^4.1.0"
1634 | }
1635 | },
1636 | "estraverse": {
1637 | "version": "4.3.0",
1638 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
1639 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
1640 | "dev": true
1641 | },
1642 | "estree-walker": {
1643 | "version": "0.6.1",
1644 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
1645 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
1646 | "dev": true
1647 | },
1648 | "esutils": {
1649 | "version": "2.0.3",
1650 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
1651 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
1652 | "dev": true
1653 | },
1654 | "eventemitter3": {
1655 | "version": "3.1.2",
1656 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz",
1657 | "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q=="
1658 | },
1659 | "external-editor": {
1660 | "version": "3.1.0",
1661 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
1662 | "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
1663 | "dev": true,
1664 | "requires": {
1665 | "chardet": "^0.7.0",
1666 | "iconv-lite": "^0.4.24",
1667 | "tmp": "^0.0.33"
1668 | }
1669 | },
1670 | "fast-deep-equal": {
1671 | "version": "2.0.1",
1672 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
1673 | "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
1674 | "dev": true
1675 | },
1676 | "fast-diff": {
1677 | "version": "1.2.0",
1678 | "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz",
1679 | "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
1680 | "dev": true
1681 | },
1682 | "fast-json-stable-stringify": {
1683 | "version": "2.0.0",
1684 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
1685 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
1686 | "dev": true
1687 | },
1688 | "fast-levenshtein": {
1689 | "version": "2.0.6",
1690 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
1691 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
1692 | "dev": true
1693 | },
1694 | "figures": {
1695 | "version": "3.1.0",
1696 | "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz",
1697 | "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==",
1698 | "dev": true,
1699 | "requires": {
1700 | "escape-string-regexp": "^1.0.5"
1701 | }
1702 | },
1703 | "file-entry-cache": {
1704 | "version": "5.0.1",
1705 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
1706 | "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
1707 | "dev": true,
1708 | "requires": {
1709 | "flat-cache": "^2.0.1"
1710 | }
1711 | },
1712 | "find-up": {
1713 | "version": "2.1.0",
1714 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
1715 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
1716 | "dev": true,
1717 | "requires": {
1718 | "locate-path": "^2.0.0"
1719 | }
1720 | },
1721 | "flat-cache": {
1722 | "version": "2.0.1",
1723 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
1724 | "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
1725 | "dev": true,
1726 | "requires": {
1727 | "flatted": "^2.0.0",
1728 | "rimraf": "2.6.3",
1729 | "write": "1.0.3"
1730 | },
1731 | "dependencies": {
1732 | "rimraf": {
1733 | "version": "2.6.3",
1734 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
1735 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
1736 | "dev": true,
1737 | "requires": {
1738 | "glob": "^7.1.3"
1739 | }
1740 | }
1741 | }
1742 | },
1743 | "flatted": {
1744 | "version": "2.0.1",
1745 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
1746 | "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==",
1747 | "dev": true
1748 | },
1749 | "fs.realpath": {
1750 | "version": "1.0.0",
1751 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1752 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
1753 | "dev": true
1754 | },
1755 | "function-bind": {
1756 | "version": "1.1.1",
1757 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1758 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
1759 | "dev": true
1760 | },
1761 | "functional-red-black-tree": {
1762 | "version": "1.0.1",
1763 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
1764 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
1765 | "dev": true
1766 | },
1767 | "get-stdin": {
1768 | "version": "6.0.0",
1769 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz",
1770 | "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==",
1771 | "dev": true
1772 | },
1773 | "glob": {
1774 | "version": "7.1.6",
1775 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
1776 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
1777 | "dev": true,
1778 | "requires": {
1779 | "fs.realpath": "^1.0.0",
1780 | "inflight": "^1.0.4",
1781 | "inherits": "2",
1782 | "minimatch": "^3.0.4",
1783 | "once": "^1.3.0",
1784 | "path-is-absolute": "^1.0.0"
1785 | }
1786 | },
1787 | "glob-parent": {
1788 | "version": "5.1.0",
1789 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz",
1790 | "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==",
1791 | "dev": true,
1792 | "requires": {
1793 | "is-glob": "^4.0.1"
1794 | }
1795 | },
1796 | "globals": {
1797 | "version": "11.12.0",
1798 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
1799 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
1800 | "dev": true
1801 | },
1802 | "graceful-fs": {
1803 | "version": "4.2.3",
1804 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
1805 | "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
1806 | "dev": true
1807 | },
1808 | "has": {
1809 | "version": "1.0.3",
1810 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1811 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1812 | "dev": true,
1813 | "requires": {
1814 | "function-bind": "^1.1.1"
1815 | }
1816 | },
1817 | "has-flag": {
1818 | "version": "3.0.0",
1819 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1820 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
1821 | "dev": true
1822 | },
1823 | "has-symbols": {
1824 | "version": "1.0.0",
1825 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
1826 | "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
1827 | "dev": true
1828 | },
1829 | "hosted-git-info": {
1830 | "version": "2.8.5",
1831 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz",
1832 | "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==",
1833 | "dev": true
1834 | },
1835 | "iconv-lite": {
1836 | "version": "0.4.24",
1837 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
1838 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
1839 | "dev": true,
1840 | "requires": {
1841 | "safer-buffer": ">= 2.1.2 < 3"
1842 | }
1843 | },
1844 | "ignore": {
1845 | "version": "4.0.6",
1846 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
1847 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
1848 | "dev": true
1849 | },
1850 | "import-fresh": {
1851 | "version": "3.1.0",
1852 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz",
1853 | "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==",
1854 | "dev": true,
1855 | "requires": {
1856 | "parent-module": "^1.0.0",
1857 | "resolve-from": "^4.0.0"
1858 | }
1859 | },
1860 | "imurmurhash": {
1861 | "version": "0.1.4",
1862 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
1863 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
1864 | "dev": true
1865 | },
1866 | "inflight": {
1867 | "version": "1.0.6",
1868 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1869 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1870 | "dev": true,
1871 | "requires": {
1872 | "once": "^1.3.0",
1873 | "wrappy": "1"
1874 | }
1875 | },
1876 | "inherits": {
1877 | "version": "2.0.4",
1878 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1879 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1880 | "dev": true
1881 | },
1882 | "inquirer": {
1883 | "version": "7.0.0",
1884 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz",
1885 | "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==",
1886 | "dev": true,
1887 | "requires": {
1888 | "ansi-escapes": "^4.2.1",
1889 | "chalk": "^2.4.2",
1890 | "cli-cursor": "^3.1.0",
1891 | "cli-width": "^2.0.0",
1892 | "external-editor": "^3.0.3",
1893 | "figures": "^3.0.0",
1894 | "lodash": "^4.17.15",
1895 | "mute-stream": "0.0.8",
1896 | "run-async": "^2.2.0",
1897 | "rxjs": "^6.4.0",
1898 | "string-width": "^4.1.0",
1899 | "strip-ansi": "^5.1.0",
1900 | "through": "^2.3.6"
1901 | }
1902 | },
1903 | "invariant": {
1904 | "version": "2.2.4",
1905 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
1906 | "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
1907 | "dev": true,
1908 | "requires": {
1909 | "loose-envify": "^1.0.0"
1910 | }
1911 | },
1912 | "is-arrayish": {
1913 | "version": "0.2.1",
1914 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
1915 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
1916 | "dev": true
1917 | },
1918 | "is-callable": {
1919 | "version": "1.1.4",
1920 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
1921 | "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
1922 | "dev": true
1923 | },
1924 | "is-date-object": {
1925 | "version": "1.0.1",
1926 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
1927 | "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
1928 | "dev": true
1929 | },
1930 | "is-extglob": {
1931 | "version": "2.1.1",
1932 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1933 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
1934 | "dev": true
1935 | },
1936 | "is-fullwidth-code-point": {
1937 | "version": "3.0.0",
1938 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1939 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1940 | "dev": true
1941 | },
1942 | "is-glob": {
1943 | "version": "4.0.1",
1944 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
1945 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
1946 | "dev": true,
1947 | "requires": {
1948 | "is-extglob": "^2.1.1"
1949 | }
1950 | },
1951 | "is-module": {
1952 | "version": "1.0.0",
1953 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
1954 | "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=",
1955 | "dev": true
1956 | },
1957 | "is-promise": {
1958 | "version": "2.1.0",
1959 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
1960 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
1961 | "dev": true
1962 | },
1963 | "is-reference": {
1964 | "version": "1.1.4",
1965 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz",
1966 | "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==",
1967 | "dev": true,
1968 | "requires": {
1969 | "@types/estree": "0.0.39"
1970 | }
1971 | },
1972 | "is-regex": {
1973 | "version": "1.0.4",
1974 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
1975 | "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
1976 | "dev": true,
1977 | "requires": {
1978 | "has": "^1.0.1"
1979 | }
1980 | },
1981 | "is-symbol": {
1982 | "version": "1.0.2",
1983 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
1984 | "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
1985 | "dev": true,
1986 | "requires": {
1987 | "has-symbols": "^1.0.0"
1988 | }
1989 | },
1990 | "isarray": {
1991 | "version": "1.0.0",
1992 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
1993 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
1994 | "dev": true
1995 | },
1996 | "isexe": {
1997 | "version": "2.0.0",
1998 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1999 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
2000 | "dev": true
2001 | },
2002 | "js-levenshtein": {
2003 | "version": "1.1.6",
2004 | "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz",
2005 | "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==",
2006 | "dev": true
2007 | },
2008 | "js-tokens": {
2009 | "version": "4.0.0",
2010 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
2011 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
2012 | },
2013 | "js-yaml": {
2014 | "version": "3.13.1",
2015 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
2016 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
2017 | "dev": true,
2018 | "requires": {
2019 | "argparse": "^1.0.7",
2020 | "esprima": "^4.0.0"
2021 | }
2022 | },
2023 | "jsesc": {
2024 | "version": "2.5.2",
2025 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
2026 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
2027 | "dev": true
2028 | },
2029 | "json-schema-traverse": {
2030 | "version": "0.4.1",
2031 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
2032 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
2033 | "dev": true
2034 | },
2035 | "json-stable-stringify-without-jsonify": {
2036 | "version": "1.0.1",
2037 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
2038 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
2039 | "dev": true
2040 | },
2041 | "json5": {
2042 | "version": "2.1.1",
2043 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz",
2044 | "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==",
2045 | "dev": true,
2046 | "requires": {
2047 | "minimist": "^1.2.0"
2048 | }
2049 | },
2050 | "jsx-ast-utils": {
2051 | "version": "2.2.3",
2052 | "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz",
2053 | "integrity": "sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA==",
2054 | "dev": true,
2055 | "requires": {
2056 | "array-includes": "^3.0.3",
2057 | "object.assign": "^4.1.0"
2058 | }
2059 | },
2060 | "levn": {
2061 | "version": "0.3.0",
2062 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
2063 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
2064 | "dev": true,
2065 | "requires": {
2066 | "prelude-ls": "~1.1.2",
2067 | "type-check": "~0.3.2"
2068 | }
2069 | },
2070 | "load-json-file": {
2071 | "version": "2.0.0",
2072 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
2073 | "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
2074 | "dev": true,
2075 | "requires": {
2076 | "graceful-fs": "^4.1.2",
2077 | "parse-json": "^2.2.0",
2078 | "pify": "^2.0.0",
2079 | "strip-bom": "^3.0.0"
2080 | }
2081 | },
2082 | "locate-path": {
2083 | "version": "2.0.0",
2084 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
2085 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
2086 | "dev": true,
2087 | "requires": {
2088 | "p-locate": "^2.0.0",
2089 | "path-exists": "^3.0.0"
2090 | }
2091 | },
2092 | "lodash": {
2093 | "version": "4.17.19",
2094 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
2095 | "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ=="
2096 | },
2097 | "loose-envify": {
2098 | "version": "1.4.0",
2099 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
2100 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
2101 | "requires": {
2102 | "js-tokens": "^3.0.0 || ^4.0.0"
2103 | }
2104 | },
2105 | "magic-string": {
2106 | "version": "0.25.4",
2107 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.4.tgz",
2108 | "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==",
2109 | "dev": true,
2110 | "requires": {
2111 | "sourcemap-codec": "^1.4.4"
2112 | }
2113 | },
2114 | "mimic-fn": {
2115 | "version": "2.1.0",
2116 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
2117 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
2118 | "dev": true
2119 | },
2120 | "minimatch": {
2121 | "version": "3.0.4",
2122 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
2123 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
2124 | "dev": true,
2125 | "requires": {
2126 | "brace-expansion": "^1.1.7"
2127 | }
2128 | },
2129 | "minimist": {
2130 | "version": "1.2.0",
2131 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
2132 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
2133 | "dev": true
2134 | },
2135 | "mkdirp": {
2136 | "version": "0.5.1",
2137 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
2138 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
2139 | "dev": true,
2140 | "requires": {
2141 | "minimist": "0.0.8"
2142 | },
2143 | "dependencies": {
2144 | "minimist": {
2145 | "version": "0.0.8",
2146 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
2147 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
2148 | "dev": true
2149 | }
2150 | }
2151 | },
2152 | "ms": {
2153 | "version": "2.1.2",
2154 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
2155 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
2156 | "dev": true
2157 | },
2158 | "mute-stream": {
2159 | "version": "0.0.8",
2160 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
2161 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
2162 | "dev": true
2163 | },
2164 | "natural-compare": {
2165 | "version": "1.4.0",
2166 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
2167 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
2168 | "dev": true
2169 | },
2170 | "nice-try": {
2171 | "version": "1.0.5",
2172 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
2173 | "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
2174 | "dev": true
2175 | },
2176 | "node-releases": {
2177 | "version": "1.1.39",
2178 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.39.tgz",
2179 | "integrity": "sha512-8MRC/ErwNCHOlAFycy9OPca46fQYUjbJRDcZTHVWIGXIjYLM73k70vv3WkYutVnM4cCo4hE0MqBVVZjP6vjISA==",
2180 | "dev": true,
2181 | "requires": {
2182 | "semver": "^6.3.0"
2183 | },
2184 | "dependencies": {
2185 | "semver": {
2186 | "version": "6.3.0",
2187 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
2188 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
2189 | "dev": true
2190 | }
2191 | }
2192 | },
2193 | "normalize-package-data": {
2194 | "version": "2.5.0",
2195 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
2196 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
2197 | "dev": true,
2198 | "requires": {
2199 | "hosted-git-info": "^2.1.4",
2200 | "resolve": "^1.10.0",
2201 | "semver": "2 || 3 || 4 || 5",
2202 | "validate-npm-package-license": "^3.0.1"
2203 | }
2204 | },
2205 | "object-assign": {
2206 | "version": "4.1.1",
2207 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
2208 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
2209 | },
2210 | "object-inspect": {
2211 | "version": "1.6.0",
2212 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz",
2213 | "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==",
2214 | "dev": true
2215 | },
2216 | "object-keys": {
2217 | "version": "1.1.1",
2218 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
2219 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
2220 | "dev": true
2221 | },
2222 | "object.assign": {
2223 | "version": "4.1.0",
2224 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
2225 | "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
2226 | "dev": true,
2227 | "requires": {
2228 | "define-properties": "^1.1.2",
2229 | "function-bind": "^1.1.1",
2230 | "has-symbols": "^1.0.0",
2231 | "object-keys": "^1.0.11"
2232 | }
2233 | },
2234 | "object.entries": {
2235 | "version": "1.1.0",
2236 | "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz",
2237 | "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==",
2238 | "dev": true,
2239 | "requires": {
2240 | "define-properties": "^1.1.3",
2241 | "es-abstract": "^1.12.0",
2242 | "function-bind": "^1.1.1",
2243 | "has": "^1.0.3"
2244 | }
2245 | },
2246 | "object.fromentries": {
2247 | "version": "2.0.1",
2248 | "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.1.tgz",
2249 | "integrity": "sha512-PUQv8Hbg3j2QX0IQYv3iAGCbGcu4yY4KQ92/dhA4sFSixBmSmp13UpDLs6jGK8rBtbmhNNIK99LD2k293jpiGA==",
2250 | "dev": true,
2251 | "requires": {
2252 | "define-properties": "^1.1.3",
2253 | "es-abstract": "^1.15.0",
2254 | "function-bind": "^1.1.1",
2255 | "has": "^1.0.3"
2256 | }
2257 | },
2258 | "object.values": {
2259 | "version": "1.1.0",
2260 | "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz",
2261 | "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==",
2262 | "dev": true,
2263 | "requires": {
2264 | "define-properties": "^1.1.3",
2265 | "es-abstract": "^1.12.0",
2266 | "function-bind": "^1.1.1",
2267 | "has": "^1.0.3"
2268 | }
2269 | },
2270 | "once": {
2271 | "version": "1.4.0",
2272 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
2273 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
2274 | "dev": true,
2275 | "requires": {
2276 | "wrappy": "1"
2277 | }
2278 | },
2279 | "onetime": {
2280 | "version": "5.1.0",
2281 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
2282 | "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
2283 | "dev": true,
2284 | "requires": {
2285 | "mimic-fn": "^2.1.0"
2286 | }
2287 | },
2288 | "optionator": {
2289 | "version": "0.8.3",
2290 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
2291 | "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
2292 | "dev": true,
2293 | "requires": {
2294 | "deep-is": "~0.1.3",
2295 | "fast-levenshtein": "~2.0.6",
2296 | "levn": "~0.3.0",
2297 | "prelude-ls": "~1.1.2",
2298 | "type-check": "~0.3.2",
2299 | "word-wrap": "~1.2.3"
2300 | }
2301 | },
2302 | "os-tmpdir": {
2303 | "version": "1.0.2",
2304 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
2305 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
2306 | "dev": true
2307 | },
2308 | "p-limit": {
2309 | "version": "1.3.0",
2310 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
2311 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
2312 | "dev": true,
2313 | "requires": {
2314 | "p-try": "^1.0.0"
2315 | }
2316 | },
2317 | "p-locate": {
2318 | "version": "2.0.0",
2319 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
2320 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
2321 | "dev": true,
2322 | "requires": {
2323 | "p-limit": "^1.1.0"
2324 | }
2325 | },
2326 | "p-try": {
2327 | "version": "1.0.0",
2328 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
2329 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
2330 | "dev": true
2331 | },
2332 | "parent-module": {
2333 | "version": "1.0.1",
2334 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
2335 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
2336 | "dev": true,
2337 | "requires": {
2338 | "callsites": "^3.0.0"
2339 | }
2340 | },
2341 | "parse-json": {
2342 | "version": "2.2.0",
2343 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
2344 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
2345 | "dev": true,
2346 | "requires": {
2347 | "error-ex": "^1.2.0"
2348 | }
2349 | },
2350 | "path-exists": {
2351 | "version": "3.0.0",
2352 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
2353 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
2354 | "dev": true
2355 | },
2356 | "path-is-absolute": {
2357 | "version": "1.0.1",
2358 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
2359 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
2360 | "dev": true
2361 | },
2362 | "path-key": {
2363 | "version": "2.0.1",
2364 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
2365 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
2366 | "dev": true
2367 | },
2368 | "path-parse": {
2369 | "version": "1.0.6",
2370 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
2371 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
2372 | "dev": true
2373 | },
2374 | "path-type": {
2375 | "version": "2.0.0",
2376 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
2377 | "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
2378 | "dev": true,
2379 | "requires": {
2380 | "pify": "^2.0.0"
2381 | }
2382 | },
2383 | "performance-now": {
2384 | "version": "2.1.0",
2385 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
2386 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
2387 | },
2388 | "pify": {
2389 | "version": "2.3.0",
2390 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
2391 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
2392 | "dev": true
2393 | },
2394 | "pkg-dir": {
2395 | "version": "2.0.0",
2396 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
2397 | "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
2398 | "dev": true,
2399 | "requires": {
2400 | "find-up": "^2.1.0"
2401 | }
2402 | },
2403 | "prelude-ls": {
2404 | "version": "1.1.2",
2405 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
2406 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
2407 | "dev": true
2408 | },
2409 | "prettier": {
2410 | "version": "1.18.2",
2411 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.2.tgz",
2412 | "integrity": "sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==",
2413 | "dev": true
2414 | },
2415 | "prettier-linter-helpers": {
2416 | "version": "1.0.0",
2417 | "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
2418 | "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
2419 | "dev": true,
2420 | "requires": {
2421 | "fast-diff": "^1.1.2"
2422 | }
2423 | },
2424 | "private": {
2425 | "version": "0.1.8",
2426 | "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
2427 | "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
2428 | "dev": true
2429 | },
2430 | "progress": {
2431 | "version": "2.0.3",
2432 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
2433 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
2434 | "dev": true
2435 | },
2436 | "prop-types": {
2437 | "version": "15.7.2",
2438 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
2439 | "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
2440 | "requires": {
2441 | "loose-envify": "^1.4.0",
2442 | "object-assign": "^4.1.1",
2443 | "react-is": "^16.8.1"
2444 | }
2445 | },
2446 | "punycode": {
2447 | "version": "2.1.1",
2448 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
2449 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
2450 | "dev": true
2451 | },
2452 | "raf": {
2453 | "version": "3.4.1",
2454 | "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
2455 | "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
2456 | "requires": {
2457 | "performance-now": "^2.1.0"
2458 | }
2459 | },
2460 | "react": {
2461 | "version": "16.11.0",
2462 | "resolved": "https://registry.npmjs.org/react/-/react-16.11.0.tgz",
2463 | "integrity": "sha512-M5Y8yITaLmU0ynd0r1Yvfq98Rmll6q8AxaEe88c8e7LxO8fZ2cNgmFt0aGAS9wzf1Ao32NKXtCl+/tVVtkxq6g==",
2464 | "dev": true,
2465 | "requires": {
2466 | "loose-envify": "^1.1.0",
2467 | "object-assign": "^4.1.1",
2468 | "prop-types": "^15.6.2"
2469 | }
2470 | },
2471 | "react-dom": {
2472 | "version": "16.11.0",
2473 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.11.0.tgz",
2474 | "integrity": "sha512-nrRyIUE1e7j8PaXSPtyRKtz+2y9ubW/ghNgqKFHHAHaeP0fpF5uXR+sq8IMRHC+ZUxw7W9NyCDTBtwWxvkb0iA==",
2475 | "dev": true,
2476 | "requires": {
2477 | "loose-envify": "^1.1.0",
2478 | "object-assign": "^4.1.1",
2479 | "prop-types": "^15.6.2",
2480 | "scheduler": "^0.17.0"
2481 | }
2482 | },
2483 | "react-is": {
2484 | "version": "16.11.0",
2485 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.11.0.tgz",
2486 | "integrity": "sha512-gbBVYR2p8mnriqAwWx9LbuUrShnAuSCNnuPGyc7GJrMVQtPDAh8iLpv7FRuMPFb56KkaVZIYSz1PrjI9q0QPCw=="
2487 | },
2488 | "read-pkg": {
2489 | "version": "2.0.0",
2490 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
2491 | "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
2492 | "dev": true,
2493 | "requires": {
2494 | "load-json-file": "^2.0.0",
2495 | "normalize-package-data": "^2.3.2",
2496 | "path-type": "^2.0.0"
2497 | }
2498 | },
2499 | "read-pkg-up": {
2500 | "version": "2.0.0",
2501 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
2502 | "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
2503 | "dev": true,
2504 | "requires": {
2505 | "find-up": "^2.0.0",
2506 | "read-pkg": "^2.0.0"
2507 | }
2508 | },
2509 | "regenerate": {
2510 | "version": "1.4.0",
2511 | "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
2512 | "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
2513 | "dev": true
2514 | },
2515 | "regenerate-unicode-properties": {
2516 | "version": "8.1.0",
2517 | "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz",
2518 | "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==",
2519 | "dev": true,
2520 | "requires": {
2521 | "regenerate": "^1.4.0"
2522 | }
2523 | },
2524 | "regenerator-runtime": {
2525 | "version": "0.13.3",
2526 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz",
2527 | "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==",
2528 | "dev": true
2529 | },
2530 | "regenerator-transform": {
2531 | "version": "0.14.1",
2532 | "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz",
2533 | "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==",
2534 | "dev": true,
2535 | "requires": {
2536 | "private": "^0.1.6"
2537 | }
2538 | },
2539 | "regexpp": {
2540 | "version": "2.0.1",
2541 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
2542 | "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
2543 | "dev": true
2544 | },
2545 | "regexpu-core": {
2546 | "version": "4.6.0",
2547 | "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz",
2548 | "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==",
2549 | "dev": true,
2550 | "requires": {
2551 | "regenerate": "^1.4.0",
2552 | "regenerate-unicode-properties": "^8.1.0",
2553 | "regjsgen": "^0.5.0",
2554 | "regjsparser": "^0.6.0",
2555 | "unicode-match-property-ecmascript": "^1.0.4",
2556 | "unicode-match-property-value-ecmascript": "^1.1.0"
2557 | }
2558 | },
2559 | "regjsgen": {
2560 | "version": "0.5.1",
2561 | "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz",
2562 | "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==",
2563 | "dev": true
2564 | },
2565 | "regjsparser": {
2566 | "version": "0.6.0",
2567 | "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz",
2568 | "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==",
2569 | "dev": true,
2570 | "requires": {
2571 | "jsesc": "~0.5.0"
2572 | },
2573 | "dependencies": {
2574 | "jsesc": {
2575 | "version": "0.5.0",
2576 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
2577 | "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
2578 | "dev": true
2579 | }
2580 | }
2581 | },
2582 | "resolve": {
2583 | "version": "1.12.0",
2584 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
2585 | "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
2586 | "dev": true,
2587 | "requires": {
2588 | "path-parse": "^1.0.6"
2589 | }
2590 | },
2591 | "resolve-from": {
2592 | "version": "4.0.0",
2593 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
2594 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
2595 | "dev": true
2596 | },
2597 | "restore-cursor": {
2598 | "version": "3.1.0",
2599 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
2600 | "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
2601 | "dev": true,
2602 | "requires": {
2603 | "onetime": "^5.1.0",
2604 | "signal-exit": "^3.0.2"
2605 | }
2606 | },
2607 | "rimraf": {
2608 | "version": "3.0.0",
2609 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz",
2610 | "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==",
2611 | "dev": true,
2612 | "requires": {
2613 | "glob": "^7.1.3"
2614 | }
2615 | },
2616 | "rollup": {
2617 | "version": "1.26.3",
2618 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.26.3.tgz",
2619 | "integrity": "sha512-8MhY/M8gnv3Q/pQQSWYWzbeJ5J1C5anCNY5BK1kV8Yzw9RFS0FF4lbLt+uyPO3wLKWXSXrhAL5pWL85TZAh+Sw==",
2620 | "dev": true,
2621 | "requires": {
2622 | "@types/estree": "*",
2623 | "@types/node": "*",
2624 | "acorn": "^7.1.0"
2625 | }
2626 | },
2627 | "rollup-plugin-babel": {
2628 | "version": "4.3.3",
2629 | "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.3.3.tgz",
2630 | "integrity": "sha512-tKzWOCmIJD/6aKNz0H1GMM+lW1q9KyFubbWzGiOG540zxPPifnEAHTZwjo0g991Y+DyOZcLqBgqOdqazYE5fkw==",
2631 | "dev": true,
2632 | "requires": {
2633 | "@babel/helper-module-imports": "^7.0.0",
2634 | "rollup-pluginutils": "^2.8.1"
2635 | }
2636 | },
2637 | "rollup-plugin-commonjs": {
2638 | "version": "10.1.0",
2639 | "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz",
2640 | "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==",
2641 | "dev": true,
2642 | "requires": {
2643 | "estree-walker": "^0.6.1",
2644 | "is-reference": "^1.1.2",
2645 | "magic-string": "^0.25.2",
2646 | "resolve": "^1.11.0",
2647 | "rollup-pluginutils": "^2.8.1"
2648 | }
2649 | },
2650 | "rollup-plugin-node-resolve": {
2651 | "version": "5.2.0",
2652 | "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz",
2653 | "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==",
2654 | "dev": true,
2655 | "requires": {
2656 | "@types/resolve": "0.0.8",
2657 | "builtin-modules": "^3.1.0",
2658 | "is-module": "^1.0.0",
2659 | "resolve": "^1.11.1",
2660 | "rollup-pluginutils": "^2.8.1"
2661 | }
2662 | },
2663 | "rollup-plugin-replace": {
2664 | "version": "2.2.0",
2665 | "resolved": "https://registry.npmjs.org/rollup-plugin-replace/-/rollup-plugin-replace-2.2.0.tgz",
2666 | "integrity": "sha512-/5bxtUPkDHyBJAKketb4NfaeZjL5yLZdeUihSfbF2PQMz+rSTEb8ARKoOl3UBT4m7/X+QOXJo3sLTcq+yMMYTA==",
2667 | "dev": true,
2668 | "requires": {
2669 | "magic-string": "^0.25.2",
2670 | "rollup-pluginutils": "^2.6.0"
2671 | }
2672 | },
2673 | "rollup-pluginutils": {
2674 | "version": "2.8.2",
2675 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
2676 | "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
2677 | "dev": true,
2678 | "requires": {
2679 | "estree-walker": "^0.6.1"
2680 | }
2681 | },
2682 | "run-async": {
2683 | "version": "2.3.0",
2684 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
2685 | "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
2686 | "dev": true,
2687 | "requires": {
2688 | "is-promise": "^2.1.0"
2689 | }
2690 | },
2691 | "rxjs": {
2692 | "version": "6.5.3",
2693 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
2694 | "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
2695 | "dev": true,
2696 | "requires": {
2697 | "tslib": "^1.9.0"
2698 | }
2699 | },
2700 | "safe-buffer": {
2701 | "version": "5.1.2",
2702 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
2703 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
2704 | "dev": true
2705 | },
2706 | "safer-buffer": {
2707 | "version": "2.1.2",
2708 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
2709 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
2710 | "dev": true
2711 | },
2712 | "scheduler": {
2713 | "version": "0.17.0",
2714 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.17.0.tgz",
2715 | "integrity": "sha512-7rro8Io3tnCPuY4la/NuI5F2yfESpnfZyT6TtkXnSWVkcu0BCDJ+8gk5ozUaFaxpIyNuWAPXrH0yFcSi28fnDA==",
2716 | "dev": true,
2717 | "requires": {
2718 | "loose-envify": "^1.1.0",
2719 | "object-assign": "^4.1.1"
2720 | }
2721 | },
2722 | "semver": {
2723 | "version": "5.7.1",
2724 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
2725 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
2726 | "dev": true
2727 | },
2728 | "shallowequal": {
2729 | "version": "1.1.0",
2730 | "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
2731 | "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
2732 | },
2733 | "shebang-command": {
2734 | "version": "1.2.0",
2735 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
2736 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
2737 | "dev": true,
2738 | "requires": {
2739 | "shebang-regex": "^1.0.0"
2740 | }
2741 | },
2742 | "shebang-regex": {
2743 | "version": "1.0.0",
2744 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
2745 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
2746 | "dev": true
2747 | },
2748 | "signal-exit": {
2749 | "version": "3.0.2",
2750 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
2751 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
2752 | "dev": true
2753 | },
2754 | "slice-ansi": {
2755 | "version": "2.1.0",
2756 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
2757 | "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
2758 | "dev": true,
2759 | "requires": {
2760 | "ansi-styles": "^3.2.0",
2761 | "astral-regex": "^1.0.0",
2762 | "is-fullwidth-code-point": "^2.0.0"
2763 | },
2764 | "dependencies": {
2765 | "is-fullwidth-code-point": {
2766 | "version": "2.0.0",
2767 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
2768 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
2769 | "dev": true
2770 | }
2771 | }
2772 | },
2773 | "source-map": {
2774 | "version": "0.5.7",
2775 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
2776 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
2777 | "dev": true
2778 | },
2779 | "sourcemap-codec": {
2780 | "version": "1.4.6",
2781 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz",
2782 | "integrity": "sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg==",
2783 | "dev": true
2784 | },
2785 | "spdx-correct": {
2786 | "version": "3.1.0",
2787 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
2788 | "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
2789 | "dev": true,
2790 | "requires": {
2791 | "spdx-expression-parse": "^3.0.0",
2792 | "spdx-license-ids": "^3.0.0"
2793 | }
2794 | },
2795 | "spdx-exceptions": {
2796 | "version": "2.2.0",
2797 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
2798 | "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
2799 | "dev": true
2800 | },
2801 | "spdx-expression-parse": {
2802 | "version": "3.0.0",
2803 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
2804 | "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
2805 | "dev": true,
2806 | "requires": {
2807 | "spdx-exceptions": "^2.1.0",
2808 | "spdx-license-ids": "^3.0.0"
2809 | }
2810 | },
2811 | "spdx-license-ids": {
2812 | "version": "3.0.5",
2813 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
2814 | "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
2815 | "dev": true
2816 | },
2817 | "sprintf-js": {
2818 | "version": "1.0.3",
2819 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
2820 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
2821 | "dev": true
2822 | },
2823 | "string-width": {
2824 | "version": "4.1.0",
2825 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.1.0.tgz",
2826 | "integrity": "sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==",
2827 | "dev": true,
2828 | "requires": {
2829 | "emoji-regex": "^8.0.0",
2830 | "is-fullwidth-code-point": "^3.0.0",
2831 | "strip-ansi": "^5.2.0"
2832 | }
2833 | },
2834 | "string.prototype.trimleft": {
2835 | "version": "2.1.0",
2836 | "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz",
2837 | "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==",
2838 | "dev": true,
2839 | "requires": {
2840 | "define-properties": "^1.1.3",
2841 | "function-bind": "^1.1.1"
2842 | }
2843 | },
2844 | "string.prototype.trimright": {
2845 | "version": "2.1.0",
2846 | "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz",
2847 | "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==",
2848 | "dev": true,
2849 | "requires": {
2850 | "define-properties": "^1.1.3",
2851 | "function-bind": "^1.1.1"
2852 | }
2853 | },
2854 | "strip-ansi": {
2855 | "version": "5.2.0",
2856 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
2857 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
2858 | "dev": true,
2859 | "requires": {
2860 | "ansi-regex": "^4.1.0"
2861 | }
2862 | },
2863 | "strip-bom": {
2864 | "version": "3.0.0",
2865 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
2866 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
2867 | "dev": true
2868 | },
2869 | "strip-json-comments": {
2870 | "version": "3.0.1",
2871 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
2872 | "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
2873 | "dev": true
2874 | },
2875 | "subscribe-ui-event": {
2876 | "version": "2.0.5",
2877 | "resolved": "https://registry.npmjs.org/subscribe-ui-event/-/subscribe-ui-event-2.0.5.tgz",
2878 | "integrity": "sha512-1DasqBzDgTbkj2Yu0F8atPB6ouvvM5EdUm6zPONO8IZXVr97ommJFTp1yX/HMW5qYw/nc0huJ7r6VkeqixAdgA==",
2879 | "requires": {
2880 | "eventemitter3": "^3.0.0",
2881 | "lodash": "^4.17.10",
2882 | "raf": "^3.0.0"
2883 | }
2884 | },
2885 | "supports-color": {
2886 | "version": "5.5.0",
2887 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
2888 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
2889 | "dev": true,
2890 | "requires": {
2891 | "has-flag": "^3.0.0"
2892 | }
2893 | },
2894 | "table": {
2895 | "version": "5.4.6",
2896 | "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
2897 | "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
2898 | "dev": true,
2899 | "requires": {
2900 | "ajv": "^6.10.2",
2901 | "lodash": "^4.17.14",
2902 | "slice-ansi": "^2.1.0",
2903 | "string-width": "^3.0.0"
2904 | },
2905 | "dependencies": {
2906 | "emoji-regex": {
2907 | "version": "7.0.3",
2908 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
2909 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
2910 | "dev": true
2911 | },
2912 | "is-fullwidth-code-point": {
2913 | "version": "2.0.0",
2914 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
2915 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
2916 | "dev": true
2917 | },
2918 | "string-width": {
2919 | "version": "3.1.0",
2920 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
2921 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
2922 | "dev": true,
2923 | "requires": {
2924 | "emoji-regex": "^7.0.1",
2925 | "is-fullwidth-code-point": "^2.0.0",
2926 | "strip-ansi": "^5.1.0"
2927 | }
2928 | }
2929 | }
2930 | },
2931 | "text-table": {
2932 | "version": "0.2.0",
2933 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
2934 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
2935 | "dev": true
2936 | },
2937 | "through": {
2938 | "version": "2.3.8",
2939 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
2940 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
2941 | "dev": true
2942 | },
2943 | "tmp": {
2944 | "version": "0.0.33",
2945 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
2946 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
2947 | "dev": true,
2948 | "requires": {
2949 | "os-tmpdir": "~1.0.2"
2950 | }
2951 | },
2952 | "to-fast-properties": {
2953 | "version": "2.0.0",
2954 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
2955 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
2956 | "dev": true
2957 | },
2958 | "tslib": {
2959 | "version": "1.10.0",
2960 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
2961 | "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
2962 | "dev": true
2963 | },
2964 | "type-check": {
2965 | "version": "0.3.2",
2966 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
2967 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
2968 | "dev": true,
2969 | "requires": {
2970 | "prelude-ls": "~1.1.2"
2971 | }
2972 | },
2973 | "type-fest": {
2974 | "version": "0.5.2",
2975 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz",
2976 | "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==",
2977 | "dev": true
2978 | },
2979 | "unicode-canonical-property-names-ecmascript": {
2980 | "version": "1.0.4",
2981 | "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
2982 | "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==",
2983 | "dev": true
2984 | },
2985 | "unicode-match-property-ecmascript": {
2986 | "version": "1.0.4",
2987 | "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz",
2988 | "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==",
2989 | "dev": true,
2990 | "requires": {
2991 | "unicode-canonical-property-names-ecmascript": "^1.0.4",
2992 | "unicode-property-aliases-ecmascript": "^1.0.4"
2993 | }
2994 | },
2995 | "unicode-match-property-value-ecmascript": {
2996 | "version": "1.1.0",
2997 | "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz",
2998 | "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==",
2999 | "dev": true
3000 | },
3001 | "unicode-property-aliases-ecmascript": {
3002 | "version": "1.0.5",
3003 | "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz",
3004 | "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==",
3005 | "dev": true
3006 | },
3007 | "uri-js": {
3008 | "version": "4.2.2",
3009 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
3010 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
3011 | "dev": true,
3012 | "requires": {
3013 | "punycode": "^2.1.0"
3014 | }
3015 | },
3016 | "v8-compile-cache": {
3017 | "version": "2.1.0",
3018 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz",
3019 | "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==",
3020 | "dev": true
3021 | },
3022 | "validate-npm-package-license": {
3023 | "version": "3.0.4",
3024 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
3025 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
3026 | "dev": true,
3027 | "requires": {
3028 | "spdx-correct": "^3.0.0",
3029 | "spdx-expression-parse": "^3.0.0"
3030 | }
3031 | },
3032 | "which": {
3033 | "version": "1.3.1",
3034 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
3035 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
3036 | "dev": true,
3037 | "requires": {
3038 | "isexe": "^2.0.0"
3039 | }
3040 | },
3041 | "word-wrap": {
3042 | "version": "1.2.3",
3043 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
3044 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
3045 | "dev": true
3046 | },
3047 | "wrappy": {
3048 | "version": "1.0.2",
3049 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
3050 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
3051 | "dev": true
3052 | },
3053 | "write": {
3054 | "version": "1.0.3",
3055 | "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
3056 | "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
3057 | "dev": true,
3058 | "requires": {
3059 | "mkdirp": "^0.5.1"
3060 | }
3061 | }
3062 | }
3063 | }
3064 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-stickynode-update",
3 | "version": "1.0.0",
4 | "description": "A performant and comprehensive React sticky component.",
5 | "main": "./lib/index.js",
6 | "module": "./es/index.js",
7 | "repository": {
8 | "type": "git",
9 | "url": "git+https://github.com/ahmadHuss/react-stickynode-update.git"
10 | },
11 | "keywords": [
12 | "react",
13 | "ui",
14 | "react-sticky",
15 | "web"
16 | ],
17 | "author": "Ahmad Hussnain",
18 | "email": "ahmadhussnain750@gmail.com",
19 | "license": "MIT",
20 | "bugs": {
21 | "url": "https://github.com/ahmadHuss/react-stickynode-update/issues"
22 | },
23 | "homepage": "https://github.com/ahmadHuss/react-stickynode-update#readme",
24 | "peerDependencies": {
25 | "react": "^16.11.0",
26 | "react-dom": "^16.11.0"
27 | },
28 | "dependencies": {
29 | "classnames": "^2.2.6",
30 | "object-assign": "^4.1.1",
31 | "prop-types": "^15.7.2",
32 | "shallowequal": "^1.1.0",
33 | "subscribe-ui-event": "^2.0.5"
34 | },
35 | "devDependencies": {
36 | "@babel/core": "^7.6.4",
37 | "@babel/plugin-proposal-class-properties": "^7.5.5",
38 | "@babel/plugin-proposal-export-default-from": "^7.5.2",
39 | "@babel/plugin-proposal-export-namespace-from": "^7.5.2",
40 | "@babel/plugin-proposal-object-rest-spread": "^7.6.2",
41 | "@babel/plugin-transform-runtime": "^7.6.2",
42 | "@babel/preset-env": "^7.6.3",
43 | "@babel/preset-react": "^7.6.3",
44 | "babel-eslint": "^10.0.3",
45 | "eslint": "^6.6.0",
46 | "eslint-config-prettier": "^6.5.0",
47 | "eslint-plugin-import": "^2.18.2",
48 | "eslint-plugin-jsx-a11y": "^6.2.3",
49 | "eslint-plugin-prettier": "^3.1.1",
50 | "eslint-plugin-react": "^7.16.0",
51 | "eslint-plugin-react-hooks": "^2.2.0",
52 | "prettier": "^1.18.2",
53 | "react": "^16.11.0",
54 | "react-dom": "^16.11.0",
55 | "rimraf": "^3.0.0",
56 | "rollup": "^1.26.0",
57 | "rollup-plugin-babel": "^4.3.3",
58 | "rollup-plugin-commonjs": "^10.1.0",
59 | "rollup-plugin-node-resolve": "^5.2.0",
60 | "rollup-plugin-replace": "^2.2.0"
61 | },
62 | "scripts": {
63 | "clean": "rimraf lib es",
64 | "lint": "eslint --ignore-path .gitignore --fix -- .",
65 | "pretest": "npm run clean && npm run lint",
66 | "build": "rollup -c"
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/rollup.config.js:
--------------------------------------------------------------------------------
1 | import nodeResolve from 'rollup-plugin-node-resolve';
2 | import commonjs from 'rollup-plugin-commonjs';
3 | import babel from 'rollup-plugin-babel';
4 | import pkg from './package.json';
5 |
6 | const baseConfig = {
7 | input: './src/index.js',
8 | plugins: [
9 | nodeResolve(),
10 | commonjs({
11 | include: 'node_modules/**', // Workaround for: https://github.com/rollup/rollup-plugin-commonjs/issues/247
12 | }),
13 | babel({
14 | comments: false,
15 | runtimeHelpers: true,
16 | presets: ['@babel/preset-env', '@babel/preset-react'],
17 | }),
18 | ],
19 | external: [...Object.keys(pkg.dependencies), ...Object.keys(pkg.peerDependencies)],
20 | };
21 |
22 | export default [
23 | Object.assign(
24 | {
25 | output: {
26 | file: pkg.main,
27 | format: 'cjs',
28 | },
29 | },
30 | baseConfig,
31 | ),
32 | Object.assign(
33 | {
34 | output: {
35 | file: 'es/index.js',
36 | format: 'esm',
37 | },
38 | },
39 | baseConfig,
40 | ),
41 | ];
42 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | //#region Global imports
2 | import React, { Component } from 'react';
3 | import PropTypes from 'prop-types';
4 | import { subscribe } from 'subscribe-ui-event';
5 | import classNames from 'classnames';
6 | import shallowEqual from 'shallowequal';
7 | //#endregion Global imports
8 |
9 | const propTypes = {
10 | /** A switch to enable or disable Sticky (true by default). */
11 | enabled: PropTypes.bool,
12 | /**
13 | * A top offset px for Sticky. Could be a selector representing a node whose height should serve as the top offset.
14 | * The value will be add on translate3d(0,top,0) property.
15 | */
16 | top: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
17 | /**
18 | * A bottom boundary px on document where Sticky will stop. Could be a selector representing a node
19 | * whose bottom should serve as the bottom boundary.
20 | */
21 | bottomBoundary: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
22 | /** Enable the use of CSS3 transforms (true by default). */
23 | enableTransforms: PropTypes.bool,
24 | /** Class name to be applied to the element when the sticky state is active (active by default). */
25 | activeClass: PropTypes.string,
26 | /** Class name to be applied to the element when the sticky state is released (released by default). */
27 | releasedClass: PropTypes.string,
28 | /**
29 | * You can be notified when the state of the sticky component changes by passing a callback to the onStateChange
30 | * prop. The callback will receive an object in the format {status: CURRENT_STATUS}.
31 | */
32 | onStateChange: PropTypes.func,
33 | /** Callback to indicate when the sticky plugin should freeze position and ignore scroll/resize events. */
34 | shouldFreeze: PropTypes.func,
35 | /** z-index of the sticky. */
36 | innerZ: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
37 | };
38 |
39 | const defaultProps = {
40 | /**
41 | * You can provide a function in the shouldFreeze prop which will tell the component to temporarily stop
42 | * updating during prop and state changes, as well as ignore scroll and resize events. This function should
43 | * return a boolean indicating whether the component should currently be frozen.
44 | */
45 | shouldFreeze: function() {
46 | return false;
47 | },
48 | /** A switch to enable or disable Sticky (true by default). */
49 | enabled: true,
50 | /**
51 | * A top offset px for Sticky. Could be a selector representing a node whose height should serve as the top offset.
52 | * The value will be add on translate3d(0,top,0) property.
53 | */
54 | top: 0,
55 | /**
56 | * A bottom boundary px on document where Sticky will stop. Could be a selector representing a node
57 | * whose bottom should serve as the bottom boundary.
58 | */
59 | bottomBoundary: 0,
60 | /** Enable the use of CSS3 transforms (true by default). */
61 | enableTransforms: true,
62 | /** Class name to be applied to the element when the sticky state is active (active by default). */
63 | activeClass: 'active',
64 | /** Class name to be applied to the element when the sticky state is released (released by default). */
65 | releasedClass: 'released',
66 | /**
67 | * You can be notified when the state of the sticky component changes by passing a callback to the onStateChange
68 | * prop. The callback will receive an object in the format {status: CURRENT_STATUS}.
69 | */
70 | onStateChange: null,
71 | };
72 |
73 | //-----------------------------------------------------------
74 | // Global Constant
75 | //-----------------------------------------------------------
76 |
77 | const STATUS_ORIGINAL = 0; // The default status, locating at the original position.
78 | const STATUS_RELEASED = 1; // The released status, locating at somewhere on document but not default one.
79 | const STATUS_FIXED = 2; // The sticky status, locating fixed to the top or the bottom of screen.
80 |
81 | //-----------------------------------------------------------
82 | // Global variable for all instances
83 | //-----------------------------------------------------------
84 |
85 | let TRANSFORM_PROP = 'transform';
86 | let doc;
87 | let docBody;
88 | let docEl;
89 | let canEnableTransforms = true; // Use transform by default, so no Sticky on lower-end browser when no Modernizr
90 | let M;
91 | let scrollDelta = 0; // scrollDelta is the distance scroll view has made since the last update.
92 | let win;
93 | let winHeight = -1;
94 |
95 | class Sticky extends Component {
96 | //-----------------------------------------------------------
97 | // Properties of the component
98 | //-----------------------------------------------------------
99 |
100 | _delta = 0; // Delta means change.
101 | _stickyTop = 0;
102 | _stickyBottom = 0;
103 |
104 | _frozen = false; // Used in only handleScrollStart .
105 | _skipNextScrollEvent = false; // Used in only handleScrollStart and handleScroll function.
106 | _scrollTop = -1; // Used in various places.
107 |
108 | _bottomBoundaryTarget;
109 | _topTarget;
110 | _subscribers;
111 |
112 | //-----------------------------------------------------------
113 | // Getter and Setter for properties
114 | //-----------------------------------------------------------
115 |
116 | /**
117 | * @returns {number}
118 | */
119 | get delta() {
120 | return this._delta;
121 | }
122 |
123 | /**
124 | * @param value
125 | */
126 | set delta(value) {
127 | this._delta = value;
128 | }
129 |
130 | /**
131 | * @returns {number}
132 | */
133 | get stickyTop() {
134 | return this._stickyTop;
135 | }
136 |
137 | /**
138 | * @param value
139 | */
140 | set stickyTop(value) {
141 | this._stickyTop = value;
142 | }
143 |
144 | /**
145 | * @returns {number}
146 | */
147 | get stickyBottom() {
148 | return this._stickyBottom;
149 | }
150 |
151 | /**
152 | * @param value
153 | */
154 | set stickyBottom(value) {
155 | this._stickyBottom = value;
156 | }
157 |
158 | /**
159 | * @returns {boolean}
160 | */
161 | get frozen() {
162 | return this._frozen;
163 | }
164 |
165 | /**
166 | * @param value
167 | */
168 | set frozen(value) {
169 | this._frozen = value;
170 | }
171 |
172 | /**
173 | * @returns {boolean}
174 | */
175 | get skipNextScrollEvent() {
176 | return this._skipNextScrollEvent;
177 | }
178 |
179 | /**
180 | * @param value
181 | */
182 | set skipNextScrollEvent(value) {
183 | this._skipNextScrollEvent = value;
184 | }
185 |
186 | /**
187 | * @returns {number}
188 | */
189 | get scrollTop() {
190 | return this._scrollTop;
191 | }
192 |
193 | /**
194 | * @param value
195 | */
196 | set scrollTop(value) {
197 | this._scrollTop = value;
198 | }
199 |
200 | /**
201 | * @returns {*}
202 | */
203 | get bottomBoundaryTarget() {
204 | return this._bottomBoundaryTarget;
205 | }
206 |
207 | /**
208 | * @param value
209 | */
210 | set bottomBoundaryTarget(value) {
211 | this._bottomBoundaryTarget = value;
212 | }
213 |
214 | /**
215 | * @returns {*}
216 | */
217 | get topTarget() {
218 | return this._topTarget;
219 | }
220 |
221 | /**
222 | * @param value
223 | */
224 | set topTarget(value) {
225 | this._topTarget = value;
226 | }
227 |
228 | /**
229 | * @returns {*}
230 | */
231 | get subscribers() {
232 | return this._subscribers;
233 | }
234 |
235 | /**
236 | * @param value
237 | */
238 | set subscribers(value) {
239 | this._subscribers = value;
240 | }
241 |
242 | //-----------------------------------------------------------
243 | // State of the component
244 | //-----------------------------------------------------------
245 |
246 | /**
247 | * State of the component
248 | * @type {{topBoundary: number, bottomBoundary: *, top: number, pos: number, bottom: number, width: number, x: number, y: number, height: number, status: *, activated: boolean}}
249 | */
250 | state = {
251 | top: 0, // A top offset from viewport top where Sticky sticks to when scrolling up
252 | bottom: 0, // A bottom offset from viewport top where Sticky sticks to when scrolling down
253 | width: 0, // Sticky width
254 | height: 0, // Sticky height
255 | x: 0, // The original x of Sticky
256 | y: 0, // The original y of Sticky
257 | topBoundary: 0, // The top boundary on document
258 | bottomBoundary: Infinity, // The bottom boundary on document
259 | status: STATUS_ORIGINAL, // The Sticky status
260 | pos: 0, // Real y-axis offset for rendering position-fixed and position-relative
261 | activated: false, // once browser info is available after mounted, it becomes true to avoid checksum error
262 | };
263 |
264 | //-----------------------------------------------------------
265 | // Methods
266 | //-----------------------------------------------------------
267 |
268 | /**
269 | * Update the initial position, width, and height. It should update whenever children change.
270 | * @param {Object} [options] - optional top and bottomBoundary new values
271 | */
272 | updateInitialDimension(options) {
273 | options = options || {};
274 |
275 | let outerRect = this.outerElement.getBoundingClientRect();
276 | let innerRect = this.innerElement.getBoundingClientRect();
277 |
278 | let width = outerRect.width || outerRect.right - outerRect.left;
279 | let height = innerRect.height || innerRect.bottom - innerRect.top;
280 | let outerY = outerRect.top + this.scrollTop;
281 |
282 | this.setState({
283 | top: this.getTopPosition(options.top),
284 | bottom: Math.min(this.state.top + height, winHeight),
285 | width: width,
286 | height: height,
287 | x: outerRect.left,
288 | y: outerY,
289 | bottomBoundary: this.getBottomBoundary(options.bottomBoundary),
290 | topBoundary: outerY,
291 | });
292 | }
293 |
294 | /**
295 | * Update Sticky position.
296 | */
297 | update() {
298 | let disabled =
299 | !this.props.enabled ||
300 | this.state.bottomBoundary - this.state.topBoundary <= this.state.height ||
301 | (this.state.width === 0 && this.state.height === 0);
302 |
303 | if (disabled) {
304 | if (this.state.status !== STATUS_ORIGINAL) {
305 | this.reset();
306 | }
307 | return;
308 | }
309 |
310 | let delta = scrollDelta;
311 | // "top" and "bottom" are the positions that this.state.top and this.state.bottom project
312 | // on document from viewport.
313 | let top = this.scrollTop + this.state.top;
314 | let bottom = this.scrollTop + this.state.bottom;
315 |
316 | // There are 2 principles to make sure Sticky won't get wrong so much:
317 | // 1. Reset Sticky to the original postion when "top" <= topBoundary
318 | // 2. Release Sticky to the bottom boundary when "bottom" >= bottomBoundary
319 | if (top <= this.state.topBoundary) {
320 | // #1
321 | this.reset();
322 | } else if (bottom >= this.state.bottomBoundary) {
323 | // #2
324 | this.stickyBottom = this.state.bottomBoundary;
325 | this.stickyTop = this.stickyBottom - this.state.height;
326 | this.release(this.stickyTop);
327 | } else {
328 | if (this.state.height > winHeight - this.state.top) {
329 | // In this case, Sticky is higher then viewport minus top offset
330 | switch (this.state.status) {
331 | case STATUS_ORIGINAL:
332 | this.release(this.state.y);
333 | this.stickyTop = this.state.y;
334 | this.stickyBottom = this.stickyTop + this.state.height;
335 | // Commentting out "break" is on purpose, because there is a chance to transit to FIXED
336 | // from ORIGINAL when calling window.scrollTo().
337 | // break;
338 | // eslint-disable-next-line no-fallthrough
339 | case STATUS_RELEASED:
340 | // If "top" and "bottom" are inbetween stickyTop and stickyBottom, then Sticky is in
341 | // RELEASE status. Otherwise, it changes to FIXED status, and its bottom sticks to
342 | // viewport bottom when scrolling down, or its top sticks to viewport top when scrolling up.
343 | this.stickyBottom = this.stickyTop + this.state.height;
344 | if (delta > 0 && bottom > this.stickyBottom) {
345 | this.fix(this.state.bottom - this.state.height);
346 | } else if (delta < 0 && top < this.stickyTop) {
347 | this.fix(this.state.top);
348 | }
349 | break;
350 | case STATUS_FIXED:
351 | // eslint-disable-next-line no-case-declarations
352 | let toRelease = true;
353 | // eslint-disable-next-line no-case-declarations
354 | let pos = this.state.pos;
355 | // eslint-disable-next-line no-case-declarations
356 | let height = this.state.height;
357 | // In regular cases, when Sticky is in FIXED status,
358 | // 1. it's top will stick to the screen top,
359 | // 2. it's bottom will stick to the screen bottom,
360 | // 3. if not the cases above, then it's height gets changed
361 | if (delta > 0 && pos === this.state.top) {
362 | // case 1, and scrolling down
363 | this.stickyTop = top - delta;
364 | this.stickyBottom = this.stickyTop + height;
365 | } else if (delta < 0 && pos === this.state.bottom - height) {
366 | // case 2, and scrolling up
367 | this.stickyBottom = bottom - delta;
368 | this.stickyTop = this.stickyBottom - height;
369 | } else if (pos !== this.state.bottom - height && pos !== this.state.top) {
370 | // case 3
371 | // This case only happens when Sticky's bottom sticks to the screen bottom and
372 | // its height gets changed. Sticky should be in RELEASE status and update its
373 | // sticky bottom by calculating how much height it changed.
374 | let deltaHeight = pos + height - this.state.bottom;
375 | this.stickyBottom = bottom - delta + deltaHeight;
376 | this.stickyTop = this.stickyBottom - height;
377 | } else {
378 | toRelease = false;
379 | }
380 |
381 | if (toRelease) {
382 | this.release(this.stickyTop);
383 | }
384 | break;
385 | default:
386 | break;
387 | }
388 | } else {
389 | // In this case, Sticky is shorter then viewport minus top offset
390 | // and will always fix to the top offset of viewport
391 | this.fix(this.state.top);
392 | }
393 | }
394 | this.delta = delta;
395 | }
396 |
397 | //-----------------------------------------------------------
398 | // Event listeners for events like
399 | // scroll start, scroll and resize
400 | //-----------------------------------------------------------
401 |
402 | /**
403 | * This function will only execute when user first start to scroll.
404 | * @param event - event is the native event object.
405 | * @param payload is the additional information also known as AugmentedEvent.
406 | */
407 | handleScrollStart(event, payload) {
408 | this.frozen = this.props.shouldFreeze();
409 |
410 | if (this.frozen) {
411 | return;
412 | }
413 |
414 | if (this.scrollTop === payload.scroll.top) {
415 | // Scroll position hasn't changed,
416 | // do nothing
417 | this.skipNextScrollEvent = true;
418 | } else {
419 | this.scrollTop = payload.scroll.top;
420 | this.updateInitialDimension();
421 | }
422 | }
423 |
424 | /**
425 | * This function will execute when user start to scroll.
426 | * @param event - event is the native event object
427 | * @param payload is the additional information also known as AugmentedEvent.
428 | */
429 | handleScroll(event, payload) {
430 | // Scroll doesn't need to be handled
431 | if (this.skipNextScrollEvent) {
432 | this.skipNextScrollEvent = false;
433 | return;
434 | }
435 |
436 | scrollDelta = payload.scroll.delta;
437 | this.scrollTop = payload.scroll.top;
438 | this.update();
439 | }
440 |
441 | /**
442 | * This function will execute when user resize the window.
443 | * @param event - event is the native event object
444 | * @param payload - payload is the additional information also known as AugmentedEvent.
445 | */
446 | handleResize(event, payload) {
447 | if (this.props.shouldFreeze()) {
448 | return;
449 | }
450 |
451 | winHeight = payload.resize.height;
452 | this.updateInitialDimension();
453 | this.update();
454 | }
455 |
456 | //-----------------------------------------------------------
457 | // These functions will execute to set some initial values
458 | // based on the props.
459 | //-----------------------------------------------------------
460 |
461 | /**
462 | * Get viewable height of an element in pixels, including padding, border and scrollbar, but not the margin.
463 | * @param target
464 | * @returns {number}
465 | */
466 | getTargetHeight = target => (target && target.offsetHeight) || 0;
467 |
468 | /**
469 | * A top offset px for Sticky.
470 | * @param {number/string} top
471 | * @returns {*|number|Window}
472 | */
473 | getTopPosition(top) {
474 | // TODO, topTarget is for current layout, may remove
475 | // a top argument can be provided to override reading from the props
476 | // eslint-disable-next-line react/prop-types
477 | top = top || this.props.top || this.props.topTarget || 0;
478 | // Case for string
479 | if (typeof top === 'string') {
480 | if (!this.topTarget) {
481 | this.topTarget = doc.querySelector(top);
482 | }
483 | top = this.getTargetHeight(this.topTarget);
484 | }
485 | // Case for number and string
486 | return top;
487 | }
488 |
489 | /**
490 | * A bottom boundary px on document where Sticky will stop.
491 | * @param bottomBoundary
492 | * @returns {number}
493 | */
494 | getBottomBoundary(bottomBoundary) {
495 | // a bottomBoundary can be provided to avoid reading from the props
496 | let boundary = bottomBoundary || this.props.bottomBoundary;
497 |
498 | // TODO, bottomBoundary was an object, depricate it later.
499 | if (typeof boundary === 'object') {
500 | boundary = boundary.value || boundary.target || 0;
501 | }
502 | // Case for string
503 | if (typeof boundary === 'string') {
504 | if (!this.bottomBoundaryTarget) {
505 | this.bottomBoundaryTarget = doc.querySelector(boundary);
506 | }
507 | boundary = this.getTargetBottom(this.bottomBoundaryTarget);
508 | }
509 |
510 | // Case for string and number
511 | return boundary && boundary > 0 ? boundary : Infinity;
512 | }
513 |
514 | /**
515 | * Get bottom target, get value of the bottom position and add scrollTop
516 | * @param target
517 | * @returns {number}
518 | */
519 | getTargetBottom(target) {
520 | if (!target) {
521 | return -1;
522 | }
523 | let rect = target.getBoundingClientRect();
524 | return this.scrollTop + rect.bottom;
525 | }
526 |
527 | //-----------------------------------------------------------
528 | // Functions for set scroll status
529 | //-----------------------------------------------------------
530 |
531 | /**
532 | * Reset The default status, locating at the original position.
533 | */
534 | reset() {
535 | this.setState({
536 | status: STATUS_ORIGINAL,
537 | pos: 0,
538 | });
539 | }
540 |
541 | /**
542 | * Release The released status, locating at somewhere on document but not default one.
543 | * @param pos
544 | */
545 | release(pos) {
546 | this.setState({
547 | status: STATUS_RELEASED,
548 | pos: pos - this.state.y,
549 | });
550 | }
551 |
552 | /**
553 | * Fix The sticky status, locating fixed to the top or the bottom of screen.
554 | * @param pos
555 | */
556 | fix(pos) {
557 | this.setState({
558 | status: STATUS_FIXED,
559 | pos: pos,
560 | });
561 | }
562 |
563 | //-----------------------------------------------------------
564 | // Component lifecycle method
565 | //-----------------------------------------------------------
566 |
567 | // eslint-disable-next-line no-unused-vars
568 | shouldComponentUpdate(nextProps, nextState, nextContext) {
569 | /**
570 | * shallowEqual():
571 | * The equality is performed by iterating through keys on the given value,
572 | * and returning false whenever any key has values that are not strictly equal between value and other.
573 | * Otherwise, return true whenever the values of all keys are strictly equal.
574 | */
575 | // Component update if it is undefined
576 | let shouldFreeze = this.props.shouldFreeze();
577 | // shallowEqualThisPropsNextProps ==> If this.props and nextProps are strictly equal
578 | let shallowEqualThisPropsNextProps = shallowEqual(this.props, nextProps);
579 | // shallowEqualThisStateNextState ==> If this.state and nextState are strictly equal
580 | let shallowEqualThisStateNextState = shallowEqual(this.state, nextState);
581 |
582 | // If current props shouldFreeze() is not undefined && shallowEqualThisPropsNextProps, shallowEqualThisStateNextState
583 | // are not strictly equal it means component will not update.
584 | let result =
585 | !shouldFreeze && !(shallowEqualThisPropsNextProps && shallowEqualThisStateNextState);
586 | return result;
587 | }
588 |
589 | // eslint-disable-next-line no-unused-vars
590 | componentDidUpdate(prevProps, prevState, snapshot) {
591 | if (prevState.status !== this.state.status && this.props.onStateChange) {
592 | this.props.onStateChange({ status: this.state.status });
593 | }
594 | // if the props for enabling are toggled, then trigger the update or reset depending on the current props
595 | if (prevProps.enabled !== this.props.enabled) {
596 | if (this.props.enabled) {
597 | this.setState({ activated: true }, () => {
598 | this.updateInitialDimension();
599 | this.update();
600 | });
601 | } else {
602 | this.setState({ activated: false }, () => {
603 | this.reset();
604 | });
605 | }
606 | }
607 | }
608 |
609 | componentDidMount() {
610 | // Only initialize the globals if this is the first
611 | // time this component type has been mounted
612 | if (!win) {
613 | win = window;
614 | doc = document;
615 | docEl = doc.documentElement;
616 | docBody = doc.body;
617 | winHeight = win.innerHeight || docEl.clientHeight;
618 | M = window.Modernizr;
619 | // No Sticky on lower-end browser when no Modernizr
620 | if (M && M.prefixed) {
621 | canEnableTransforms = M.csstransforms3d;
622 | TRANSFORM_PROP = M.prefixed('transform');
623 | }
624 | }
625 |
626 | // when mount, the scrollTop is not necessary on the top
627 | this.scrollTop = docBody.scrollTop + docEl.scrollTop;
628 |
629 | if (this.props.enabled) {
630 | this.setState({ activated: true });
631 | this.updateInitialDimension();
632 | this.update();
633 | }
634 | // bind the listeners regardless if initially enabled - allows the component to toggle sticky functionality
635 | this.subscribers = [
636 | subscribe('scrollStart', this.handleScrollStart.bind(this), { useRAF: true }),
637 | subscribe('scroll', this.handleScroll.bind(this), {
638 | useRAF: true,
639 | enableScrollInfo: true,
640 | }),
641 | subscribe('resize', this.handleResize.bind(this), { enableResizeInfo: true }),
642 | ];
643 | }
644 |
645 | componentWillUnmount() {
646 | let subscribers = this.subscribers || [];
647 | for (let i = subscribers.length - 1; i >= 0; i--) {
648 | this.subscribers[i].unsubscribe();
649 | }
650 | }
651 |
652 | //-----------------------------------------------------------
653 | // Translate function
654 | //-----------------------------------------------------------
655 |
656 | /**
657 | * @param {Object} style - Inline styles
658 | * @param pos - Real y-axis offset for rendering position-fixed and position-relative
659 | */
660 | translate(style, pos) {
661 | let enableTransforms = canEnableTransforms && this.props.enableTransforms;
662 | if (enableTransforms && this.state.activated) {
663 | style[TRANSFORM_PROP] = 'translate3d(0,' + Math.round(pos) + 'px,0)';
664 | } else {
665 | style.top = pos + 'px';
666 | }
667 | }
668 |
669 | render() {
670 | // outerStyle height
671 | let outerStyle = {};
672 |
673 | //-----------------------------------------------------------
674 | // Inline styles
675 | //-----------------------------------------------------------
676 |
677 | // TODO, "overflow: auto" prevents collapse, need a good way to get children height
678 | let innerStyle = {
679 | position: this.state.status === STATUS_FIXED ? 'fixed' : 'relative',
680 | top: this.state.status === STATUS_FIXED ? '0' : '',
681 | zIndex: this.props.innerZ,
682 | };
683 |
684 | // always use translate3d to enhance the performance
685 | this.translate(innerStyle, this.state.pos);
686 |
687 | if (this.state.status !== STATUS_ORIGINAL) {
688 | innerStyle.width = this.state.width + 'px';
689 | outerStyle.height = this.state.height + 'px';
690 | }
691 |
692 | //-----------------------------------------------------------
693 | // Classes
694 | //-----------------------------------------------------------
695 |
696 | // eslint-disable-next-line react/prop-types
697 | let outerClasses = classNames('sticky-outer-wrapper', this.props.className, {
698 | [this.props.activeClass]: this.state.status === STATUS_FIXED,
699 | [this.props.releasedClass]: this.state.status === STATUS_RELEASED,
700 | });
701 |
702 | // eslint-disable-next-line react/prop-types
703 | let children = this.props.children;
704 |
705 | return (
706 |
{
708 | this.outerElement = outer;
709 | }}
710 | className={outerClasses}
711 | style={outerStyle}
712 | >
713 |
{
715 | this.innerElement = inner;
716 | }}
717 | className="sticky-inner-wrapper"
718 | style={innerStyle}
719 | >
720 | {typeof children === 'function'
721 | ? children({ status: this.state.status })
722 | : children}
723 |
724 |
725 | );
726 | }
727 | }
728 |
729 | Sticky.propTypes = propTypes;
730 | Sticky.defaultProps = defaultProps;
731 | Sticky.STATUS_ORIGINAL = STATUS_ORIGINAL;
732 | Sticky.STATUS_RELEASED = STATUS_RELEASED;
733 | Sticky.STATUS_FIXED = STATUS_FIXED;
734 | export default Sticky;
735 | //#endregion Component
736 |
--------------------------------------------------------------------------------
/tests/soon-uploaded:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tedster0629/react-stickynode/d6f4daaa94fa53905b28a5702900124927c45c22/tests/soon-uploaded
--------------------------------------------------------------------------------