├── .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 --------------------------------------------------------------------------------