├── .gitignore ├── .npmignore ├── LICENSE ├── README.md ├── demo.gif ├── jest.config.js ├── package.json ├── pnpm-lock.yaml ├── preview ├── index.tsx ├── package.json └── tsconfig.json ├── setup.d.ts ├── setup.js ├── setup.mjs ├── src ├── analyze-component.spec.ts ├── analyze-component.ts ├── extract-component.spec.ts ├── extract-component.ts ├── index.ts ├── optimize-deps-plugin.ts └── special-types.ts └── tsconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .turbo 3 | dist/ 4 | node_modules/ 5 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .turbo 3 | node_modules/ 4 | README.md 5 | demo.gif -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Zenc Labs Pty Ltd 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## [This repository has now been merged into the Preview.js monorepo](https://github.com/fwouts/previewjs) 2 | 3 | # SolidJS plugin for Preview.js 4 | 5 | This is a plugin for [Preview.js](https://previewjs.com) that adds support for previewing SolidJS components. 6 | 7 | This includes: 8 | 9 | - detecting SolidJS components (and Storybook stories) 10 | - previewing them with instant refresh 11 | - extracting their props types to let Preview.js auto-generate valid properties for them 12 | - configuring custom previews [similarly to React](https://previewjs.com/docs/features/custom-previews) 13 | 14 | ## Demo 15 | 16 | ![Demo](demo.gif) 17 | 18 | ## Try it 19 | 20 | This plugin was released as part of [Preview.js](https://previewjs.com) since v1.6.0. You don't need to install anything! 21 | -------------------------------------------------------------------------------- /demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fwouts/previewjs-solid-plugin/e94e6947c77dfbe2894926d4245b129122b91e9e/demo.gif -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */ 2 | module.exports = { 3 | preset: "ts-jest", 4 | testEnvironment: "node", 5 | testPathIgnorePatterns: ["/dist/", "/node_modules/"], 6 | }; 7 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@previewjs/plugin-solid", 3 | "version": "1.0.2", 4 | "description": "SolidJS plugin for Preview.js enabling instant preview of SolidJS components and stories", 5 | "info": "A framework plugin for Preview.js that enables instant preview and update-as-you-type of SolidJS components and stories with auto-generated properties and configurable custom previews, so you can iterate on any component without ever leaving your IDE", 6 | "keywords": [ 7 | "solidhack", 8 | "best_ecosystem" 9 | ], 10 | "license": "MIT", 11 | "author": { 12 | "name": "François Wouts", 13 | "email": "f@zenc.io" 14 | }, 15 | "contributors": [ 16 | { 17 | "name": "François Wouts", 18 | "email": "f@zenc.io", 19 | "url": "https://fwouts.com" 20 | } 21 | ], 22 | "repository": { 23 | "type": "git", 24 | "url": "https://github.com/fwouts/previewjs" 25 | }, 26 | "bugs": { 27 | "url": "https://github.com/fwouts/previewjs/issues" 28 | }, 29 | "homepage": "https://previewjs.com", 30 | "sideEffects": false, 31 | "type": "commonjs", 32 | "main": "./dist/index.js", 33 | "exports": { 34 | ".": { 35 | "default": "./dist/index.js" 36 | }, 37 | "./setup": { 38 | "module": "./setup.mjs", 39 | "default": "./setup.js" 40 | } 41 | }, 42 | "scripts": { 43 | "prepublish": "pnpm build", 44 | "build": "rimraf dist && tsc", 45 | "test": "jest" 46 | }, 47 | "dependencies": { 48 | "@previewjs/type-analyzer": "^2", 49 | "@previewjs/vfs": "^1", 50 | "fs-extra": "^10", 51 | "typescript": "^4", 52 | "vite-plugin-solid": "^2" 53 | }, 54 | "devDependencies": { 55 | "@previewjs/core": "^2", 56 | "@types/fs-extra": "9.0.13", 57 | "@types/jest": "27.4.1", 58 | "jest": "28.0.0-alpha.7", 59 | "lodash": "^4.17.21", 60 | "rimraf": "3.0.2", 61 | "solid-js": "1.3.13", 62 | "ts-jest": "27.1.4", 63 | "vite": "2.9.1" 64 | }, 65 | "packageManager": "pnpm@6.32.4" 66 | } 67 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.3 2 | 3 | specifiers: 4 | '@previewjs/core': ^2 5 | '@previewjs/type-analyzer': ^2 6 | '@previewjs/vfs': ^1 7 | '@types/fs-extra': 9.0.13 8 | '@types/jest': 27.4.1 9 | fs-extra: ^10 10 | jest: 28.0.0-alpha.7 11 | lodash: ^4.17.21 12 | rimraf: 3.0.2 13 | solid-js: 1.3.13 14 | ts-jest: 27.1.4 15 | typescript: ^4 16 | vite: 2.9.1 17 | vite-plugin-solid: ^2 18 | 19 | dependencies: 20 | '@previewjs/type-analyzer': 2.0.2 21 | '@previewjs/vfs': 1.1.3 22 | fs-extra: 10.0.1 23 | typescript: 4.6.3 24 | vite-plugin-solid: 2.2.6 25 | 26 | devDependencies: 27 | '@previewjs/core': 2.0.0 28 | '@types/fs-extra': 9.0.13 29 | '@types/jest': 27.4.1 30 | jest: 28.0.0-alpha.7 31 | lodash: 4.17.21 32 | rimraf: 3.0.2 33 | solid-js: 1.3.13 34 | ts-jest: 27.1.4_6b0a3092d4d82c29d635032cdbc904fd 35 | vite: 2.9.1 36 | 37 | packages: 38 | 39 | /@ampproject/remapping/2.1.2: 40 | resolution: {integrity: sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==} 41 | engines: {node: '>=6.0.0'} 42 | dependencies: 43 | '@jridgewell/trace-mapping': 0.3.4 44 | 45 | /@babel/code-frame/7.16.7: 46 | resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} 47 | engines: {node: '>=6.9.0'} 48 | dependencies: 49 | '@babel/highlight': 7.16.10 50 | 51 | /@babel/compat-data/7.17.7: 52 | resolution: {integrity: sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==} 53 | engines: {node: '>=6.9.0'} 54 | 55 | /@babel/core/7.17.8: 56 | resolution: {integrity: sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==} 57 | engines: {node: '>=6.9.0'} 58 | dependencies: 59 | '@ampproject/remapping': 2.1.2 60 | '@babel/code-frame': 7.16.7 61 | '@babel/generator': 7.17.7 62 | '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.17.8 63 | '@babel/helper-module-transforms': 7.17.7 64 | '@babel/helpers': 7.17.8 65 | '@babel/parser': 7.17.8 66 | '@babel/template': 7.16.7 67 | '@babel/traverse': 7.17.3 68 | '@babel/types': 7.17.0 69 | convert-source-map: 1.8.0 70 | debug: 4.3.4 71 | gensync: 1.0.0-beta.2 72 | json5: 2.2.1 73 | semver: 6.3.0 74 | transitivePeerDependencies: 75 | - supports-color 76 | 77 | /@babel/generator/7.17.7: 78 | resolution: {integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==} 79 | engines: {node: '>=6.9.0'} 80 | dependencies: 81 | '@babel/types': 7.17.0 82 | jsesc: 2.5.2 83 | source-map: 0.5.7 84 | 85 | /@babel/helper-annotate-as-pure/7.16.7: 86 | resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==} 87 | engines: {node: '>=6.9.0'} 88 | dependencies: 89 | '@babel/types': 7.17.0 90 | dev: false 91 | 92 | /@babel/helper-compilation-targets/7.17.7_@babel+core@7.17.8: 93 | resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} 94 | engines: {node: '>=6.9.0'} 95 | peerDependencies: 96 | '@babel/core': ^7.0.0 97 | dependencies: 98 | '@babel/compat-data': 7.17.7 99 | '@babel/core': 7.17.8 100 | '@babel/helper-validator-option': 7.16.7 101 | browserslist: 4.20.2 102 | semver: 6.3.0 103 | 104 | /@babel/helper-create-class-features-plugin/7.17.6_@babel+core@7.17.8: 105 | resolution: {integrity: sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==} 106 | engines: {node: '>=6.9.0'} 107 | peerDependencies: 108 | '@babel/core': ^7.0.0 109 | dependencies: 110 | '@babel/core': 7.17.8 111 | '@babel/helper-annotate-as-pure': 7.16.7 112 | '@babel/helper-environment-visitor': 7.16.7 113 | '@babel/helper-function-name': 7.16.7 114 | '@babel/helper-member-expression-to-functions': 7.17.7 115 | '@babel/helper-optimise-call-expression': 7.16.7 116 | '@babel/helper-replace-supers': 7.16.7 117 | '@babel/helper-split-export-declaration': 7.16.7 118 | transitivePeerDependencies: 119 | - supports-color 120 | dev: false 121 | 122 | /@babel/helper-environment-visitor/7.16.7: 123 | resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==} 124 | engines: {node: '>=6.9.0'} 125 | dependencies: 126 | '@babel/types': 7.17.0 127 | 128 | /@babel/helper-function-name/7.16.7: 129 | resolution: {integrity: sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==} 130 | engines: {node: '>=6.9.0'} 131 | dependencies: 132 | '@babel/helper-get-function-arity': 7.16.7 133 | '@babel/template': 7.16.7 134 | '@babel/types': 7.17.0 135 | 136 | /@babel/helper-get-function-arity/7.16.7: 137 | resolution: {integrity: sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==} 138 | engines: {node: '>=6.9.0'} 139 | dependencies: 140 | '@babel/types': 7.17.0 141 | 142 | /@babel/helper-hoist-variables/7.16.7: 143 | resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==} 144 | engines: {node: '>=6.9.0'} 145 | dependencies: 146 | '@babel/types': 7.17.0 147 | 148 | /@babel/helper-member-expression-to-functions/7.17.7: 149 | resolution: {integrity: sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==} 150 | engines: {node: '>=6.9.0'} 151 | dependencies: 152 | '@babel/types': 7.17.0 153 | dev: false 154 | 155 | /@babel/helper-module-imports/7.16.0: 156 | resolution: {integrity: sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==} 157 | engines: {node: '>=6.9.0'} 158 | dependencies: 159 | '@babel/types': 7.17.0 160 | dev: false 161 | 162 | /@babel/helper-module-imports/7.16.7: 163 | resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==} 164 | engines: {node: '>=6.9.0'} 165 | dependencies: 166 | '@babel/types': 7.17.0 167 | 168 | /@babel/helper-module-transforms/7.17.7: 169 | resolution: {integrity: sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==} 170 | engines: {node: '>=6.9.0'} 171 | dependencies: 172 | '@babel/helper-environment-visitor': 7.16.7 173 | '@babel/helper-module-imports': 7.16.7 174 | '@babel/helper-simple-access': 7.17.7 175 | '@babel/helper-split-export-declaration': 7.16.7 176 | '@babel/helper-validator-identifier': 7.16.7 177 | '@babel/template': 7.16.7 178 | '@babel/traverse': 7.17.3 179 | '@babel/types': 7.17.0 180 | transitivePeerDependencies: 181 | - supports-color 182 | 183 | /@babel/helper-optimise-call-expression/7.16.7: 184 | resolution: {integrity: sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==} 185 | engines: {node: '>=6.9.0'} 186 | dependencies: 187 | '@babel/types': 7.17.0 188 | dev: false 189 | 190 | /@babel/helper-plugin-utils/7.16.7: 191 | resolution: {integrity: sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==} 192 | engines: {node: '>=6.9.0'} 193 | 194 | /@babel/helper-replace-supers/7.16.7: 195 | resolution: {integrity: sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==} 196 | engines: {node: '>=6.9.0'} 197 | dependencies: 198 | '@babel/helper-environment-visitor': 7.16.7 199 | '@babel/helper-member-expression-to-functions': 7.17.7 200 | '@babel/helper-optimise-call-expression': 7.16.7 201 | '@babel/traverse': 7.17.3 202 | '@babel/types': 7.17.0 203 | transitivePeerDependencies: 204 | - supports-color 205 | dev: false 206 | 207 | /@babel/helper-simple-access/7.17.7: 208 | resolution: {integrity: sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==} 209 | engines: {node: '>=6.9.0'} 210 | dependencies: 211 | '@babel/types': 7.17.0 212 | 213 | /@babel/helper-split-export-declaration/7.16.7: 214 | resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} 215 | engines: {node: '>=6.9.0'} 216 | dependencies: 217 | '@babel/types': 7.17.0 218 | 219 | /@babel/helper-validator-identifier/7.16.7: 220 | resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} 221 | engines: {node: '>=6.9.0'} 222 | 223 | /@babel/helper-validator-option/7.16.7: 224 | resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} 225 | engines: {node: '>=6.9.0'} 226 | 227 | /@babel/helpers/7.17.8: 228 | resolution: {integrity: sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==} 229 | engines: {node: '>=6.9.0'} 230 | dependencies: 231 | '@babel/template': 7.16.7 232 | '@babel/traverse': 7.17.3 233 | '@babel/types': 7.17.0 234 | transitivePeerDependencies: 235 | - supports-color 236 | 237 | /@babel/highlight/7.16.10: 238 | resolution: {integrity: sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==} 239 | engines: {node: '>=6.9.0'} 240 | dependencies: 241 | '@babel/helper-validator-identifier': 7.16.7 242 | chalk: 2.4.2 243 | js-tokens: 4.0.0 244 | 245 | /@babel/parser/7.17.8: 246 | resolution: {integrity: sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==} 247 | engines: {node: '>=6.0.0'} 248 | hasBin: true 249 | 250 | /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.17.8: 251 | resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} 252 | peerDependencies: 253 | '@babel/core': ^7.0.0-0 254 | dependencies: 255 | '@babel/core': 7.17.8 256 | '@babel/helper-plugin-utils': 7.16.7 257 | dev: true 258 | 259 | /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.17.8: 260 | resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} 261 | peerDependencies: 262 | '@babel/core': ^7.0.0-0 263 | dependencies: 264 | '@babel/core': 7.17.8 265 | '@babel/helper-plugin-utils': 7.16.7 266 | dev: true 267 | 268 | /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.17.8: 269 | resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} 270 | peerDependencies: 271 | '@babel/core': ^7.0.0-0 272 | dependencies: 273 | '@babel/core': 7.17.8 274 | '@babel/helper-plugin-utils': 7.16.7 275 | dev: true 276 | 277 | /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.17.8: 278 | resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} 279 | peerDependencies: 280 | '@babel/core': ^7.0.0-0 281 | dependencies: 282 | '@babel/core': 7.17.8 283 | '@babel/helper-plugin-utils': 7.16.7 284 | dev: true 285 | 286 | /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.17.8: 287 | resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} 288 | peerDependencies: 289 | '@babel/core': ^7.0.0-0 290 | dependencies: 291 | '@babel/core': 7.17.8 292 | '@babel/helper-plugin-utils': 7.16.7 293 | dev: true 294 | 295 | /@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.17.8: 296 | resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==} 297 | engines: {node: '>=6.9.0'} 298 | peerDependencies: 299 | '@babel/core': ^7.0.0-0 300 | dependencies: 301 | '@babel/core': 7.17.8 302 | '@babel/helper-plugin-utils': 7.16.7 303 | dev: false 304 | 305 | /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.17.8: 306 | resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} 307 | peerDependencies: 308 | '@babel/core': ^7.0.0-0 309 | dependencies: 310 | '@babel/core': 7.17.8 311 | '@babel/helper-plugin-utils': 7.16.7 312 | dev: true 313 | 314 | /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.17.8: 315 | resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} 316 | peerDependencies: 317 | '@babel/core': ^7.0.0-0 318 | dependencies: 319 | '@babel/core': 7.17.8 320 | '@babel/helper-plugin-utils': 7.16.7 321 | dev: true 322 | 323 | /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.17.8: 324 | resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} 325 | peerDependencies: 326 | '@babel/core': ^7.0.0-0 327 | dependencies: 328 | '@babel/core': 7.17.8 329 | '@babel/helper-plugin-utils': 7.16.7 330 | dev: true 331 | 332 | /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.17.8: 333 | resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} 334 | peerDependencies: 335 | '@babel/core': ^7.0.0-0 336 | dependencies: 337 | '@babel/core': 7.17.8 338 | '@babel/helper-plugin-utils': 7.16.7 339 | dev: true 340 | 341 | /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.17.8: 342 | resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} 343 | peerDependencies: 344 | '@babel/core': ^7.0.0-0 345 | dependencies: 346 | '@babel/core': 7.17.8 347 | '@babel/helper-plugin-utils': 7.16.7 348 | dev: true 349 | 350 | /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.17.8: 351 | resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} 352 | peerDependencies: 353 | '@babel/core': ^7.0.0-0 354 | dependencies: 355 | '@babel/core': 7.17.8 356 | '@babel/helper-plugin-utils': 7.16.7 357 | dev: true 358 | 359 | /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.17.8: 360 | resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} 361 | engines: {node: '>=6.9.0'} 362 | peerDependencies: 363 | '@babel/core': ^7.0.0-0 364 | dependencies: 365 | '@babel/core': 7.17.8 366 | '@babel/helper-plugin-utils': 7.16.7 367 | dev: true 368 | 369 | /@babel/plugin-syntax-typescript/7.16.7_@babel+core@7.17.8: 370 | resolution: {integrity: sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==} 371 | engines: {node: '>=6.9.0'} 372 | peerDependencies: 373 | '@babel/core': ^7.0.0-0 374 | dependencies: 375 | '@babel/core': 7.17.8 376 | '@babel/helper-plugin-utils': 7.16.7 377 | 378 | /@babel/plugin-transform-typescript/7.16.8_@babel+core@7.17.8: 379 | resolution: {integrity: sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==} 380 | engines: {node: '>=6.9.0'} 381 | peerDependencies: 382 | '@babel/core': ^7.0.0-0 383 | dependencies: 384 | '@babel/core': 7.17.8 385 | '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.17.8 386 | '@babel/helper-plugin-utils': 7.16.7 387 | '@babel/plugin-syntax-typescript': 7.16.7_@babel+core@7.17.8 388 | transitivePeerDependencies: 389 | - supports-color 390 | dev: false 391 | 392 | /@babel/preset-typescript/7.16.7_@babel+core@7.17.8: 393 | resolution: {integrity: sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==} 394 | engines: {node: '>=6.9.0'} 395 | peerDependencies: 396 | '@babel/core': ^7.0.0-0 397 | dependencies: 398 | '@babel/core': 7.17.8 399 | '@babel/helper-plugin-utils': 7.16.7 400 | '@babel/helper-validator-option': 7.16.7 401 | '@babel/plugin-transform-typescript': 7.16.8_@babel+core@7.17.8 402 | transitivePeerDependencies: 403 | - supports-color 404 | dev: false 405 | 406 | /@babel/template/7.16.7: 407 | resolution: {integrity: sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==} 408 | engines: {node: '>=6.9.0'} 409 | dependencies: 410 | '@babel/code-frame': 7.16.7 411 | '@babel/parser': 7.17.8 412 | '@babel/types': 7.17.0 413 | 414 | /@babel/traverse/7.17.3: 415 | resolution: {integrity: sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==} 416 | engines: {node: '>=6.9.0'} 417 | dependencies: 418 | '@babel/code-frame': 7.16.7 419 | '@babel/generator': 7.17.7 420 | '@babel/helper-environment-visitor': 7.16.7 421 | '@babel/helper-function-name': 7.16.7 422 | '@babel/helper-hoist-variables': 7.16.7 423 | '@babel/helper-split-export-declaration': 7.16.7 424 | '@babel/parser': 7.17.8 425 | '@babel/types': 7.17.0 426 | debug: 4.3.4 427 | globals: 11.12.0 428 | transitivePeerDependencies: 429 | - supports-color 430 | 431 | /@babel/types/7.17.0: 432 | resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} 433 | engines: {node: '>=6.9.0'} 434 | dependencies: 435 | '@babel/helper-validator-identifier': 7.16.7 436 | to-fast-properties: 2.0.0 437 | 438 | /@bcoe/v8-coverage/0.2.3: 439 | resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} 440 | dev: true 441 | 442 | /@cush/relative/1.0.0: 443 | resolution: {integrity: sha512-RpfLEtTlyIxeNPGKcokS+p3BZII/Q3bYxryFRglh5H3A3T8q9fsLYm72VYAMEOOIBLEa8o93kFLiBDUWKrwXZA==} 444 | dev: true 445 | 446 | /@istanbuljs/load-nyc-config/1.1.0: 447 | resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} 448 | engines: {node: '>=8'} 449 | dependencies: 450 | camelcase: 5.3.1 451 | find-up: 4.1.0 452 | get-package-type: 0.1.0 453 | js-yaml: 3.14.1 454 | resolve-from: 5.0.0 455 | dev: true 456 | 457 | /@istanbuljs/schema/0.1.3: 458 | resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} 459 | engines: {node: '>=8'} 460 | dev: true 461 | 462 | /@jest/console/28.0.0-alpha.8: 463 | resolution: {integrity: sha512-ixkP9Ve5zsIoN+YOcYUgmCWJkBHaj1PsfyVmG13ZL9KrnVi6u9wGshc5cz/p0WTB1N+YDDTLTqLzQtGRnNUdKg==} 464 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 465 | dependencies: 466 | '@jest/types': 28.0.0-alpha.8 467 | '@types/node': 17.0.23 468 | chalk: 4.1.2 469 | jest-message-util: 28.0.0-alpha.8 470 | jest-util: 28.0.0-alpha.8 471 | slash: 3.0.0 472 | dev: true 473 | 474 | /@jest/core/28.0.0-alpha.8: 475 | resolution: {integrity: sha512-pj07OEiXw3D004oxMQ8Bb8rmR1tKw5U6vO7afKLeQAdATPPZcjuXpi9R1xlS0i5RYoquuDly1PY88US+225tew==} 476 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 477 | peerDependencies: 478 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 479 | peerDependenciesMeta: 480 | node-notifier: 481 | optional: true 482 | dependencies: 483 | '@jest/console': 28.0.0-alpha.8 484 | '@jest/reporters': 28.0.0-alpha.8 485 | '@jest/test-result': 28.0.0-alpha.8 486 | '@jest/transform': 28.0.0-alpha.8 487 | '@jest/types': 28.0.0-alpha.8 488 | '@types/node': 17.0.23 489 | ansi-escapes: 4.3.2 490 | chalk: 4.1.2 491 | emittery: 0.8.1 492 | exit: 0.1.2 493 | graceful-fs: 4.2.10 494 | jest-changed-files: 28.0.0-alpha.3 495 | jest-config: 28.0.0-alpha.8_@types+node@17.0.23 496 | jest-haste-map: 28.0.0-alpha.8 497 | jest-message-util: 28.0.0-alpha.8 498 | jest-regex-util: 28.0.0-alpha.6 499 | jest-resolve: 28.0.0-alpha.8 500 | jest-resolve-dependencies: 28.0.0-alpha.8 501 | jest-runner: 28.0.0-alpha.8 502 | jest-runtime: 28.0.0-alpha.8 503 | jest-snapshot: 28.0.0-alpha.8 504 | jest-util: 28.0.0-alpha.8 505 | jest-validate: 28.0.0-alpha.8 506 | jest-watcher: 28.0.0-alpha.8 507 | micromatch: 4.0.5 508 | pretty-format: 28.0.0-alpha.8 509 | rimraf: 3.0.2 510 | slash: 3.0.0 511 | strip-ansi: 6.0.1 512 | transitivePeerDependencies: 513 | - supports-color 514 | - ts-node 515 | dev: true 516 | 517 | /@jest/environment/28.0.0-alpha.8: 518 | resolution: {integrity: sha512-GWpyWc63uBoWa1q7K4PuC2hciQt5jkGKwrvVkFvGL/QbVcYGZdFbhwFlb7LFiVFRCtXE24cr5fFhX3BaxpMung==} 519 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 520 | dependencies: 521 | '@jest/fake-timers': 28.0.0-alpha.8 522 | '@jest/types': 28.0.0-alpha.8 523 | '@types/node': 17.0.23 524 | jest-mock: 28.0.0-alpha.8 525 | dev: true 526 | 527 | /@jest/expect-utils/28.0.0-alpha.8: 528 | resolution: {integrity: sha512-ExlLTbwxruDcRGasj+ftq4L6uAaRQY/ZKW3RC6GHpgW7wg8MfBwjxkAfB5Tyjel7net8OJW592qKJ2TNHXt62g==} 529 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 530 | dependencies: 531 | jest-get-type: 28.0.0-alpha.3 532 | dev: true 533 | 534 | /@jest/expect/28.0.0-alpha.8: 535 | resolution: {integrity: sha512-usUSBK+dDg+rFsq9kVRJDrCUSa/Guuu0IPiZfOYrKI71qHPbCHO05L1InW0zmyS6BjCdaUGrqGS8jOMndBLUMw==} 536 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 537 | dependencies: 538 | expect: 28.0.0-alpha.8 539 | jest-snapshot: 28.0.0-alpha.8 540 | transitivePeerDependencies: 541 | - supports-color 542 | dev: true 543 | 544 | /@jest/fake-timers/28.0.0-alpha.8: 545 | resolution: {integrity: sha512-CgUk005azXMhkD1Ttf5UUnbrN42dGtDyr+rbiLvtBFCmwos+MPkr3Be9z4MO7iV1Trfnx32+RrPi/duraFYOJA==} 546 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 547 | dependencies: 548 | '@jest/types': 28.0.0-alpha.8 549 | '@sinonjs/fake-timers': 9.1.1 550 | '@types/node': 17.0.23 551 | jest-message-util: 28.0.0-alpha.8 552 | jest-mock: 28.0.0-alpha.8 553 | jest-util: 28.0.0-alpha.8 554 | dev: true 555 | 556 | /@jest/globals/28.0.0-alpha.8: 557 | resolution: {integrity: sha512-4/RBTpsYHYkeD/ENEQKVz6U1A3wVw2H9ZaqVEW03dgzZsFzgjAce+V3+1uQFjrvLQZRHSymBdn7HA4+nM2tE+w==} 558 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 559 | dependencies: 560 | '@jest/environment': 28.0.0-alpha.8 561 | '@jest/expect': 28.0.0-alpha.8 562 | '@jest/types': 28.0.0-alpha.8 563 | transitivePeerDependencies: 564 | - supports-color 565 | dev: true 566 | 567 | /@jest/reporters/28.0.0-alpha.8: 568 | resolution: {integrity: sha512-XGAFLNg8a7o98qEzFRC7tT+Q5YmstE1uWKvLZwyNhJ2e7JoHrDga3msgIx2bhRViEHcKG8/KXtz1lR1sdwVvlg==} 569 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 570 | peerDependencies: 571 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 572 | peerDependenciesMeta: 573 | node-notifier: 574 | optional: true 575 | dependencies: 576 | '@bcoe/v8-coverage': 0.2.3 577 | '@jest/console': 28.0.0-alpha.8 578 | '@jest/test-result': 28.0.0-alpha.8 579 | '@jest/transform': 28.0.0-alpha.8 580 | '@jest/types': 28.0.0-alpha.8 581 | '@types/node': 17.0.23 582 | chalk: 4.1.2 583 | collect-v8-coverage: 1.0.1 584 | exit: 0.1.2 585 | glob: 7.2.0 586 | graceful-fs: 4.2.10 587 | istanbul-lib-coverage: 3.2.0 588 | istanbul-lib-instrument: 5.1.0 589 | istanbul-lib-report: 3.0.0 590 | istanbul-lib-source-maps: 4.0.1 591 | istanbul-reports: 3.1.4 592 | jest-haste-map: 28.0.0-alpha.8 593 | jest-resolve: 28.0.0-alpha.8 594 | jest-util: 28.0.0-alpha.8 595 | jest-worker: 28.0.0-alpha.8 596 | slash: 3.0.0 597 | source-map: 0.6.1 598 | string-length: 4.0.2 599 | terminal-link: 2.1.1 600 | v8-to-istanbul: 8.1.1 601 | transitivePeerDependencies: 602 | - supports-color 603 | dev: true 604 | 605 | /@jest/schemas/28.0.0-alpha.3: 606 | resolution: {integrity: sha512-U4BNcqkplLb1ALW+ME1x3+6j2epFxV3Rxi29WttkwSKoTnVimdvapGVDaRJXgO1ieVqb3Qrh3bjtNXFOEIlM5w==} 607 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 608 | dependencies: 609 | '@sinclair/typebox': 0.23.4 610 | dev: true 611 | 612 | /@jest/source-map/28.0.0-alpha.6: 613 | resolution: {integrity: sha512-5tcoNBafrH9qCnA4RLJw8RHLper10bnexGHc2VAzux7HFAeRDLLQfqYtqVVqFB3ka3yS1TvCF2S4M37L56Umcg==} 614 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 615 | dependencies: 616 | callsites: 3.1.0 617 | graceful-fs: 4.2.10 618 | source-map: 0.6.1 619 | dev: true 620 | 621 | /@jest/test-result/28.0.0-alpha.8: 622 | resolution: {integrity: sha512-nzwtKs5y9NxQCxS9T1OKPu95ORT0EuJVMRPq4RV1d9SoOBIIb9RHQ/dc3iciZXV65iKK4Wg1p4hIqDpzqA853w==} 623 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 624 | dependencies: 625 | '@jest/console': 28.0.0-alpha.8 626 | '@jest/types': 28.0.0-alpha.8 627 | '@types/istanbul-lib-coverage': 2.0.4 628 | collect-v8-coverage: 1.0.1 629 | dev: true 630 | 631 | /@jest/test-sequencer/28.0.0-alpha.8: 632 | resolution: {integrity: sha512-Ek1C2qu8Npjtz6+9PqjyVu/XDfZbbezzZqY/bNzTyv3QYKlAYB7r+DxklqeDLLqp3gnQbJYU+AOPZMB51iQPSA==} 633 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 634 | dependencies: 635 | '@jest/test-result': 28.0.0-alpha.8 636 | graceful-fs: 4.2.10 637 | jest-haste-map: 28.0.0-alpha.8 638 | jest-runtime: 28.0.0-alpha.8 639 | slash: 3.0.0 640 | transitivePeerDependencies: 641 | - supports-color 642 | dev: true 643 | 644 | /@jest/transform/28.0.0-alpha.8: 645 | resolution: {integrity: sha512-HL71shrDLRXaYflXqZMzlVMjCVtirndzrhR6wbh/RasInjQniTYFtn3pQgyvz4cvfSW4eFCGoHyEggWpMsFq6Q==} 646 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 647 | dependencies: 648 | '@babel/core': 7.17.8 649 | '@jest/types': 28.0.0-alpha.8 650 | babel-plugin-istanbul: 6.1.1 651 | chalk: 4.1.2 652 | convert-source-map: 1.8.0 653 | fast-json-stable-stringify: 2.1.0 654 | graceful-fs: 4.2.10 655 | jest-haste-map: 28.0.0-alpha.8 656 | jest-regex-util: 28.0.0-alpha.6 657 | jest-util: 28.0.0-alpha.8 658 | micromatch: 4.0.5 659 | pirates: 4.0.5 660 | slash: 3.0.0 661 | source-map: 0.6.1 662 | write-file-atomic: 4.0.1 663 | transitivePeerDependencies: 664 | - supports-color 665 | dev: true 666 | 667 | /@jest/types/27.5.1: 668 | resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} 669 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 670 | dependencies: 671 | '@types/istanbul-lib-coverage': 2.0.4 672 | '@types/istanbul-reports': 3.0.1 673 | '@types/node': 17.0.23 674 | '@types/yargs': 16.0.4 675 | chalk: 4.1.2 676 | dev: true 677 | 678 | /@jest/types/28.0.0-alpha.8: 679 | resolution: {integrity: sha512-Niel+3REtWXBv4B0Pp6qZhbrc9UcSpLVsLyb1Q8AZM3l65fnOZZx3mD8CTrryIQqfTzbzgDlorHD5iKTHePrrA==} 680 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 681 | dependencies: 682 | '@jest/schemas': 28.0.0-alpha.3 683 | '@types/istanbul-lib-coverage': 2.0.4 684 | '@types/istanbul-reports': 3.0.1 685 | '@types/node': 17.0.23 686 | '@types/yargs': 17.0.10 687 | chalk: 4.1.2 688 | dev: true 689 | 690 | /@jridgewell/resolve-uri/3.0.5: 691 | resolution: {integrity: sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==} 692 | engines: {node: '>=6.0.0'} 693 | 694 | /@jridgewell/sourcemap-codec/1.4.11: 695 | resolution: {integrity: sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==} 696 | 697 | /@jridgewell/trace-mapping/0.3.4: 698 | resolution: {integrity: sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==} 699 | dependencies: 700 | '@jridgewell/resolve-uri': 3.0.5 701 | '@jridgewell/sourcemap-codec': 1.4.11 702 | 703 | /@previewjs/api/2.0.1: 704 | resolution: {integrity: sha512-PSME0ykgoZXfBBUhqtF7MAA5Ek5EY8QGuhXwHMVCyS0bTsjwUG62IeL0uy+Jy7yNNz+JhnuruuH4Gf/4lW70gQ==} 705 | dev: true 706 | 707 | /@previewjs/config/1.0.4: 708 | resolution: {integrity: sha512-4YfDrduv6mbU64/YkqTpqWRMihpKx786oEHql7pvcY3U0dAlUg1BPLOSDAH5rTHaCNMIbvWgYSiikpN8NFYvQw==} 709 | dev: true 710 | 711 | /@previewjs/core/2.0.0: 712 | resolution: {integrity: sha512-fPAalEDkaifx2c+ASuLHNmAcnSR2b6t0gn95LbMLzxo8TGu2S4eOyQml8sifuJdr0isW4xcgcH7TFIHhrGIpMA==} 713 | dependencies: 714 | '@previewjs/api': 2.0.1 715 | '@previewjs/config': 1.0.4 716 | '@previewjs/type-analyzer': 2.0.2 717 | '@previewjs/vfs': 1.1.3 718 | acorn: 8.7.0 719 | assert-never: 1.2.1 720 | chokidar: 3.5.3 721 | env-paths: 2.2.1 722 | express: 4.17.3 723 | fs-extra: 10.0.1 724 | get-port: 5.1.1 725 | http-terminator: 3.2.0 726 | monaco-editor: 0.33.0 727 | prettier: 2.6.2 728 | recrawl: 2.2.1 729 | rollup-plugin-friendly-type-imports: 1.0.2 730 | sass: 1.49.11 731 | strip-ansi: 6.0.1 732 | tsconfig-paths: 3.14.1 733 | typescript: 4.6.3 734 | uuid: 8.3.2 735 | vite: 2.9.1_sass@1.49.11 736 | vite-tsconfig-paths: 3.4.1_vite@2.9.1 737 | transitivePeerDependencies: 738 | - less 739 | - stylus 740 | - supports-color 741 | dev: true 742 | 743 | /@previewjs/type-analyzer/2.0.2: 744 | resolution: {integrity: sha512-z0Rs5qgfrSZN9tWdpBrRvSkFpSj0cIPdvG6rcc9cZK6ISqCFJn9M1aJwlGqaFEUCnCC1r+h7KkymGqSquqNotw==} 745 | dependencies: 746 | '@previewjs/vfs': 1.1.3 747 | assert-never: 1.2.1 748 | typescript: 4.6.3 749 | 750 | /@previewjs/vfs/1.1.3: 751 | resolution: {integrity: sha512-FdgJy7FyanXiU8HpF+VWI6DuxTFjezP/7EpJuotB0BkUPiMjaKzfdfZD1jJmT/WxQmmX553y2N4YhNvJ4OvTWQ==} 752 | dependencies: 753 | assert-never: 1.2.1 754 | chokidar: 3.5.3 755 | fs-extra: 10.0.1 756 | 757 | /@sinclair/typebox/0.23.4: 758 | resolution: {integrity: sha512-0/WqSvpVbCBAV1yPeko7eAczKbs78dNVAaX14quVlwOb2wxfKuXCx91h4NrEfkYK9zEnyVSW4JVI/trP3iS+Qg==} 759 | dev: true 760 | 761 | /@sinonjs/commons/1.8.3: 762 | resolution: {integrity: sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==} 763 | dependencies: 764 | type-detect: 4.0.8 765 | dev: true 766 | 767 | /@sinonjs/fake-timers/9.1.1: 768 | resolution: {integrity: sha512-Wp5vwlZ0lOqpSYGKqr53INws9HLkt6JDc/pDZcPf7bchQnrXJMXPns8CXx0hFikMSGSWfvtvvpb2gtMVfkWagA==} 769 | dependencies: 770 | '@sinonjs/commons': 1.8.3 771 | dev: true 772 | 773 | /@types/babel__core/7.1.19: 774 | resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} 775 | dependencies: 776 | '@babel/parser': 7.17.8 777 | '@babel/types': 7.17.0 778 | '@types/babel__generator': 7.6.4 779 | '@types/babel__template': 7.4.1 780 | '@types/babel__traverse': 7.14.2 781 | dev: true 782 | 783 | /@types/babel__generator/7.6.4: 784 | resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} 785 | dependencies: 786 | '@babel/types': 7.17.0 787 | dev: true 788 | 789 | /@types/babel__template/7.4.1: 790 | resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} 791 | dependencies: 792 | '@babel/parser': 7.17.8 793 | '@babel/types': 7.17.0 794 | dev: true 795 | 796 | /@types/babel__traverse/7.14.2: 797 | resolution: {integrity: sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==} 798 | dependencies: 799 | '@babel/types': 7.17.0 800 | dev: true 801 | 802 | /@types/fs-extra/9.0.13: 803 | resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} 804 | dependencies: 805 | '@types/node': 17.0.23 806 | dev: true 807 | 808 | /@types/graceful-fs/4.1.5: 809 | resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} 810 | dependencies: 811 | '@types/node': 17.0.23 812 | dev: true 813 | 814 | /@types/istanbul-lib-coverage/2.0.4: 815 | resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} 816 | dev: true 817 | 818 | /@types/istanbul-lib-report/3.0.0: 819 | resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} 820 | dependencies: 821 | '@types/istanbul-lib-coverage': 2.0.4 822 | dev: true 823 | 824 | /@types/istanbul-reports/3.0.1: 825 | resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} 826 | dependencies: 827 | '@types/istanbul-lib-report': 3.0.0 828 | dev: true 829 | 830 | /@types/jest/27.4.1: 831 | resolution: {integrity: sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==} 832 | dependencies: 833 | jest-matcher-utils: 27.5.1 834 | pretty-format: 27.5.1 835 | dev: true 836 | 837 | /@types/json5/0.0.29: 838 | resolution: {integrity: sha1-7ihweulOEdK4J7y+UnC86n8+ce4=} 839 | dev: true 840 | 841 | /@types/node/17.0.23: 842 | resolution: {integrity: sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==} 843 | dev: true 844 | 845 | /@types/prettier/2.4.4: 846 | resolution: {integrity: sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==} 847 | dev: true 848 | 849 | /@types/stack-utils/2.0.1: 850 | resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} 851 | dev: true 852 | 853 | /@types/yargs-parser/21.0.0: 854 | resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} 855 | dev: true 856 | 857 | /@types/yargs/16.0.4: 858 | resolution: {integrity: sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==} 859 | dependencies: 860 | '@types/yargs-parser': 21.0.0 861 | dev: true 862 | 863 | /@types/yargs/17.0.10: 864 | resolution: {integrity: sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA==} 865 | dependencies: 866 | '@types/yargs-parser': 21.0.0 867 | dev: true 868 | 869 | /accepts/1.3.8: 870 | resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} 871 | engines: {node: '>= 0.6'} 872 | dependencies: 873 | mime-types: 2.1.35 874 | negotiator: 0.6.3 875 | dev: true 876 | 877 | /acorn/8.7.0: 878 | resolution: {integrity: sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==} 879 | engines: {node: '>=0.4.0'} 880 | hasBin: true 881 | dev: true 882 | 883 | /ajv/6.12.6: 884 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 885 | dependencies: 886 | fast-deep-equal: 3.1.3 887 | fast-json-stable-stringify: 2.1.0 888 | json-schema-traverse: 0.4.1 889 | uri-js: 4.4.1 890 | dev: true 891 | 892 | /ansi-escapes/4.3.2: 893 | resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} 894 | engines: {node: '>=8'} 895 | dependencies: 896 | type-fest: 0.21.3 897 | dev: true 898 | 899 | /ansi-regex/5.0.1: 900 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 901 | engines: {node: '>=8'} 902 | dev: true 903 | 904 | /ansi-styles/3.2.1: 905 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 906 | engines: {node: '>=4'} 907 | dependencies: 908 | color-convert: 1.9.3 909 | 910 | /ansi-styles/4.3.0: 911 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 912 | engines: {node: '>=8'} 913 | dependencies: 914 | color-convert: 2.0.1 915 | dev: true 916 | 917 | /ansi-styles/5.2.0: 918 | resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} 919 | engines: {node: '>=10'} 920 | dev: true 921 | 922 | /anymatch/3.1.2: 923 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} 924 | engines: {node: '>= 8'} 925 | dependencies: 926 | normalize-path: 3.0.0 927 | picomatch: 2.3.1 928 | 929 | /argparse/1.0.10: 930 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 931 | dependencies: 932 | sprintf-js: 1.0.3 933 | dev: true 934 | 935 | /array-flatten/1.1.1: 936 | resolution: {integrity: sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=} 937 | dev: true 938 | 939 | /assert-never/1.2.1: 940 | resolution: {integrity: sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==} 941 | 942 | /babel-jest/28.0.0-alpha.8_@babel+core@7.17.8: 943 | resolution: {integrity: sha512-BYhYWdrhz4Vaabu+0QjB8jj4gmso0I5HtinCm/LwyAYcdocdMYXPHrQU6bRAiTNf0TKB3DuCR+J6v/ykJGwYbQ==} 944 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 945 | peerDependencies: 946 | '@babel/core': ^7.8.0 947 | dependencies: 948 | '@babel/core': 7.17.8 949 | '@jest/transform': 28.0.0-alpha.8 950 | '@types/babel__core': 7.1.19 951 | babel-plugin-istanbul: 6.1.1 952 | babel-preset-jest: 28.0.0-alpha.6_@babel+core@7.17.8 953 | chalk: 4.1.2 954 | graceful-fs: 4.2.10 955 | slash: 3.0.0 956 | transitivePeerDependencies: 957 | - supports-color 958 | dev: true 959 | 960 | /babel-plugin-istanbul/6.1.1: 961 | resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} 962 | engines: {node: '>=8'} 963 | dependencies: 964 | '@babel/helper-plugin-utils': 7.16.7 965 | '@istanbuljs/load-nyc-config': 1.1.0 966 | '@istanbuljs/schema': 0.1.3 967 | istanbul-lib-instrument: 5.1.0 968 | test-exclude: 6.0.0 969 | transitivePeerDependencies: 970 | - supports-color 971 | dev: true 972 | 973 | /babel-plugin-jest-hoist/28.0.0-alpha.6: 974 | resolution: {integrity: sha512-6XBV8vogS5pqxGjIXFX9Vc2CqtBAbKbqdxjL8Iq1vii4YC7867MtKZTkmakj4g0Bx3LVCUXNCJPbbyc1rfL58A==} 975 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 976 | dependencies: 977 | '@babel/template': 7.16.7 978 | '@babel/types': 7.17.0 979 | '@types/babel__core': 7.1.19 980 | '@types/babel__traverse': 7.14.2 981 | dev: true 982 | 983 | /babel-plugin-jsx-dom-expressions/0.32.11_@babel+core@7.17.8: 984 | resolution: {integrity: sha512-hytqY33SGW6B3obSLt8K5X510UwtNkTktCCWgwba+QOOV0CowDFiqeL+0ru895FLacFaYANHFTu1y76dg3GVtw==} 985 | dependencies: 986 | '@babel/helper-module-imports': 7.16.0 987 | '@babel/plugin-syntax-jsx': 7.16.7_@babel+core@7.17.8 988 | '@babel/types': 7.17.0 989 | html-entities: 2.3.2 990 | transitivePeerDependencies: 991 | - '@babel/core' 992 | dev: false 993 | 994 | /babel-preset-current-node-syntax/1.0.1_@babel+core@7.17.8: 995 | resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} 996 | peerDependencies: 997 | '@babel/core': ^7.0.0 998 | dependencies: 999 | '@babel/core': 7.17.8 1000 | '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.17.8 1001 | '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.17.8 1002 | '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.17.8 1003 | '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.17.8 1004 | '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.17.8 1005 | '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.17.8 1006 | '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.17.8 1007 | '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.17.8 1008 | '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.17.8 1009 | '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.17.8 1010 | '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.17.8 1011 | '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.17.8 1012 | dev: true 1013 | 1014 | /babel-preset-jest/28.0.0-alpha.6_@babel+core@7.17.8: 1015 | resolution: {integrity: sha512-hrZsFqduyeXyJffn/SV4Ha/hVyNYrd2/6dbr02bAg4O0m7Mzi8ZMktm9uxQ2ma0naFxbh2CemCRfr23a1BUgqQ==} 1016 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 1017 | peerDependencies: 1018 | '@babel/core': ^7.0.0 1019 | dependencies: 1020 | '@babel/core': 7.17.8 1021 | babel-plugin-jest-hoist: 28.0.0-alpha.6 1022 | babel-preset-current-node-syntax: 1.0.1_@babel+core@7.17.8 1023 | dev: true 1024 | 1025 | /babel-preset-solid/1.3.13_@babel+core@7.17.8: 1026 | resolution: {integrity: sha512-MZnmsceI9yiHlwwFCSALTJhadk2eea/+2UP4ec4jkPZFR+XRKTLoIwRkrBh7uLtvHF+3lHGyUaXtZukOmmUwhA==} 1027 | dependencies: 1028 | babel-plugin-jsx-dom-expressions: 0.32.11_@babel+core@7.17.8 1029 | transitivePeerDependencies: 1030 | - '@babel/core' 1031 | dev: false 1032 | 1033 | /balanced-match/1.0.2: 1034 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 1035 | dev: true 1036 | 1037 | /binary-extensions/2.2.0: 1038 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 1039 | engines: {node: '>=8'} 1040 | 1041 | /body-parser/1.19.2: 1042 | resolution: {integrity: sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==} 1043 | engines: {node: '>= 0.8'} 1044 | dependencies: 1045 | bytes: 3.1.2 1046 | content-type: 1.0.4 1047 | debug: 2.6.9 1048 | depd: 1.1.2 1049 | http-errors: 1.8.1 1050 | iconv-lite: 0.4.24 1051 | on-finished: 2.3.0 1052 | qs: 6.9.7 1053 | raw-body: 2.4.3 1054 | type-is: 1.6.18 1055 | dev: true 1056 | 1057 | /boolean/3.2.0: 1058 | resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} 1059 | dev: true 1060 | 1061 | /brace-expansion/1.1.11: 1062 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 1063 | dependencies: 1064 | balanced-match: 1.0.2 1065 | concat-map: 0.0.1 1066 | dev: true 1067 | 1068 | /braces/3.0.2: 1069 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 1070 | engines: {node: '>=8'} 1071 | dependencies: 1072 | fill-range: 7.0.1 1073 | 1074 | /browserslist/4.20.2: 1075 | resolution: {integrity: sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==} 1076 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 1077 | hasBin: true 1078 | dependencies: 1079 | caniuse-lite: 1.0.30001325 1080 | electron-to-chromium: 1.4.103 1081 | escalade: 3.1.1 1082 | node-releases: 2.0.2 1083 | picocolors: 1.0.0 1084 | 1085 | /bs-logger/0.2.6: 1086 | resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} 1087 | engines: {node: '>= 6'} 1088 | dependencies: 1089 | fast-json-stable-stringify: 2.1.0 1090 | dev: true 1091 | 1092 | /bser/2.1.1: 1093 | resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} 1094 | dependencies: 1095 | node-int64: 0.4.0 1096 | dev: true 1097 | 1098 | /buffer-from/1.1.2: 1099 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 1100 | dev: true 1101 | 1102 | /bytes/3.1.2: 1103 | resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} 1104 | engines: {node: '>= 0.8'} 1105 | dev: true 1106 | 1107 | /callsites/3.1.0: 1108 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 1109 | engines: {node: '>=6'} 1110 | dev: true 1111 | 1112 | /camelcase/5.3.1: 1113 | resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} 1114 | engines: {node: '>=6'} 1115 | dev: true 1116 | 1117 | /camelcase/6.3.0: 1118 | resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} 1119 | engines: {node: '>=10'} 1120 | dev: true 1121 | 1122 | /caniuse-lite/1.0.30001325: 1123 | resolution: {integrity: sha512-sB1bZHjseSjDtijV1Hb7PB2Zd58Kyx+n/9EotvZ4Qcz2K3d0lWB8dB4nb8wN/TsOGFq3UuAm0zQZNQ4SoR7TrQ==} 1124 | 1125 | /chalk/2.4.2: 1126 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 1127 | engines: {node: '>=4'} 1128 | dependencies: 1129 | ansi-styles: 3.2.1 1130 | escape-string-regexp: 1.0.5 1131 | supports-color: 5.5.0 1132 | 1133 | /chalk/4.1.2: 1134 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1135 | engines: {node: '>=10'} 1136 | dependencies: 1137 | ansi-styles: 4.3.0 1138 | supports-color: 7.2.0 1139 | dev: true 1140 | 1141 | /char-regex/1.0.2: 1142 | resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} 1143 | engines: {node: '>=10'} 1144 | dev: true 1145 | 1146 | /chokidar/3.5.3: 1147 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 1148 | engines: {node: '>= 8.10.0'} 1149 | dependencies: 1150 | anymatch: 3.1.2 1151 | braces: 3.0.2 1152 | glob-parent: 5.1.2 1153 | is-binary-path: 2.1.0 1154 | is-glob: 4.0.3 1155 | normalize-path: 3.0.0 1156 | readdirp: 3.6.0 1157 | optionalDependencies: 1158 | fsevents: 2.3.2 1159 | 1160 | /ci-info/3.3.0: 1161 | resolution: {integrity: sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==} 1162 | dev: true 1163 | 1164 | /cjs-module-lexer/1.2.2: 1165 | resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} 1166 | dev: true 1167 | 1168 | /cliui/7.0.4: 1169 | resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} 1170 | dependencies: 1171 | string-width: 4.2.3 1172 | strip-ansi: 6.0.1 1173 | wrap-ansi: 7.0.0 1174 | dev: true 1175 | 1176 | /co/4.6.0: 1177 | resolution: {integrity: sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=} 1178 | engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} 1179 | dev: true 1180 | 1181 | /collect-v8-coverage/1.0.1: 1182 | resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} 1183 | dev: true 1184 | 1185 | /color-convert/1.9.3: 1186 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 1187 | dependencies: 1188 | color-name: 1.1.3 1189 | 1190 | /color-convert/2.0.1: 1191 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1192 | engines: {node: '>=7.0.0'} 1193 | dependencies: 1194 | color-name: 1.1.4 1195 | dev: true 1196 | 1197 | /color-name/1.1.3: 1198 | resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} 1199 | 1200 | /color-name/1.1.4: 1201 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1202 | dev: true 1203 | 1204 | /concat-map/0.0.1: 1205 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} 1206 | dev: true 1207 | 1208 | /content-disposition/0.5.4: 1209 | resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} 1210 | engines: {node: '>= 0.6'} 1211 | dependencies: 1212 | safe-buffer: 5.2.1 1213 | dev: true 1214 | 1215 | /content-type/1.0.4: 1216 | resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} 1217 | engines: {node: '>= 0.6'} 1218 | dev: true 1219 | 1220 | /convert-source-map/1.8.0: 1221 | resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} 1222 | dependencies: 1223 | safe-buffer: 5.1.2 1224 | 1225 | /cookie-signature/1.0.6: 1226 | resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=} 1227 | dev: true 1228 | 1229 | /cookie/0.4.2: 1230 | resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} 1231 | engines: {node: '>= 0.6'} 1232 | dev: true 1233 | 1234 | /cross-spawn/7.0.3: 1235 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1236 | engines: {node: '>= 8'} 1237 | dependencies: 1238 | path-key: 3.1.1 1239 | shebang-command: 2.0.0 1240 | which: 2.0.2 1241 | dev: true 1242 | 1243 | /debug/2.6.9: 1244 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 1245 | dependencies: 1246 | ms: 2.0.0 1247 | dev: true 1248 | 1249 | /debug/4.3.4: 1250 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 1251 | engines: {node: '>=6.0'} 1252 | peerDependencies: 1253 | supports-color: '*' 1254 | peerDependenciesMeta: 1255 | supports-color: 1256 | optional: true 1257 | dependencies: 1258 | ms: 2.1.2 1259 | 1260 | /dedent/0.7.0: 1261 | resolution: {integrity: sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=} 1262 | dev: true 1263 | 1264 | /deepmerge/4.2.2: 1265 | resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} 1266 | engines: {node: '>=0.10.0'} 1267 | dev: true 1268 | 1269 | /define-properties/1.1.3: 1270 | resolution: {integrity: sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==} 1271 | engines: {node: '>= 0.4'} 1272 | dependencies: 1273 | object-keys: 1.1.1 1274 | dev: true 1275 | 1276 | /delay/5.0.0: 1277 | resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} 1278 | engines: {node: '>=10'} 1279 | dev: true 1280 | 1281 | /depd/1.1.2: 1282 | resolution: {integrity: sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=} 1283 | engines: {node: '>= 0.6'} 1284 | dev: true 1285 | 1286 | /destroy/1.0.4: 1287 | resolution: {integrity: sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=} 1288 | dev: true 1289 | 1290 | /detect-newline/3.1.0: 1291 | resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} 1292 | engines: {node: '>=8'} 1293 | dev: true 1294 | 1295 | /diff-sequences/27.5.1: 1296 | resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} 1297 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1298 | dev: true 1299 | 1300 | /diff-sequences/28.0.0-alpha.6: 1301 | resolution: {integrity: sha512-ahVUZf+at8+da+HVdM0zUkmHxESh0PHCe5KKO9q5rib21v/DrzBpy5/33RiV79tLBP+dw2q5WpceIZYq3ipanw==} 1302 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 1303 | dev: true 1304 | 1305 | /ee-first/1.1.1: 1306 | resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} 1307 | dev: true 1308 | 1309 | /electron-to-chromium/1.4.103: 1310 | resolution: {integrity: sha512-c/uKWR1Z/W30Wy/sx3dkZoj4BijbXX85QKWu9jJfjho3LBAXNEGAEW3oWiGb+dotA6C6BzCTxL2/aLes7jlUeg==} 1311 | 1312 | /emittery/0.8.1: 1313 | resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} 1314 | engines: {node: '>=10'} 1315 | dev: true 1316 | 1317 | /emoji-regex/8.0.0: 1318 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1319 | dev: true 1320 | 1321 | /encodeurl/1.0.2: 1322 | resolution: {integrity: sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=} 1323 | engines: {node: '>= 0.8'} 1324 | dev: true 1325 | 1326 | /env-paths/2.2.1: 1327 | resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} 1328 | engines: {node: '>=6'} 1329 | dev: true 1330 | 1331 | /error-ex/1.3.2: 1332 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 1333 | dependencies: 1334 | is-arrayish: 0.2.1 1335 | dev: true 1336 | 1337 | /esbuild-android-64/0.14.31: 1338 | resolution: {integrity: sha512-MYkuJ91w07nGmr4EouejOZK2j/f5TCnsKxY8vRr2+wpKKfHD1LTJK28VbZa+y1+AL7v1V9G98ezTUwsV3CmXNw==} 1339 | engines: {node: '>=12'} 1340 | cpu: [x64] 1341 | os: [android] 1342 | requiresBuild: true 1343 | optional: true 1344 | 1345 | /esbuild-android-arm64/0.14.31: 1346 | resolution: {integrity: sha512-0rkH/35s7ZVcsw6nS0IAkR0dekSbjZGWdlOAf3jV0lGoPqqw0x6/TmaV9w7DQgUERTH1ApmPlpAMU4kVkCq9Jg==} 1347 | engines: {node: '>=12'} 1348 | cpu: [arm64] 1349 | os: [android] 1350 | requiresBuild: true 1351 | optional: true 1352 | 1353 | /esbuild-darwin-64/0.14.31: 1354 | resolution: {integrity: sha512-kP6xPZHxtJa36Hb0jC05L3VzQSZBW2f3bpnQS20czXTRGEmM2GDiYpGdI5g2QYaw6vC4PYXjnigq8usd9g9jnQ==} 1355 | engines: {node: '>=12'} 1356 | cpu: [x64] 1357 | os: [darwin] 1358 | requiresBuild: true 1359 | optional: true 1360 | 1361 | /esbuild-darwin-arm64/0.14.31: 1362 | resolution: {integrity: sha512-1ZMog4hkNsdBGtDDtsftUqX6S9N52gEx4vX5aVehsSptgoBFIar1XrPiBTQty7YNH+bJasTpSVaZQgElCVvPKQ==} 1363 | engines: {node: '>=12'} 1364 | cpu: [arm64] 1365 | os: [darwin] 1366 | requiresBuild: true 1367 | optional: true 1368 | 1369 | /esbuild-freebsd-64/0.14.31: 1370 | resolution: {integrity: sha512-Zo0BYj7QpVFWoUpkv6Ng0RO2eJ4zk/WDaHMO88+jr5HuYmxsOre0imgwaZVPquTuJnCvL1G48BFucJ3tFflSeQ==} 1371 | engines: {node: '>=12'} 1372 | cpu: [x64] 1373 | os: [freebsd] 1374 | requiresBuild: true 1375 | optional: true 1376 | 1377 | /esbuild-freebsd-arm64/0.14.31: 1378 | resolution: {integrity: sha512-t85bS6jbRpmdjr4pdr/FY/fpx8lo1vv9S7BAs2EsXKJQhRDMIiC3QW+k2acYJoRuqirlvJcJVFQGCq/PfyC1kA==} 1379 | engines: {node: '>=12'} 1380 | cpu: [arm64] 1381 | os: [freebsd] 1382 | requiresBuild: true 1383 | optional: true 1384 | 1385 | /esbuild-linux-32/0.14.31: 1386 | resolution: {integrity: sha512-XYtOk/GodSkv+UOYVwryGpGPuFnszsMvRMKq6cIUfFfdssHuKDsU9IZveyCG44J106J39ABenQ5EetbYtVJHUw==} 1387 | engines: {node: '>=12'} 1388 | cpu: [ia32] 1389 | os: [linux] 1390 | requiresBuild: true 1391 | optional: true 1392 | 1393 | /esbuild-linux-64/0.14.31: 1394 | resolution: {integrity: sha512-Zf9CZxAxaXWHLqCg/QZ/hs0RU0XV3IBxV+ENQzy00S4QOTnZAvSLgPciILHHrVJ0lPIlb4XzAqlLM5y6iI2LIw==} 1395 | engines: {node: '>=12'} 1396 | cpu: [x64] 1397 | os: [linux] 1398 | requiresBuild: true 1399 | optional: true 1400 | 1401 | /esbuild-linux-arm/0.14.31: 1402 | resolution: {integrity: sha512-RpiaeHPRlgCCDskxoyIsI49BhcDtZ4cl8+SLffizDm0yMNWP538SUg0ezQ2TTOPj3/svaGIbkRDwYtAon0Sjkg==} 1403 | engines: {node: '>=12'} 1404 | cpu: [arm] 1405 | os: [linux] 1406 | requiresBuild: true 1407 | optional: true 1408 | 1409 | /esbuild-linux-arm64/0.14.31: 1410 | resolution: {integrity: sha512-V/H0tv+xpQ9IOHM+o85oCKNNidIEc5CcnDWl0V+hPd2F03dqdbFkWPBGphx8rD4JSQn6UefUQ1iH7y1qIzO8Fw==} 1411 | engines: {node: '>=12'} 1412 | cpu: [arm64] 1413 | os: [linux] 1414 | requiresBuild: true 1415 | optional: true 1416 | 1417 | /esbuild-linux-mips64le/0.14.31: 1418 | resolution: {integrity: sha512-9/oBfAckInRuUg6AEgdCLLn6KJ6UOJDOLmUinTsReVSg6AfV6wxYQJq9iQM2idRogP7GUpomJ+bvCdWXpotQRQ==} 1419 | engines: {node: '>=12'} 1420 | cpu: [mips64el] 1421 | os: [linux] 1422 | requiresBuild: true 1423 | optional: true 1424 | 1425 | /esbuild-linux-ppc64le/0.14.31: 1426 | resolution: {integrity: sha512-NMcb14Pg+8q8raGkzor9/R3vQwKzgxE3694BtO2SDLBwJuL2C1dQ1ZtM1t7ZvArQBgT8RiZVxb0/3fD+qGNk7g==} 1427 | engines: {node: '>=12'} 1428 | cpu: [ppc64] 1429 | os: [linux] 1430 | requiresBuild: true 1431 | optional: true 1432 | 1433 | /esbuild-linux-riscv64/0.14.31: 1434 | resolution: {integrity: sha512-l13yvmsVfawAnoYfcpuvml+nTlrOmtdceXYufSkXl2DOb0JKcuR6ARlAzuQCDcpo49SOJy1cCxpwlOIsUQBfzA==} 1435 | engines: {node: '>=12'} 1436 | cpu: [riscv64] 1437 | os: [linux] 1438 | requiresBuild: true 1439 | optional: true 1440 | 1441 | /esbuild-linux-s390x/0.14.31: 1442 | resolution: {integrity: sha512-GIwV9mY3koYja9MCSkKLk1P7rj+MkPV0UsGsZ575hEcIBrXeKN9jBi6X/bxDDPEN/SUAH35cJhBNrZU4x9lEfg==} 1443 | engines: {node: '>=12'} 1444 | cpu: [s390x] 1445 | os: [linux] 1446 | requiresBuild: true 1447 | optional: true 1448 | 1449 | /esbuild-netbsd-64/0.14.31: 1450 | resolution: {integrity: sha512-bJ+pyLvKQm+Obp5k7/Wk8e9Gdkls56F1aiI3uptoIfOIUqsZImH7pDyTrSufwqsFp62kO9LRuwXnjDwQtPyhFQ==} 1451 | engines: {node: '>=12'} 1452 | cpu: [x64] 1453 | os: [netbsd] 1454 | requiresBuild: true 1455 | optional: true 1456 | 1457 | /esbuild-openbsd-64/0.14.31: 1458 | resolution: {integrity: sha512-NRAAPPca05H9j9Xab0kVXK0V6/pyZGGy8d2Y8KS0BMwWEydlD4KCJDmH8/7bWCKYLRGOOCE9/GPBJyPWHFW3sg==} 1459 | engines: {node: '>=12'} 1460 | cpu: [x64] 1461 | os: [openbsd] 1462 | requiresBuild: true 1463 | optional: true 1464 | 1465 | /esbuild-sunos-64/0.14.31: 1466 | resolution: {integrity: sha512-9uA+V8w9Eehu4ldb95lPWdgCMcMO5HH6pXmfkk5usn3JsSZxKdLKsXB4hYgP80wscZvVYXJl2G+KNxsUTfPhZw==} 1467 | engines: {node: '>=12'} 1468 | cpu: [x64] 1469 | os: [sunos] 1470 | requiresBuild: true 1471 | optional: true 1472 | 1473 | /esbuild-windows-32/0.14.31: 1474 | resolution: {integrity: sha512-VGdncQTqoxD9q3v/dk0Yugbmx2FzOkcs0OemBYc1X9KXOLQYH0uQbLJIckZdZOC3J+JKSExbYFrzYCOwWPuNyA==} 1475 | engines: {node: '>=12'} 1476 | cpu: [ia32] 1477 | os: [win32] 1478 | requiresBuild: true 1479 | optional: true 1480 | 1481 | /esbuild-windows-64/0.14.31: 1482 | resolution: {integrity: sha512-v/2ye5zBqpmCzi3bLCagStbNQlnOsY7WtMrD2Q0xZxeSIXONxji15KYtVee5o7nw4lXWbQSS1BL8G6BBMvtq4A==} 1483 | engines: {node: '>=12'} 1484 | cpu: [x64] 1485 | os: [win32] 1486 | requiresBuild: true 1487 | optional: true 1488 | 1489 | /esbuild-windows-arm64/0.14.31: 1490 | resolution: {integrity: sha512-RXeU42FJoG1sriNHg73h4S+5B7L/gw+8T7U9u8IWqSSEbY6fZvBh4uofugiU1szUDqqP00GHwZ09WgYe3lGZiw==} 1491 | engines: {node: '>=12'} 1492 | cpu: [arm64] 1493 | os: [win32] 1494 | requiresBuild: true 1495 | optional: true 1496 | 1497 | /esbuild/0.14.31: 1498 | resolution: {integrity: sha512-QA0fUM13+JZzcvg1bdrhi7wo8Lr5IRHA9ypNn2znqxGqb66dSK6pAh01TjyBOhzZGazPQJZ1K26VrCAQJ715qA==} 1499 | engines: {node: '>=12'} 1500 | hasBin: true 1501 | requiresBuild: true 1502 | optionalDependencies: 1503 | esbuild-android-64: 0.14.31 1504 | esbuild-android-arm64: 0.14.31 1505 | esbuild-darwin-64: 0.14.31 1506 | esbuild-darwin-arm64: 0.14.31 1507 | esbuild-freebsd-64: 0.14.31 1508 | esbuild-freebsd-arm64: 0.14.31 1509 | esbuild-linux-32: 0.14.31 1510 | esbuild-linux-64: 0.14.31 1511 | esbuild-linux-arm: 0.14.31 1512 | esbuild-linux-arm64: 0.14.31 1513 | esbuild-linux-mips64le: 0.14.31 1514 | esbuild-linux-ppc64le: 0.14.31 1515 | esbuild-linux-riscv64: 0.14.31 1516 | esbuild-linux-s390x: 0.14.31 1517 | esbuild-netbsd-64: 0.14.31 1518 | esbuild-openbsd-64: 0.14.31 1519 | esbuild-sunos-64: 0.14.31 1520 | esbuild-windows-32: 0.14.31 1521 | esbuild-windows-64: 0.14.31 1522 | esbuild-windows-arm64: 0.14.31 1523 | 1524 | /escalade/3.1.1: 1525 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1526 | engines: {node: '>=6'} 1527 | 1528 | /escape-html/1.0.3: 1529 | resolution: {integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=} 1530 | dev: true 1531 | 1532 | /escape-string-regexp/1.0.5: 1533 | resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} 1534 | engines: {node: '>=0.8.0'} 1535 | 1536 | /escape-string-regexp/2.0.0: 1537 | resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} 1538 | engines: {node: '>=8'} 1539 | dev: true 1540 | 1541 | /esprima/4.0.1: 1542 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 1543 | engines: {node: '>=4'} 1544 | hasBin: true 1545 | dev: true 1546 | 1547 | /etag/1.8.1: 1548 | resolution: {integrity: sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=} 1549 | engines: {node: '>= 0.6'} 1550 | dev: true 1551 | 1552 | /execa/5.1.1: 1553 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 1554 | engines: {node: '>=10'} 1555 | dependencies: 1556 | cross-spawn: 7.0.3 1557 | get-stream: 6.0.1 1558 | human-signals: 2.1.0 1559 | is-stream: 2.0.1 1560 | merge-stream: 2.0.0 1561 | npm-run-path: 4.0.1 1562 | onetime: 5.1.2 1563 | signal-exit: 3.0.7 1564 | strip-final-newline: 2.0.0 1565 | dev: true 1566 | 1567 | /exit/0.1.2: 1568 | resolution: {integrity: sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=} 1569 | engines: {node: '>= 0.8.0'} 1570 | dev: true 1571 | 1572 | /expect/28.0.0-alpha.8: 1573 | resolution: {integrity: sha512-vB/AWzPzPqWHPC40I9giD1kpfvuk6UXC4XCvGpZnRWviXXC5dul2NAgqDewJ/tMzrUr+imXltjiwWK73S7VDcw==} 1574 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 1575 | dependencies: 1576 | '@jest/expect-utils': 28.0.0-alpha.8 1577 | jest-get-type: 28.0.0-alpha.3 1578 | jest-matcher-utils: 28.0.0-alpha.8 1579 | jest-message-util: 28.0.0-alpha.8 1580 | dev: true 1581 | 1582 | /express/4.17.3: 1583 | resolution: {integrity: sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==} 1584 | engines: {node: '>= 0.10.0'} 1585 | dependencies: 1586 | accepts: 1.3.8 1587 | array-flatten: 1.1.1 1588 | body-parser: 1.19.2 1589 | content-disposition: 0.5.4 1590 | content-type: 1.0.4 1591 | cookie: 0.4.2 1592 | cookie-signature: 1.0.6 1593 | debug: 2.6.9 1594 | depd: 1.1.2 1595 | encodeurl: 1.0.2 1596 | escape-html: 1.0.3 1597 | etag: 1.8.1 1598 | finalhandler: 1.1.2 1599 | fresh: 0.5.2 1600 | merge-descriptors: 1.0.1 1601 | methods: 1.1.2 1602 | on-finished: 2.3.0 1603 | parseurl: 1.3.3 1604 | path-to-regexp: 0.1.7 1605 | proxy-addr: 2.0.7 1606 | qs: 6.9.7 1607 | range-parser: 1.2.1 1608 | safe-buffer: 5.2.1 1609 | send: 0.17.2 1610 | serve-static: 1.14.2 1611 | setprototypeof: 1.2.0 1612 | statuses: 1.5.0 1613 | type-is: 1.6.18 1614 | utils-merge: 1.0.1 1615 | vary: 1.1.2 1616 | dev: true 1617 | 1618 | /fast-deep-equal/3.1.3: 1619 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1620 | dev: true 1621 | 1622 | /fast-json-stable-stringify/2.1.0: 1623 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1624 | dev: true 1625 | 1626 | /fast-json-stringify/2.7.13: 1627 | resolution: {integrity: sha512-ar+hQ4+OIurUGjSJD1anvYSDcUflywhKjfxnsW4TBTD7+u0tJufv6DKRWoQk3vI6YBOWMoz0TQtfbe7dxbQmvA==} 1628 | engines: {node: '>= 10.0.0'} 1629 | dependencies: 1630 | ajv: 6.12.6 1631 | deepmerge: 4.2.2 1632 | rfdc: 1.3.0 1633 | string-similarity: 4.0.4 1634 | dev: true 1635 | 1636 | /fast-printf/1.6.9: 1637 | resolution: {integrity: sha512-FChq8hbz65WMj4rstcQsFB0O7Cy++nmbNfLYnD9cYv2cRn8EG6k/MGn9kO/tjO66t09DLDugj3yL+V2o6Qftrg==} 1638 | engines: {node: '>=10.0'} 1639 | dependencies: 1640 | boolean: 3.2.0 1641 | dev: true 1642 | 1643 | /fast-safe-stringify/2.1.1: 1644 | resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} 1645 | dev: true 1646 | 1647 | /fb-watchman/2.0.1: 1648 | resolution: {integrity: sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==} 1649 | dependencies: 1650 | bser: 2.1.1 1651 | dev: true 1652 | 1653 | /fill-range/7.0.1: 1654 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1655 | engines: {node: '>=8'} 1656 | dependencies: 1657 | to-regex-range: 5.0.1 1658 | 1659 | /finalhandler/1.1.2: 1660 | resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} 1661 | engines: {node: '>= 0.8'} 1662 | dependencies: 1663 | debug: 2.6.9 1664 | encodeurl: 1.0.2 1665 | escape-html: 1.0.3 1666 | on-finished: 2.3.0 1667 | parseurl: 1.3.3 1668 | statuses: 1.5.0 1669 | unpipe: 1.0.0 1670 | dev: true 1671 | 1672 | /find-up/4.1.0: 1673 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 1674 | engines: {node: '>=8'} 1675 | dependencies: 1676 | locate-path: 5.0.0 1677 | path-exists: 4.0.0 1678 | dev: true 1679 | 1680 | /forwarded/0.2.0: 1681 | resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} 1682 | engines: {node: '>= 0.6'} 1683 | dev: true 1684 | 1685 | /fresh/0.5.2: 1686 | resolution: {integrity: sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=} 1687 | engines: {node: '>= 0.6'} 1688 | dev: true 1689 | 1690 | /fs-extra/10.0.1: 1691 | resolution: {integrity: sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==} 1692 | engines: {node: '>=12'} 1693 | dependencies: 1694 | graceful-fs: 4.2.10 1695 | jsonfile: 6.1.0 1696 | universalify: 2.0.0 1697 | 1698 | /fs.realpath/1.0.0: 1699 | resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} 1700 | dev: true 1701 | 1702 | /fsevents/2.3.2: 1703 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1704 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1705 | os: [darwin] 1706 | requiresBuild: true 1707 | optional: true 1708 | 1709 | /function-bind/1.1.1: 1710 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1711 | 1712 | /gensync/1.0.0-beta.2: 1713 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1714 | engines: {node: '>=6.9.0'} 1715 | 1716 | /get-caller-file/2.0.5: 1717 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 1718 | engines: {node: 6.* || 8.* || >= 10.*} 1719 | dev: true 1720 | 1721 | /get-package-type/0.1.0: 1722 | resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} 1723 | engines: {node: '>=8.0.0'} 1724 | dev: true 1725 | 1726 | /get-port/5.1.1: 1727 | resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} 1728 | engines: {node: '>=8'} 1729 | dev: true 1730 | 1731 | /get-stream/6.0.1: 1732 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 1733 | engines: {node: '>=10'} 1734 | dev: true 1735 | 1736 | /glob-parent/5.1.2: 1737 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1738 | engines: {node: '>= 6'} 1739 | dependencies: 1740 | is-glob: 4.0.3 1741 | 1742 | /glob-regex/0.3.2: 1743 | resolution: {integrity: sha512-m5blUd3/OqDTWwzBBtWBPrGlAzatRywHameHeekAZyZrskYouOGdNB8T/q6JucucvJXtOuyHIn0/Yia7iDasDw==} 1744 | dev: true 1745 | 1746 | /glob/7.2.0: 1747 | resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} 1748 | dependencies: 1749 | fs.realpath: 1.0.0 1750 | inflight: 1.0.6 1751 | inherits: 2.0.4 1752 | minimatch: 3.1.2 1753 | once: 1.4.0 1754 | path-is-absolute: 1.0.1 1755 | dev: true 1756 | 1757 | /globals/11.12.0: 1758 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1759 | engines: {node: '>=4'} 1760 | 1761 | /globalthis/1.0.2: 1762 | resolution: {integrity: sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ==} 1763 | engines: {node: '>= 0.4'} 1764 | dependencies: 1765 | define-properties: 1.1.3 1766 | dev: true 1767 | 1768 | /globrex/0.1.2: 1769 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} 1770 | dev: true 1771 | 1772 | /graceful-fs/4.2.10: 1773 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} 1774 | 1775 | /has-flag/3.0.0: 1776 | resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} 1777 | engines: {node: '>=4'} 1778 | 1779 | /has-flag/4.0.0: 1780 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1781 | engines: {node: '>=8'} 1782 | dev: true 1783 | 1784 | /has/1.0.3: 1785 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1786 | engines: {node: '>= 0.4.0'} 1787 | dependencies: 1788 | function-bind: 1.1.1 1789 | 1790 | /html-entities/2.3.2: 1791 | resolution: {integrity: sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==} 1792 | dev: false 1793 | 1794 | /html-escaper/2.0.2: 1795 | resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} 1796 | dev: true 1797 | 1798 | /http-errors/1.8.1: 1799 | resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} 1800 | engines: {node: '>= 0.6'} 1801 | dependencies: 1802 | depd: 1.1.2 1803 | inherits: 2.0.4 1804 | setprototypeof: 1.2.0 1805 | statuses: 1.5.0 1806 | toidentifier: 1.0.1 1807 | dev: true 1808 | 1809 | /http-terminator/3.2.0: 1810 | resolution: {integrity: sha512-JLjck1EzPaWjsmIf8bziM3p9fgR1Y3JoUKAkyYEbZmFrIvJM6I8vVJfBGWlEtV9IWOvzNnaTtjuwZeBY2kwB4g==} 1811 | engines: {node: '>=14'} 1812 | dependencies: 1813 | delay: 5.0.0 1814 | p-wait-for: 3.2.0 1815 | roarr: 7.11.0 1816 | type-fest: 2.12.2 1817 | dev: true 1818 | 1819 | /human-signals/2.1.0: 1820 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 1821 | engines: {node: '>=10.17.0'} 1822 | dev: true 1823 | 1824 | /iconv-lite/0.4.24: 1825 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 1826 | engines: {node: '>=0.10.0'} 1827 | dependencies: 1828 | safer-buffer: 2.1.2 1829 | dev: true 1830 | 1831 | /immutable/4.0.0: 1832 | resolution: {integrity: sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==} 1833 | dev: true 1834 | 1835 | /import-local/3.1.0: 1836 | resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} 1837 | engines: {node: '>=8'} 1838 | hasBin: true 1839 | dependencies: 1840 | pkg-dir: 4.2.0 1841 | resolve-cwd: 3.0.0 1842 | dev: true 1843 | 1844 | /imurmurhash/0.1.4: 1845 | resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} 1846 | engines: {node: '>=0.8.19'} 1847 | dev: true 1848 | 1849 | /inflight/1.0.6: 1850 | resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} 1851 | dependencies: 1852 | once: 1.4.0 1853 | wrappy: 1.0.2 1854 | dev: true 1855 | 1856 | /inherits/2.0.4: 1857 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1858 | dev: true 1859 | 1860 | /ipaddr.js/1.9.1: 1861 | resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} 1862 | engines: {node: '>= 0.10'} 1863 | dev: true 1864 | 1865 | /is-arrayish/0.2.1: 1866 | resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=} 1867 | dev: true 1868 | 1869 | /is-binary-path/2.1.0: 1870 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1871 | engines: {node: '>=8'} 1872 | dependencies: 1873 | binary-extensions: 2.2.0 1874 | 1875 | /is-core-module/2.8.1: 1876 | resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==} 1877 | dependencies: 1878 | has: 1.0.3 1879 | 1880 | /is-extglob/2.1.1: 1881 | resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} 1882 | engines: {node: '>=0.10.0'} 1883 | 1884 | /is-fullwidth-code-point/3.0.0: 1885 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1886 | engines: {node: '>=8'} 1887 | dev: true 1888 | 1889 | /is-generator-fn/2.1.0: 1890 | resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} 1891 | engines: {node: '>=6'} 1892 | dev: true 1893 | 1894 | /is-glob/4.0.3: 1895 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1896 | engines: {node: '>=0.10.0'} 1897 | dependencies: 1898 | is-extglob: 2.1.1 1899 | 1900 | /is-number/7.0.0: 1901 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1902 | engines: {node: '>=0.12.0'} 1903 | 1904 | /is-stream/2.0.1: 1905 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 1906 | engines: {node: '>=8'} 1907 | dev: true 1908 | 1909 | /is-what/4.1.7: 1910 | resolution: {integrity: sha512-DBVOQNiPKnGMxRMLIYSwERAS5MVY1B7xYiGnpgctsOFvVDz9f9PFXXxMcTOHuoqYp4NK9qFYQaIC1NRRxLMpBQ==} 1911 | engines: {node: '>=12.13'} 1912 | dev: false 1913 | 1914 | /isexe/2.0.0: 1915 | resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} 1916 | dev: true 1917 | 1918 | /istanbul-lib-coverage/3.2.0: 1919 | resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} 1920 | engines: {node: '>=8'} 1921 | dev: true 1922 | 1923 | /istanbul-lib-instrument/5.1.0: 1924 | resolution: {integrity: sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==} 1925 | engines: {node: '>=8'} 1926 | dependencies: 1927 | '@babel/core': 7.17.8 1928 | '@babel/parser': 7.17.8 1929 | '@istanbuljs/schema': 0.1.3 1930 | istanbul-lib-coverage: 3.2.0 1931 | semver: 6.3.0 1932 | transitivePeerDependencies: 1933 | - supports-color 1934 | dev: true 1935 | 1936 | /istanbul-lib-report/3.0.0: 1937 | resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} 1938 | engines: {node: '>=8'} 1939 | dependencies: 1940 | istanbul-lib-coverage: 3.2.0 1941 | make-dir: 3.1.0 1942 | supports-color: 7.2.0 1943 | dev: true 1944 | 1945 | /istanbul-lib-source-maps/4.0.1: 1946 | resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} 1947 | engines: {node: '>=10'} 1948 | dependencies: 1949 | debug: 4.3.4 1950 | istanbul-lib-coverage: 3.2.0 1951 | source-map: 0.6.1 1952 | transitivePeerDependencies: 1953 | - supports-color 1954 | dev: true 1955 | 1956 | /istanbul-reports/3.1.4: 1957 | resolution: {integrity: sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==} 1958 | engines: {node: '>=8'} 1959 | dependencies: 1960 | html-escaper: 2.0.2 1961 | istanbul-lib-report: 3.0.0 1962 | dev: true 1963 | 1964 | /jest-changed-files/28.0.0-alpha.3: 1965 | resolution: {integrity: sha512-ip0mVkZDlKsORb0AYdYHRxxabHu2XwKFjTIGF4J0/dEMcvpuSigd5bIRv8J5sig+nYFq6XwXehuhnVqTNWEQKQ==} 1966 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 1967 | dependencies: 1968 | execa: 5.1.1 1969 | throat: 6.0.1 1970 | dev: true 1971 | 1972 | /jest-circus/28.0.0-alpha.8: 1973 | resolution: {integrity: sha512-HggnoADz2upK+gF/TblusUZ/0awEGIlLDbEHEaF7ShwsIbEyQLckK1/aQIxOUyMkWod5bM+qftHrQl+qKE+6jA==} 1974 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 1975 | dependencies: 1976 | '@jest/environment': 28.0.0-alpha.8 1977 | '@jest/expect': 28.0.0-alpha.8 1978 | '@jest/test-result': 28.0.0-alpha.8 1979 | '@jest/types': 28.0.0-alpha.8 1980 | '@types/node': 17.0.23 1981 | chalk: 4.1.2 1982 | co: 4.6.0 1983 | dedent: 0.7.0 1984 | is-generator-fn: 2.1.0 1985 | jest-each: 28.0.0-alpha.8 1986 | jest-matcher-utils: 28.0.0-alpha.8 1987 | jest-message-util: 28.0.0-alpha.8 1988 | jest-runtime: 28.0.0-alpha.8 1989 | jest-snapshot: 28.0.0-alpha.8 1990 | jest-util: 28.0.0-alpha.8 1991 | pretty-format: 28.0.0-alpha.8 1992 | slash: 3.0.0 1993 | stack-utils: 2.0.5 1994 | throat: 6.0.1 1995 | transitivePeerDependencies: 1996 | - supports-color 1997 | dev: true 1998 | 1999 | /jest-cli/28.0.0-alpha.8: 2000 | resolution: {integrity: sha512-wX+oTOmLA2u63LxmABEBo/8qx6LFirsU8v+dC5NtTt9WVOOkWLEJp/4ynZwJ+S8KsRzaBy0WiB4Z45CnSx2Btw==} 2001 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 2002 | hasBin: true 2003 | peerDependencies: 2004 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 2005 | peerDependenciesMeta: 2006 | node-notifier: 2007 | optional: true 2008 | dependencies: 2009 | '@jest/core': 28.0.0-alpha.8 2010 | '@jest/test-result': 28.0.0-alpha.8 2011 | '@jest/types': 28.0.0-alpha.8 2012 | chalk: 4.1.2 2013 | exit: 0.1.2 2014 | graceful-fs: 4.2.10 2015 | import-local: 3.1.0 2016 | jest-config: 28.0.0-alpha.8 2017 | jest-util: 28.0.0-alpha.8 2018 | jest-validate: 28.0.0-alpha.8 2019 | prompts: 2.4.2 2020 | yargs: 17.4.0 2021 | transitivePeerDependencies: 2022 | - '@types/node' 2023 | - supports-color 2024 | - ts-node 2025 | dev: true 2026 | 2027 | /jest-config/28.0.0-alpha.8: 2028 | resolution: {integrity: sha512-sybN6aAELdFEGnuTTF7pnijFpomR/fJf+gXXAksLDxRq3wFzRDIqfHI82wBpkZhNqVPAGC/p9ilsBwb9YMID7A==} 2029 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 2030 | peerDependencies: 2031 | '@types/node': '*' 2032 | ts-node: '>=9.0.0' 2033 | peerDependenciesMeta: 2034 | '@types/node': 2035 | optional: true 2036 | ts-node: 2037 | optional: true 2038 | dependencies: 2039 | '@babel/core': 7.17.8 2040 | '@jest/test-sequencer': 28.0.0-alpha.8 2041 | '@jest/types': 28.0.0-alpha.8 2042 | babel-jest: 28.0.0-alpha.8_@babel+core@7.17.8 2043 | chalk: 4.1.2 2044 | ci-info: 3.3.0 2045 | deepmerge: 4.2.2 2046 | glob: 7.2.0 2047 | graceful-fs: 4.2.10 2048 | jest-circus: 28.0.0-alpha.8 2049 | jest-environment-node: 28.0.0-alpha.8 2050 | jest-get-type: 28.0.0-alpha.3 2051 | jest-regex-util: 28.0.0-alpha.6 2052 | jest-resolve: 28.0.0-alpha.8 2053 | jest-runner: 28.0.0-alpha.8 2054 | jest-util: 28.0.0-alpha.8 2055 | jest-validate: 28.0.0-alpha.8 2056 | micromatch: 4.0.5 2057 | parse-json: 5.2.0 2058 | pretty-format: 28.0.0-alpha.8 2059 | slash: 3.0.0 2060 | strip-json-comments: 3.1.1 2061 | transitivePeerDependencies: 2062 | - supports-color 2063 | dev: true 2064 | 2065 | /jest-config/28.0.0-alpha.8_@types+node@17.0.23: 2066 | resolution: {integrity: sha512-sybN6aAELdFEGnuTTF7pnijFpomR/fJf+gXXAksLDxRq3wFzRDIqfHI82wBpkZhNqVPAGC/p9ilsBwb9YMID7A==} 2067 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 2068 | peerDependencies: 2069 | '@types/node': '*' 2070 | ts-node: '>=9.0.0' 2071 | peerDependenciesMeta: 2072 | '@types/node': 2073 | optional: true 2074 | ts-node: 2075 | optional: true 2076 | dependencies: 2077 | '@babel/core': 7.17.8 2078 | '@jest/test-sequencer': 28.0.0-alpha.8 2079 | '@jest/types': 28.0.0-alpha.8 2080 | '@types/node': 17.0.23 2081 | babel-jest: 28.0.0-alpha.8_@babel+core@7.17.8 2082 | chalk: 4.1.2 2083 | ci-info: 3.3.0 2084 | deepmerge: 4.2.2 2085 | glob: 7.2.0 2086 | graceful-fs: 4.2.10 2087 | jest-circus: 28.0.0-alpha.8 2088 | jest-environment-node: 28.0.0-alpha.8 2089 | jest-get-type: 28.0.0-alpha.3 2090 | jest-regex-util: 28.0.0-alpha.6 2091 | jest-resolve: 28.0.0-alpha.8 2092 | jest-runner: 28.0.0-alpha.8 2093 | jest-util: 28.0.0-alpha.8 2094 | jest-validate: 28.0.0-alpha.8 2095 | micromatch: 4.0.5 2096 | parse-json: 5.2.0 2097 | pretty-format: 28.0.0-alpha.8 2098 | slash: 3.0.0 2099 | strip-json-comments: 3.1.1 2100 | transitivePeerDependencies: 2101 | - supports-color 2102 | dev: true 2103 | 2104 | /jest-diff/27.5.1: 2105 | resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} 2106 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2107 | dependencies: 2108 | chalk: 4.1.2 2109 | diff-sequences: 27.5.1 2110 | jest-get-type: 27.5.1 2111 | pretty-format: 27.5.1 2112 | dev: true 2113 | 2114 | /jest-diff/28.0.0-alpha.8: 2115 | resolution: {integrity: sha512-gBCIbr074dHN5fzGyJxT9VFUrzq3biDWBcXLNE2kha3mwNNgxeoZ7w6YMqtjuS4SnpDzl/mraqpj9huu92nQUA==} 2116 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 2117 | dependencies: 2118 | chalk: 4.1.2 2119 | diff-sequences: 28.0.0-alpha.6 2120 | jest-get-type: 28.0.0-alpha.3 2121 | pretty-format: 28.0.0-alpha.8 2122 | dev: true 2123 | 2124 | /jest-docblock/28.0.0-alpha.6: 2125 | resolution: {integrity: sha512-vtm7Peh2zec3BI/0GlceeznjWEzN0Nm8uVjnFgjVbaY+YgmnMxKkChY9+oLHxrOd127k51BspVe4Ts3Q2/btTw==} 2126 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 2127 | dependencies: 2128 | detect-newline: 3.1.0 2129 | dev: true 2130 | 2131 | /jest-each/28.0.0-alpha.8: 2132 | resolution: {integrity: sha512-1Y62l/BThkcOgFe1Fwvh+mEVjyDsF7RwusnzvpyusUcYMQbA8EgqJW1C+YB1z3MJfm6TIq7E28jJSTEQ4zHF5A==} 2133 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 2134 | dependencies: 2135 | '@jest/types': 28.0.0-alpha.8 2136 | chalk: 4.1.2 2137 | jest-get-type: 28.0.0-alpha.3 2138 | jest-util: 28.0.0-alpha.8 2139 | pretty-format: 28.0.0-alpha.8 2140 | dev: true 2141 | 2142 | /jest-environment-node/28.0.0-alpha.8: 2143 | resolution: {integrity: sha512-kWXTZ3mU5CuXc7cyCfLmLEpWaD88uzpj67SGjFItwvTpc0CJmgP+sGRf1Qk79hFeAapCPCrlOnhjydLHfW4Ifw==} 2144 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 2145 | dependencies: 2146 | '@jest/environment': 28.0.0-alpha.8 2147 | '@jest/fake-timers': 28.0.0-alpha.8 2148 | '@jest/types': 28.0.0-alpha.8 2149 | '@types/node': 17.0.23 2150 | jest-mock: 28.0.0-alpha.8 2151 | jest-util: 28.0.0-alpha.8 2152 | dev: true 2153 | 2154 | /jest-get-type/27.5.1: 2155 | resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} 2156 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2157 | dev: true 2158 | 2159 | /jest-get-type/28.0.0-alpha.3: 2160 | resolution: {integrity: sha512-5wmg7pmvRhpCGjLmMXarPWGNgU3sEqmyJFX58hdq/u0yZQ0eMvLdwiVs0/CaRBDrKdDWA23nuE+112CwJdHGXQ==} 2161 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 2162 | dev: true 2163 | 2164 | /jest-haste-map/28.0.0-alpha.8: 2165 | resolution: {integrity: sha512-iwzGXfr+LVXxgn53YPR2xO4VYaziYF5OZ/zWcAV8xlz9iWiqNaP5jLfZRnrYOdwaAONOpCKzzN0CFMkO5pj1Qw==} 2166 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 2167 | dependencies: 2168 | '@jest/types': 28.0.0-alpha.8 2169 | '@types/graceful-fs': 4.1.5 2170 | '@types/node': 17.0.23 2171 | anymatch: 3.1.2 2172 | fb-watchman: 2.0.1 2173 | graceful-fs: 4.2.10 2174 | jest-regex-util: 28.0.0-alpha.6 2175 | jest-util: 28.0.0-alpha.8 2176 | jest-worker: 28.0.0-alpha.8 2177 | micromatch: 4.0.5 2178 | walker: 1.0.8 2179 | optionalDependencies: 2180 | fsevents: 2.3.2 2181 | dev: true 2182 | 2183 | /jest-leak-detector/28.0.0-alpha.8: 2184 | resolution: {integrity: sha512-nnZ6q6Sjyg+4BQE8PQIBYZJ+4cDnj34nWuj+PN/ljGWnxqkp5J57ktXakdWjMHzhXAR89eJu6eeQbKsQwD2cww==} 2185 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 2186 | dependencies: 2187 | jest-get-type: 28.0.0-alpha.3 2188 | pretty-format: 28.0.0-alpha.8 2189 | dev: true 2190 | 2191 | /jest-matcher-utils/27.5.1: 2192 | resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} 2193 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2194 | dependencies: 2195 | chalk: 4.1.2 2196 | jest-diff: 27.5.1 2197 | jest-get-type: 27.5.1 2198 | pretty-format: 27.5.1 2199 | dev: true 2200 | 2201 | /jest-matcher-utils/28.0.0-alpha.8: 2202 | resolution: {integrity: sha512-STXNMtBV0sPmMjILHl/RuBW+KFIreFz5rFq6JE38UO4LIYoLnP1sUMvVslzDiWHpXKrCAZiuXDt0dab/N8DaWA==} 2203 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 2204 | dependencies: 2205 | chalk: 4.1.2 2206 | jest-diff: 28.0.0-alpha.8 2207 | jest-get-type: 28.0.0-alpha.3 2208 | pretty-format: 28.0.0-alpha.8 2209 | dev: true 2210 | 2211 | /jest-message-util/28.0.0-alpha.8: 2212 | resolution: {integrity: sha512-p3iB5I/gacD+ePFxh4EQScxH1nSb3Sc1bPKw8yaw4F+S0SNjtZxxStyeIz2IxqrabgjtmQuVWJ1QbBuqHMXMyQ==} 2213 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 2214 | dependencies: 2215 | '@babel/code-frame': 7.16.7 2216 | '@jest/types': 28.0.0-alpha.8 2217 | '@types/stack-utils': 2.0.1 2218 | chalk: 4.1.2 2219 | graceful-fs: 4.2.10 2220 | micromatch: 4.0.5 2221 | pretty-format: 28.0.0-alpha.8 2222 | slash: 3.0.0 2223 | stack-utils: 2.0.5 2224 | dev: true 2225 | 2226 | /jest-mock/28.0.0-alpha.8: 2227 | resolution: {integrity: sha512-5Q71/KdmwdsnTLMOVW3+CKTZ358QpV2aCqmxCyFlMfT+6Xeyyw0yBg/Om5WDd7Sj6CQVwvsl8s54J9Ry6+CLNw==} 2228 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 2229 | dependencies: 2230 | '@jest/types': 28.0.0-alpha.8 2231 | '@types/node': 17.0.23 2232 | dev: true 2233 | 2234 | /jest-pnp-resolver/1.2.2_jest-resolve@28.0.0-alpha.8: 2235 | resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} 2236 | engines: {node: '>=6'} 2237 | peerDependencies: 2238 | jest-resolve: '*' 2239 | peerDependenciesMeta: 2240 | jest-resolve: 2241 | optional: true 2242 | dependencies: 2243 | jest-resolve: 28.0.0-alpha.8 2244 | dev: true 2245 | 2246 | /jest-regex-util/28.0.0-alpha.6: 2247 | resolution: {integrity: sha512-EunuUlOE7vRjxjOvr/NYR4FCIShD6MVKa2oaJxGH0Xr5IaBKC9yNxyl+uBusp1+mdEU6qqBzSzdfwSliCaofrA==} 2248 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 2249 | dev: true 2250 | 2251 | /jest-resolve-dependencies/28.0.0-alpha.8: 2252 | resolution: {integrity: sha512-2SLJbbuVsZZ/EbutoIm2xkyz4TpASpDzwQeKo8kwHw0b9JCRUnxp/2r3ouL4NknWBO+jl3LqNV9Vn7h8WnCj7A==} 2253 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 2254 | dependencies: 2255 | jest-regex-util: 28.0.0-alpha.6 2256 | jest-snapshot: 28.0.0-alpha.8 2257 | transitivePeerDependencies: 2258 | - supports-color 2259 | dev: true 2260 | 2261 | /jest-resolve/28.0.0-alpha.8: 2262 | resolution: {integrity: sha512-mR0qof203PIcS0nLIlyQWqaiwAVfJlO7bq/mTW/0b3C8jksZAalW9hWBl0fhWEY5ykMWmzahMX2BVim8MzKEPA==} 2263 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 2264 | dependencies: 2265 | chalk: 4.1.2 2266 | graceful-fs: 4.2.10 2267 | jest-haste-map: 28.0.0-alpha.8 2268 | jest-pnp-resolver: 1.2.2_jest-resolve@28.0.0-alpha.8 2269 | jest-util: 28.0.0-alpha.8 2270 | jest-validate: 28.0.0-alpha.8 2271 | resolve: 1.22.0 2272 | resolve.exports: 1.1.0 2273 | slash: 3.0.0 2274 | dev: true 2275 | 2276 | /jest-runner/28.0.0-alpha.8: 2277 | resolution: {integrity: sha512-Ufi6PqalQP9THnhV/FojsawGMLxCRp477INC1lZETK788e0r6i/Jq0WVIS0yKQ9XiO5+wfDv9yFKqC1BZqS7NA==} 2278 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 2279 | dependencies: 2280 | '@jest/console': 28.0.0-alpha.8 2281 | '@jest/environment': 28.0.0-alpha.8 2282 | '@jest/test-result': 28.0.0-alpha.8 2283 | '@jest/transform': 28.0.0-alpha.8 2284 | '@jest/types': 28.0.0-alpha.8 2285 | '@types/node': 17.0.23 2286 | chalk: 4.1.2 2287 | emittery: 0.8.1 2288 | graceful-fs: 4.2.10 2289 | jest-docblock: 28.0.0-alpha.6 2290 | jest-environment-node: 28.0.0-alpha.8 2291 | jest-haste-map: 28.0.0-alpha.8 2292 | jest-leak-detector: 28.0.0-alpha.8 2293 | jest-message-util: 28.0.0-alpha.8 2294 | jest-resolve: 28.0.0-alpha.8 2295 | jest-runtime: 28.0.0-alpha.8 2296 | jest-util: 28.0.0-alpha.8 2297 | jest-worker: 28.0.0-alpha.8 2298 | source-map-support: 0.5.21 2299 | throat: 6.0.1 2300 | transitivePeerDependencies: 2301 | - supports-color 2302 | dev: true 2303 | 2304 | /jest-runtime/28.0.0-alpha.8: 2305 | resolution: {integrity: sha512-o5PHkVXwlO+yJKgiXS8kSorAmL6ydxGcp9YbqemM0VZeK6WDhodSr/h4fcJFXucR5IFbgIi4denEt+KdzjpSuA==} 2306 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 2307 | dependencies: 2308 | '@jest/environment': 28.0.0-alpha.8 2309 | '@jest/fake-timers': 28.0.0-alpha.8 2310 | '@jest/globals': 28.0.0-alpha.8 2311 | '@jest/source-map': 28.0.0-alpha.6 2312 | '@jest/test-result': 28.0.0-alpha.8 2313 | '@jest/transform': 28.0.0-alpha.8 2314 | '@jest/types': 28.0.0-alpha.8 2315 | chalk: 4.1.2 2316 | cjs-module-lexer: 1.2.2 2317 | collect-v8-coverage: 1.0.1 2318 | execa: 5.1.1 2319 | glob: 7.2.0 2320 | graceful-fs: 4.2.10 2321 | jest-haste-map: 28.0.0-alpha.8 2322 | jest-message-util: 28.0.0-alpha.8 2323 | jest-mock: 28.0.0-alpha.8 2324 | jest-regex-util: 28.0.0-alpha.6 2325 | jest-resolve: 28.0.0-alpha.8 2326 | jest-snapshot: 28.0.0-alpha.8 2327 | jest-util: 28.0.0-alpha.8 2328 | slash: 3.0.0 2329 | strip-bom: 4.0.0 2330 | transitivePeerDependencies: 2331 | - supports-color 2332 | dev: true 2333 | 2334 | /jest-snapshot/28.0.0-alpha.8: 2335 | resolution: {integrity: sha512-FbnH/PiT1KXaUlKIHZbqdQQ2mrwgXBoyRZyC5lh9sUFXMYHN9qO9ph+jVVwtc4t5lrJSjWr/uU4dGmVLT3dHRQ==} 2336 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 2337 | dependencies: 2338 | '@babel/core': 7.17.8 2339 | '@babel/generator': 7.17.7 2340 | '@babel/plugin-syntax-typescript': 7.16.7_@babel+core@7.17.8 2341 | '@babel/traverse': 7.17.3 2342 | '@babel/types': 7.17.0 2343 | '@jest/expect-utils': 28.0.0-alpha.8 2344 | '@jest/transform': 28.0.0-alpha.8 2345 | '@jest/types': 28.0.0-alpha.8 2346 | '@types/babel__traverse': 7.14.2 2347 | '@types/prettier': 2.4.4 2348 | babel-preset-current-node-syntax: 1.0.1_@babel+core@7.17.8 2349 | chalk: 4.1.2 2350 | expect: 28.0.0-alpha.8 2351 | graceful-fs: 4.2.10 2352 | jest-diff: 28.0.0-alpha.8 2353 | jest-get-type: 28.0.0-alpha.3 2354 | jest-haste-map: 28.0.0-alpha.8 2355 | jest-matcher-utils: 28.0.0-alpha.8 2356 | jest-message-util: 28.0.0-alpha.8 2357 | jest-util: 28.0.0-alpha.8 2358 | natural-compare: 1.4.0 2359 | pretty-format: 28.0.0-alpha.8 2360 | semver: 7.3.5 2361 | transitivePeerDependencies: 2362 | - supports-color 2363 | dev: true 2364 | 2365 | /jest-util/27.5.1: 2366 | resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} 2367 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2368 | dependencies: 2369 | '@jest/types': 27.5.1 2370 | '@types/node': 17.0.23 2371 | chalk: 4.1.2 2372 | ci-info: 3.3.0 2373 | graceful-fs: 4.2.10 2374 | picomatch: 2.3.1 2375 | dev: true 2376 | 2377 | /jest-util/28.0.0-alpha.8: 2378 | resolution: {integrity: sha512-ckuijlqaWJre/fZuxbhPRdvUhnQOKbezTS0jz3NoIZzXgnY4DFjWFLKwJ12n7wRxo6jRdgfDPOuVSKBWjnV2uA==} 2379 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 2380 | dependencies: 2381 | '@jest/types': 28.0.0-alpha.8 2382 | '@types/node': 17.0.23 2383 | chalk: 4.1.2 2384 | ci-info: 3.3.0 2385 | graceful-fs: 4.2.10 2386 | picomatch: 2.3.1 2387 | dev: true 2388 | 2389 | /jest-validate/28.0.0-alpha.8: 2390 | resolution: {integrity: sha512-BsSqeDSvoLu2/43a8qaNIG/NywOIGeld2lZ8/kLEyMz44JrmSe6lpBX1VGo+Mx8VMd5Ly9PVBLF/lYpTsBP8+g==} 2391 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 2392 | dependencies: 2393 | '@jest/types': 28.0.0-alpha.8 2394 | camelcase: 6.3.0 2395 | chalk: 4.1.2 2396 | jest-get-type: 28.0.0-alpha.3 2397 | leven: 3.1.0 2398 | pretty-format: 28.0.0-alpha.8 2399 | dev: true 2400 | 2401 | /jest-watcher/28.0.0-alpha.8: 2402 | resolution: {integrity: sha512-mXZdJ9TlWOfuF+/95CHkodEyoILqD2Ni5BcFn0k3re1NbKrQYkbDkfAPJmTidJiBVR97sBLjnvPBHgGEvgzohQ==} 2403 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 2404 | dependencies: 2405 | '@jest/test-result': 28.0.0-alpha.8 2406 | '@jest/types': 28.0.0-alpha.8 2407 | '@types/node': 17.0.23 2408 | ansi-escapes: 4.3.2 2409 | chalk: 4.1.2 2410 | jest-util: 28.0.0-alpha.8 2411 | string-length: 4.0.2 2412 | dev: true 2413 | 2414 | /jest-worker/28.0.0-alpha.8: 2415 | resolution: {integrity: sha512-5RL06QlZZsZIC/eAGHiZzLaYvhT0zZOAOcAIEBbr11NQKzrQS3CeJgTcJd2mSD2q+wmkC7bJFLu1o7x0JoyT9Q==} 2416 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 2417 | dependencies: 2418 | '@types/node': 17.0.23 2419 | merge-stream: 2.0.0 2420 | supports-color: 8.1.1 2421 | dev: true 2422 | 2423 | /jest/28.0.0-alpha.7: 2424 | resolution: {integrity: sha512-fWAqvlZzxi09wGPcfkb77WbVJSSzEUwqLVqto9FHhbZ674kDbQkl5xGEuTbkvIsogMJym7nbkx9tSPa051ljnA==} 2425 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 2426 | hasBin: true 2427 | peerDependencies: 2428 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 2429 | peerDependenciesMeta: 2430 | node-notifier: 2431 | optional: true 2432 | dependencies: 2433 | '@jest/core': 28.0.0-alpha.8 2434 | import-local: 3.1.0 2435 | jest-cli: 28.0.0-alpha.8 2436 | transitivePeerDependencies: 2437 | - '@types/node' 2438 | - supports-color 2439 | - ts-node 2440 | dev: true 2441 | 2442 | /js-tokens/4.0.0: 2443 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 2444 | 2445 | /js-yaml/3.14.1: 2446 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 2447 | hasBin: true 2448 | dependencies: 2449 | argparse: 1.0.10 2450 | esprima: 4.0.1 2451 | dev: true 2452 | 2453 | /jsesc/2.5.2: 2454 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 2455 | engines: {node: '>=4'} 2456 | hasBin: true 2457 | 2458 | /json-parse-even-better-errors/2.3.1: 2459 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 2460 | dev: true 2461 | 2462 | /json-schema-traverse/0.4.1: 2463 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 2464 | dev: true 2465 | 2466 | /json5/1.0.1: 2467 | resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} 2468 | hasBin: true 2469 | dependencies: 2470 | minimist: 1.2.6 2471 | dev: true 2472 | 2473 | /json5/2.2.1: 2474 | resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} 2475 | engines: {node: '>=6'} 2476 | hasBin: true 2477 | 2478 | /jsonfile/6.1.0: 2479 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} 2480 | dependencies: 2481 | universalify: 2.0.0 2482 | optionalDependencies: 2483 | graceful-fs: 4.2.10 2484 | 2485 | /kleur/3.0.3: 2486 | resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} 2487 | engines: {node: '>=6'} 2488 | dev: true 2489 | 2490 | /leven/3.1.0: 2491 | resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} 2492 | engines: {node: '>=6'} 2493 | dev: true 2494 | 2495 | /lines-and-columns/1.2.4: 2496 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 2497 | dev: true 2498 | 2499 | /locate-path/5.0.0: 2500 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 2501 | engines: {node: '>=8'} 2502 | dependencies: 2503 | p-locate: 4.1.0 2504 | dev: true 2505 | 2506 | /lodash.memoize/4.1.2: 2507 | resolution: {integrity: sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=} 2508 | dev: true 2509 | 2510 | /lodash/4.17.21: 2511 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 2512 | dev: true 2513 | 2514 | /lru-cache/6.0.0: 2515 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2516 | engines: {node: '>=10'} 2517 | dependencies: 2518 | yallist: 4.0.0 2519 | dev: true 2520 | 2521 | /make-dir/3.1.0: 2522 | resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} 2523 | engines: {node: '>=8'} 2524 | dependencies: 2525 | semver: 6.3.0 2526 | dev: true 2527 | 2528 | /make-error/1.3.6: 2529 | resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} 2530 | dev: true 2531 | 2532 | /makeerror/1.0.12: 2533 | resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} 2534 | dependencies: 2535 | tmpl: 1.0.5 2536 | dev: true 2537 | 2538 | /media-typer/0.3.0: 2539 | resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=} 2540 | engines: {node: '>= 0.6'} 2541 | dev: true 2542 | 2543 | /merge-anything/5.0.2: 2544 | resolution: {integrity: sha512-POPQBWkBC0vxdgzRJ2Mkj4+2NTKbvkHo93ih+jGDhNMLzIw+rYKjO7949hOQM2X7DxMHH1uoUkwWFLIzImw7gA==} 2545 | engines: {node: '>=12.13'} 2546 | dependencies: 2547 | is-what: 4.1.7 2548 | ts-toolbelt: 9.6.0 2549 | dev: false 2550 | 2551 | /merge-descriptors/1.0.1: 2552 | resolution: {integrity: sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=} 2553 | dev: true 2554 | 2555 | /merge-stream/2.0.0: 2556 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 2557 | dev: true 2558 | 2559 | /methods/1.1.2: 2560 | resolution: {integrity: sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=} 2561 | engines: {node: '>= 0.6'} 2562 | dev: true 2563 | 2564 | /micromatch/4.0.5: 2565 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 2566 | engines: {node: '>=8.6'} 2567 | dependencies: 2568 | braces: 3.0.2 2569 | picomatch: 2.3.1 2570 | dev: true 2571 | 2572 | /mime-db/1.52.0: 2573 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 2574 | engines: {node: '>= 0.6'} 2575 | dev: true 2576 | 2577 | /mime-types/2.1.35: 2578 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 2579 | engines: {node: '>= 0.6'} 2580 | dependencies: 2581 | mime-db: 1.52.0 2582 | dev: true 2583 | 2584 | /mime/1.6.0: 2585 | resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} 2586 | engines: {node: '>=4'} 2587 | hasBin: true 2588 | dev: true 2589 | 2590 | /mimic-fn/2.1.0: 2591 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 2592 | engines: {node: '>=6'} 2593 | dev: true 2594 | 2595 | /minimatch/3.1.2: 2596 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2597 | dependencies: 2598 | brace-expansion: 1.1.11 2599 | dev: true 2600 | 2601 | /minimist/1.2.6: 2602 | resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} 2603 | dev: true 2604 | 2605 | /monaco-editor/0.33.0: 2606 | resolution: {integrity: sha512-VcRWPSLIUEgQJQIE0pVT8FcGBIgFoxz7jtqctE+IiCxWugD0DwgyQBcZBhdSrdMC84eumoqMZsGl2GTreOzwqw==} 2607 | dev: true 2608 | 2609 | /ms/2.0.0: 2610 | resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} 2611 | dev: true 2612 | 2613 | /ms/2.1.2: 2614 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2615 | 2616 | /ms/2.1.3: 2617 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 2618 | dev: true 2619 | 2620 | /nanoid/3.3.2: 2621 | resolution: {integrity: sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==} 2622 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2623 | hasBin: true 2624 | 2625 | /natural-compare/1.4.0: 2626 | resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} 2627 | dev: true 2628 | 2629 | /negotiator/0.6.3: 2630 | resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} 2631 | engines: {node: '>= 0.6'} 2632 | dev: true 2633 | 2634 | /node-int64/0.4.0: 2635 | resolution: {integrity: sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=} 2636 | dev: true 2637 | 2638 | /node-releases/2.0.2: 2639 | resolution: {integrity: sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==} 2640 | 2641 | /normalize-path/3.0.0: 2642 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2643 | engines: {node: '>=0.10.0'} 2644 | 2645 | /npm-run-path/4.0.1: 2646 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 2647 | engines: {node: '>=8'} 2648 | dependencies: 2649 | path-key: 3.1.1 2650 | dev: true 2651 | 2652 | /object-keys/1.1.1: 2653 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 2654 | engines: {node: '>= 0.4'} 2655 | dev: true 2656 | 2657 | /on-finished/2.3.0: 2658 | resolution: {integrity: sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=} 2659 | engines: {node: '>= 0.8'} 2660 | dependencies: 2661 | ee-first: 1.1.1 2662 | dev: true 2663 | 2664 | /once/1.4.0: 2665 | resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} 2666 | dependencies: 2667 | wrappy: 1.0.2 2668 | dev: true 2669 | 2670 | /onetime/5.1.2: 2671 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 2672 | engines: {node: '>=6'} 2673 | dependencies: 2674 | mimic-fn: 2.1.0 2675 | dev: true 2676 | 2677 | /p-finally/1.0.0: 2678 | resolution: {integrity: sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=} 2679 | engines: {node: '>=4'} 2680 | dev: true 2681 | 2682 | /p-limit/2.3.0: 2683 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 2684 | engines: {node: '>=6'} 2685 | dependencies: 2686 | p-try: 2.2.0 2687 | dev: true 2688 | 2689 | /p-locate/4.1.0: 2690 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 2691 | engines: {node: '>=8'} 2692 | dependencies: 2693 | p-limit: 2.3.0 2694 | dev: true 2695 | 2696 | /p-timeout/3.2.0: 2697 | resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} 2698 | engines: {node: '>=8'} 2699 | dependencies: 2700 | p-finally: 1.0.0 2701 | dev: true 2702 | 2703 | /p-try/2.2.0: 2704 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 2705 | engines: {node: '>=6'} 2706 | dev: true 2707 | 2708 | /p-wait-for/3.2.0: 2709 | resolution: {integrity: sha512-wpgERjNkLrBiFmkMEjuZJEWKKDrNfHCKA1OhyN1wg1FrLkULbviEy6py1AyJUgZ72YWFbZ38FIpnqvVqAlDUwA==} 2710 | engines: {node: '>=8'} 2711 | dependencies: 2712 | p-timeout: 3.2.0 2713 | dev: true 2714 | 2715 | /parse-json/5.2.0: 2716 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 2717 | engines: {node: '>=8'} 2718 | dependencies: 2719 | '@babel/code-frame': 7.16.7 2720 | error-ex: 1.3.2 2721 | json-parse-even-better-errors: 2.3.1 2722 | lines-and-columns: 1.2.4 2723 | dev: true 2724 | 2725 | /parseurl/1.3.3: 2726 | resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} 2727 | engines: {node: '>= 0.8'} 2728 | dev: true 2729 | 2730 | /path-exists/4.0.0: 2731 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2732 | engines: {node: '>=8'} 2733 | dev: true 2734 | 2735 | /path-is-absolute/1.0.1: 2736 | resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} 2737 | engines: {node: '>=0.10.0'} 2738 | dev: true 2739 | 2740 | /path-key/3.1.1: 2741 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2742 | engines: {node: '>=8'} 2743 | dev: true 2744 | 2745 | /path-parse/1.0.7: 2746 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2747 | 2748 | /path-to-regexp/0.1.7: 2749 | resolution: {integrity: sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=} 2750 | dev: true 2751 | 2752 | /picocolors/1.0.0: 2753 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2754 | 2755 | /picomatch/2.3.1: 2756 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2757 | engines: {node: '>=8.6'} 2758 | 2759 | /pirates/4.0.5: 2760 | resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} 2761 | engines: {node: '>= 6'} 2762 | dev: true 2763 | 2764 | /pkg-dir/4.2.0: 2765 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} 2766 | engines: {node: '>=8'} 2767 | dependencies: 2768 | find-up: 4.1.0 2769 | dev: true 2770 | 2771 | /postcss/8.4.12: 2772 | resolution: {integrity: sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==} 2773 | engines: {node: ^10 || ^12 || >=14} 2774 | dependencies: 2775 | nanoid: 3.3.2 2776 | picocolors: 1.0.0 2777 | source-map-js: 1.0.2 2778 | 2779 | /prettier/2.6.2: 2780 | resolution: {integrity: sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==} 2781 | engines: {node: '>=10.13.0'} 2782 | hasBin: true 2783 | dev: true 2784 | 2785 | /pretty-format/27.5.1: 2786 | resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} 2787 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2788 | dependencies: 2789 | ansi-regex: 5.0.1 2790 | ansi-styles: 5.2.0 2791 | react-is: 17.0.2 2792 | dev: true 2793 | 2794 | /pretty-format/28.0.0-alpha.8: 2795 | resolution: {integrity: sha512-6F2AKNADeuUVO8jhwHEKWl54lCQTJg8kr9uHjiuxGCaOq4AxaIhdOlS/rDkFha8S7mmL0u9jz3jU5dlaWWFjnQ==} 2796 | engines: {node: ^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0} 2797 | dependencies: 2798 | '@jest/schemas': 28.0.0-alpha.3 2799 | ansi-regex: 5.0.1 2800 | ansi-styles: 5.2.0 2801 | react-is: 17.0.2 2802 | dev: true 2803 | 2804 | /prompts/2.4.2: 2805 | resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} 2806 | engines: {node: '>= 6'} 2807 | dependencies: 2808 | kleur: 3.0.3 2809 | sisteransi: 1.0.5 2810 | dev: true 2811 | 2812 | /proxy-addr/2.0.7: 2813 | resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 2814 | engines: {node: '>= 0.10'} 2815 | dependencies: 2816 | forwarded: 0.2.0 2817 | ipaddr.js: 1.9.1 2818 | dev: true 2819 | 2820 | /punycode/2.1.1: 2821 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 2822 | engines: {node: '>=6'} 2823 | dev: true 2824 | 2825 | /qs/6.9.7: 2826 | resolution: {integrity: sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==} 2827 | engines: {node: '>=0.6'} 2828 | dev: true 2829 | 2830 | /range-parser/1.2.1: 2831 | resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} 2832 | engines: {node: '>= 0.6'} 2833 | dev: true 2834 | 2835 | /raw-body/2.4.3: 2836 | resolution: {integrity: sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==} 2837 | engines: {node: '>= 0.8'} 2838 | dependencies: 2839 | bytes: 3.1.2 2840 | http-errors: 1.8.1 2841 | iconv-lite: 0.4.24 2842 | unpipe: 1.0.0 2843 | dev: true 2844 | 2845 | /react-is/17.0.2: 2846 | resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} 2847 | dev: true 2848 | 2849 | /readdirp/3.6.0: 2850 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 2851 | engines: {node: '>=8.10.0'} 2852 | dependencies: 2853 | picomatch: 2.3.1 2854 | 2855 | /recrawl-sync/2.2.2: 2856 | resolution: {integrity: sha512-E2sI4F25Fu2nrfV+KsnC7/qfk/spQIYXlonfQoS4rwxeNK5BjxnLPbWiRXHVXPwYBOTWtPX5765kTm/zJiL+LQ==} 2857 | dependencies: 2858 | '@cush/relative': 1.0.0 2859 | glob-regex: 0.3.2 2860 | slash: 3.0.0 2861 | tslib: 1.14.1 2862 | dev: true 2863 | 2864 | /recrawl/2.2.1: 2865 | resolution: {integrity: sha512-tBdAdiJ1f6Wi8PCI5RTKG/82j3qvTQJTvdPmq3LWLu40FMc0BKLFKzH3SzTJrmpa87qAfFAEhfUraBOZ9cGPXA==} 2866 | dependencies: 2867 | '@cush/relative': 1.0.0 2868 | glob-regex: 0.3.2 2869 | slash: 3.0.0 2870 | tslib: 1.14.1 2871 | dev: true 2872 | 2873 | /require-directory/2.1.1: 2874 | resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} 2875 | engines: {node: '>=0.10.0'} 2876 | dev: true 2877 | 2878 | /resolve-cwd/3.0.0: 2879 | resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} 2880 | engines: {node: '>=8'} 2881 | dependencies: 2882 | resolve-from: 5.0.0 2883 | dev: true 2884 | 2885 | /resolve-from/5.0.0: 2886 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 2887 | engines: {node: '>=8'} 2888 | dev: true 2889 | 2890 | /resolve.exports/1.1.0: 2891 | resolution: {integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==} 2892 | engines: {node: '>=10'} 2893 | dev: true 2894 | 2895 | /resolve/1.22.0: 2896 | resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} 2897 | hasBin: true 2898 | dependencies: 2899 | is-core-module: 2.8.1 2900 | path-parse: 1.0.7 2901 | supports-preserve-symlinks-flag: 1.0.0 2902 | 2903 | /rfdc/1.3.0: 2904 | resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} 2905 | dev: true 2906 | 2907 | /rimraf/3.0.2: 2908 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2909 | hasBin: true 2910 | dependencies: 2911 | glob: 7.2.0 2912 | dev: true 2913 | 2914 | /roarr/7.11.0: 2915 | resolution: {integrity: sha512-DKiMaEYHoOZ0JyD4Ohr5KRnqybQ162s3ZL/WNO9oy6EUszYvpp0eLYJErc/U4NI96HYnHsbROhFaH4LYuJPnDg==} 2916 | engines: {node: '>=12.0'} 2917 | dependencies: 2918 | boolean: 3.2.0 2919 | fast-json-stringify: 2.7.13 2920 | fast-printf: 1.6.9 2921 | fast-safe-stringify: 2.1.1 2922 | globalthis: 1.0.2 2923 | semver-compare: 1.0.0 2924 | dev: true 2925 | 2926 | /rollup-plugin-friendly-type-imports/1.0.2: 2927 | resolution: {integrity: sha512-EHSmPHH24zDdVL1BwY16qFsUMqglTZOGsDYSR7lnkVJc8Hi9md5MBmGAqmzaedhOB24JW0rmABNLZUXsCw63vw==} 2928 | dependencies: 2929 | typescript: 4.6.3 2930 | dev: true 2931 | 2932 | /rollup/2.70.1: 2933 | resolution: {integrity: sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==} 2934 | engines: {node: '>=10.0.0'} 2935 | hasBin: true 2936 | optionalDependencies: 2937 | fsevents: 2.3.2 2938 | 2939 | /safe-buffer/5.1.2: 2940 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 2941 | 2942 | /safe-buffer/5.2.1: 2943 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 2944 | dev: true 2945 | 2946 | /safer-buffer/2.1.2: 2947 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 2948 | dev: true 2949 | 2950 | /sass/1.49.11: 2951 | resolution: {integrity: sha512-wvS/geXgHUGs6A/4ud5BFIWKO1nKd7wYIGimDk4q4GFkJicILActpv9ueMT4eRGSsp1BdKHuw1WwAHXbhsJELQ==} 2952 | engines: {node: '>=12.0.0'} 2953 | hasBin: true 2954 | dependencies: 2955 | chokidar: 3.5.3 2956 | immutable: 4.0.0 2957 | source-map-js: 1.0.2 2958 | dev: true 2959 | 2960 | /semver-compare/1.0.0: 2961 | resolution: {integrity: sha1-De4hahyUGrN+nvsXiPavxf9VN/w=} 2962 | dev: true 2963 | 2964 | /semver/6.3.0: 2965 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 2966 | hasBin: true 2967 | 2968 | /semver/7.3.5: 2969 | resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} 2970 | engines: {node: '>=10'} 2971 | hasBin: true 2972 | dependencies: 2973 | lru-cache: 6.0.0 2974 | dev: true 2975 | 2976 | /send/0.17.2: 2977 | resolution: {integrity: sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==} 2978 | engines: {node: '>= 0.8.0'} 2979 | dependencies: 2980 | debug: 2.6.9 2981 | depd: 1.1.2 2982 | destroy: 1.0.4 2983 | encodeurl: 1.0.2 2984 | escape-html: 1.0.3 2985 | etag: 1.8.1 2986 | fresh: 0.5.2 2987 | http-errors: 1.8.1 2988 | mime: 1.6.0 2989 | ms: 2.1.3 2990 | on-finished: 2.3.0 2991 | range-parser: 1.2.1 2992 | statuses: 1.5.0 2993 | dev: true 2994 | 2995 | /serve-static/1.14.2: 2996 | resolution: {integrity: sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==} 2997 | engines: {node: '>= 0.8.0'} 2998 | dependencies: 2999 | encodeurl: 1.0.2 3000 | escape-html: 1.0.3 3001 | parseurl: 1.3.3 3002 | send: 0.17.2 3003 | dev: true 3004 | 3005 | /setprototypeof/1.2.0: 3006 | resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} 3007 | dev: true 3008 | 3009 | /shebang-command/2.0.0: 3010 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 3011 | engines: {node: '>=8'} 3012 | dependencies: 3013 | shebang-regex: 3.0.0 3014 | dev: true 3015 | 3016 | /shebang-regex/3.0.0: 3017 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 3018 | engines: {node: '>=8'} 3019 | dev: true 3020 | 3021 | /signal-exit/3.0.7: 3022 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 3023 | dev: true 3024 | 3025 | /sisteransi/1.0.5: 3026 | resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} 3027 | dev: true 3028 | 3029 | /slash/3.0.0: 3030 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 3031 | engines: {node: '>=8'} 3032 | dev: true 3033 | 3034 | /solid-js/1.3.13: 3035 | resolution: {integrity: sha512-1EBEIW9u2yqT5QNjFdvz/tMAoKsDdaRA2Jbgykd2Dt13Ia0D4mV+BFvPkOaseSyu7DsMKS23+ZZofV8BVKmpuQ==} 3036 | 3037 | /solid-refresh/0.4.0_solid-js@1.3.13: 3038 | resolution: {integrity: sha512-5XCUz845n/sHPzKK2i2G2EeV61tAmzv6SqzqhXcPaYhrgzVy7nKTQaBpKK8InKrriq9Z2JFF/mguIU00t/73xw==} 3039 | peerDependencies: 3040 | solid-js: ^1.3.0 3041 | dependencies: 3042 | '@babel/generator': 7.17.7 3043 | '@babel/helper-module-imports': 7.16.7 3044 | '@babel/types': 7.17.0 3045 | solid-js: 1.3.13 3046 | dev: false 3047 | 3048 | /source-map-js/1.0.2: 3049 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 3050 | engines: {node: '>=0.10.0'} 3051 | 3052 | /source-map-support/0.5.21: 3053 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 3054 | dependencies: 3055 | buffer-from: 1.1.2 3056 | source-map: 0.6.1 3057 | dev: true 3058 | 3059 | /source-map/0.5.7: 3060 | resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} 3061 | engines: {node: '>=0.10.0'} 3062 | 3063 | /source-map/0.6.1: 3064 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 3065 | engines: {node: '>=0.10.0'} 3066 | dev: true 3067 | 3068 | /source-map/0.7.3: 3069 | resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==} 3070 | engines: {node: '>= 8'} 3071 | dev: true 3072 | 3073 | /sprintf-js/1.0.3: 3074 | resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} 3075 | dev: true 3076 | 3077 | /stack-utils/2.0.5: 3078 | resolution: {integrity: sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==} 3079 | engines: {node: '>=10'} 3080 | dependencies: 3081 | escape-string-regexp: 2.0.0 3082 | dev: true 3083 | 3084 | /statuses/1.5.0: 3085 | resolution: {integrity: sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=} 3086 | engines: {node: '>= 0.6'} 3087 | dev: true 3088 | 3089 | /string-length/4.0.2: 3090 | resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} 3091 | engines: {node: '>=10'} 3092 | dependencies: 3093 | char-regex: 1.0.2 3094 | strip-ansi: 6.0.1 3095 | dev: true 3096 | 3097 | /string-similarity/4.0.4: 3098 | resolution: {integrity: sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==} 3099 | dev: true 3100 | 3101 | /string-width/4.2.3: 3102 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 3103 | engines: {node: '>=8'} 3104 | dependencies: 3105 | emoji-regex: 8.0.0 3106 | is-fullwidth-code-point: 3.0.0 3107 | strip-ansi: 6.0.1 3108 | dev: true 3109 | 3110 | /strip-ansi/6.0.1: 3111 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 3112 | engines: {node: '>=8'} 3113 | dependencies: 3114 | ansi-regex: 5.0.1 3115 | dev: true 3116 | 3117 | /strip-bom/3.0.0: 3118 | resolution: {integrity: sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=} 3119 | engines: {node: '>=4'} 3120 | dev: true 3121 | 3122 | /strip-bom/4.0.0: 3123 | resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} 3124 | engines: {node: '>=8'} 3125 | dev: true 3126 | 3127 | /strip-final-newline/2.0.0: 3128 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 3129 | engines: {node: '>=6'} 3130 | dev: true 3131 | 3132 | /strip-json-comments/3.1.1: 3133 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 3134 | engines: {node: '>=8'} 3135 | dev: true 3136 | 3137 | /supports-color/5.5.0: 3138 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 3139 | engines: {node: '>=4'} 3140 | dependencies: 3141 | has-flag: 3.0.0 3142 | 3143 | /supports-color/7.2.0: 3144 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 3145 | engines: {node: '>=8'} 3146 | dependencies: 3147 | has-flag: 4.0.0 3148 | dev: true 3149 | 3150 | /supports-color/8.1.1: 3151 | resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} 3152 | engines: {node: '>=10'} 3153 | dependencies: 3154 | has-flag: 4.0.0 3155 | dev: true 3156 | 3157 | /supports-hyperlinks/2.2.0: 3158 | resolution: {integrity: sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==} 3159 | engines: {node: '>=8'} 3160 | dependencies: 3161 | has-flag: 4.0.0 3162 | supports-color: 7.2.0 3163 | dev: true 3164 | 3165 | /supports-preserve-symlinks-flag/1.0.0: 3166 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 3167 | engines: {node: '>= 0.4'} 3168 | 3169 | /terminal-link/2.1.1: 3170 | resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} 3171 | engines: {node: '>=8'} 3172 | dependencies: 3173 | ansi-escapes: 4.3.2 3174 | supports-hyperlinks: 2.2.0 3175 | dev: true 3176 | 3177 | /test-exclude/6.0.0: 3178 | resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} 3179 | engines: {node: '>=8'} 3180 | dependencies: 3181 | '@istanbuljs/schema': 0.1.3 3182 | glob: 7.2.0 3183 | minimatch: 3.1.2 3184 | dev: true 3185 | 3186 | /throat/6.0.1: 3187 | resolution: {integrity: sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==} 3188 | dev: true 3189 | 3190 | /tmpl/1.0.5: 3191 | resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} 3192 | dev: true 3193 | 3194 | /to-fast-properties/2.0.0: 3195 | resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} 3196 | engines: {node: '>=4'} 3197 | 3198 | /to-regex-range/5.0.1: 3199 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 3200 | engines: {node: '>=8.0'} 3201 | dependencies: 3202 | is-number: 7.0.0 3203 | 3204 | /toidentifier/1.0.1: 3205 | resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} 3206 | engines: {node: '>=0.6'} 3207 | dev: true 3208 | 3209 | /ts-jest/27.1.4_6b0a3092d4d82c29d635032cdbc904fd: 3210 | resolution: {integrity: sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==} 3211 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 3212 | hasBin: true 3213 | peerDependencies: 3214 | '@babel/core': '>=7.0.0-beta.0 <8' 3215 | '@types/jest': ^27.0.0 3216 | babel-jest: '>=27.0.0 <28' 3217 | esbuild: '*' 3218 | jest: ^27.0.0 3219 | typescript: '>=3.8 <5.0' 3220 | peerDependenciesMeta: 3221 | '@babel/core': 3222 | optional: true 3223 | '@types/jest': 3224 | optional: true 3225 | babel-jest: 3226 | optional: true 3227 | esbuild: 3228 | optional: true 3229 | dependencies: 3230 | '@types/jest': 27.4.1 3231 | bs-logger: 0.2.6 3232 | fast-json-stable-stringify: 2.1.0 3233 | jest: 28.0.0-alpha.7 3234 | jest-util: 27.5.1 3235 | json5: 2.2.1 3236 | lodash.memoize: 4.1.2 3237 | make-error: 1.3.6 3238 | semver: 7.3.5 3239 | typescript: 4.6.3 3240 | yargs-parser: 20.2.9 3241 | dev: true 3242 | 3243 | /ts-toolbelt/9.6.0: 3244 | resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} 3245 | dev: false 3246 | 3247 | /tsconfig-paths/3.14.1: 3248 | resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} 3249 | dependencies: 3250 | '@types/json5': 0.0.29 3251 | json5: 1.0.1 3252 | minimist: 1.2.6 3253 | strip-bom: 3.0.0 3254 | dev: true 3255 | 3256 | /tslib/1.14.1: 3257 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 3258 | dev: true 3259 | 3260 | /type-detect/4.0.8: 3261 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 3262 | engines: {node: '>=4'} 3263 | dev: true 3264 | 3265 | /type-fest/0.21.3: 3266 | resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} 3267 | engines: {node: '>=10'} 3268 | dev: true 3269 | 3270 | /type-fest/2.12.2: 3271 | resolution: {integrity: sha512-qt6ylCGpLjZ7AaODxbpyBZSs9fCI9SkL3Z9q2oxMBQhs/uyY+VD8jHA8ULCGmWQJlBgqvO3EJeAngOHD8zQCrQ==} 3272 | engines: {node: '>=12.20'} 3273 | dev: true 3274 | 3275 | /type-is/1.6.18: 3276 | resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} 3277 | engines: {node: '>= 0.6'} 3278 | dependencies: 3279 | media-typer: 0.3.0 3280 | mime-types: 2.1.35 3281 | dev: true 3282 | 3283 | /typescript/4.6.3: 3284 | resolution: {integrity: sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==} 3285 | engines: {node: '>=4.2.0'} 3286 | hasBin: true 3287 | 3288 | /universalify/2.0.0: 3289 | resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} 3290 | engines: {node: '>= 10.0.0'} 3291 | 3292 | /unpipe/1.0.0: 3293 | resolution: {integrity: sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=} 3294 | engines: {node: '>= 0.8'} 3295 | dev: true 3296 | 3297 | /uri-js/4.4.1: 3298 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 3299 | dependencies: 3300 | punycode: 2.1.1 3301 | dev: true 3302 | 3303 | /utils-merge/1.0.1: 3304 | resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} 3305 | engines: {node: '>= 0.4.0'} 3306 | dev: true 3307 | 3308 | /uuid/8.3.2: 3309 | resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} 3310 | hasBin: true 3311 | dev: true 3312 | 3313 | /v8-to-istanbul/8.1.1: 3314 | resolution: {integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==} 3315 | engines: {node: '>=10.12.0'} 3316 | dependencies: 3317 | '@types/istanbul-lib-coverage': 2.0.4 3318 | convert-source-map: 1.8.0 3319 | source-map: 0.7.3 3320 | dev: true 3321 | 3322 | /vary/1.1.2: 3323 | resolution: {integrity: sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=} 3324 | engines: {node: '>= 0.8'} 3325 | dev: true 3326 | 3327 | /vite-plugin-solid/2.2.6: 3328 | resolution: {integrity: sha512-J1RnmqkZZJSNYDW7vZj0giKKHLWGr9tS/gxR70WDSTYfhyXrgukbZdIfSEFbtrsg8ZiQ2t2zXcvkWoeefenqKw==} 3329 | dependencies: 3330 | '@babel/core': 7.17.8 3331 | '@babel/preset-typescript': 7.16.7_@babel+core@7.17.8 3332 | babel-preset-solid: 1.3.13_@babel+core@7.17.8 3333 | merge-anything: 5.0.2 3334 | solid-js: 1.3.13 3335 | solid-refresh: 0.4.0_solid-js@1.3.13 3336 | vite: 2.9.1 3337 | transitivePeerDependencies: 3338 | - less 3339 | - sass 3340 | - stylus 3341 | - supports-color 3342 | dev: false 3343 | 3344 | /vite-tsconfig-paths/3.4.1_vite@2.9.1: 3345 | resolution: {integrity: sha512-SgK3/pnTuJ3i+gMSAWLR6VCPSw26bnxawrmXGvCDjJgk8MAQgmbCrFrAzfwbwZBXSqSuvWEuX04Wt73qJKx8fQ==} 3346 | peerDependencies: 3347 | vite: '>2.0.0-0' 3348 | dependencies: 3349 | debug: 4.3.4 3350 | globrex: 0.1.2 3351 | recrawl-sync: 2.2.2 3352 | tsconfig-paths: 3.14.1 3353 | vite: 2.9.1_sass@1.49.11 3354 | transitivePeerDependencies: 3355 | - supports-color 3356 | dev: true 3357 | 3358 | /vite/2.9.1: 3359 | resolution: {integrity: sha512-vSlsSdOYGcYEJfkQ/NeLXgnRv5zZfpAsdztkIrs7AZHV8RCMZQkwjo4DS5BnrYTqoWqLoUe1Cah4aVO4oNNqCQ==} 3360 | engines: {node: '>=12.2.0'} 3361 | hasBin: true 3362 | peerDependencies: 3363 | less: '*' 3364 | sass: '*' 3365 | stylus: '*' 3366 | peerDependenciesMeta: 3367 | less: 3368 | optional: true 3369 | sass: 3370 | optional: true 3371 | stylus: 3372 | optional: true 3373 | dependencies: 3374 | esbuild: 0.14.31 3375 | postcss: 8.4.12 3376 | resolve: 1.22.0 3377 | rollup: 2.70.1 3378 | optionalDependencies: 3379 | fsevents: 2.3.2 3380 | 3381 | /vite/2.9.1_sass@1.49.11: 3382 | resolution: {integrity: sha512-vSlsSdOYGcYEJfkQ/NeLXgnRv5zZfpAsdztkIrs7AZHV8RCMZQkwjo4DS5BnrYTqoWqLoUe1Cah4aVO4oNNqCQ==} 3383 | engines: {node: '>=12.2.0'} 3384 | hasBin: true 3385 | peerDependencies: 3386 | less: '*' 3387 | sass: '*' 3388 | stylus: '*' 3389 | peerDependenciesMeta: 3390 | less: 3391 | optional: true 3392 | sass: 3393 | optional: true 3394 | stylus: 3395 | optional: true 3396 | dependencies: 3397 | esbuild: 0.14.31 3398 | postcss: 8.4.12 3399 | resolve: 1.22.0 3400 | rollup: 2.70.1 3401 | sass: 1.49.11 3402 | optionalDependencies: 3403 | fsevents: 2.3.2 3404 | dev: true 3405 | 3406 | /walker/1.0.8: 3407 | resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} 3408 | dependencies: 3409 | makeerror: 1.0.12 3410 | dev: true 3411 | 3412 | /which/2.0.2: 3413 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 3414 | engines: {node: '>= 8'} 3415 | hasBin: true 3416 | dependencies: 3417 | isexe: 2.0.0 3418 | dev: true 3419 | 3420 | /wrap-ansi/7.0.0: 3421 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 3422 | engines: {node: '>=10'} 3423 | dependencies: 3424 | ansi-styles: 4.3.0 3425 | string-width: 4.2.3 3426 | strip-ansi: 6.0.1 3427 | dev: true 3428 | 3429 | /wrappy/1.0.2: 3430 | resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} 3431 | dev: true 3432 | 3433 | /write-file-atomic/4.0.1: 3434 | resolution: {integrity: sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==} 3435 | engines: {node: ^12.13.0 || ^14.15.0 || >=16} 3436 | dependencies: 3437 | imurmurhash: 0.1.4 3438 | signal-exit: 3.0.7 3439 | dev: true 3440 | 3441 | /y18n/5.0.8: 3442 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 3443 | engines: {node: '>=10'} 3444 | dev: true 3445 | 3446 | /yallist/4.0.0: 3447 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 3448 | dev: true 3449 | 3450 | /yargs-parser/20.2.9: 3451 | resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} 3452 | engines: {node: '>=10'} 3453 | dev: true 3454 | 3455 | /yargs-parser/21.0.1: 3456 | resolution: {integrity: sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==} 3457 | engines: {node: '>=12'} 3458 | dev: true 3459 | 3460 | /yargs/17.4.0: 3461 | resolution: {integrity: sha512-WJudfrk81yWFSOkZYpAZx4Nt7V4xp7S/uJkX0CnxovMCt1wCE8LNftPpNuF9X/u9gN5nsD7ycYtRcDf2pL3UiA==} 3462 | engines: {node: '>=12'} 3463 | dependencies: 3464 | cliui: 7.0.4 3465 | escalade: 3.1.1 3466 | get-caller-file: 2.0.5 3467 | require-directory: 2.1.1 3468 | string-width: 4.2.3 3469 | y18n: 5.0.8 3470 | yargs-parser: 21.0.1 3471 | dev: true 3472 | -------------------------------------------------------------------------------- /preview/index.tsx: -------------------------------------------------------------------------------- 1 | import type { RendererLoader } from "@previewjs/core/controller"; 2 | import { JSX } from "solid-js/jsx-runtime"; 3 | import * as Solid from "solid-js/web"; 4 | 5 | export const load: RendererLoader = async ({ 6 | wrapperModule, 7 | wrapperName, 8 | componentModule, 9 | componentName, 10 | }) => { 11 | const Wrapper = 12 | (wrapperModule && wrapperModule[wrapperName || "Wrapper"]) || 13 | (({ children }) => <>{children}); 14 | const Component = 15 | componentModule[ 16 | componentName === "default" ? "default" : `__previewjs__${componentName}` 17 | ]; 18 | if (!Component) { 19 | throw new Error(`No component named '${componentName}'`); 20 | } 21 | const decorators = [ 22 | ...(Component.decorators || []), 23 | ...(componentModule.default?.decorators || []), 24 | ]; 25 | const variants = (Component.__previewjs_variants || []).map((variant) => { 26 | return { 27 | key: variant.key, 28 | label: variant.label, 29 | props: variant.props, 30 | }; 31 | }); 32 | const Renderer = (props) => { 33 | const effectiveProps = { ...Component.args, ...props }; 34 | return ( 35 | 36 | {decorators.reduce( 37 | (component, decorator) => () => decorator(component), 38 | () => 39 | )()} 40 | 41 | ); 42 | }; 43 | return { 44 | variants, 45 | render: (props) => render(Renderer, props), 46 | }; 47 | }; 48 | 49 | export async function detach() { 50 | detachFn(); 51 | } 52 | 53 | const container = document.getElementById("root"); 54 | let detachFn: () => void = () => {}; 55 | async function render

(Renderer: (props: P) => JSX.Element, props: P) { 56 | detachFn(); 57 | container.innerHTML = ""; 58 | detachFn = Solid.render(() => Renderer(props), container); 59 | } 60 | -------------------------------------------------------------------------------- /preview/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "solid-js": "1.3.13" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /preview/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2020", 4 | "moduleResolution": "node", 5 | "jsx": "preserve", 6 | "jsxImportSource": "solid-js", 7 | "esModuleInterop": true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /setup.d.ts: -------------------------------------------------------------------------------- 1 | import { Component } from "solid-js"; 2 | 3 | export declare function setupPreviews( 4 | component: Component, 5 | variants: VariantsProps | (() => VariantsProps) 6 | ): void; 7 | 8 | type VariantsProps = { 9 | [key: string]: Omit> & Partial; 10 | }; 11 | 12 | type RequiredFunctionKeys = { 13 | [K in keyof T]-?: ((...args: any[]) => any) extends T[K] ? K : never; 14 | }[keyof T]; 15 | -------------------------------------------------------------------------------- /setup.js: -------------------------------------------------------------------------------- 1 | // You read this right, it's a no-op. 2 | exports.setupPreviews = () => {}; 3 | -------------------------------------------------------------------------------- /setup.mjs: -------------------------------------------------------------------------------- 1 | export const setupPreviews = 2 | window.process && process.env && process.env.RUNNING_INSIDE_PREVIEWJS 3 | ? (Component, previewProps) => { 4 | if (typeof previewProps === "function") { 5 | previewProps = previewProps(); 6 | } 7 | Component.__previewjs_variants = []; 8 | for (const [key, props] of Object.entries(previewProps)) { 9 | Component.__previewjs_variants.push({ 10 | key, 11 | label: key, 12 | props, 13 | }); 14 | } 15 | } 16 | : () => { 17 | // You read this right, it's a no-op. 18 | }; 19 | -------------------------------------------------------------------------------- /src/analyze-component.spec.ts: -------------------------------------------------------------------------------- 1 | import { FrameworkPlugin } from "@previewjs/core"; 2 | import { 3 | arrayType, 4 | createTypeAnalyzer, 5 | EMPTY_OBJECT_TYPE, 6 | namedType, 7 | NODE_TYPE, 8 | NUMBER_TYPE, 9 | objectType, 10 | optionalType, 11 | STRING_TYPE, 12 | TypeAnalyzer, 13 | } from "@previewjs/type-analyzer"; 14 | import { 15 | createFileSystemReader, 16 | createMemoryReader, 17 | createStackedReader, 18 | Reader, 19 | Writer, 20 | } from "@previewjs/vfs"; 21 | import path from "path"; 22 | import { solidFrameworkPlugin } from "."; 23 | import { SOLID_SPECIAL_TYPES } from "./special-types"; 24 | 25 | const ROOT_DIR_PATH = path.join(__dirname, "virtual"); 26 | const MAIN_FILE = path.join(ROOT_DIR_PATH, "App.tsx"); 27 | const EMPTY_SET: ReadonlySet = new Set(); 28 | 29 | describe("analyzeSolidComponent", () => { 30 | let memoryReader: Reader & Writer; 31 | let typeAnalyzer: TypeAnalyzer; 32 | let frameworkPlugin: FrameworkPlugin; 33 | 34 | beforeEach(async () => { 35 | memoryReader = createMemoryReader(); 36 | frameworkPlugin = await solidFrameworkPlugin.create(); 37 | typeAnalyzer = createTypeAnalyzer({ 38 | rootDirPath: ROOT_DIR_PATH, 39 | reader: createStackedReader([ 40 | memoryReader, 41 | createFileSystemReader({ 42 | watch: false, 43 | }), // required for TypeScript libs, e.g. Promise 44 | ]), 45 | tsCompilerOptions: frameworkPlugin.tsCompilerOptions, 46 | specialTypes: SOLID_SPECIAL_TYPES, 47 | }); 48 | }); 49 | 50 | afterEach(() => { 51 | typeAnalyzer.dispose(); 52 | }); 53 | 54 | test("local component with named export", async () => { 55 | expect( 56 | await analyze( 57 | ` 58 | function A() { 59 | return

Hello, World!
; 60 | } 61 | 62 | export { A } 63 | `, 64 | "A" 65 | ) 66 | ).toEqual({ 67 | propsType: EMPTY_OBJECT_TYPE, 68 | providedArgs: EMPTY_SET, 69 | types: {}, 70 | }); 71 | }); 72 | 73 | test("local component with named aliased export", async () => { 74 | expect( 75 | await analyze( 76 | ` 77 | function A() { 78 | return
Hello, World!
; 79 | } 80 | 81 | export { A as B } 82 | `, 83 | "A" 84 | ) 85 | ).toEqual({ 86 | propsType: EMPTY_OBJECT_TYPE, 87 | providedArgs: EMPTY_SET, 88 | types: {}, 89 | }); 90 | }); 91 | 92 | test("local component with default export", async () => { 93 | expect( 94 | await analyze( 95 | ` 96 | export function A() { 97 | return
Hello, World!
; 98 | } 99 | 100 | export default A 101 | `, 102 | "A" 103 | ) 104 | ).toEqual({ 105 | propsType: EMPTY_OBJECT_TYPE, 106 | providedArgs: EMPTY_SET, 107 | types: {}, 108 | }); 109 | }); 110 | 111 | test("declared function with empty props", async () => { 112 | expect( 113 | await analyze( 114 | ` 115 | export function A() { 116 | return
Hello, World!
; 117 | } 118 | `, 119 | "A" 120 | ) 121 | ).toEqual({ 122 | propsType: EMPTY_OBJECT_TYPE, 123 | providedArgs: EMPTY_SET, 124 | types: {}, 125 | }); 126 | }); 127 | 128 | test("declared function with typed props parameter", async () => { 129 | expect( 130 | await analyze( 131 | ` 132 | export function A(props: { foo: string }) { 133 | return
Hello, World!
; 134 | }; 135 | `, 136 | "A" 137 | ) 138 | ).toEqual({ 139 | propsType: objectType({ 140 | foo: STRING_TYPE, 141 | }), 142 | providedArgs: EMPTY_SET, 143 | types: {}, 144 | }); 145 | }); 146 | 147 | test("declared function with type alias props parameter", async () => { 148 | expect( 149 | await analyze( 150 | ` 151 | 152 | type SomeProps = { 153 | foo: string 154 | }; 155 | 156 | export function A(props: SomeProps) { 157 | return
Hello, World!
; 158 | }; 159 | `, 160 | "A" 161 | ) 162 | ).toEqual({ 163 | propsType: objectType({ foo: STRING_TYPE }), 164 | providedArgs: EMPTY_SET, 165 | types: { 166 | "App.tsx:SomeProps": { 167 | type: objectType({ foo: STRING_TYPE }), 168 | parameters: {}, 169 | }, 170 | }, 171 | }); 172 | }); 173 | 174 | test("constant function with empty props", async () => { 175 | expect( 176 | await analyze( 177 | ` 178 | export const A = () => { 179 | return
Hello, World!
; 180 | } 181 | `, 182 | "A" 183 | ) 184 | ).toEqual({ 185 | propsType: EMPTY_OBJECT_TYPE, 186 | providedArgs: EMPTY_SET, 187 | types: {}, 188 | }); 189 | }); 190 | 191 | test("constant function with typed props parameter", async () => { 192 | expect( 193 | await analyze( 194 | ` 195 | export const A = (props: { foo: string }) => { 196 | return
Hello, World!
; 197 | }; 198 | `, 199 | "A" 200 | ) 201 | ).toEqual({ 202 | propsType: objectType({ 203 | foo: STRING_TYPE, 204 | }), 205 | providedArgs: EMPTY_SET, 206 | types: {}, 207 | }); 208 | }); 209 | 210 | test("constant function with complex typed props parameter", async () => { 211 | expect( 212 | await analyze( 213 | ` 214 | export const A = (props: { currentTab: PanelTab, tabs: PanelTab[] }) => { 215 | return
Hello, World!
; 216 | }; 217 | 218 | interface PanelTab { 219 | label: string; 220 | key: string; 221 | notificationCount: number; 222 | panel: JSX.Element; 223 | } 224 | `, 225 | "A" 226 | ) 227 | ).toEqual({ 228 | propsType: objectType({ 229 | currentTab: namedType("App.tsx:PanelTab"), 230 | tabs: arrayType(namedType("App.tsx:PanelTab")), 231 | }), 232 | providedArgs: EMPTY_SET, 233 | types: { 234 | ["App.tsx:PanelTab"]: { 235 | type: objectType({ 236 | label: STRING_TYPE, 237 | key: STRING_TYPE, 238 | notificationCount: NUMBER_TYPE, 239 | panel: NODE_TYPE, 240 | }), 241 | parameters: {}, 242 | }, 243 | }, 244 | }); 245 | }); 246 | 247 | test("constant function with Component type and no parameter", async () => { 248 | expect( 249 | await analyze( 250 | ` 251 | import { Component } from 'solid-js'; 252 | 253 | export const A: Component<{ foo: string }> = (props) => { 254 | return
Hello, World!
; 255 | }; 256 | `, 257 | "A" 258 | ) 259 | ).toEqual({ 260 | propsType: objectType({ 261 | foo: STRING_TYPE, 262 | children: optionalType(NODE_TYPE), 263 | }), 264 | providedArgs: EMPTY_SET, 265 | types: {}, 266 | }); 267 | }); 268 | 269 | test("constant function with Component type and a parameter", async () => { 270 | expect( 271 | await analyze( 272 | ` 273 | import { Component } from 'solid-js'; 274 | 275 | export const A: Component<{ foo: string }> = (props) => { 276 | return
Hello, {foo}!
; 277 | }; 278 | `, 279 | "A" 280 | ) 281 | ).toEqual({ 282 | propsType: objectType({ 283 | foo: STRING_TYPE, 284 | children: optionalType(NODE_TYPE), 285 | }), 286 | providedArgs: EMPTY_SET, 287 | types: {}, 288 | }); 289 | }); 290 | 291 | test("Storybook args support", async () => { 292 | expect( 293 | await analyze( 294 | ` 295 | import Solid from 'solid-js'; 296 | 297 | export const A: Solid.Component<{ foo: string, bar: string }> = (props) => { 298 | return
{foo}
; 299 | }; 300 | A.args = { 301 | foo: "Hello, World!" 302 | }; 303 | `, 304 | "A" 305 | ) 306 | ).toEqual({ 307 | propsType: objectType({ 308 | foo: STRING_TYPE, 309 | bar: STRING_TYPE, 310 | children: optionalType(NODE_TYPE), 311 | }), 312 | providedArgs: new Set(["foo"]), 313 | types: {}, 314 | }); 315 | }); 316 | 317 | async function analyze(source: string, componentName: string) { 318 | memoryReader.updateFile(MAIN_FILE, source); 319 | const component = ( 320 | await frameworkPlugin.detectComponents(typeAnalyzer, [MAIN_FILE]) 321 | ).find((c) => c.name === componentName); 322 | if (!component) { 323 | throw new Error(`Component ${componentName} not found`); 324 | } 325 | return component.analyze(); 326 | } 327 | }); 328 | -------------------------------------------------------------------------------- /src/analyze-component.ts: -------------------------------------------------------------------------------- 1 | import { ComponentAnalysis } from "@previewjs/core"; 2 | import { 3 | CollectedTypes, 4 | dereferenceType, 5 | EMPTY_OBJECT_TYPE, 6 | helpers, 7 | objectType, 8 | TypeResolver, 9 | UNKNOWN_TYPE, 10 | ValueType, 11 | } from "@previewjs/type-analyzer"; 12 | import ts from "typescript"; 13 | 14 | export function analyzeSolidComponent( 15 | typeResolver: TypeResolver, 16 | absoluteFilePath: string, 17 | componentName: string, 18 | signature: ts.Signature 19 | ): ComponentAnalysis { 20 | const sourceFile = typeResolver.sourceFile(absoluteFilePath); 21 | let args: ts.Expression | null = null; 22 | if (sourceFile) { 23 | args = helpers.extractArgs(sourceFile)[componentName] || null; 24 | } 25 | let resolved = computePropsType(typeResolver, signature); 26 | let providedArgs = new Set(); 27 | if (args) { 28 | const argsType = typeResolver.checker.getTypeAtLocation(args); 29 | providedArgs = new Set(argsType.getProperties().map((prop) => prop.name)); 30 | } 31 | return { 32 | propsType: resolved.type, 33 | types: { ...resolved.collected }, 34 | providedArgs, 35 | }; 36 | } 37 | 38 | function computePropsType( 39 | typeResolver: TypeResolver, 40 | signature: ts.Signature 41 | ): { 42 | type: ValueType; 43 | collected: CollectedTypes; 44 | } { 45 | return computePropsTypeFromSignature(typeResolver, signature); 46 | } 47 | 48 | function computePropsTypeFromSignature( 49 | typeResolver: TypeResolver, 50 | signature: ts.Signature 51 | ): { 52 | type: ValueType; 53 | collected: CollectedTypes; 54 | } { 55 | const firstParam = signature.getParameters()[0]; 56 | if (!firstParam) { 57 | return { 58 | type: EMPTY_OBJECT_TYPE, 59 | collected: {}, 60 | }; 61 | } 62 | if (!firstParam.valueDeclaration) { 63 | return { 64 | type: UNKNOWN_TYPE, 65 | collected: {}, 66 | }; 67 | } 68 | const type = typeResolver.checker.getTypeOfSymbolAtLocation( 69 | firstParam, 70 | firstParam.valueDeclaration 71 | ); 72 | try { 73 | let { type: propsType, collected } = typeResolver.resolveType(type); 74 | [propsType] = dereferenceType(propsType, collected, []); 75 | stripUnusedProps: if ( 76 | propsType.kind === "object" && 77 | ts.isParameter(firstParam.valueDeclaration) 78 | ) { 79 | if (ts.isObjectBindingPattern(firstParam.valueDeclaration.name)) { 80 | const bindingPattern = firstParam.valueDeclaration.name; 81 | const usedProps = new Set(); 82 | for (const element of bindingPattern.elements) { 83 | if (element.dotDotDotToken) { 84 | break stripUnusedProps; 85 | } 86 | const elementName = element.propertyName || element.name; 87 | if (!ts.isIdentifier(elementName)) { 88 | break stripUnusedProps; 89 | } 90 | usedProps.add(elementName.text); 91 | } 92 | propsType = objectType( 93 | Object.fromEntries( 94 | Object.entries(propsType.fields).filter(([key]) => 95 | usedProps.has(key) 96 | ) 97 | ) 98 | ); 99 | } 100 | } 101 | return { type: propsType, collected }; 102 | } catch (e) { 103 | console.warn( 104 | `Unable to resolve props type for ${typeResolver.checker.typeToString( 105 | type 106 | )}`, 107 | e 108 | ); 109 | } 110 | return { 111 | type: UNKNOWN_TYPE, 112 | collected: {}, 113 | }; 114 | } 115 | -------------------------------------------------------------------------------- /src/extract-component.spec.ts: -------------------------------------------------------------------------------- 1 | import { createTypeAnalyzer, TypeAnalyzer } from "@previewjs/type-analyzer"; 2 | import { 3 | createFileSystemReader, 4 | createMemoryReader, 5 | createStackedReader, 6 | Reader, 7 | Writer, 8 | } from "@previewjs/vfs"; 9 | import path from "path"; 10 | import { solidFrameworkPlugin } from "."; 11 | import { extractSolidComponents } from "./extract-component"; 12 | 13 | const MAIN_FILE = path.join(__dirname, "virtual", "App.tsx"); 14 | 15 | describe("extractSolidComponents", () => { 16 | let memoryReader: Reader & Writer; 17 | let typeAnalyzer: TypeAnalyzer; 18 | 19 | beforeEach(async () => { 20 | memoryReader = createMemoryReader(); 21 | const frameworkPlugin = await solidFrameworkPlugin.create(); 22 | typeAnalyzer = createTypeAnalyzer({ 23 | rootDirPath: path.join(__dirname, "virtual"), 24 | reader: createStackedReader([ 25 | memoryReader, 26 | createFileSystemReader({ 27 | watch: false, 28 | }), // required for TypeScript libs, e.g. Promise 29 | ]), 30 | tsCompilerOptions: frameworkPlugin.tsCompilerOptions, 31 | }); 32 | }); 33 | 34 | afterEach(() => { 35 | typeAnalyzer.dispose(); 36 | }); 37 | 38 | it("detects expected components", async () => { 39 | expect( 40 | extract(` 41 | import type { Component } from 'solid-js'; 42 | 43 | const Component1: Component = () => { 44 | return
Hello, World!
; 45 | }; 46 | 47 | const Component2 = () => { 48 | return
Hello, World!
; 49 | }; 50 | 51 | function Component3() { 52 | return
Hello, World!
; 53 | }; 54 | 55 | export default Component1; 56 | 57 | `) 58 | ).toMatchObject([ 59 | { 60 | name: "Component1", 61 | exported: true, 62 | }, 63 | { 64 | name: "Component2", 65 | exported: false, 66 | }, 67 | { 68 | name: "Component3", 69 | exported: false, 70 | }, 71 | ]); 72 | }); 73 | 74 | it("detects components without any Solid import", async () => { 75 | expect( 76 | extract(` 77 | export function DeclaredFunction() { 78 | return
Hello, World!
; 79 | } 80 | 81 | const ConstantFunction = () =>
Hello, World!
; 82 | `) 83 | ).toMatchObject([ 84 | { 85 | name: "DeclaredFunction", 86 | exported: true, 87 | }, 88 | { 89 | name: "ConstantFunction", 90 | exported: false, 91 | }, 92 | ]); 93 | }); 94 | 95 | function extract(source: string) { 96 | const rootDirPath = path.join(__dirname, "virtual"); 97 | memoryReader.updateFile(path.join(rootDirPath, "App.tsx"), source); 98 | return extractSolidComponents(typeAnalyzer.analyze([MAIN_FILE]), MAIN_FILE); 99 | } 100 | }); 101 | -------------------------------------------------------------------------------- /src/extract-component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from "@previewjs/core"; 2 | import { helpers, TypeResolver } from "@previewjs/type-analyzer"; 3 | import ts from "typescript"; 4 | import { analyzeSolidComponent } from "./analyze-component"; 5 | 6 | export function extractSolidComponents( 7 | resolver: TypeResolver, 8 | absoluteFilePath: string 9 | ): Component[] { 10 | const sourceFile = resolver.sourceFile(absoluteFilePath); 11 | if (!sourceFile) { 12 | return []; 13 | } 14 | let components: Array< 15 | Omit & { 16 | signature: ts.Signature; 17 | } 18 | > = []; 19 | const nameToExportedName = helpers.extractExportedNames(sourceFile); 20 | 21 | for (const statement of sourceFile.statements) { 22 | if (ts.isExportAssignment(statement)) { 23 | if (ts.isIdentifier(statement.expression)) { 24 | // Avoid duplicates. 25 | continue; 26 | } 27 | const signature = extractSolidComponent( 28 | resolver.checker, 29 | statement.expression 30 | ); 31 | if (signature) { 32 | components.push({ 33 | absoluteFilePath, 34 | name: "default", 35 | exported: true, 36 | offsets: [[statement.getStart(), statement.getEnd()]], 37 | signature, 38 | }); 39 | } 40 | } else if (ts.isVariableStatement(statement)) { 41 | for (const declaration of statement.declarationList.declarations) { 42 | if (!ts.isIdentifier(declaration.name) || !declaration.initializer) { 43 | continue; 44 | } 45 | const name = declaration.name.text; 46 | const exportedName = nameToExportedName[name]; 47 | if (!isValidSolidComponentName(name)) { 48 | continue; 49 | } 50 | const signature = extractSolidComponent( 51 | resolver.checker, 52 | declaration.initializer 53 | ); 54 | if (signature) { 55 | components.push({ 56 | absoluteFilePath, 57 | name, 58 | exported: !!exportedName, 59 | offsets: [[statement.getStart(), statement.getEnd()]], 60 | signature, 61 | }); 62 | } 63 | } 64 | } else if (ts.isFunctionDeclaration(statement)) { 65 | const isDefaultExport = 66 | !!statement.modifiers?.find( 67 | (m) => m.kind === ts.SyntaxKind.ExportKeyword 68 | ) && 69 | !!statement.modifiers?.find( 70 | (m) => m.kind === ts.SyntaxKind.DefaultKeyword 71 | ); 72 | const name = statement.name?.text; 73 | const exported = (name && !!nameToExportedName[name]) || isDefaultExport; 74 | if (isDefaultExport || (name && isValidSolidComponentName(name))) { 75 | const signature = extractSolidComponent(resolver.checker, statement); 76 | if (signature) { 77 | components.push({ 78 | absoluteFilePath, 79 | name: name || "default", 80 | exported, 81 | offsets: [[statement.getStart(), statement.getEnd()]], 82 | signature, 83 | }); 84 | } 85 | } 86 | } else if (ts.isClassDeclaration(statement) && statement.name) { 87 | const name = statement.name.text; 88 | const exportedName = nameToExportedName[name]; 89 | if (!isValidSolidComponentName(name)) { 90 | continue; 91 | } 92 | const signature = extractSolidComponent(resolver.checker, statement); 93 | if (signature) { 94 | components.push({ 95 | absoluteFilePath, 96 | name, 97 | exported: !!exportedName, 98 | offsets: [[statement.getStart(), statement.getEnd()]], 99 | signature, 100 | }); 101 | } 102 | } 103 | } 104 | 105 | return components.map(({ signature, ...component }) => ({ 106 | ...component, 107 | analyze: async () => 108 | analyzeSolidComponent( 109 | resolver, 110 | component.absoluteFilePath, 111 | component.name, 112 | signature 113 | ), 114 | })); 115 | } 116 | 117 | function extractSolidComponent( 118 | checker: ts.TypeChecker, 119 | node: ts.Node 120 | ): ts.Signature | null { 121 | const type = checker.getTypeAtLocation(node); 122 | 123 | // Function component. 124 | for (const callSignature of type.getCallSignatures()) { 125 | if (isValidComponentReturnType(callSignature.getReturnType())) { 126 | return callSignature; 127 | } 128 | } 129 | // Class component. 130 | if (type.symbol) { 131 | const classType = checker.getTypeOfSymbolAtLocation(type.symbol, node); 132 | for (const constructSignature of classType.getConstructSignatures()) { 133 | const returnType = constructSignature.getReturnType(); 134 | if (returnType.getProperty("render")) { 135 | return constructSignature; 136 | } 137 | } 138 | } 139 | return null; 140 | } 141 | 142 | function isValidComponentReturnType(type: ts.Type): boolean { 143 | if (isJsxElement(type)) { 144 | return true; 145 | } 146 | return false; 147 | } 148 | 149 | const jsxElementTypes = new Set(["Element", "FunctionElement"]); 150 | function isJsxElement(type: ts.Type): boolean { 151 | if (type.isUnion()) { 152 | for (const subtype of type.types) { 153 | if (isJsxElement(subtype)) { 154 | return true; 155 | } 156 | } 157 | } 158 | return jsxElementTypes.has(type.symbol?.getEscapedName().toString()); 159 | } 160 | 161 | function isValidSolidComponentName(name: string) { 162 | return name.length > 0 && name[0]! >= "A" && name[0]! <= "Z"; 163 | } 164 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import type { Component, FrameworkPluginFactory } from "@previewjs/core"; 2 | import path from "path"; 3 | import ts from "typescript"; 4 | import vitePluginSolid from "vite-plugin-solid"; 5 | import { extractSolidComponents } from "./extract-component"; 6 | import { optimizeSolidDepsPlugin } from "./optimize-deps-plugin"; 7 | import { SOLID_SPECIAL_TYPES } from "./special-types"; 8 | 9 | export const solidFrameworkPlugin: FrameworkPluginFactory = { 10 | isCompatible: async (dependencies) => { 11 | const solid = dependencies["solid-js"]; 12 | if (!solid) { 13 | return false; 14 | } 15 | return solid.majorVersion === 1; 16 | }, 17 | async create() { 18 | const previewDirPath = path.resolve(__dirname, "..", "preview"); 19 | return { 20 | pluginApiVersion: 3, 21 | name: "@previewjs/plugin-solid", 22 | defaultWrapperPath: "__previewjs__/Wrapper.tsx", 23 | previewDirPath, 24 | specialTypes: SOLID_SPECIAL_TYPES, 25 | tsCompilerOptions: { 26 | jsx: ts.JsxEmit.Preserve, 27 | jsxImportSource: "solid-js", 28 | }, 29 | detectComponents: async (typeAnalyzer, absoluteFilePaths) => { 30 | const resolver = typeAnalyzer.analyze(absoluteFilePaths); 31 | const components: Component[] = []; 32 | for (const absoluteFilePath of absoluteFilePaths) { 33 | components.push( 34 | ...extractSolidComponents(resolver, absoluteFilePath) 35 | ); 36 | } 37 | return components; 38 | }, 39 | viteConfig: () => { 40 | return { 41 | plugins: [ 42 | vitePluginSolid(), 43 | optimizeSolidDepsPlugin(), 44 | { 45 | name: "previewjs:disable-solid-hmr", 46 | async transform(code, id) { 47 | if (!id.endsWith(".jsx") && !id.endsWith(".tsx")) { 48 | return null; 49 | } 50 | // HMR prevents preview props from being refreshed. 51 | // For now, we disable it entirely. 52 | return code.replace(/import\.meta/g, "({})"); 53 | }, 54 | }, 55 | ], 56 | define: { 57 | "process.env.RUNNING_INSIDE_PREVIEWJS": "1", 58 | }, 59 | }; 60 | }, 61 | }; 62 | }, 63 | }; 64 | -------------------------------------------------------------------------------- /src/optimize-deps-plugin.ts: -------------------------------------------------------------------------------- 1 | import type { Plugin } from "vite"; 2 | 3 | export function optimizeSolidDepsPlugin(): Plugin { 4 | return { 5 | name: "optimize-deps", 6 | config: () => ({ 7 | optimizeDeps: { 8 | include: ["solid-js"], 9 | }, 10 | }), 11 | }; 12 | } 13 | -------------------------------------------------------------------------------- /src/special-types.ts: -------------------------------------------------------------------------------- 1 | import { functionType, NODE_TYPE, ValueType } from "@previewjs/type-analyzer"; 2 | 3 | export const SOLID_SPECIAL_TYPES: Record = { 4 | Component: functionType(NODE_TYPE), 5 | Element: NODE_TYPE, 6 | FunctionElement: NODE_TYPE, 7 | Node: NODE_TYPE, 8 | }; 9 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "rootDir": "src", 4 | "outDir": "dist", 5 | "target": "es2019", 6 | "module": "commonjs", 7 | "declaration": true, 8 | "isolatedModules": true, 9 | "strict": true, 10 | "noImplicitAny": true, 11 | "strictNullChecks": true, 12 | "strictFunctionTypes": true, 13 | "strictBindCallApply": true, 14 | "strictPropertyInitialization": true, 15 | "noImplicitThis": true, 16 | "alwaysStrict": true, 17 | "noUnusedLocals": false, 18 | "noUnusedParameters": false, 19 | "noImplicitReturns": true, 20 | "noFallthroughCasesInSwitch": true, 21 | "noUncheckedIndexedAccess": true, 22 | "esModuleInterop": true, 23 | "skipLibCheck": true, 24 | "forceConsistentCasingInFileNames": true 25 | }, 26 | "include": ["src"], 27 | "exclude": ["node_modules"] 28 | } 29 | --------------------------------------------------------------------------------