├── .github └── workflows │ └── publish-to-npm.yml ├── .gitignore ├── LICENSE ├── README.md ├── package-lock.json ├── package.json ├── rollup.config.mjs ├── src ├── HoverImage.tsx └── index.ts └── tsconfig.json /.github/workflows/publish-to-npm.yml: -------------------------------------------------------------------------------- 1 | name: publish-npm 2 | 3 | on: 4 | release: 5 | types: [published] 6 | workflow_dispatch: 7 | 8 | jobs: 9 | publish-npm: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v3 13 | - uses: actions/setup-node@v3 14 | with: 15 | node-version: 18 16 | registry-url: https://registry.npmjs.org 17 | - run: npm ci && npm run build 18 | - run: npm publish --access=public 19 | env: 20 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /es 2 | /lib 3 | /node_modules 4 | /umd 5 | npm-debug.log* 6 | .vscode 7 | .DS_Store -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Mau Joost 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 | # rollup-react-starter-lib-ts 2 |

3 | 4 | npm version 5 | 6 | 7 | install size 8 | 9 | 10 | license 11 | 12 |

13 | 14 | 15 | Template to create your own Typescript React library with Rollup. 16 | 17 | - Rollup v3 :tada: 18 | - Compatible with new and old React versions, generates ESM/CJS files. 19 | 20 | ## Build & Publish 21 | 22 | You can use this template and 23 | change the name under package.json. 24 | 25 | Build 26 | 27 | ``` 28 | npm run build 29 | ``` 30 | 31 | Build & Watch 32 | 33 | ``` 34 | npm run build:watch 35 | ``` 36 | 37 | Publish (public library) 38 | 39 | Be sure you are either logged in under `npm login` or you have a token (check https://docs.npmjs.com/creating-and-viewing-access-tokens). 40 | 41 | ``` 42 | npm run publish --access=public 43 | ``` 44 | 45 | ## For local testing 46 | 47 | cd your-lib-folder/ 48 | 49 | ``` 50 | npm link 51 | ``` 52 | 53 | cd your-app/ 54 | 55 | ``` 56 | npm link name-of-your-lib 57 | ``` 58 | 59 | ### Want to also minify bundle output? 60 | 61 | You can install rollup-plugin-terser (still works with rollup v3, but since it has no updates, we need to install it with legacy peer options) 62 | 63 | ``` 64 | npm i rollup-plugin-terser --save-dev --legacy-peer-deps 65 | ``` 66 | 67 | #### Configure 68 | 69 | rollup.config.mjs 70 | 71 | ``` javascript 72 | import { terser } from 'rollup-plugin-terser'; 73 | 74 | ... 75 | 76 | plugins: [ 77 | peerDepsExternal(), 78 | resolve(), 79 | commonjs(), 80 | typescript({ tsconfig: "./tsconfig.json" }), 81 | terser(), // we add it here 82 | ] 83 | 84 | 85 | 86 | ``` 87 | 88 | 89 | [npm-badge]: https://img.shields.io/npm/v/rollup-react-starter-lib-ts.svg 90 | [npm]: https://www.npmjs.org/package/rollup-react-starter-lib-ts 91 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rollup-react-starter-lib-ts", 3 | "version": "1.0.4", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "rollup-react-starter-lib-ts", 9 | "version": "1.0.4", 10 | "license": "MIT", 11 | "devDependencies": { 12 | "@rollup/plugin-commonjs": "^23.0.2", 13 | "@rollup/plugin-node-resolve": "^15.0.1", 14 | "@rollup/plugin-typescript": "^9.0.2", 15 | "@types/react": "^18.0.21", 16 | "@types/react-dom": "^18.0.6", 17 | "react": "^18.2.0", 18 | "react-dom": "^18.2.0", 19 | "rollup": "^3.2.3", 20 | "rollup-plugin-peer-deps-external": "^2.2.4", 21 | "typescript": "^4.8.4" 22 | }, 23 | "peerDependencies": { 24 | "react": "^16 || ^17 || ^18", 25 | "react-dom": "^16 || ^17 || ^18" 26 | } 27 | }, 28 | "node_modules/@rollup/plugin-commonjs": { 29 | "version": "23.0.2", 30 | "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-23.0.2.tgz", 31 | "integrity": "sha512-e9ThuiRf93YlVxc4qNIurvv+Hp9dnD+4PjOqQs5vAYfcZ3+AXSrcdzXnVjWxcGQOa6KGJFcRZyUI3ktWLavFjg==", 32 | "dev": true, 33 | "dependencies": { 34 | "@rollup/pluginutils": "^5.0.1", 35 | "commondir": "^1.0.1", 36 | "estree-walker": "^2.0.2", 37 | "glob": "^8.0.3", 38 | "is-reference": "1.2.1", 39 | "magic-string": "^0.26.4" 40 | }, 41 | "engines": { 42 | "node": ">=14.0.0" 43 | }, 44 | "peerDependencies": { 45 | "rollup": "^2.68.0||^3.0.0" 46 | }, 47 | "peerDependenciesMeta": { 48 | "rollup": { 49 | "optional": true 50 | } 51 | } 52 | }, 53 | "node_modules/@rollup/plugin-node-resolve": { 54 | "version": "15.0.1", 55 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.1.tgz", 56 | "integrity": "sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg==", 57 | "dev": true, 58 | "dependencies": { 59 | "@rollup/pluginutils": "^5.0.1", 60 | "@types/resolve": "1.20.2", 61 | "deepmerge": "^4.2.2", 62 | "is-builtin-module": "^3.2.0", 63 | "is-module": "^1.0.0", 64 | "resolve": "^1.22.1" 65 | }, 66 | "engines": { 67 | "node": ">=14.0.0" 68 | }, 69 | "peerDependencies": { 70 | "rollup": "^2.78.0||^3.0.0" 71 | }, 72 | "peerDependenciesMeta": { 73 | "rollup": { 74 | "optional": true 75 | } 76 | } 77 | }, 78 | "node_modules/@rollup/plugin-typescript": { 79 | "version": "9.0.2", 80 | "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-9.0.2.tgz", 81 | "integrity": "sha512-/sS93vmHUMjzDUsl5scNQr1mUlNE1QjBBvOhmRwJCH8k2RRhDIm3c977B3wdu3t3Ap17W6dDeXP3hj1P1Un1bA==", 82 | "dev": true, 83 | "dependencies": { 84 | "@rollup/pluginutils": "^5.0.1", 85 | "resolve": "^1.22.1" 86 | }, 87 | "engines": { 88 | "node": ">=14.0.0" 89 | }, 90 | "peerDependencies": { 91 | "rollup": "^2.14.0||^3.0.0", 92 | "tslib": "*", 93 | "typescript": ">=3.7.0" 94 | }, 95 | "peerDependenciesMeta": { 96 | "rollup": { 97 | "optional": true 98 | }, 99 | "tslib": { 100 | "optional": true 101 | } 102 | } 103 | }, 104 | "node_modules/@rollup/pluginutils": { 105 | "version": "5.0.2", 106 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", 107 | "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", 108 | "dev": true, 109 | "dependencies": { 110 | "@types/estree": "^1.0.0", 111 | "estree-walker": "^2.0.2", 112 | "picomatch": "^2.3.1" 113 | }, 114 | "engines": { 115 | "node": ">=14.0.0" 116 | }, 117 | "peerDependencies": { 118 | "rollup": "^1.20.0||^2.0.0||^3.0.0" 119 | }, 120 | "peerDependenciesMeta": { 121 | "rollup": { 122 | "optional": true 123 | } 124 | } 125 | }, 126 | "node_modules/@types/estree": { 127 | "version": "1.0.0", 128 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", 129 | "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", 130 | "dev": true 131 | }, 132 | "node_modules/@types/prop-types": { 133 | "version": "15.7.5", 134 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", 135 | "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", 136 | "dev": true 137 | }, 138 | "node_modules/@types/react": { 139 | "version": "18.0.21", 140 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.21.tgz", 141 | "integrity": "sha512-7QUCOxvFgnD5Jk8ZKlUAhVcRj7GuJRjnjjiY/IUBWKgOlnvDvTMLD4RTF7NPyVmbRhNrbomZiOepg7M/2Kj1mA==", 142 | "dev": true, 143 | "dependencies": { 144 | "@types/prop-types": "*", 145 | "@types/scheduler": "*", 146 | "csstype": "^3.0.2" 147 | } 148 | }, 149 | "node_modules/@types/react-dom": { 150 | "version": "18.0.6", 151 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.6.tgz", 152 | "integrity": "sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==", 153 | "dev": true, 154 | "dependencies": { 155 | "@types/react": "*" 156 | } 157 | }, 158 | "node_modules/@types/resolve": { 159 | "version": "1.20.2", 160 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", 161 | "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", 162 | "dev": true 163 | }, 164 | "node_modules/@types/scheduler": { 165 | "version": "0.16.2", 166 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", 167 | "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", 168 | "dev": true 169 | }, 170 | "node_modules/balanced-match": { 171 | "version": "1.0.2", 172 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 173 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 174 | "dev": true 175 | }, 176 | "node_modules/brace-expansion": { 177 | "version": "2.0.1", 178 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 179 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 180 | "dev": true, 181 | "dependencies": { 182 | "balanced-match": "^1.0.0" 183 | } 184 | }, 185 | "node_modules/builtin-modules": { 186 | "version": "3.3.0", 187 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", 188 | "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", 189 | "dev": true, 190 | "engines": { 191 | "node": ">=6" 192 | }, 193 | "funding": { 194 | "url": "https://github.com/sponsors/sindresorhus" 195 | } 196 | }, 197 | "node_modules/commondir": { 198 | "version": "1.0.1", 199 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 200 | "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", 201 | "dev": true 202 | }, 203 | "node_modules/csstype": { 204 | "version": "3.1.1", 205 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", 206 | "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", 207 | "dev": true 208 | }, 209 | "node_modules/deepmerge": { 210 | "version": "4.2.2", 211 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", 212 | "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", 213 | "dev": true, 214 | "engines": { 215 | "node": ">=0.10.0" 216 | } 217 | }, 218 | "node_modules/estree-walker": { 219 | "version": "2.0.2", 220 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 221 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 222 | "dev": true 223 | }, 224 | "node_modules/fs.realpath": { 225 | "version": "1.0.0", 226 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 227 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 228 | "dev": true 229 | }, 230 | "node_modules/fsevents": { 231 | "version": "2.3.2", 232 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 233 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 234 | "dev": true, 235 | "hasInstallScript": true, 236 | "optional": true, 237 | "os": [ 238 | "darwin" 239 | ], 240 | "engines": { 241 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 242 | } 243 | }, 244 | "node_modules/function-bind": { 245 | "version": "1.1.1", 246 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 247 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 248 | "dev": true 249 | }, 250 | "node_modules/glob": { 251 | "version": "8.0.3", 252 | "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", 253 | "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", 254 | "dev": true, 255 | "dependencies": { 256 | "fs.realpath": "^1.0.0", 257 | "inflight": "^1.0.4", 258 | "inherits": "2", 259 | "minimatch": "^5.0.1", 260 | "once": "^1.3.0" 261 | }, 262 | "engines": { 263 | "node": ">=12" 264 | }, 265 | "funding": { 266 | "url": "https://github.com/sponsors/isaacs" 267 | } 268 | }, 269 | "node_modules/has": { 270 | "version": "1.0.3", 271 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 272 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 273 | "dev": true, 274 | "dependencies": { 275 | "function-bind": "^1.1.1" 276 | }, 277 | "engines": { 278 | "node": ">= 0.4.0" 279 | } 280 | }, 281 | "node_modules/inflight": { 282 | "version": "1.0.6", 283 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 284 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 285 | "dev": true, 286 | "dependencies": { 287 | "once": "^1.3.0", 288 | "wrappy": "1" 289 | } 290 | }, 291 | "node_modules/inherits": { 292 | "version": "2.0.4", 293 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 294 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 295 | "dev": true 296 | }, 297 | "node_modules/is-builtin-module": { 298 | "version": "3.2.0", 299 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.0.tgz", 300 | "integrity": "sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==", 301 | "dev": true, 302 | "dependencies": { 303 | "builtin-modules": "^3.3.0" 304 | }, 305 | "engines": { 306 | "node": ">=6" 307 | }, 308 | "funding": { 309 | "url": "https://github.com/sponsors/sindresorhus" 310 | } 311 | }, 312 | "node_modules/is-core-module": { 313 | "version": "2.11.0", 314 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 315 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 316 | "dev": true, 317 | "dependencies": { 318 | "has": "^1.0.3" 319 | }, 320 | "funding": { 321 | "url": "https://github.com/sponsors/ljharb" 322 | } 323 | }, 324 | "node_modules/is-module": { 325 | "version": "1.0.0", 326 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", 327 | "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", 328 | "dev": true 329 | }, 330 | "node_modules/is-reference": { 331 | "version": "1.2.1", 332 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", 333 | "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", 334 | "dev": true, 335 | "dependencies": { 336 | "@types/estree": "*" 337 | } 338 | }, 339 | "node_modules/js-tokens": { 340 | "version": "4.0.0", 341 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 342 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 343 | "dev": true 344 | }, 345 | "node_modules/loose-envify": { 346 | "version": "1.4.0", 347 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 348 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 349 | "dev": true, 350 | "dependencies": { 351 | "js-tokens": "^3.0.0 || ^4.0.0" 352 | }, 353 | "bin": { 354 | "loose-envify": "cli.js" 355 | } 356 | }, 357 | "node_modules/magic-string": { 358 | "version": "0.26.7", 359 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", 360 | "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", 361 | "dev": true, 362 | "dependencies": { 363 | "sourcemap-codec": "^1.4.8" 364 | }, 365 | "engines": { 366 | "node": ">=12" 367 | } 368 | }, 369 | "node_modules/minimatch": { 370 | "version": "5.1.0", 371 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", 372 | "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", 373 | "dev": true, 374 | "dependencies": { 375 | "brace-expansion": "^2.0.1" 376 | }, 377 | "engines": { 378 | "node": ">=10" 379 | } 380 | }, 381 | "node_modules/once": { 382 | "version": "1.4.0", 383 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 384 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 385 | "dev": true, 386 | "dependencies": { 387 | "wrappy": "1" 388 | } 389 | }, 390 | "node_modules/path-parse": { 391 | "version": "1.0.7", 392 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 393 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 394 | "dev": true 395 | }, 396 | "node_modules/picomatch": { 397 | "version": "2.3.1", 398 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 399 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 400 | "dev": true, 401 | "engines": { 402 | "node": ">=8.6" 403 | }, 404 | "funding": { 405 | "url": "https://github.com/sponsors/jonschlinkert" 406 | } 407 | }, 408 | "node_modules/react": { 409 | "version": "18.2.0", 410 | "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", 411 | "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", 412 | "dev": true, 413 | "dependencies": { 414 | "loose-envify": "^1.1.0" 415 | }, 416 | "engines": { 417 | "node": ">=0.10.0" 418 | } 419 | }, 420 | "node_modules/react-dom": { 421 | "version": "18.2.0", 422 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", 423 | "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", 424 | "dev": true, 425 | "dependencies": { 426 | "loose-envify": "^1.1.0", 427 | "scheduler": "^0.23.0" 428 | }, 429 | "peerDependencies": { 430 | "react": "^18.2.0" 431 | } 432 | }, 433 | "node_modules/resolve": { 434 | "version": "1.22.1", 435 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 436 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 437 | "dev": true, 438 | "dependencies": { 439 | "is-core-module": "^2.9.0", 440 | "path-parse": "^1.0.7", 441 | "supports-preserve-symlinks-flag": "^1.0.0" 442 | }, 443 | "bin": { 444 | "resolve": "bin/resolve" 445 | }, 446 | "funding": { 447 | "url": "https://github.com/sponsors/ljharb" 448 | } 449 | }, 450 | "node_modules/rollup": { 451 | "version": "3.2.3", 452 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.2.3.tgz", 453 | "integrity": "sha512-qfadtkY5kl0F5e4dXVdj2D+GtOdifasXHFMiL1SMf9ADQDv5Eti6xReef9FKj+iQPR2pvtqWna57s/PjARY4fg==", 454 | "dev": true, 455 | "bin": { 456 | "rollup": "dist/bin/rollup" 457 | }, 458 | "engines": { 459 | "node": ">=14.18.0", 460 | "npm": ">=8.0.0" 461 | }, 462 | "optionalDependencies": { 463 | "fsevents": "~2.3.2" 464 | } 465 | }, 466 | "node_modules/rollup-plugin-peer-deps-external": { 467 | "version": "2.2.4", 468 | "resolved": "https://registry.npmjs.org/rollup-plugin-peer-deps-external/-/rollup-plugin-peer-deps-external-2.2.4.tgz", 469 | "integrity": "sha512-AWdukIM1+k5JDdAqV/Cxd+nejvno2FVLVeZ74NKggm3Q5s9cbbcOgUPGdbxPi4BXu7xGaZ8HG12F+thImYu/0g==", 470 | "dev": true, 471 | "peerDependencies": { 472 | "rollup": "*" 473 | } 474 | }, 475 | "node_modules/scheduler": { 476 | "version": "0.23.0", 477 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", 478 | "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", 479 | "dev": true, 480 | "dependencies": { 481 | "loose-envify": "^1.1.0" 482 | } 483 | }, 484 | "node_modules/sourcemap-codec": { 485 | "version": "1.4.8", 486 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 487 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", 488 | "dev": true 489 | }, 490 | "node_modules/supports-preserve-symlinks-flag": { 491 | "version": "1.0.0", 492 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 493 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 494 | "dev": true, 495 | "engines": { 496 | "node": ">= 0.4" 497 | }, 498 | "funding": { 499 | "url": "https://github.com/sponsors/ljharb" 500 | } 501 | }, 502 | "node_modules/tslib": { 503 | "version": "2.4.0", 504 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", 505 | "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", 506 | "dev": true, 507 | "optional": true, 508 | "peer": true 509 | }, 510 | "node_modules/typescript": { 511 | "version": "4.8.4", 512 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", 513 | "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", 514 | "dev": true, 515 | "bin": { 516 | "tsc": "bin/tsc", 517 | "tsserver": "bin/tsserver" 518 | }, 519 | "engines": { 520 | "node": ">=4.2.0" 521 | } 522 | }, 523 | "node_modules/wrappy": { 524 | "version": "1.0.2", 525 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 526 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 527 | "dev": true 528 | } 529 | }, 530 | "dependencies": { 531 | "@rollup/plugin-commonjs": { 532 | "version": "23.0.2", 533 | "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-23.0.2.tgz", 534 | "integrity": "sha512-e9ThuiRf93YlVxc4qNIurvv+Hp9dnD+4PjOqQs5vAYfcZ3+AXSrcdzXnVjWxcGQOa6KGJFcRZyUI3ktWLavFjg==", 535 | "dev": true, 536 | "requires": { 537 | "@rollup/pluginutils": "^5.0.1", 538 | "commondir": "^1.0.1", 539 | "estree-walker": "^2.0.2", 540 | "glob": "^8.0.3", 541 | "is-reference": "1.2.1", 542 | "magic-string": "^0.26.4" 543 | } 544 | }, 545 | "@rollup/plugin-node-resolve": { 546 | "version": "15.0.1", 547 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.1.tgz", 548 | "integrity": "sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg==", 549 | "dev": true, 550 | "requires": { 551 | "@rollup/pluginutils": "^5.0.1", 552 | "@types/resolve": "1.20.2", 553 | "deepmerge": "^4.2.2", 554 | "is-builtin-module": "^3.2.0", 555 | "is-module": "^1.0.0", 556 | "resolve": "^1.22.1" 557 | } 558 | }, 559 | "@rollup/plugin-typescript": { 560 | "version": "9.0.2", 561 | "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-9.0.2.tgz", 562 | "integrity": "sha512-/sS93vmHUMjzDUsl5scNQr1mUlNE1QjBBvOhmRwJCH8k2RRhDIm3c977B3wdu3t3Ap17W6dDeXP3hj1P1Un1bA==", 563 | "dev": true, 564 | "requires": { 565 | "@rollup/pluginutils": "^5.0.1", 566 | "resolve": "^1.22.1" 567 | } 568 | }, 569 | "@rollup/pluginutils": { 570 | "version": "5.0.2", 571 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", 572 | "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", 573 | "dev": true, 574 | "requires": { 575 | "@types/estree": "^1.0.0", 576 | "estree-walker": "^2.0.2", 577 | "picomatch": "^2.3.1" 578 | } 579 | }, 580 | "@types/estree": { 581 | "version": "1.0.0", 582 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", 583 | "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", 584 | "dev": true 585 | }, 586 | "@types/prop-types": { 587 | "version": "15.7.5", 588 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", 589 | "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", 590 | "dev": true 591 | }, 592 | "@types/react": { 593 | "version": "18.0.21", 594 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.21.tgz", 595 | "integrity": "sha512-7QUCOxvFgnD5Jk8ZKlUAhVcRj7GuJRjnjjiY/IUBWKgOlnvDvTMLD4RTF7NPyVmbRhNrbomZiOepg7M/2Kj1mA==", 596 | "dev": true, 597 | "requires": { 598 | "@types/prop-types": "*", 599 | "@types/scheduler": "*", 600 | "csstype": "^3.0.2" 601 | } 602 | }, 603 | "@types/react-dom": { 604 | "version": "18.0.6", 605 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.6.tgz", 606 | "integrity": "sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==", 607 | "dev": true, 608 | "requires": { 609 | "@types/react": "*" 610 | } 611 | }, 612 | "@types/resolve": { 613 | "version": "1.20.2", 614 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", 615 | "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", 616 | "dev": true 617 | }, 618 | "@types/scheduler": { 619 | "version": "0.16.2", 620 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", 621 | "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", 622 | "dev": true 623 | }, 624 | "balanced-match": { 625 | "version": "1.0.2", 626 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 627 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 628 | "dev": true 629 | }, 630 | "brace-expansion": { 631 | "version": "2.0.1", 632 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 633 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 634 | "dev": true, 635 | "requires": { 636 | "balanced-match": "^1.0.0" 637 | } 638 | }, 639 | "builtin-modules": { 640 | "version": "3.3.0", 641 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", 642 | "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", 643 | "dev": true 644 | }, 645 | "commondir": { 646 | "version": "1.0.1", 647 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 648 | "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", 649 | "dev": true 650 | }, 651 | "csstype": { 652 | "version": "3.1.1", 653 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", 654 | "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", 655 | "dev": true 656 | }, 657 | "deepmerge": { 658 | "version": "4.2.2", 659 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", 660 | "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", 661 | "dev": true 662 | }, 663 | "estree-walker": { 664 | "version": "2.0.2", 665 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 666 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 667 | "dev": true 668 | }, 669 | "fs.realpath": { 670 | "version": "1.0.0", 671 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 672 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 673 | "dev": true 674 | }, 675 | "fsevents": { 676 | "version": "2.3.2", 677 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 678 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 679 | "dev": true, 680 | "optional": true 681 | }, 682 | "function-bind": { 683 | "version": "1.1.1", 684 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 685 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 686 | "dev": true 687 | }, 688 | "glob": { 689 | "version": "8.0.3", 690 | "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", 691 | "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", 692 | "dev": true, 693 | "requires": { 694 | "fs.realpath": "^1.0.0", 695 | "inflight": "^1.0.4", 696 | "inherits": "2", 697 | "minimatch": "^5.0.1", 698 | "once": "^1.3.0" 699 | } 700 | }, 701 | "has": { 702 | "version": "1.0.3", 703 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 704 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 705 | "dev": true, 706 | "requires": { 707 | "function-bind": "^1.1.1" 708 | } 709 | }, 710 | "inflight": { 711 | "version": "1.0.6", 712 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 713 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 714 | "dev": true, 715 | "requires": { 716 | "once": "^1.3.0", 717 | "wrappy": "1" 718 | } 719 | }, 720 | "inherits": { 721 | "version": "2.0.4", 722 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 723 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 724 | "dev": true 725 | }, 726 | "is-builtin-module": { 727 | "version": "3.2.0", 728 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.0.tgz", 729 | "integrity": "sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==", 730 | "dev": true, 731 | "requires": { 732 | "builtin-modules": "^3.3.0" 733 | } 734 | }, 735 | "is-core-module": { 736 | "version": "2.11.0", 737 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 738 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 739 | "dev": true, 740 | "requires": { 741 | "has": "^1.0.3" 742 | } 743 | }, 744 | "is-module": { 745 | "version": "1.0.0", 746 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", 747 | "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", 748 | "dev": true 749 | }, 750 | "is-reference": { 751 | "version": "1.2.1", 752 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", 753 | "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", 754 | "dev": true, 755 | "requires": { 756 | "@types/estree": "*" 757 | } 758 | }, 759 | "js-tokens": { 760 | "version": "4.0.0", 761 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 762 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 763 | "dev": true 764 | }, 765 | "loose-envify": { 766 | "version": "1.4.0", 767 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 768 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 769 | "dev": true, 770 | "requires": { 771 | "js-tokens": "^3.0.0 || ^4.0.0" 772 | } 773 | }, 774 | "magic-string": { 775 | "version": "0.26.7", 776 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", 777 | "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", 778 | "dev": true, 779 | "requires": { 780 | "sourcemap-codec": "^1.4.8" 781 | } 782 | }, 783 | "minimatch": { 784 | "version": "5.1.0", 785 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", 786 | "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", 787 | "dev": true, 788 | "requires": { 789 | "brace-expansion": "^2.0.1" 790 | } 791 | }, 792 | "once": { 793 | "version": "1.4.0", 794 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 795 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 796 | "dev": true, 797 | "requires": { 798 | "wrappy": "1" 799 | } 800 | }, 801 | "path-parse": { 802 | "version": "1.0.7", 803 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 804 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 805 | "dev": true 806 | }, 807 | "picomatch": { 808 | "version": "2.3.1", 809 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 810 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 811 | "dev": true 812 | }, 813 | "react": { 814 | "version": "18.2.0", 815 | "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", 816 | "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", 817 | "dev": true, 818 | "requires": { 819 | "loose-envify": "^1.1.0" 820 | } 821 | }, 822 | "react-dom": { 823 | "version": "18.2.0", 824 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", 825 | "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", 826 | "dev": true, 827 | "requires": { 828 | "loose-envify": "^1.1.0", 829 | "scheduler": "^0.23.0" 830 | } 831 | }, 832 | "resolve": { 833 | "version": "1.22.1", 834 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 835 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 836 | "dev": true, 837 | "requires": { 838 | "is-core-module": "^2.9.0", 839 | "path-parse": "^1.0.7", 840 | "supports-preserve-symlinks-flag": "^1.0.0" 841 | } 842 | }, 843 | "rollup": { 844 | "version": "3.2.3", 845 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.2.3.tgz", 846 | "integrity": "sha512-qfadtkY5kl0F5e4dXVdj2D+GtOdifasXHFMiL1SMf9ADQDv5Eti6xReef9FKj+iQPR2pvtqWna57s/PjARY4fg==", 847 | "dev": true, 848 | "requires": { 849 | "fsevents": "~2.3.2" 850 | } 851 | }, 852 | "rollup-plugin-peer-deps-external": { 853 | "version": "2.2.4", 854 | "resolved": "https://registry.npmjs.org/rollup-plugin-peer-deps-external/-/rollup-plugin-peer-deps-external-2.2.4.tgz", 855 | "integrity": "sha512-AWdukIM1+k5JDdAqV/Cxd+nejvno2FVLVeZ74NKggm3Q5s9cbbcOgUPGdbxPi4BXu7xGaZ8HG12F+thImYu/0g==", 856 | "dev": true, 857 | "requires": {} 858 | }, 859 | "scheduler": { 860 | "version": "0.23.0", 861 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", 862 | "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", 863 | "dev": true, 864 | "requires": { 865 | "loose-envify": "^1.1.0" 866 | } 867 | }, 868 | "sourcemap-codec": { 869 | "version": "1.4.8", 870 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 871 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", 872 | "dev": true 873 | }, 874 | "supports-preserve-symlinks-flag": { 875 | "version": "1.0.0", 876 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 877 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 878 | "dev": true 879 | }, 880 | "tslib": { 881 | "version": "2.4.0", 882 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", 883 | "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", 884 | "dev": true, 885 | "optional": true, 886 | "peer": true 887 | }, 888 | "typescript": { 889 | "version": "4.8.4", 890 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", 891 | "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", 892 | "dev": true 893 | }, 894 | "wrappy": { 895 | "version": "1.0.2", 896 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 897 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 898 | "dev": true 899 | } 900 | } 901 | } 902 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rollup-react-starter-lib-ts", 3 | "version": "1.0.4", 4 | "description": "Rolllup template for creating your react/typescript library", 5 | "main": "./lib/cjs/index.js", 6 | "module": "./lib/esm/index.js", 7 | "types": "./lib/esm/index.d.ts", 8 | "files": [ 9 | "/lib" 10 | ], 11 | "scripts": { 12 | "build": "rollup -c", 13 | "build:watch": "rollup -c --watch" 14 | }, 15 | "devDependencies": { 16 | "@rollup/plugin-commonjs": "^23.0.2", 17 | "@rollup/plugin-node-resolve": "^15.0.1", 18 | "@rollup/plugin-typescript": "^9.0.2", 19 | "@types/react": "^18.0.21", 20 | "@types/react-dom": "^18.0.6", 21 | "react": "^18.2.0", 22 | "react-dom": "^18.2.0", 23 | "rollup": "^3.2.3", 24 | "rollup-plugin-peer-deps-external": "^2.2.4", 25 | "typescript": "^4.8.4" 26 | }, 27 | "repository": { 28 | "type": "git", 29 | "url": "https://github.com/thiswallz/rollup-react-starter-lib-ts" 30 | }, 31 | "author": "Mau BJW", 32 | "license": "MIT", 33 | "keywords": [ 34 | "react-template", 35 | "react-library", 36 | "typescript", 37 | "react", 38 | "template" 39 | ], 40 | "peerDependencies": { 41 | "react": "^16 || ^17 || ^18", 42 | "react-dom": "^16 || ^17 || ^18" 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /rollup.config.mjs: -------------------------------------------------------------------------------- 1 | import commonjs from "@rollup/plugin-commonjs"; 2 | import resolve from "@rollup/plugin-node-resolve"; 3 | import typescript from "@rollup/plugin-typescript"; 4 | import peerDepsExternal from 'rollup-plugin-peer-deps-external'; 5 | 6 | import pkg from './package.json' assert { type: 'json' }; 7 | 8 | export default [ 9 | { 10 | input: "src/index.ts", 11 | output: [ 12 | { 13 | file: pkg.main, 14 | format: "cjs", 15 | sourcemap: true, 16 | }, 17 | { 18 | file: pkg.module, 19 | format: "esm", 20 | sourcemap: true, 21 | }, 22 | ], 23 | plugins: [ 24 | peerDepsExternal(), 25 | resolve(), 26 | commonjs(), 27 | typescript({ tsconfig: "./tsconfig.json" }), 28 | ], 29 | } 30 | ]; -------------------------------------------------------------------------------- /src/HoverImage.tsx: -------------------------------------------------------------------------------- 1 | import React, { CSSProperties } from "react"; 2 | 3 | type HoverImageProps = { 4 | src: string; 5 | alt: string; 6 | className: string; 7 | style: CSSProperties; 8 | }; 9 | 10 | export default function HoverImage({ 11 | src, 12 | alt, 13 | style, 14 | className 15 | }: HoverImageProps) { 16 | 17 | return ( 18 |
24 | {alt} 31 |
32 | ); 33 | } -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export { default as HoverImage } from "./HoverImage"; 2 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ 4 | "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ 5 | "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ 6 | "strict": true, /* Enable all strict type-checking options. */ 7 | "skipLibCheck": true /* Skip type checking all .d.ts files. */, 8 | "jsx": "react", 9 | "module": "ESNext", 10 | "declaration": true, 11 | "declarationDir": "lib", 12 | "sourceMap": true, 13 | "outDir": "lib", 14 | "moduleResolution": "node", 15 | "allowSyntheticDefaultImports": true, 16 | "emitDeclarationOnly": true, 17 | } 18 | } 19 | --------------------------------------------------------------------------------