├── .gitignore ├── assets ├── frappe.webp ├── latte.webp ├── mocha.webp ├── preview.webp └── macchiato.webp ├── renovate.json ├── package.json ├── .editorconfig ├── LICENSE ├── main.ts ├── README.md └── pnpm-lock.yaml /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /assets/frappe.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/catppuccin/monkeytype/HEAD/assets/frappe.webp -------------------------------------------------------------------------------- /assets/latte.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/catppuccin/monkeytype/HEAD/assets/latte.webp -------------------------------------------------------------------------------- /assets/mocha.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/catppuccin/monkeytype/HEAD/assets/mocha.webp -------------------------------------------------------------------------------- /assets/preview.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/catppuccin/monkeytype/HEAD/assets/preview.webp -------------------------------------------------------------------------------- /assets/macchiato.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/catppuccin/monkeytype/HEAD/assets/macchiato.webp -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "local>catppuccin/renovate-config" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@catppuccin/monkeytype", 3 | "type": "module", 4 | "private": "true", 5 | "license": "MIT", 6 | "dependencies": { 7 | "@catppuccin/palette": "^1.7.1", 8 | "@types/node": "^22.15.3", 9 | "tsx": "^4.19.4" 10 | }, 11 | "scripts": { 12 | "build": "tsx main.ts" 13 | }, 14 | "packageManager": "pnpm@10.10.0" 15 | } 16 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent 2 | # coding styles between different editors and IDEs 3 | # EditorConfig is awesome: https://EditorConfig.org 4 | 5 | root = true 6 | 7 | [*] 8 | charset = utf-8 9 | indent_size = 2 10 | indent_style = space 11 | end_of_line = lf 12 | insert_final_newline = true 13 | trim_trailing_whitespace = true 14 | 15 | # go 16 | [*.go] 17 | indent_style = tab 18 | indent_size = 4 19 | 20 | # python 21 | [*.{ini,py,py.tpl,rst}] 22 | indent_size = 4 23 | 24 | # rust 25 | [*.rs] 26 | indent_size = 4 27 | 28 | # documentation, utils 29 | [*.{md,mdx,diff}] 30 | trim_trailing_whitespace = false 31 | 32 | # windows shell scripts 33 | [*.{cmd,bat,ps1}] 34 | end_of_line = crlf 35 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Catppuccin 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 | -------------------------------------------------------------------------------- /main.ts: -------------------------------------------------------------------------------- 1 | import { CatppuccinFlavor, flavorEntries, flavors } from "@catppuccin/palette"; 2 | import { Buffer } from "node:buffer"; 3 | import { readFile, writeFile } from "node:fs/promises"; 4 | import path from "node:path"; 5 | import { fileURLToPath } from "node:url"; 6 | 7 | const updateReadme = ( 8 | readme: string, 9 | newContent: string, 10 | options: { 11 | section?: string; 12 | preamble?: string; 13 | markers?: { 14 | start: string; 15 | end: string; 16 | }; 17 | } = {} 18 | ): string => { 19 | const { 20 | section = "", 21 | preamble = "", 22 | markers = { 23 | start: ``, 26 | end: ``, 29 | }, 30 | } = options; 31 | const wrapped = [markers.start, preamble, newContent, markers.end].join("\n"); 32 | 33 | Object.values(markers).map((m) => { 34 | if (!readme.includes(m)) { 35 | throw new Error(`Marker ${m} not found in README.md`); 36 | } 37 | }); 38 | 39 | const pre = readme.split(markers.start)[0]; 40 | const end = readme.split(markers.end)[1]; 41 | return pre + wrapped + end; 42 | }; 43 | 44 | const generateTheme = (flavor: CatppuccinFlavor) => { 45 | const background = flavor.colors.base.hex; 46 | const main = flavor.colors.mauve.hex; 47 | const caret = flavor.colors.rosewater.hex; 48 | const subAlt = flavor.colors.overlay1.hex; 49 | const sub = flavor.colors.mantle.hex; 50 | const text = flavor.colors.text.hex; 51 | const error = flavor.colors.red.hex; 52 | const extraError = flavor.colors.maroon.hex; 53 | 54 | const theme = { 55 | c: [ 56 | background, 57 | main, 58 | caret, 59 | subAlt, 60 | sub, 61 | text, 62 | error, 63 | extraError, 64 | error, 65 | extraError, 66 | ], 67 | }; 68 | 69 | return Buffer.from(JSON.stringify(theme), "binary").toString("base64url"); 70 | }; 71 | 72 | const generateList = () => { 73 | return flavorEntries 74 | .map( 75 | ([_, flavor]) => 76 | `- [${flavor.emoji} ${ 77 | flavor.name 78 | }](https://monkeytype.com/?customTheme=${generateTheme(flavor)})` 79 | ) 80 | .join("\n"); 81 | }; 82 | 83 | const root = path.dirname(fileURLToPath(import.meta.url)); 84 | const readmePath = path.join(root, "./README.md"); 85 | let readmeContent = await readFile(readmePath, "utf-8"); 86 | try { 87 | readmeContent = updateReadme(readmeContent, generateList()); 88 | } catch (err) { 89 | console.error("Failed to update README", err); 90 | } finally { 91 | await writeFile(readmePath, readmeContent); 92 | } 93 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

15 |
16 |
23 |
27 |
31 |
35 | Copyright © 2021-present Catppuccin Org 61 |
62 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@catppuccin/palette': 12 | specifier: ^1.7.1 13 | version: 1.7.1 14 | '@types/node': 15 | specifier: ^22.15.3 16 | version: 22.15.3 17 | tsx: 18 | specifier: ^4.19.4 19 | version: 4.19.4 20 | 21 | packages: 22 | 23 | '@catppuccin/palette@1.7.1': 24 | resolution: {integrity: sha512-aRc1tbzrevOTV7nFTT9SRdF26w/MIwT4Jwt4fDMc9itRZUDXCuEDBLyz4TQMlqO9ZP8mf5Hu4Jr6D03NLFc6Gw==} 25 | 26 | '@esbuild/aix-ppc64@0.25.3': 27 | resolution: {integrity: sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==} 28 | engines: {node: '>=18'} 29 | cpu: [ppc64] 30 | os: [aix] 31 | 32 | '@esbuild/android-arm64@0.25.3': 33 | resolution: {integrity: sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==} 34 | engines: {node: '>=18'} 35 | cpu: [arm64] 36 | os: [android] 37 | 38 | '@esbuild/android-arm@0.25.3': 39 | resolution: {integrity: sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==} 40 | engines: {node: '>=18'} 41 | cpu: [arm] 42 | os: [android] 43 | 44 | '@esbuild/android-x64@0.25.3': 45 | resolution: {integrity: sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==} 46 | engines: {node: '>=18'} 47 | cpu: [x64] 48 | os: [android] 49 | 50 | '@esbuild/darwin-arm64@0.25.3': 51 | resolution: {integrity: sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==} 52 | engines: {node: '>=18'} 53 | cpu: [arm64] 54 | os: [darwin] 55 | 56 | '@esbuild/darwin-x64@0.25.3': 57 | resolution: {integrity: sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==} 58 | engines: {node: '>=18'} 59 | cpu: [x64] 60 | os: [darwin] 61 | 62 | '@esbuild/freebsd-arm64@0.25.3': 63 | resolution: {integrity: sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==} 64 | engines: {node: '>=18'} 65 | cpu: [arm64] 66 | os: [freebsd] 67 | 68 | '@esbuild/freebsd-x64@0.25.3': 69 | resolution: {integrity: sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==} 70 | engines: {node: '>=18'} 71 | cpu: [x64] 72 | os: [freebsd] 73 | 74 | '@esbuild/linux-arm64@0.25.3': 75 | resolution: {integrity: sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==} 76 | engines: {node: '>=18'} 77 | cpu: [arm64] 78 | os: [linux] 79 | 80 | '@esbuild/linux-arm@0.25.3': 81 | resolution: {integrity: sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==} 82 | engines: {node: '>=18'} 83 | cpu: [arm] 84 | os: [linux] 85 | 86 | '@esbuild/linux-ia32@0.25.3': 87 | resolution: {integrity: sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==} 88 | engines: {node: '>=18'} 89 | cpu: [ia32] 90 | os: [linux] 91 | 92 | '@esbuild/linux-loong64@0.25.3': 93 | resolution: {integrity: sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==} 94 | engines: {node: '>=18'} 95 | cpu: [loong64] 96 | os: [linux] 97 | 98 | '@esbuild/linux-mips64el@0.25.3': 99 | resolution: {integrity: sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==} 100 | engines: {node: '>=18'} 101 | cpu: [mips64el] 102 | os: [linux] 103 | 104 | '@esbuild/linux-ppc64@0.25.3': 105 | resolution: {integrity: sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==} 106 | engines: {node: '>=18'} 107 | cpu: [ppc64] 108 | os: [linux] 109 | 110 | '@esbuild/linux-riscv64@0.25.3': 111 | resolution: {integrity: sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==} 112 | engines: {node: '>=18'} 113 | cpu: [riscv64] 114 | os: [linux] 115 | 116 | '@esbuild/linux-s390x@0.25.3': 117 | resolution: {integrity: sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==} 118 | engines: {node: '>=18'} 119 | cpu: [s390x] 120 | os: [linux] 121 | 122 | '@esbuild/linux-x64@0.25.3': 123 | resolution: {integrity: sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==} 124 | engines: {node: '>=18'} 125 | cpu: [x64] 126 | os: [linux] 127 | 128 | '@esbuild/netbsd-arm64@0.25.3': 129 | resolution: {integrity: sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==} 130 | engines: {node: '>=18'} 131 | cpu: [arm64] 132 | os: [netbsd] 133 | 134 | '@esbuild/netbsd-x64@0.25.3': 135 | resolution: {integrity: sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==} 136 | engines: {node: '>=18'} 137 | cpu: [x64] 138 | os: [netbsd] 139 | 140 | '@esbuild/openbsd-arm64@0.25.3': 141 | resolution: {integrity: sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==} 142 | engines: {node: '>=18'} 143 | cpu: [arm64] 144 | os: [openbsd] 145 | 146 | '@esbuild/openbsd-x64@0.25.3': 147 | resolution: {integrity: sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==} 148 | engines: {node: '>=18'} 149 | cpu: [x64] 150 | os: [openbsd] 151 | 152 | '@esbuild/sunos-x64@0.25.3': 153 | resolution: {integrity: sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==} 154 | engines: {node: '>=18'} 155 | cpu: [x64] 156 | os: [sunos] 157 | 158 | '@esbuild/win32-arm64@0.25.3': 159 | resolution: {integrity: sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==} 160 | engines: {node: '>=18'} 161 | cpu: [arm64] 162 | os: [win32] 163 | 164 | '@esbuild/win32-ia32@0.25.3': 165 | resolution: {integrity: sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==} 166 | engines: {node: '>=18'} 167 | cpu: [ia32] 168 | os: [win32] 169 | 170 | '@esbuild/win32-x64@0.25.3': 171 | resolution: {integrity: sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==} 172 | engines: {node: '>=18'} 173 | cpu: [x64] 174 | os: [win32] 175 | 176 | '@types/node@22.15.3': 177 | resolution: {integrity: sha512-lX7HFZeHf4QG/J7tBZqrCAXwz9J5RD56Y6MpP0eJkka8p+K0RY/yBTW7CYFJ4VGCclxqOLKmiGP5juQc6MKgcw==} 178 | 179 | esbuild@0.25.3: 180 | resolution: {integrity: sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==} 181 | engines: {node: '>=18'} 182 | hasBin: true 183 | 184 | fsevents@2.3.3: 185 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 186 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 187 | os: [darwin] 188 | 189 | get-tsconfig@4.10.0: 190 | resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} 191 | 192 | resolve-pkg-maps@1.0.0: 193 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 194 | 195 | tsx@4.19.4: 196 | resolution: {integrity: sha512-gK5GVzDkJK1SI1zwHf32Mqxf2tSJkNx+eYcNly5+nHvWqXUJYUkWBQtKauoESz3ymezAI++ZwT855x5p5eop+Q==} 197 | engines: {node: '>=18.0.0'} 198 | hasBin: true 199 | 200 | undici-types@6.21.0: 201 | resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} 202 | 203 | snapshots: 204 | 205 | '@catppuccin/palette@1.7.1': {} 206 | 207 | '@esbuild/aix-ppc64@0.25.3': 208 | optional: true 209 | 210 | '@esbuild/android-arm64@0.25.3': 211 | optional: true 212 | 213 | '@esbuild/android-arm@0.25.3': 214 | optional: true 215 | 216 | '@esbuild/android-x64@0.25.3': 217 | optional: true 218 | 219 | '@esbuild/darwin-arm64@0.25.3': 220 | optional: true 221 | 222 | '@esbuild/darwin-x64@0.25.3': 223 | optional: true 224 | 225 | '@esbuild/freebsd-arm64@0.25.3': 226 | optional: true 227 | 228 | '@esbuild/freebsd-x64@0.25.3': 229 | optional: true 230 | 231 | '@esbuild/linux-arm64@0.25.3': 232 | optional: true 233 | 234 | '@esbuild/linux-arm@0.25.3': 235 | optional: true 236 | 237 | '@esbuild/linux-ia32@0.25.3': 238 | optional: true 239 | 240 | '@esbuild/linux-loong64@0.25.3': 241 | optional: true 242 | 243 | '@esbuild/linux-mips64el@0.25.3': 244 | optional: true 245 | 246 | '@esbuild/linux-ppc64@0.25.3': 247 | optional: true 248 | 249 | '@esbuild/linux-riscv64@0.25.3': 250 | optional: true 251 | 252 | '@esbuild/linux-s390x@0.25.3': 253 | optional: true 254 | 255 | '@esbuild/linux-x64@0.25.3': 256 | optional: true 257 | 258 | '@esbuild/netbsd-arm64@0.25.3': 259 | optional: true 260 | 261 | '@esbuild/netbsd-x64@0.25.3': 262 | optional: true 263 | 264 | '@esbuild/openbsd-arm64@0.25.3': 265 | optional: true 266 | 267 | '@esbuild/openbsd-x64@0.25.3': 268 | optional: true 269 | 270 | '@esbuild/sunos-x64@0.25.3': 271 | optional: true 272 | 273 | '@esbuild/win32-arm64@0.25.3': 274 | optional: true 275 | 276 | '@esbuild/win32-ia32@0.25.3': 277 | optional: true 278 | 279 | '@esbuild/win32-x64@0.25.3': 280 | optional: true 281 | 282 | '@types/node@22.15.3': 283 | dependencies: 284 | undici-types: 6.21.0 285 | 286 | esbuild@0.25.3: 287 | optionalDependencies: 288 | '@esbuild/aix-ppc64': 0.25.3 289 | '@esbuild/android-arm': 0.25.3 290 | '@esbuild/android-arm64': 0.25.3 291 | '@esbuild/android-x64': 0.25.3 292 | '@esbuild/darwin-arm64': 0.25.3 293 | '@esbuild/darwin-x64': 0.25.3 294 | '@esbuild/freebsd-arm64': 0.25.3 295 | '@esbuild/freebsd-x64': 0.25.3 296 | '@esbuild/linux-arm': 0.25.3 297 | '@esbuild/linux-arm64': 0.25.3 298 | '@esbuild/linux-ia32': 0.25.3 299 | '@esbuild/linux-loong64': 0.25.3 300 | '@esbuild/linux-mips64el': 0.25.3 301 | '@esbuild/linux-ppc64': 0.25.3 302 | '@esbuild/linux-riscv64': 0.25.3 303 | '@esbuild/linux-s390x': 0.25.3 304 | '@esbuild/linux-x64': 0.25.3 305 | '@esbuild/netbsd-arm64': 0.25.3 306 | '@esbuild/netbsd-x64': 0.25.3 307 | '@esbuild/openbsd-arm64': 0.25.3 308 | '@esbuild/openbsd-x64': 0.25.3 309 | '@esbuild/sunos-x64': 0.25.3 310 | '@esbuild/win32-arm64': 0.25.3 311 | '@esbuild/win32-ia32': 0.25.3 312 | '@esbuild/win32-x64': 0.25.3 313 | 314 | fsevents@2.3.3: 315 | optional: true 316 | 317 | get-tsconfig@4.10.0: 318 | dependencies: 319 | resolve-pkg-maps: 1.0.0 320 | 321 | resolve-pkg-maps@1.0.0: {} 322 | 323 | tsx@4.19.4: 324 | dependencies: 325 | esbuild: 0.25.3 326 | get-tsconfig: 4.10.0 327 | optionalDependencies: 328 | fsevents: 2.3.3 329 | 330 | undici-types@6.21.0: {} 331 | --------------------------------------------------------------------------------