├── .github └── workflows │ └── build.yml ├── .gitignore ├── .vscode └── extensions.json ├── LICENSE ├── README.md ├── biome.json ├── globals.d.ts ├── lefthook.yml ├── package.json ├── pnpm-lock.yaml ├── src ├── functions.ts ├── index.ts ├── lib │ ├── cli.ts │ ├── conf.ts │ ├── debug.ts │ ├── repos.ts │ ├── sentry.ts │ └── spinner.ts └── target │ ├── native │ └── index.ts │ └── web │ └── index.ts └── tsconfig.json /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Build 2 | 3 | on: 4 | - push 5 | 6 | jobs: 7 | cache-and-install: 8 | runs-on: ubuntu-latest 9 | 10 | steps: 11 | - name: Checkout 12 | uses: actions/checkout@v4 13 | 14 | - uses: pnpm/action-setup@v4 15 | name: Install pnpm 16 | with: 17 | version: 10 18 | run_install: false 19 | 20 | - name: Install Node.js 21 | uses: actions/setup-node@v4 22 | with: 23 | node-version: 22 24 | cache: 'pnpm' 25 | 26 | - name: Install dependencies 27 | run: pnpm install 28 | 29 | - name: Build cli 30 | run: pnpm build -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # NPM # 2 | ########## 3 | # Ignore all directories called node_modules in current folder and any subfolders. 4 | node_modules/ 5 | /node_modules/ 6 | 7 | # Packages # 8 | ############ 9 | *.7z 10 | *.dmg 11 | *.gz 12 | *.bz2 13 | *.iso 14 | *.jar 15 | *.rar 16 | *.tar 17 | *.zip 18 | *.tgz 19 | *.map 20 | 21 | # Logs and databases # 22 | ###################### 23 | *.log 24 | *.sql 25 | *.env 26 | 27 | # OS generated files # 28 | ###################### 29 | **.DS_Store* 30 | ehthumbs.db 31 | Icon? 32 | Thumbs.db 33 | ._* 34 | **settings.dat* 35 | 36 | # Vim generated files # 37 | ###################### 38 | *.un~ 39 | 40 | # SASS # 41 | ########## 42 | **/.sass-cache 43 | **/.sass-cache/* 44 | **/.map 45 | 46 | # Composer # 47 | ########## 48 | !assets/js/vendor/ 49 | wpcs/ 50 | /vendor/ 51 | 52 | # Bower # 53 | ########## 54 | assets/bower_components/* 55 | 56 | # Codekit # 57 | ########## 58 | /codekit-config.json 59 | *.codekit 60 | **.codekit-cache/* 61 | 62 | # Compiled Files and Build Dirs # 63 | ########## 64 | /README.html 65 | 66 | # PhpStrom Project Files # 67 | .idea/ 68 | library/vendors/composer 69 | assets/img/.DS_Store 70 | 71 | # VSCode related files # 72 | # .vscode 73 | 74 | dist/ 75 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["biomejs.biome"] 3 | } 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 BearStudio 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 | # Create a 🚀 Start UI project 2 | 3 | ## Usage 4 | 5 | Generate a 🚀 Start UI project in a new folder. 6 | 7 | ```sh 8 | pnpm create start-ui # Generate a start-ui-web project 9 | pnpm create start-ui -t native # Generate a start-ui-native project 10 | ``` 11 | 12 | ## Options 13 | 14 | ```sh 15 | Usage: create-start-ui [options] 16 | 17 | Arguments: 18 | appName Name of the app to create 19 | 20 | Options: 21 | -b, --branch Specify a branch you want to use to start 22 | -t, --type Type of app you want to create 23 | --skip-install Skip node modules installation step (default: false) 24 | --skip-git-init Skip git init step (default: false) 25 | --verbose Add additional details if something goes wrong (default: false) 26 | -V, --version output the version number 27 | -h, --help display help for command 28 | ``` 29 | 30 | ## Development 31 | 32 | 1. Link the repository to your system with the following command: 33 | 34 | ```sh 35 | pnpm link-cli 36 | ``` 37 | 38 | 2. Run dev command to have the cli be rebuilt on each save: 39 | 40 | ```sh 41 | pnpm dev 42 | ``` 43 | 44 | 3. Run the cli in any directory, it will reflect any changes you have made: 45 | 46 | ```sh 47 | create-start-ui myApp 48 | ``` 49 | -------------------------------------------------------------------------------- /biome.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", 3 | "vcs": { 4 | "enabled": true, 5 | "clientKind": "git", 6 | "useIgnoreFile": true, 7 | "defaultBranch": "main" 8 | }, 9 | "files": { 10 | "ignoreUnknown": false, 11 | "ignore": [] 12 | }, 13 | "formatter": { 14 | "lineWidth": 120, 15 | "enabled": true, 16 | "indentStyle": "space", 17 | "indentWidth": 2, 18 | "lineEnding": "lf" 19 | }, 20 | "organizeImports": { 21 | "enabled": true 22 | }, 23 | "linter": { 24 | "enabled": true, 25 | "rules": { 26 | "recommended": true 27 | } 28 | }, 29 | "javascript": { 30 | "formatter": { 31 | "quoteStyle": "single" 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /globals.d.ts: -------------------------------------------------------------------------------- 1 | export declare global { 2 | var isVerbose: boolean; 3 | } 4 | -------------------------------------------------------------------------------- /lefthook.yml: -------------------------------------------------------------------------------- 1 | pre-commit: 2 | commands: 3 | check: 4 | glob: "*.{js,ts,cjs,mjs,d.cts,d.mts,jsx,tsx,json,jsonc}" 5 | run: npx @biomejs/biome check --write --no-errors-on-unmatched --files-ignore-unknown=true --colors=off {staged_files} 6 | stage_fixed: true 7 | 8 | pre-push: 9 | commands: 10 | check: 11 | glob: "*.{js,ts,cjs,mjs,d.cts,d.mts,jsx,tsx,json,jsonc}" 12 | run: npx @biomejs/biome check --no-errors-on-unmatched --files-ignore-unknown=true --colors=off {push_files} 13 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "create-start-ui", 3 | "description": "Scaffold a new Start-UI project", 4 | "version": "2.0.1", 5 | "license": "MIT", 6 | "type": "module", 7 | "bin": { 8 | "create-start-ui": "dist/index.js" 9 | }, 10 | "author": { 11 | "name": "Renan Decamps", 12 | "email": "renan.decamps@gmail.com", 13 | "url": "https://github.com/decampsrenan" 14 | }, 15 | "keywords": ["create-start-ui", "start-ui", "start-ui-web", "start-ui-native"], 16 | "bugs": { 17 | "url": "https://github.com/bearstudio/create-start-ui/issues" 18 | }, 19 | "homepage": "https://github.com/bearstudio/create-start-ui#readme", 20 | "files": ["build"], 21 | "scripts": { 22 | "check": "biome check", 23 | "dev": "pnpm link-cli && pnpm build --watch", 24 | "link-cli": "(pnpm uninstall --global create-start-ui || true) && pnpm link --global", 25 | "build": "ncc build src/index.ts -o dist", 26 | "test": "true" 27 | }, 28 | "dependencies": { 29 | "@inquirer/prompts": "7.5.0", 30 | "@sentry/node": "9.14.0", 31 | "@swan-io/boxed": "3.2.0", 32 | "chalk": "5.4.1", 33 | "commander": "13.1.0", 34 | "conf": "13.1.0", 35 | "execa": "9.5.2", 36 | "fs-extra": "11.2.0", 37 | "ky": "1.7.4", 38 | "move-file": "3.1.0", 39 | "ora": "8.1.1", 40 | "tar": "7.4.3", 41 | "tempy": "3.1.0", 42 | "ts-pattern": "5.7.0" 43 | }, 44 | "devDependencies": { 45 | "@biomejs/biome": "1.9.4", 46 | "@commander-js/extra-typings": "13.1.0", 47 | "@types/fs-extra": "11.0.4", 48 | "@types/node": "20.8.2", 49 | "@vercel/ncc": "0.38.3", 50 | "lefthook": "1.11.9", 51 | "typescript": "5.7.3" 52 | }, 53 | "engines": { 54 | "node": ">=20" 55 | }, 56 | "pnpm": { 57 | "onlyBuiltDependencies": ["@biomejs/biome", "lefthook"] 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@inquirer/prompts': 12 | specifier: 7.5.0 13 | version: 7.5.0(@types/node@20.8.2) 14 | '@sentry/node': 15 | specifier: 9.14.0 16 | version: 9.14.0 17 | '@swan-io/boxed': 18 | specifier: 3.2.0 19 | version: 3.2.0(typescript@5.7.3) 20 | chalk: 21 | specifier: 5.4.1 22 | version: 5.4.1 23 | commander: 24 | specifier: 13.1.0 25 | version: 13.1.0 26 | conf: 27 | specifier: 13.1.0 28 | version: 13.1.0 29 | execa: 30 | specifier: 9.5.2 31 | version: 9.5.2 32 | fs-extra: 33 | specifier: 11.2.0 34 | version: 11.2.0 35 | ky: 36 | specifier: 1.7.4 37 | version: 1.7.4 38 | move-file: 39 | specifier: 3.1.0 40 | version: 3.1.0 41 | ora: 42 | specifier: 8.1.1 43 | version: 8.1.1 44 | tar: 45 | specifier: 7.4.3 46 | version: 7.4.3 47 | tempy: 48 | specifier: 3.1.0 49 | version: 3.1.0 50 | ts-pattern: 51 | specifier: 5.7.0 52 | version: 5.7.0 53 | devDependencies: 54 | '@biomejs/biome': 55 | specifier: 1.9.4 56 | version: 1.9.4 57 | '@commander-js/extra-typings': 58 | specifier: 13.1.0 59 | version: 13.1.0(commander@13.1.0) 60 | '@types/fs-extra': 61 | specifier: 11.0.4 62 | version: 11.0.4 63 | '@types/node': 64 | specifier: 20.8.2 65 | version: 20.8.2 66 | '@vercel/ncc': 67 | specifier: 0.38.3 68 | version: 0.38.3 69 | lefthook: 70 | specifier: 1.11.9 71 | version: 1.11.9 72 | typescript: 73 | specifier: 5.7.3 74 | version: 5.7.3 75 | 76 | packages: 77 | 78 | '@biomejs/biome@1.9.4': 79 | resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==} 80 | engines: {node: '>=14.21.3'} 81 | hasBin: true 82 | 83 | '@biomejs/cli-darwin-arm64@1.9.4': 84 | resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==} 85 | engines: {node: '>=14.21.3'} 86 | cpu: [arm64] 87 | os: [darwin] 88 | 89 | '@biomejs/cli-darwin-x64@1.9.4': 90 | resolution: {integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==} 91 | engines: {node: '>=14.21.3'} 92 | cpu: [x64] 93 | os: [darwin] 94 | 95 | '@biomejs/cli-linux-arm64-musl@1.9.4': 96 | resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==} 97 | engines: {node: '>=14.21.3'} 98 | cpu: [arm64] 99 | os: [linux] 100 | 101 | '@biomejs/cli-linux-arm64@1.9.4': 102 | resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==} 103 | engines: {node: '>=14.21.3'} 104 | cpu: [arm64] 105 | os: [linux] 106 | 107 | '@biomejs/cli-linux-x64-musl@1.9.4': 108 | resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==} 109 | engines: {node: '>=14.21.3'} 110 | cpu: [x64] 111 | os: [linux] 112 | 113 | '@biomejs/cli-linux-x64@1.9.4': 114 | resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==} 115 | engines: {node: '>=14.21.3'} 116 | cpu: [x64] 117 | os: [linux] 118 | 119 | '@biomejs/cli-win32-arm64@1.9.4': 120 | resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==} 121 | engines: {node: '>=14.21.3'} 122 | cpu: [arm64] 123 | os: [win32] 124 | 125 | '@biomejs/cli-win32-x64@1.9.4': 126 | resolution: {integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==} 127 | engines: {node: '>=14.21.3'} 128 | cpu: [x64] 129 | os: [win32] 130 | 131 | '@commander-js/extra-typings@13.1.0': 132 | resolution: {integrity: sha512-q5P52BYb1hwVWE6dtID7VvuJWrlfbCv4klj7BjUUOqMz4jbSZD4C9fJ9lRjL2jnBGTg+gDDlaXN51rkWcLk4fg==} 133 | peerDependencies: 134 | commander: ~13.1.0 135 | 136 | '@inquirer/checkbox@4.1.5': 137 | resolution: {integrity: sha512-swPczVU+at65xa5uPfNP9u3qx/alNwiaykiI/ExpsmMSQW55trmZcwhYWzw/7fj+n6Q8z1eENvR7vFfq9oPSAQ==} 138 | engines: {node: '>=18'} 139 | peerDependencies: 140 | '@types/node': '>=18' 141 | peerDependenciesMeta: 142 | '@types/node': 143 | optional: true 144 | 145 | '@inquirer/confirm@5.1.9': 146 | resolution: {integrity: sha512-NgQCnHqFTjF7Ys2fsqK2WtnA8X1kHyInyG+nMIuHowVTIgIuS10T4AznI/PvbqSpJqjCUqNBlKGh1v3bwLFL4w==} 147 | engines: {node: '>=18'} 148 | peerDependencies: 149 | '@types/node': '>=18' 150 | peerDependenciesMeta: 151 | '@types/node': 152 | optional: true 153 | 154 | '@inquirer/core@10.1.10': 155 | resolution: {integrity: sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==} 156 | engines: {node: '>=18'} 157 | peerDependencies: 158 | '@types/node': '>=18' 159 | peerDependenciesMeta: 160 | '@types/node': 161 | optional: true 162 | 163 | '@inquirer/editor@4.2.10': 164 | resolution: {integrity: sha512-5GVWJ+qeI6BzR6TIInLP9SXhWCEcvgFQYmcRG6d6RIlhFjM5TyG18paTGBgRYyEouvCmzeco47x9zX9tQEofkw==} 165 | engines: {node: '>=18'} 166 | peerDependencies: 167 | '@types/node': '>=18' 168 | peerDependenciesMeta: 169 | '@types/node': 170 | optional: true 171 | 172 | '@inquirer/expand@4.0.12': 173 | resolution: {integrity: sha512-jV8QoZE1fC0vPe6TnsOfig+qwu7Iza1pkXoUJ3SroRagrt2hxiL+RbM432YAihNR7m7XnU0HWl/WQ35RIGmXHw==} 174 | engines: {node: '>=18'} 175 | peerDependencies: 176 | '@types/node': '>=18' 177 | peerDependenciesMeta: 178 | '@types/node': 179 | optional: true 180 | 181 | '@inquirer/figures@1.0.11': 182 | resolution: {integrity: sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw==} 183 | engines: {node: '>=18'} 184 | 185 | '@inquirer/input@4.1.9': 186 | resolution: {integrity: sha512-mshNG24Ij5KqsQtOZMgj5TwEjIf+F2HOESk6bjMwGWgcH5UBe8UoljwzNFHqdMbGYbgAf6v2wU/X9CAdKJzgOA==} 187 | engines: {node: '>=18'} 188 | peerDependencies: 189 | '@types/node': '>=18' 190 | peerDependenciesMeta: 191 | '@types/node': 192 | optional: true 193 | 194 | '@inquirer/number@3.0.12': 195 | resolution: {integrity: sha512-7HRFHxbPCA4e4jMxTQglHJwP+v/kpFsCf2szzfBHy98Wlc3L08HL76UDiA87TOdX5fwj2HMOLWqRWv9Pnn+Z5Q==} 196 | engines: {node: '>=18'} 197 | peerDependencies: 198 | '@types/node': '>=18' 199 | peerDependenciesMeta: 200 | '@types/node': 201 | optional: true 202 | 203 | '@inquirer/password@4.0.12': 204 | resolution: {integrity: sha512-FlOB0zvuELPEbnBYiPaOdJIaDzb2PmJ7ghi/SVwIHDDSQ2K4opGBkF+5kXOg6ucrtSUQdLhVVY5tycH0j0l+0g==} 205 | engines: {node: '>=18'} 206 | peerDependencies: 207 | '@types/node': '>=18' 208 | peerDependenciesMeta: 209 | '@types/node': 210 | optional: true 211 | 212 | '@inquirer/prompts@7.5.0': 213 | resolution: {integrity: sha512-tk8Bx7l5AX/CR0sVfGj3Xg6v7cYlFBkEahH+EgBB+cZib6Fc83dwerTbzj7f2+qKckjIUGsviWRI1d7lx6nqQA==} 214 | engines: {node: '>=18'} 215 | peerDependencies: 216 | '@types/node': '>=18' 217 | peerDependenciesMeta: 218 | '@types/node': 219 | optional: true 220 | 221 | '@inquirer/rawlist@4.1.0': 222 | resolution: {integrity: sha512-6ob45Oh9pXmfprKqUiEeMz/tjtVTFQTgDDz1xAMKMrIvyrYjAmRbQZjMJfsictlL4phgjLhdLu27IkHNnNjB7g==} 223 | engines: {node: '>=18'} 224 | peerDependencies: 225 | '@types/node': '>=18' 226 | peerDependenciesMeta: 227 | '@types/node': 228 | optional: true 229 | 230 | '@inquirer/search@3.0.12': 231 | resolution: {integrity: sha512-H/kDJA3kNlnNIjB8YsaXoQI0Qccgf0Na14K1h8ExWhNmUg2E941dyFPrZeugihEa9AZNW5NdsD/NcvUME83OPQ==} 232 | engines: {node: '>=18'} 233 | peerDependencies: 234 | '@types/node': '>=18' 235 | peerDependenciesMeta: 236 | '@types/node': 237 | optional: true 238 | 239 | '@inquirer/select@4.2.0': 240 | resolution: {integrity: sha512-KkXQ4aSySWimpV4V/TUJWdB3tdfENZUU765GjOIZ0uPwdbGIG6jrxD4dDf1w68uP+DVtfNhr1A92B+0mbTZ8FA==} 241 | engines: {node: '>=18'} 242 | peerDependencies: 243 | '@types/node': '>=18' 244 | peerDependenciesMeta: 245 | '@types/node': 246 | optional: true 247 | 248 | '@inquirer/type@3.0.6': 249 | resolution: {integrity: sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA==} 250 | engines: {node: '>=18'} 251 | peerDependencies: 252 | '@types/node': '>=18' 253 | peerDependenciesMeta: 254 | '@types/node': 255 | optional: true 256 | 257 | '@isaacs/fs-minipass@4.0.1': 258 | resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} 259 | engines: {node: '>=18.0.0'} 260 | 261 | '@opentelemetry/api-logs@0.57.2': 262 | resolution: {integrity: sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==} 263 | engines: {node: '>=14'} 264 | 265 | '@opentelemetry/api@1.9.0': 266 | resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} 267 | engines: {node: '>=8.0.0'} 268 | 269 | '@opentelemetry/context-async-hooks@1.30.1': 270 | resolution: {integrity: sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA==} 271 | engines: {node: '>=14'} 272 | peerDependencies: 273 | '@opentelemetry/api': '>=1.0.0 <1.10.0' 274 | 275 | '@opentelemetry/core@1.30.1': 276 | resolution: {integrity: sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==} 277 | engines: {node: '>=14'} 278 | peerDependencies: 279 | '@opentelemetry/api': '>=1.0.0 <1.10.0' 280 | 281 | '@opentelemetry/instrumentation-amqplib@0.46.1': 282 | resolution: {integrity: sha512-AyXVnlCf/xV3K/rNumzKxZqsULyITJH6OVLiW6730JPRqWA7Zc9bvYoVNpN6iOpTU8CasH34SU/ksVJmObFibQ==} 283 | engines: {node: '>=14'} 284 | peerDependencies: 285 | '@opentelemetry/api': ^1.3.0 286 | 287 | '@opentelemetry/instrumentation-connect@0.43.1': 288 | resolution: {integrity: sha512-ht7YGWQuV5BopMcw5Q2hXn3I8eG8TH0J/kc/GMcW4CuNTgiP6wCu44BOnucJWL3CmFWaRHI//vWyAhaC8BwePw==} 289 | engines: {node: '>=14'} 290 | peerDependencies: 291 | '@opentelemetry/api': ^1.3.0 292 | 293 | '@opentelemetry/instrumentation-dataloader@0.16.1': 294 | resolution: {integrity: sha512-K/qU4CjnzOpNkkKO4DfCLSQshejRNAJtd4esgigo/50nxCB6XCyi1dhAblUHM9jG5dRm8eu0FB+t87nIo99LYQ==} 295 | engines: {node: '>=14'} 296 | peerDependencies: 297 | '@opentelemetry/api': ^1.3.0 298 | 299 | '@opentelemetry/instrumentation-express@0.47.1': 300 | resolution: {integrity: sha512-QNXPTWteDclR2B4pDFpz0TNghgB33UMjUt14B+BZPmtH1MwUFAfLHBaP5If0Z5NZC+jaH8oF2glgYjrmhZWmSw==} 301 | engines: {node: '>=14'} 302 | peerDependencies: 303 | '@opentelemetry/api': ^1.3.0 304 | 305 | '@opentelemetry/instrumentation-fastify@0.44.2': 306 | resolution: {integrity: sha512-arSp97Y4D2NWogoXRb8CzFK3W2ooVdvqRRtQDljFt9uC3zI6OuShgey6CVFC0JxT1iGjkAr1r4PDz23mWrFULQ==} 307 | engines: {node: '>=14'} 308 | peerDependencies: 309 | '@opentelemetry/api': ^1.3.0 310 | 311 | '@opentelemetry/instrumentation-fs@0.19.1': 312 | resolution: {integrity: sha512-6g0FhB3B9UobAR60BGTcXg4IHZ6aaYJzp0Ki5FhnxyAPt8Ns+9SSvgcrnsN2eGmk3RWG5vYycUGOEApycQL24A==} 313 | engines: {node: '>=14'} 314 | peerDependencies: 315 | '@opentelemetry/api': ^1.3.0 316 | 317 | '@opentelemetry/instrumentation-generic-pool@0.43.1': 318 | resolution: {integrity: sha512-M6qGYsp1cURtvVLGDrPPZemMFEbuMmCXgQYTReC/IbimV5sGrLBjB+/hANUpRZjX67nGLdKSVLZuQQAiNz+sww==} 319 | engines: {node: '>=14'} 320 | peerDependencies: 321 | '@opentelemetry/api': ^1.3.0 322 | 323 | '@opentelemetry/instrumentation-graphql@0.47.1': 324 | resolution: {integrity: sha512-EGQRWMGqwiuVma8ZLAZnExQ7sBvbOx0N/AE/nlafISPs8S+QtXX+Viy6dcQwVWwYHQPAcuY3bFt3xgoAwb4ZNQ==} 325 | engines: {node: '>=14'} 326 | peerDependencies: 327 | '@opentelemetry/api': ^1.3.0 328 | 329 | '@opentelemetry/instrumentation-hapi@0.45.2': 330 | resolution: {integrity: sha512-7Ehow/7Wp3aoyCrZwQpU7a2CnoMq0XhIcioFuKjBb0PLYfBfmTsFTUyatlHu0fRxhwcRsSQRTvEhmZu8CppBpQ==} 331 | engines: {node: '>=14'} 332 | peerDependencies: 333 | '@opentelemetry/api': ^1.3.0 334 | 335 | '@opentelemetry/instrumentation-http@0.57.2': 336 | resolution: {integrity: sha512-1Uz5iJ9ZAlFOiPuwYg29Bf7bJJc/GeoeJIFKJYQf67nTVKFe8RHbEtxgkOmK4UGZNHKXcpW4P8cWBYzBn1USpg==} 337 | engines: {node: '>=14'} 338 | peerDependencies: 339 | '@opentelemetry/api': ^1.3.0 340 | 341 | '@opentelemetry/instrumentation-ioredis@0.47.1': 342 | resolution: {integrity: sha512-OtFGSN+kgk/aoKgdkKQnBsQFDiG8WdCxu+UrHr0bXScdAmtSzLSraLo7wFIb25RVHfRWvzI5kZomqJYEg/l1iA==} 343 | engines: {node: '>=14'} 344 | peerDependencies: 345 | '@opentelemetry/api': ^1.3.0 346 | 347 | '@opentelemetry/instrumentation-kafkajs@0.7.1': 348 | resolution: {integrity: sha512-OtjaKs8H7oysfErajdYr1yuWSjMAectT7Dwr+axIoZqT9lmEOkD/H/3rgAs8h/NIuEi2imSXD+vL4MZtOuJfqQ==} 349 | engines: {node: '>=14'} 350 | peerDependencies: 351 | '@opentelemetry/api': ^1.3.0 352 | 353 | '@opentelemetry/instrumentation-knex@0.44.1': 354 | resolution: {integrity: sha512-U4dQxkNhvPexffjEmGwCq68FuftFK15JgUF05y/HlK3M6W/G2iEaACIfXdSnwVNe9Qh0sPfw8LbOPxrWzGWGMQ==} 355 | engines: {node: '>=14'} 356 | peerDependencies: 357 | '@opentelemetry/api': ^1.3.0 358 | 359 | '@opentelemetry/instrumentation-koa@0.47.1': 360 | resolution: {integrity: sha512-l/c+Z9F86cOiPJUllUCt09v+kICKvT+Vg1vOAJHtHPsJIzurGayucfCMq2acd/A/yxeNWunl9d9eqZ0G+XiI6A==} 361 | engines: {node: '>=14'} 362 | peerDependencies: 363 | '@opentelemetry/api': ^1.3.0 364 | 365 | '@opentelemetry/instrumentation-lru-memoizer@0.44.1': 366 | resolution: {integrity: sha512-5MPkYCvG2yw7WONEjYj5lr5JFehTobW7wX+ZUFy81oF2lr9IPfZk9qO+FTaM0bGEiymwfLwKe6jE15nHn1nmHg==} 367 | engines: {node: '>=14'} 368 | peerDependencies: 369 | '@opentelemetry/api': ^1.3.0 370 | 371 | '@opentelemetry/instrumentation-mongodb@0.52.0': 372 | resolution: {integrity: sha512-1xmAqOtRUQGR7QfJFfGV/M2kC7wmI2WgZdpru8hJl3S0r4hW0n3OQpEHlSGXJAaNFyvT+ilnwkT+g5L4ljHR6g==} 373 | engines: {node: '>=14'} 374 | peerDependencies: 375 | '@opentelemetry/api': ^1.3.0 376 | 377 | '@opentelemetry/instrumentation-mongoose@0.46.1': 378 | resolution: {integrity: sha512-3kINtW1LUTPkiXFRSSBmva1SXzS/72we/jL22N+BnF3DFcoewkdkHPYOIdAAk9gSicJ4d5Ojtt1/HeibEc5OQg==} 379 | engines: {node: '>=14'} 380 | peerDependencies: 381 | '@opentelemetry/api': ^1.3.0 382 | 383 | '@opentelemetry/instrumentation-mysql2@0.45.2': 384 | resolution: {integrity: sha512-h6Ad60FjCYdJZ5DTz1Lk2VmQsShiViKe0G7sYikb0GHI0NVvApp2XQNRHNjEMz87roFttGPLHOYVPlfy+yVIhQ==} 385 | engines: {node: '>=14'} 386 | peerDependencies: 387 | '@opentelemetry/api': ^1.3.0 388 | 389 | '@opentelemetry/instrumentation-mysql@0.45.1': 390 | resolution: {integrity: sha512-TKp4hQ8iKQsY7vnp/j0yJJ4ZsP109Ht6l4RHTj0lNEG1TfgTrIH5vJMbgmoYXWzNHAqBH2e7fncN12p3BP8LFg==} 391 | engines: {node: '>=14'} 392 | peerDependencies: 393 | '@opentelemetry/api': ^1.3.0 394 | 395 | '@opentelemetry/instrumentation-pg@0.51.1': 396 | resolution: {integrity: sha512-QxgjSrxyWZc7Vk+qGSfsejPVFL1AgAJdSBMYZdDUbwg730D09ub3PXScB9d04vIqPriZ+0dqzjmQx0yWKiCi2Q==} 397 | engines: {node: '>=14'} 398 | peerDependencies: 399 | '@opentelemetry/api': ^1.3.0 400 | 401 | '@opentelemetry/instrumentation-redis-4@0.46.1': 402 | resolution: {integrity: sha512-UMqleEoabYMsWoTkqyt9WAzXwZ4BlFZHO40wr3d5ZvtjKCHlD4YXLm+6OLCeIi/HkX7EXvQaz8gtAwkwwSEvcQ==} 403 | engines: {node: '>=14'} 404 | peerDependencies: 405 | '@opentelemetry/api': ^1.3.0 406 | 407 | '@opentelemetry/instrumentation-tedious@0.18.1': 408 | resolution: {integrity: sha512-5Cuy/nj0HBaH+ZJ4leuD7RjgvA844aY2WW+B5uLcWtxGjRZl3MNLuxnNg5DYWZNPO+NafSSnra0q49KWAHsKBg==} 409 | engines: {node: '>=14'} 410 | peerDependencies: 411 | '@opentelemetry/api': ^1.3.0 412 | 413 | '@opentelemetry/instrumentation-undici@0.10.1': 414 | resolution: {integrity: sha512-rkOGikPEyRpMCmNu9AQuV5dtRlDmJp2dK5sw8roVshAGoB6hH/3QjDtRhdwd75SsJwgynWUNRUYe0wAkTo16tQ==} 415 | engines: {node: '>=14'} 416 | peerDependencies: 417 | '@opentelemetry/api': ^1.7.0 418 | 419 | '@opentelemetry/instrumentation@0.57.2': 420 | resolution: {integrity: sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==} 421 | engines: {node: '>=14'} 422 | peerDependencies: 423 | '@opentelemetry/api': ^1.3.0 424 | 425 | '@opentelemetry/redis-common@0.36.2': 426 | resolution: {integrity: sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==} 427 | engines: {node: '>=14'} 428 | 429 | '@opentelemetry/resources@1.30.1': 430 | resolution: {integrity: sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==} 431 | engines: {node: '>=14'} 432 | peerDependencies: 433 | '@opentelemetry/api': '>=1.0.0 <1.10.0' 434 | 435 | '@opentelemetry/sdk-trace-base@1.30.1': 436 | resolution: {integrity: sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==} 437 | engines: {node: '>=14'} 438 | peerDependencies: 439 | '@opentelemetry/api': '>=1.0.0 <1.10.0' 440 | 441 | '@opentelemetry/semantic-conventions@1.28.0': 442 | resolution: {integrity: sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==} 443 | engines: {node: '>=14'} 444 | 445 | '@opentelemetry/semantic-conventions@1.32.0': 446 | resolution: {integrity: sha512-s0OpmpQFSfMrmedAn9Lhg4KWJELHCU6uU9dtIJ28N8UGhf9Y55im5X8fEzwhwDwiSqN+ZPSNrDJF7ivf/AuRPQ==} 447 | engines: {node: '>=14'} 448 | 449 | '@opentelemetry/sql-common@0.40.1': 450 | resolution: {integrity: sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==} 451 | engines: {node: '>=14'} 452 | peerDependencies: 453 | '@opentelemetry/api': ^1.1.0 454 | 455 | '@prisma/instrumentation@6.6.0': 456 | resolution: {integrity: sha512-M/a6njz3hbf2oucwdbjNKrSMLuyMCwgDrmTtkF1pm4Nm7CU45J/Hd6lauF2CDACTUYzu3ymcV7P0ZAhIoj6WRw==} 457 | peerDependencies: 458 | '@opentelemetry/api': ^1.8 459 | 460 | '@sec-ant/readable-stream@0.4.1': 461 | resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} 462 | 463 | '@sentry/core@9.14.0': 464 | resolution: {integrity: sha512-OLfucnP3LAL5bxVNWc2RVOHCX7fk9Er5bWPCS+O5cPjqNUUz0HQHhVh2Vhei5C0kYZZM4vy4BQit5T9LrlOaNA==} 465 | engines: {node: '>=18'} 466 | 467 | '@sentry/node@9.14.0': 468 | resolution: {integrity: sha512-AWPc6O+zAdSgnsiKm6Nb1txyiKCOIBriJEONdXFSslgZgkm8EWAYRRHyS2Hkmnz0/5bEQ3jEffIw22qJuaHN+Q==} 469 | engines: {node: '>=18'} 470 | 471 | '@sentry/opentelemetry@9.14.0': 472 | resolution: {integrity: sha512-NnHJjSQGpWaZ6+0QK9Xn1T3CTOM16Ij07VnSiGmVz3/IMsNC1/jndqc8p9BxEI+67XhZjOUUN0Ogpq1XRY7YeA==} 473 | engines: {node: '>=18'} 474 | peerDependencies: 475 | '@opentelemetry/api': ^1.9.0 476 | '@opentelemetry/context-async-hooks': ^1.30.1 477 | '@opentelemetry/core': ^1.30.1 478 | '@opentelemetry/instrumentation': ^0.57.1 479 | '@opentelemetry/sdk-trace-base': ^1.30.1 480 | '@opentelemetry/semantic-conventions': ^1.28.0 481 | 482 | '@sindresorhus/merge-streams@4.0.0': 483 | resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} 484 | engines: {node: '>=18'} 485 | 486 | '@swan-io/boxed@3.2.0': 487 | resolution: {integrity: sha512-wk6gSWjZ7nj619ifwyLFZN+B0mjpsXyfroT97ByFqvi5Ywx9nLWz7cEvStTNGIh1oAxKxGtGQLbs9dFGmtypNA==} 488 | peerDependencies: 489 | typescript: '>=5.0.0' 490 | peerDependenciesMeta: 491 | typescript: 492 | optional: true 493 | 494 | '@types/connect@3.4.38': 495 | resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} 496 | 497 | '@types/fs-extra@11.0.4': 498 | resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} 499 | 500 | '@types/jsonfile@6.1.4': 501 | resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} 502 | 503 | '@types/mysql@2.15.26': 504 | resolution: {integrity: sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==} 505 | 506 | '@types/node@20.8.2': 507 | resolution: {integrity: sha512-Vvycsc9FQdwhxE3y3DzeIxuEJbWGDsnrxvMADzTDF/lcdR9/K+AQIeAghTQsHtotg/q0j3WEOYS/jQgSdWue3w==} 508 | 509 | '@types/pg-pool@2.0.6': 510 | resolution: {integrity: sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==} 511 | 512 | '@types/pg@8.6.1': 513 | resolution: {integrity: sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==} 514 | 515 | '@types/shimmer@1.2.0': 516 | resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==} 517 | 518 | '@types/tedious@4.0.14': 519 | resolution: {integrity: sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==} 520 | 521 | '@vercel/ncc@0.38.3': 522 | resolution: {integrity: sha512-rnK6hJBS6mwc+Bkab+PGPs9OiS0i/3kdTO+CkI8V0/VrW3vmz7O2Pxjw/owOlmo6PKEIxRSeZKv/kuL9itnpYA==} 523 | hasBin: true 524 | 525 | acorn-import-attributes@1.9.5: 526 | resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} 527 | peerDependencies: 528 | acorn: ^8 529 | 530 | acorn@8.14.1: 531 | resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} 532 | engines: {node: '>=0.4.0'} 533 | hasBin: true 534 | 535 | ajv-formats@3.0.1: 536 | resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} 537 | peerDependencies: 538 | ajv: ^8.0.0 539 | peerDependenciesMeta: 540 | ajv: 541 | optional: true 542 | 543 | ajv@8.17.1: 544 | resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} 545 | 546 | ansi-escapes@4.3.2: 547 | resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} 548 | engines: {node: '>=8'} 549 | 550 | ansi-regex@5.0.1: 551 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 552 | engines: {node: '>=8'} 553 | 554 | ansi-regex@6.1.0: 555 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} 556 | engines: {node: '>=12'} 557 | 558 | ansi-styles@4.3.0: 559 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 560 | engines: {node: '>=8'} 561 | 562 | atomically@2.0.3: 563 | resolution: {integrity: sha512-kU6FmrwZ3Lx7/7y3hPS5QnbJfaohcIul5fGqf7ok+4KklIEk9tJ0C2IQPdacSbVUWv6zVHXEBWoWd6NrVMT7Cw==} 564 | 565 | chalk@5.4.1: 566 | resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} 567 | engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 568 | 569 | chardet@0.7.0: 570 | resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} 571 | 572 | chownr@3.0.0: 573 | resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} 574 | engines: {node: '>=18'} 575 | 576 | cjs-module-lexer@1.4.3: 577 | resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} 578 | 579 | cli-cursor@5.0.0: 580 | resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} 581 | engines: {node: '>=18'} 582 | 583 | cli-spinners@2.9.2: 584 | resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} 585 | engines: {node: '>=6'} 586 | 587 | cli-width@4.1.0: 588 | resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} 589 | engines: {node: '>= 12'} 590 | 591 | color-convert@2.0.1: 592 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 593 | engines: {node: '>=7.0.0'} 594 | 595 | color-name@1.1.4: 596 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 597 | 598 | commander@13.1.0: 599 | resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} 600 | engines: {node: '>=18'} 601 | 602 | conf@13.1.0: 603 | resolution: {integrity: sha512-Bi6v586cy1CoTFViVO4lGTtx780lfF96fUmS1lSX6wpZf6330NvHUu6fReVuDP1de8Mg0nkZb01c8tAQdz1o3w==} 604 | engines: {node: '>=18'} 605 | 606 | cross-spawn@7.0.6: 607 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 608 | engines: {node: '>= 8'} 609 | 610 | crypto-random-string@4.0.0: 611 | resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} 612 | engines: {node: '>=12'} 613 | 614 | debounce-fn@6.0.0: 615 | resolution: {integrity: sha512-rBMW+F2TXryBwB54Q0d8drNEI+TfoS9JpNTAoVpukbWEhjXQq4rySFYLaqXMFXwdv61Zb2OHtj5bviSoimqxRQ==} 616 | engines: {node: '>=18'} 617 | 618 | debug@4.4.0: 619 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 620 | engines: {node: '>=6.0'} 621 | peerDependencies: 622 | supports-color: '*' 623 | peerDependenciesMeta: 624 | supports-color: 625 | optional: true 626 | 627 | dot-prop@9.0.0: 628 | resolution: {integrity: sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==} 629 | engines: {node: '>=18'} 630 | 631 | emoji-regex@10.4.0: 632 | resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} 633 | 634 | emoji-regex@8.0.0: 635 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 636 | 637 | env-paths@3.0.0: 638 | resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} 639 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 640 | 641 | execa@9.5.2: 642 | resolution: {integrity: sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==} 643 | engines: {node: ^18.19.0 || >=20.5.0} 644 | 645 | external-editor@3.1.0: 646 | resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} 647 | engines: {node: '>=4'} 648 | 649 | fast-deep-equal@3.1.3: 650 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 651 | 652 | fast-uri@3.0.6: 653 | resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} 654 | 655 | figures@6.1.0: 656 | resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} 657 | engines: {node: '>=18'} 658 | 659 | forwarded-parse@2.1.2: 660 | resolution: {integrity: sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==} 661 | 662 | fs-extra@11.2.0: 663 | resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} 664 | engines: {node: '>=14.14'} 665 | 666 | function-bind@1.1.2: 667 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 668 | 669 | get-east-asian-width@1.3.0: 670 | resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} 671 | engines: {node: '>=18'} 672 | 673 | get-stream@9.0.1: 674 | resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} 675 | engines: {node: '>=18'} 676 | 677 | graceful-fs@4.2.11: 678 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 679 | 680 | hasown@2.0.2: 681 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 682 | engines: {node: '>= 0.4'} 683 | 684 | human-signals@8.0.1: 685 | resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} 686 | engines: {node: '>=18.18.0'} 687 | 688 | iconv-lite@0.4.24: 689 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 690 | engines: {node: '>=0.10.0'} 691 | 692 | import-in-the-middle@1.13.1: 693 | resolution: {integrity: sha512-k2V9wNm9B+ysuelDTHjI9d5KPc4l8zAZTGqj+pcynvWkypZd857ryzN8jNC7Pg2YZXNMJcHRPpaDyCBbNyVRpA==} 694 | 695 | is-core-module@2.16.1: 696 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} 697 | engines: {node: '>= 0.4'} 698 | 699 | is-fullwidth-code-point@3.0.0: 700 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 701 | engines: {node: '>=8'} 702 | 703 | is-interactive@2.0.0: 704 | resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} 705 | engines: {node: '>=12'} 706 | 707 | is-plain-obj@4.1.0: 708 | resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} 709 | engines: {node: '>=12'} 710 | 711 | is-stream@3.0.0: 712 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} 713 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 714 | 715 | is-stream@4.0.1: 716 | resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} 717 | engines: {node: '>=18'} 718 | 719 | is-unicode-supported@1.3.0: 720 | resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} 721 | engines: {node: '>=12'} 722 | 723 | is-unicode-supported@2.1.0: 724 | resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} 725 | engines: {node: '>=18'} 726 | 727 | isexe@2.0.0: 728 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 729 | 730 | json-schema-traverse@1.0.0: 731 | resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} 732 | 733 | json-schema-typed@8.0.1: 734 | resolution: {integrity: sha512-XQmWYj2Sm4kn4WeTYvmpKEbyPsL7nBsb647c7pMe6l02/yx2+Jfc4dT6UZkEXnIUb5LhD55r2HPsJ1milQ4rDg==} 735 | 736 | jsonfile@6.1.0: 737 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} 738 | 739 | ky@1.7.4: 740 | resolution: {integrity: sha512-zYEr/gh7uLW2l4su11bmQ2M9xLgQLjyvx58UyNM/6nuqyWFHPX5ktMjvpev3F8QWdjSsHUpnWew4PBCswBNuMQ==} 741 | engines: {node: '>=18'} 742 | 743 | lefthook-darwin-arm64@1.11.9: 744 | resolution: {integrity: sha512-AumwegQCcApnXSAEeWFuY6eI5Z9W/uIi3jN7WfEaXihm3sbCVQkE01f7KVsGQT6FdHHTc/oZv4GnMN8yFqxmtg==} 745 | cpu: [arm64] 746 | os: [darwin] 747 | 748 | lefthook-darwin-x64@1.11.9: 749 | resolution: {integrity: sha512-L9nt6Oq6NTEsRsTFqV9e6WR33yO4vbdQkv5SGHl1nrHkalmV34GO3Xo1NLhQ9fYsvydO3gHAwXw61eutOK1PkA==} 750 | cpu: [x64] 751 | os: [darwin] 752 | 753 | lefthook-freebsd-arm64@1.11.9: 754 | resolution: {integrity: sha512-5cQP6jukDiBn5B8snNbFcFfHElQfw+8AyY4SmbTBOuycxoK/S0YVYcfIAhrdW5ER6/UhgjaHWcWAYwUqHGnU9g==} 755 | cpu: [arm64] 756 | os: [freebsd] 757 | 758 | lefthook-freebsd-x64@1.11.9: 759 | resolution: {integrity: sha512-gqiAC4Rui8ToX9F+fVxqBGFwweYwqQCllKt7RLCdRgQeuSNP33ZBZ1L0hL7hrcxlfmqYcPs99DV6uJWO4WkytA==} 760 | cpu: [x64] 761 | os: [freebsd] 762 | 763 | lefthook-linux-arm64@1.11.9: 764 | resolution: {integrity: sha512-BHHtqLyRHVTecgSgacTwAKVSaer8IKnbo1feJPkPfCNq1FWKWOdqtSDhONuYctYJp80Fyhny3SjPWXR70hW71A==} 765 | cpu: [arm64] 766 | os: [linux] 767 | 768 | lefthook-linux-x64@1.11.9: 769 | resolution: {integrity: sha512-ls8nIMhKF7/dPrAD8V9xR9KUIrUwS8kML6QuEIeCz9ex9Q66/lR2AcjTVrHI2l+trSvwG9NLcWXOM5+k5h4krQ==} 770 | cpu: [x64] 771 | os: [linux] 772 | 773 | lefthook-openbsd-arm64@1.11.9: 774 | resolution: {integrity: sha512-1YJBUmImP0gtq+1WjkDKHmaipj9h7JSTpwYLBZfNOzbZZ9UKQX0zdpWkTF1Y3FKntr/2iCjdq7FadbqAQc8+CQ==} 775 | cpu: [arm64] 776 | os: [openbsd] 777 | 778 | lefthook-openbsd-x64@1.11.9: 779 | resolution: {integrity: sha512-Ze3GZw0lV2R+2bI/p0+S/fSI8SCnr9J9iXIp6qU8V6srFdcznhrRN95NnSLVCq2OA2bdPo8GGOgK4GzGQbSRuQ==} 780 | cpu: [x64] 781 | os: [openbsd] 782 | 783 | lefthook-windows-arm64@1.11.9: 784 | resolution: {integrity: sha512-l/36PvLtjM1TqoYeCEyBzJFq1VTgAhQ+5QYfc7FQ3xgKZk77WwuW+431+YbGrugP0Pe6O7X8Eyhhcd3av8zf/w==} 785 | cpu: [arm64] 786 | os: [win32] 787 | 788 | lefthook-windows-x64@1.11.9: 789 | resolution: {integrity: sha512-DL/JV5+4DZdmVN9O97ksynkF9o2n2AM0OHGcUQ3PnFtZMCv1J2hB7XW/DBVI04qMiH7pOePykkhFDWHDjidmkg==} 790 | cpu: [x64] 791 | os: [win32] 792 | 793 | lefthook@1.11.9: 794 | resolution: {integrity: sha512-waXl9yTGXx1AC+1mlaga6yd1WwsKKqgP+1/csPVWtHdnid35MNN+3/iZlHThQFLXCUxet5aS++nDvTARlKvtsg==} 795 | hasBin: true 796 | 797 | log-symbols@6.0.0: 798 | resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} 799 | engines: {node: '>=18'} 800 | 801 | mimic-function@5.0.1: 802 | resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} 803 | engines: {node: '>=18'} 804 | 805 | minipass@7.1.2: 806 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 807 | engines: {node: '>=16 || 14 >=14.17'} 808 | 809 | minizlib@3.0.2: 810 | resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} 811 | engines: {node: '>= 18'} 812 | 813 | mkdirp@3.0.1: 814 | resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} 815 | engines: {node: '>=10'} 816 | hasBin: true 817 | 818 | module-details-from-path@1.0.3: 819 | resolution: {integrity: sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==} 820 | 821 | move-file@3.1.0: 822 | resolution: {integrity: sha512-4aE3U7CCBWgrQlQDMq8da4woBWDGHioJFiOZ8Ie6Yq2uwYQ9V2kGhTz4x3u6Wc+OU17nw0yc3rJ/lQ4jIiPe3A==} 823 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 824 | 825 | ms@2.1.3: 826 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 827 | 828 | mute-stream@2.0.0: 829 | resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} 830 | engines: {node: ^18.17.0 || >=20.5.0} 831 | 832 | npm-run-path@6.0.0: 833 | resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} 834 | engines: {node: '>=18'} 835 | 836 | onetime@7.0.0: 837 | resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} 838 | engines: {node: '>=18'} 839 | 840 | ora@8.1.1: 841 | resolution: {integrity: sha512-YWielGi1XzG1UTvOaCFaNgEnuhZVMSHYkW/FQ7UX8O26PtlpdM84c0f7wLPlkvx2RfiQmnzd61d/MGxmpQeJPw==} 842 | engines: {node: '>=18'} 843 | 844 | os-tmpdir@1.0.2: 845 | resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} 846 | engines: {node: '>=0.10.0'} 847 | 848 | parse-ms@4.0.0: 849 | resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} 850 | engines: {node: '>=18'} 851 | 852 | path-exists@5.0.0: 853 | resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} 854 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 855 | 856 | path-key@3.1.1: 857 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 858 | engines: {node: '>=8'} 859 | 860 | path-key@4.0.0: 861 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} 862 | engines: {node: '>=12'} 863 | 864 | path-parse@1.0.7: 865 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 866 | 867 | pg-int8@1.0.1: 868 | resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} 869 | engines: {node: '>=4.0.0'} 870 | 871 | pg-protocol@1.9.5: 872 | resolution: {integrity: sha512-DYTWtWpfd5FOro3UnAfwvhD8jh59r2ig8bPtc9H8Ds7MscE/9NYruUQWFAOuraRl29jwcT2kyMFQ3MxeaVjUhg==} 873 | 874 | pg-types@2.2.0: 875 | resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} 876 | engines: {node: '>=4'} 877 | 878 | postgres-array@2.0.0: 879 | resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} 880 | engines: {node: '>=4'} 881 | 882 | postgres-bytea@1.0.0: 883 | resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} 884 | engines: {node: '>=0.10.0'} 885 | 886 | postgres-date@1.0.7: 887 | resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} 888 | engines: {node: '>=0.10.0'} 889 | 890 | postgres-interval@1.2.0: 891 | resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} 892 | engines: {node: '>=0.10.0'} 893 | 894 | pretty-ms@9.2.0: 895 | resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} 896 | engines: {node: '>=18'} 897 | 898 | require-from-string@2.0.2: 899 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 900 | engines: {node: '>=0.10.0'} 901 | 902 | require-in-the-middle@7.5.2: 903 | resolution: {integrity: sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==} 904 | engines: {node: '>=8.6.0'} 905 | 906 | resolve@1.22.10: 907 | resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} 908 | engines: {node: '>= 0.4'} 909 | hasBin: true 910 | 911 | restore-cursor@5.1.0: 912 | resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} 913 | engines: {node: '>=18'} 914 | 915 | safer-buffer@2.1.2: 916 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 917 | 918 | semver@7.7.1: 919 | resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} 920 | engines: {node: '>=10'} 921 | hasBin: true 922 | 923 | shebang-command@2.0.0: 924 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 925 | engines: {node: '>=8'} 926 | 927 | shebang-regex@3.0.0: 928 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 929 | engines: {node: '>=8'} 930 | 931 | shimmer@1.2.1: 932 | resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} 933 | 934 | signal-exit@4.1.0: 935 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 936 | engines: {node: '>=14'} 937 | 938 | stdin-discarder@0.2.2: 939 | resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} 940 | engines: {node: '>=18'} 941 | 942 | string-width@4.2.3: 943 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 944 | engines: {node: '>=8'} 945 | 946 | string-width@7.2.0: 947 | resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} 948 | engines: {node: '>=18'} 949 | 950 | strip-ansi@6.0.1: 951 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 952 | engines: {node: '>=8'} 953 | 954 | strip-ansi@7.1.0: 955 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 956 | engines: {node: '>=12'} 957 | 958 | strip-final-newline@4.0.0: 959 | resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} 960 | engines: {node: '>=18'} 961 | 962 | stubborn-fs@1.2.5: 963 | resolution: {integrity: sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==} 964 | 965 | supports-preserve-symlinks-flag@1.0.0: 966 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 967 | engines: {node: '>= 0.4'} 968 | 969 | tar@7.4.3: 970 | resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} 971 | engines: {node: '>=18'} 972 | 973 | temp-dir@3.0.0: 974 | resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} 975 | engines: {node: '>=14.16'} 976 | 977 | tempy@3.1.0: 978 | resolution: {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==} 979 | engines: {node: '>=14.16'} 980 | 981 | tmp@0.0.33: 982 | resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} 983 | engines: {node: '>=0.6.0'} 984 | 985 | ts-pattern@5.7.0: 986 | resolution: {integrity: sha512-0/FvIG4g3kNkYgbNwBBW5pZBkfpeYQnH+2AA3xmjkCAit/DSDPKmgwC3fKof4oYUq6gupClVOJlFl+939VRBMg==} 987 | 988 | type-fest@0.21.3: 989 | resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} 990 | engines: {node: '>=10'} 991 | 992 | type-fest@1.4.0: 993 | resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} 994 | engines: {node: '>=10'} 995 | 996 | type-fest@2.19.0: 997 | resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} 998 | engines: {node: '>=12.20'} 999 | 1000 | type-fest@4.40.0: 1001 | resolution: {integrity: sha512-ABHZ2/tS2JkvH1PEjxFDTUWC8dB5OsIGZP4IFLhR293GqT5Y5qB1WwL2kMPYhQW9DVgVD8Hd7I8gjwPIf5GFkw==} 1002 | engines: {node: '>=16'} 1003 | 1004 | typescript@5.7.3: 1005 | resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} 1006 | engines: {node: '>=14.17'} 1007 | hasBin: true 1008 | 1009 | uint8array-extras@1.4.0: 1010 | resolution: {integrity: sha512-ZPtzy0hu4cZjv3z5NW9gfKnNLjoz4y6uv4HlelAjDK7sY/xOkKZv9xK/WQpcsBB3jEybChz9DPC2U/+cusjJVQ==} 1011 | engines: {node: '>=18'} 1012 | 1013 | unicorn-magic@0.3.0: 1014 | resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} 1015 | engines: {node: '>=18'} 1016 | 1017 | unique-string@3.0.0: 1018 | resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} 1019 | engines: {node: '>=12'} 1020 | 1021 | universalify@2.0.1: 1022 | resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} 1023 | engines: {node: '>= 10.0.0'} 1024 | 1025 | when-exit@2.1.4: 1026 | resolution: {integrity: sha512-4rnvd3A1t16PWzrBUcSDZqcAmsUIy4minDXT/CZ8F2mVDgd65i4Aalimgz1aQkRGU0iH5eT5+6Rx2TK8o443Pg==} 1027 | 1028 | which@2.0.2: 1029 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1030 | engines: {node: '>= 8'} 1031 | hasBin: true 1032 | 1033 | wrap-ansi@6.2.0: 1034 | resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} 1035 | engines: {node: '>=8'} 1036 | 1037 | xtend@4.0.2: 1038 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 1039 | engines: {node: '>=0.4'} 1040 | 1041 | yallist@5.0.0: 1042 | resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} 1043 | engines: {node: '>=18'} 1044 | 1045 | yoctocolors-cjs@2.1.2: 1046 | resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} 1047 | engines: {node: '>=18'} 1048 | 1049 | yoctocolors@2.1.1: 1050 | resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} 1051 | engines: {node: '>=18'} 1052 | 1053 | snapshots: 1054 | 1055 | '@biomejs/biome@1.9.4': 1056 | optionalDependencies: 1057 | '@biomejs/cli-darwin-arm64': 1.9.4 1058 | '@biomejs/cli-darwin-x64': 1.9.4 1059 | '@biomejs/cli-linux-arm64': 1.9.4 1060 | '@biomejs/cli-linux-arm64-musl': 1.9.4 1061 | '@biomejs/cli-linux-x64': 1.9.4 1062 | '@biomejs/cli-linux-x64-musl': 1.9.4 1063 | '@biomejs/cli-win32-arm64': 1.9.4 1064 | '@biomejs/cli-win32-x64': 1.9.4 1065 | 1066 | '@biomejs/cli-darwin-arm64@1.9.4': 1067 | optional: true 1068 | 1069 | '@biomejs/cli-darwin-x64@1.9.4': 1070 | optional: true 1071 | 1072 | '@biomejs/cli-linux-arm64-musl@1.9.4': 1073 | optional: true 1074 | 1075 | '@biomejs/cli-linux-arm64@1.9.4': 1076 | optional: true 1077 | 1078 | '@biomejs/cli-linux-x64-musl@1.9.4': 1079 | optional: true 1080 | 1081 | '@biomejs/cli-linux-x64@1.9.4': 1082 | optional: true 1083 | 1084 | '@biomejs/cli-win32-arm64@1.9.4': 1085 | optional: true 1086 | 1087 | '@biomejs/cli-win32-x64@1.9.4': 1088 | optional: true 1089 | 1090 | '@commander-js/extra-typings@13.1.0(commander@13.1.0)': 1091 | dependencies: 1092 | commander: 13.1.0 1093 | 1094 | '@inquirer/checkbox@4.1.5(@types/node@20.8.2)': 1095 | dependencies: 1096 | '@inquirer/core': 10.1.10(@types/node@20.8.2) 1097 | '@inquirer/figures': 1.0.11 1098 | '@inquirer/type': 3.0.6(@types/node@20.8.2) 1099 | ansi-escapes: 4.3.2 1100 | yoctocolors-cjs: 2.1.2 1101 | optionalDependencies: 1102 | '@types/node': 20.8.2 1103 | 1104 | '@inquirer/confirm@5.1.9(@types/node@20.8.2)': 1105 | dependencies: 1106 | '@inquirer/core': 10.1.10(@types/node@20.8.2) 1107 | '@inquirer/type': 3.0.6(@types/node@20.8.2) 1108 | optionalDependencies: 1109 | '@types/node': 20.8.2 1110 | 1111 | '@inquirer/core@10.1.10(@types/node@20.8.2)': 1112 | dependencies: 1113 | '@inquirer/figures': 1.0.11 1114 | '@inquirer/type': 3.0.6(@types/node@20.8.2) 1115 | ansi-escapes: 4.3.2 1116 | cli-width: 4.1.0 1117 | mute-stream: 2.0.0 1118 | signal-exit: 4.1.0 1119 | wrap-ansi: 6.2.0 1120 | yoctocolors-cjs: 2.1.2 1121 | optionalDependencies: 1122 | '@types/node': 20.8.2 1123 | 1124 | '@inquirer/editor@4.2.10(@types/node@20.8.2)': 1125 | dependencies: 1126 | '@inquirer/core': 10.1.10(@types/node@20.8.2) 1127 | '@inquirer/type': 3.0.6(@types/node@20.8.2) 1128 | external-editor: 3.1.0 1129 | optionalDependencies: 1130 | '@types/node': 20.8.2 1131 | 1132 | '@inquirer/expand@4.0.12(@types/node@20.8.2)': 1133 | dependencies: 1134 | '@inquirer/core': 10.1.10(@types/node@20.8.2) 1135 | '@inquirer/type': 3.0.6(@types/node@20.8.2) 1136 | yoctocolors-cjs: 2.1.2 1137 | optionalDependencies: 1138 | '@types/node': 20.8.2 1139 | 1140 | '@inquirer/figures@1.0.11': {} 1141 | 1142 | '@inquirer/input@4.1.9(@types/node@20.8.2)': 1143 | dependencies: 1144 | '@inquirer/core': 10.1.10(@types/node@20.8.2) 1145 | '@inquirer/type': 3.0.6(@types/node@20.8.2) 1146 | optionalDependencies: 1147 | '@types/node': 20.8.2 1148 | 1149 | '@inquirer/number@3.0.12(@types/node@20.8.2)': 1150 | dependencies: 1151 | '@inquirer/core': 10.1.10(@types/node@20.8.2) 1152 | '@inquirer/type': 3.0.6(@types/node@20.8.2) 1153 | optionalDependencies: 1154 | '@types/node': 20.8.2 1155 | 1156 | '@inquirer/password@4.0.12(@types/node@20.8.2)': 1157 | dependencies: 1158 | '@inquirer/core': 10.1.10(@types/node@20.8.2) 1159 | '@inquirer/type': 3.0.6(@types/node@20.8.2) 1160 | ansi-escapes: 4.3.2 1161 | optionalDependencies: 1162 | '@types/node': 20.8.2 1163 | 1164 | '@inquirer/prompts@7.5.0(@types/node@20.8.2)': 1165 | dependencies: 1166 | '@inquirer/checkbox': 4.1.5(@types/node@20.8.2) 1167 | '@inquirer/confirm': 5.1.9(@types/node@20.8.2) 1168 | '@inquirer/editor': 4.2.10(@types/node@20.8.2) 1169 | '@inquirer/expand': 4.0.12(@types/node@20.8.2) 1170 | '@inquirer/input': 4.1.9(@types/node@20.8.2) 1171 | '@inquirer/number': 3.0.12(@types/node@20.8.2) 1172 | '@inquirer/password': 4.0.12(@types/node@20.8.2) 1173 | '@inquirer/rawlist': 4.1.0(@types/node@20.8.2) 1174 | '@inquirer/search': 3.0.12(@types/node@20.8.2) 1175 | '@inquirer/select': 4.2.0(@types/node@20.8.2) 1176 | optionalDependencies: 1177 | '@types/node': 20.8.2 1178 | 1179 | '@inquirer/rawlist@4.1.0(@types/node@20.8.2)': 1180 | dependencies: 1181 | '@inquirer/core': 10.1.10(@types/node@20.8.2) 1182 | '@inquirer/type': 3.0.6(@types/node@20.8.2) 1183 | yoctocolors-cjs: 2.1.2 1184 | optionalDependencies: 1185 | '@types/node': 20.8.2 1186 | 1187 | '@inquirer/search@3.0.12(@types/node@20.8.2)': 1188 | dependencies: 1189 | '@inquirer/core': 10.1.10(@types/node@20.8.2) 1190 | '@inquirer/figures': 1.0.11 1191 | '@inquirer/type': 3.0.6(@types/node@20.8.2) 1192 | yoctocolors-cjs: 2.1.2 1193 | optionalDependencies: 1194 | '@types/node': 20.8.2 1195 | 1196 | '@inquirer/select@4.2.0(@types/node@20.8.2)': 1197 | dependencies: 1198 | '@inquirer/core': 10.1.10(@types/node@20.8.2) 1199 | '@inquirer/figures': 1.0.11 1200 | '@inquirer/type': 3.0.6(@types/node@20.8.2) 1201 | ansi-escapes: 4.3.2 1202 | yoctocolors-cjs: 2.1.2 1203 | optionalDependencies: 1204 | '@types/node': 20.8.2 1205 | 1206 | '@inquirer/type@3.0.6(@types/node@20.8.2)': 1207 | optionalDependencies: 1208 | '@types/node': 20.8.2 1209 | 1210 | '@isaacs/fs-minipass@4.0.1': 1211 | dependencies: 1212 | minipass: 7.1.2 1213 | 1214 | '@opentelemetry/api-logs@0.57.2': 1215 | dependencies: 1216 | '@opentelemetry/api': 1.9.0 1217 | 1218 | '@opentelemetry/api@1.9.0': {} 1219 | 1220 | '@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0)': 1221 | dependencies: 1222 | '@opentelemetry/api': 1.9.0 1223 | 1224 | '@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0)': 1225 | dependencies: 1226 | '@opentelemetry/api': 1.9.0 1227 | '@opentelemetry/semantic-conventions': 1.28.0 1228 | 1229 | '@opentelemetry/instrumentation-amqplib@0.46.1(@opentelemetry/api@1.9.0)': 1230 | dependencies: 1231 | '@opentelemetry/api': 1.9.0 1232 | '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) 1233 | '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) 1234 | '@opentelemetry/semantic-conventions': 1.32.0 1235 | transitivePeerDependencies: 1236 | - supports-color 1237 | 1238 | '@opentelemetry/instrumentation-connect@0.43.1(@opentelemetry/api@1.9.0)': 1239 | dependencies: 1240 | '@opentelemetry/api': 1.9.0 1241 | '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) 1242 | '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) 1243 | '@opentelemetry/semantic-conventions': 1.32.0 1244 | '@types/connect': 3.4.38 1245 | transitivePeerDependencies: 1246 | - supports-color 1247 | 1248 | '@opentelemetry/instrumentation-dataloader@0.16.1(@opentelemetry/api@1.9.0)': 1249 | dependencies: 1250 | '@opentelemetry/api': 1.9.0 1251 | '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) 1252 | transitivePeerDependencies: 1253 | - supports-color 1254 | 1255 | '@opentelemetry/instrumentation-express@0.47.1(@opentelemetry/api@1.9.0)': 1256 | dependencies: 1257 | '@opentelemetry/api': 1.9.0 1258 | '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) 1259 | '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) 1260 | '@opentelemetry/semantic-conventions': 1.32.0 1261 | transitivePeerDependencies: 1262 | - supports-color 1263 | 1264 | '@opentelemetry/instrumentation-fastify@0.44.2(@opentelemetry/api@1.9.0)': 1265 | dependencies: 1266 | '@opentelemetry/api': 1.9.0 1267 | '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) 1268 | '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) 1269 | '@opentelemetry/semantic-conventions': 1.32.0 1270 | transitivePeerDependencies: 1271 | - supports-color 1272 | 1273 | '@opentelemetry/instrumentation-fs@0.19.1(@opentelemetry/api@1.9.0)': 1274 | dependencies: 1275 | '@opentelemetry/api': 1.9.0 1276 | '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) 1277 | '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) 1278 | transitivePeerDependencies: 1279 | - supports-color 1280 | 1281 | '@opentelemetry/instrumentation-generic-pool@0.43.1(@opentelemetry/api@1.9.0)': 1282 | dependencies: 1283 | '@opentelemetry/api': 1.9.0 1284 | '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) 1285 | transitivePeerDependencies: 1286 | - supports-color 1287 | 1288 | '@opentelemetry/instrumentation-graphql@0.47.1(@opentelemetry/api@1.9.0)': 1289 | dependencies: 1290 | '@opentelemetry/api': 1.9.0 1291 | '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) 1292 | transitivePeerDependencies: 1293 | - supports-color 1294 | 1295 | '@opentelemetry/instrumentation-hapi@0.45.2(@opentelemetry/api@1.9.0)': 1296 | dependencies: 1297 | '@opentelemetry/api': 1.9.0 1298 | '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) 1299 | '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) 1300 | '@opentelemetry/semantic-conventions': 1.32.0 1301 | transitivePeerDependencies: 1302 | - supports-color 1303 | 1304 | '@opentelemetry/instrumentation-http@0.57.2(@opentelemetry/api@1.9.0)': 1305 | dependencies: 1306 | '@opentelemetry/api': 1.9.0 1307 | '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) 1308 | '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) 1309 | '@opentelemetry/semantic-conventions': 1.28.0 1310 | forwarded-parse: 2.1.2 1311 | semver: 7.7.1 1312 | transitivePeerDependencies: 1313 | - supports-color 1314 | 1315 | '@opentelemetry/instrumentation-ioredis@0.47.1(@opentelemetry/api@1.9.0)': 1316 | dependencies: 1317 | '@opentelemetry/api': 1.9.0 1318 | '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) 1319 | '@opentelemetry/redis-common': 0.36.2 1320 | '@opentelemetry/semantic-conventions': 1.32.0 1321 | transitivePeerDependencies: 1322 | - supports-color 1323 | 1324 | '@opentelemetry/instrumentation-kafkajs@0.7.1(@opentelemetry/api@1.9.0)': 1325 | dependencies: 1326 | '@opentelemetry/api': 1.9.0 1327 | '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) 1328 | '@opentelemetry/semantic-conventions': 1.32.0 1329 | transitivePeerDependencies: 1330 | - supports-color 1331 | 1332 | '@opentelemetry/instrumentation-knex@0.44.1(@opentelemetry/api@1.9.0)': 1333 | dependencies: 1334 | '@opentelemetry/api': 1.9.0 1335 | '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) 1336 | '@opentelemetry/semantic-conventions': 1.32.0 1337 | transitivePeerDependencies: 1338 | - supports-color 1339 | 1340 | '@opentelemetry/instrumentation-koa@0.47.1(@opentelemetry/api@1.9.0)': 1341 | dependencies: 1342 | '@opentelemetry/api': 1.9.0 1343 | '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) 1344 | '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) 1345 | '@opentelemetry/semantic-conventions': 1.32.0 1346 | transitivePeerDependencies: 1347 | - supports-color 1348 | 1349 | '@opentelemetry/instrumentation-lru-memoizer@0.44.1(@opentelemetry/api@1.9.0)': 1350 | dependencies: 1351 | '@opentelemetry/api': 1.9.0 1352 | '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) 1353 | transitivePeerDependencies: 1354 | - supports-color 1355 | 1356 | '@opentelemetry/instrumentation-mongodb@0.52.0(@opentelemetry/api@1.9.0)': 1357 | dependencies: 1358 | '@opentelemetry/api': 1.9.0 1359 | '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) 1360 | '@opentelemetry/semantic-conventions': 1.32.0 1361 | transitivePeerDependencies: 1362 | - supports-color 1363 | 1364 | '@opentelemetry/instrumentation-mongoose@0.46.1(@opentelemetry/api@1.9.0)': 1365 | dependencies: 1366 | '@opentelemetry/api': 1.9.0 1367 | '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) 1368 | '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) 1369 | '@opentelemetry/semantic-conventions': 1.32.0 1370 | transitivePeerDependencies: 1371 | - supports-color 1372 | 1373 | '@opentelemetry/instrumentation-mysql2@0.45.2(@opentelemetry/api@1.9.0)': 1374 | dependencies: 1375 | '@opentelemetry/api': 1.9.0 1376 | '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) 1377 | '@opentelemetry/semantic-conventions': 1.32.0 1378 | '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) 1379 | transitivePeerDependencies: 1380 | - supports-color 1381 | 1382 | '@opentelemetry/instrumentation-mysql@0.45.1(@opentelemetry/api@1.9.0)': 1383 | dependencies: 1384 | '@opentelemetry/api': 1.9.0 1385 | '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) 1386 | '@opentelemetry/semantic-conventions': 1.32.0 1387 | '@types/mysql': 2.15.26 1388 | transitivePeerDependencies: 1389 | - supports-color 1390 | 1391 | '@opentelemetry/instrumentation-pg@0.51.1(@opentelemetry/api@1.9.0)': 1392 | dependencies: 1393 | '@opentelemetry/api': 1.9.0 1394 | '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) 1395 | '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) 1396 | '@opentelemetry/semantic-conventions': 1.32.0 1397 | '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) 1398 | '@types/pg': 8.6.1 1399 | '@types/pg-pool': 2.0.6 1400 | transitivePeerDependencies: 1401 | - supports-color 1402 | 1403 | '@opentelemetry/instrumentation-redis-4@0.46.1(@opentelemetry/api@1.9.0)': 1404 | dependencies: 1405 | '@opentelemetry/api': 1.9.0 1406 | '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) 1407 | '@opentelemetry/redis-common': 0.36.2 1408 | '@opentelemetry/semantic-conventions': 1.32.0 1409 | transitivePeerDependencies: 1410 | - supports-color 1411 | 1412 | '@opentelemetry/instrumentation-tedious@0.18.1(@opentelemetry/api@1.9.0)': 1413 | dependencies: 1414 | '@opentelemetry/api': 1.9.0 1415 | '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) 1416 | '@opentelemetry/semantic-conventions': 1.32.0 1417 | '@types/tedious': 4.0.14 1418 | transitivePeerDependencies: 1419 | - supports-color 1420 | 1421 | '@opentelemetry/instrumentation-undici@0.10.1(@opentelemetry/api@1.9.0)': 1422 | dependencies: 1423 | '@opentelemetry/api': 1.9.0 1424 | '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) 1425 | '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) 1426 | transitivePeerDependencies: 1427 | - supports-color 1428 | 1429 | '@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0)': 1430 | dependencies: 1431 | '@opentelemetry/api': 1.9.0 1432 | '@opentelemetry/api-logs': 0.57.2 1433 | '@types/shimmer': 1.2.0 1434 | import-in-the-middle: 1.13.1 1435 | require-in-the-middle: 7.5.2 1436 | semver: 7.7.1 1437 | shimmer: 1.2.1 1438 | transitivePeerDependencies: 1439 | - supports-color 1440 | 1441 | '@opentelemetry/redis-common@0.36.2': {} 1442 | 1443 | '@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0)': 1444 | dependencies: 1445 | '@opentelemetry/api': 1.9.0 1446 | '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) 1447 | '@opentelemetry/semantic-conventions': 1.28.0 1448 | 1449 | '@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)': 1450 | dependencies: 1451 | '@opentelemetry/api': 1.9.0 1452 | '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) 1453 | '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) 1454 | '@opentelemetry/semantic-conventions': 1.28.0 1455 | 1456 | '@opentelemetry/semantic-conventions@1.28.0': {} 1457 | 1458 | '@opentelemetry/semantic-conventions@1.32.0': {} 1459 | 1460 | '@opentelemetry/sql-common@0.40.1(@opentelemetry/api@1.9.0)': 1461 | dependencies: 1462 | '@opentelemetry/api': 1.9.0 1463 | '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) 1464 | 1465 | '@prisma/instrumentation@6.6.0(@opentelemetry/api@1.9.0)': 1466 | dependencies: 1467 | '@opentelemetry/api': 1.9.0 1468 | '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) 1469 | transitivePeerDependencies: 1470 | - supports-color 1471 | 1472 | '@sec-ant/readable-stream@0.4.1': {} 1473 | 1474 | '@sentry/core@9.14.0': {} 1475 | 1476 | '@sentry/node@9.14.0': 1477 | dependencies: 1478 | '@opentelemetry/api': 1.9.0 1479 | '@opentelemetry/context-async-hooks': 1.30.1(@opentelemetry/api@1.9.0) 1480 | '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) 1481 | '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) 1482 | '@opentelemetry/instrumentation-amqplib': 0.46.1(@opentelemetry/api@1.9.0) 1483 | '@opentelemetry/instrumentation-connect': 0.43.1(@opentelemetry/api@1.9.0) 1484 | '@opentelemetry/instrumentation-dataloader': 0.16.1(@opentelemetry/api@1.9.0) 1485 | '@opentelemetry/instrumentation-express': 0.47.1(@opentelemetry/api@1.9.0) 1486 | '@opentelemetry/instrumentation-fastify': 0.44.2(@opentelemetry/api@1.9.0) 1487 | '@opentelemetry/instrumentation-fs': 0.19.1(@opentelemetry/api@1.9.0) 1488 | '@opentelemetry/instrumentation-generic-pool': 0.43.1(@opentelemetry/api@1.9.0) 1489 | '@opentelemetry/instrumentation-graphql': 0.47.1(@opentelemetry/api@1.9.0) 1490 | '@opentelemetry/instrumentation-hapi': 0.45.2(@opentelemetry/api@1.9.0) 1491 | '@opentelemetry/instrumentation-http': 0.57.2(@opentelemetry/api@1.9.0) 1492 | '@opentelemetry/instrumentation-ioredis': 0.47.1(@opentelemetry/api@1.9.0) 1493 | '@opentelemetry/instrumentation-kafkajs': 0.7.1(@opentelemetry/api@1.9.0) 1494 | '@opentelemetry/instrumentation-knex': 0.44.1(@opentelemetry/api@1.9.0) 1495 | '@opentelemetry/instrumentation-koa': 0.47.1(@opentelemetry/api@1.9.0) 1496 | '@opentelemetry/instrumentation-lru-memoizer': 0.44.1(@opentelemetry/api@1.9.0) 1497 | '@opentelemetry/instrumentation-mongodb': 0.52.0(@opentelemetry/api@1.9.0) 1498 | '@opentelemetry/instrumentation-mongoose': 0.46.1(@opentelemetry/api@1.9.0) 1499 | '@opentelemetry/instrumentation-mysql': 0.45.1(@opentelemetry/api@1.9.0) 1500 | '@opentelemetry/instrumentation-mysql2': 0.45.2(@opentelemetry/api@1.9.0) 1501 | '@opentelemetry/instrumentation-pg': 0.51.1(@opentelemetry/api@1.9.0) 1502 | '@opentelemetry/instrumentation-redis-4': 0.46.1(@opentelemetry/api@1.9.0) 1503 | '@opentelemetry/instrumentation-tedious': 0.18.1(@opentelemetry/api@1.9.0) 1504 | '@opentelemetry/instrumentation-undici': 0.10.1(@opentelemetry/api@1.9.0) 1505 | '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) 1506 | '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) 1507 | '@opentelemetry/semantic-conventions': 1.32.0 1508 | '@prisma/instrumentation': 6.6.0(@opentelemetry/api@1.9.0) 1509 | '@sentry/core': 9.14.0 1510 | '@sentry/opentelemetry': 9.14.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.32.0) 1511 | import-in-the-middle: 1.13.1 1512 | transitivePeerDependencies: 1513 | - supports-color 1514 | 1515 | '@sentry/opentelemetry@9.14.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.32.0)': 1516 | dependencies: 1517 | '@opentelemetry/api': 1.9.0 1518 | '@opentelemetry/context-async-hooks': 1.30.1(@opentelemetry/api@1.9.0) 1519 | '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) 1520 | '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) 1521 | '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) 1522 | '@opentelemetry/semantic-conventions': 1.32.0 1523 | '@sentry/core': 9.14.0 1524 | 1525 | '@sindresorhus/merge-streams@4.0.0': {} 1526 | 1527 | '@swan-io/boxed@3.2.0(typescript@5.7.3)': 1528 | optionalDependencies: 1529 | typescript: 5.7.3 1530 | 1531 | '@types/connect@3.4.38': 1532 | dependencies: 1533 | '@types/node': 20.8.2 1534 | 1535 | '@types/fs-extra@11.0.4': 1536 | dependencies: 1537 | '@types/jsonfile': 6.1.4 1538 | '@types/node': 20.8.2 1539 | 1540 | '@types/jsonfile@6.1.4': 1541 | dependencies: 1542 | '@types/node': 20.8.2 1543 | 1544 | '@types/mysql@2.15.26': 1545 | dependencies: 1546 | '@types/node': 20.8.2 1547 | 1548 | '@types/node@20.8.2': {} 1549 | 1550 | '@types/pg-pool@2.0.6': 1551 | dependencies: 1552 | '@types/pg': 8.6.1 1553 | 1554 | '@types/pg@8.6.1': 1555 | dependencies: 1556 | '@types/node': 20.8.2 1557 | pg-protocol: 1.9.5 1558 | pg-types: 2.2.0 1559 | 1560 | '@types/shimmer@1.2.0': {} 1561 | 1562 | '@types/tedious@4.0.14': 1563 | dependencies: 1564 | '@types/node': 20.8.2 1565 | 1566 | '@vercel/ncc@0.38.3': {} 1567 | 1568 | acorn-import-attributes@1.9.5(acorn@8.14.1): 1569 | dependencies: 1570 | acorn: 8.14.1 1571 | 1572 | acorn@8.14.1: {} 1573 | 1574 | ajv-formats@3.0.1(ajv@8.17.1): 1575 | optionalDependencies: 1576 | ajv: 8.17.1 1577 | 1578 | ajv@8.17.1: 1579 | dependencies: 1580 | fast-deep-equal: 3.1.3 1581 | fast-uri: 3.0.6 1582 | json-schema-traverse: 1.0.0 1583 | require-from-string: 2.0.2 1584 | 1585 | ansi-escapes@4.3.2: 1586 | dependencies: 1587 | type-fest: 0.21.3 1588 | 1589 | ansi-regex@5.0.1: {} 1590 | 1591 | ansi-regex@6.1.0: {} 1592 | 1593 | ansi-styles@4.3.0: 1594 | dependencies: 1595 | color-convert: 2.0.1 1596 | 1597 | atomically@2.0.3: 1598 | dependencies: 1599 | stubborn-fs: 1.2.5 1600 | when-exit: 2.1.4 1601 | 1602 | chalk@5.4.1: {} 1603 | 1604 | chardet@0.7.0: {} 1605 | 1606 | chownr@3.0.0: {} 1607 | 1608 | cjs-module-lexer@1.4.3: {} 1609 | 1610 | cli-cursor@5.0.0: 1611 | dependencies: 1612 | restore-cursor: 5.1.0 1613 | 1614 | cli-spinners@2.9.2: {} 1615 | 1616 | cli-width@4.1.0: {} 1617 | 1618 | color-convert@2.0.1: 1619 | dependencies: 1620 | color-name: 1.1.4 1621 | 1622 | color-name@1.1.4: {} 1623 | 1624 | commander@13.1.0: {} 1625 | 1626 | conf@13.1.0: 1627 | dependencies: 1628 | ajv: 8.17.1 1629 | ajv-formats: 3.0.1(ajv@8.17.1) 1630 | atomically: 2.0.3 1631 | debounce-fn: 6.0.0 1632 | dot-prop: 9.0.0 1633 | env-paths: 3.0.0 1634 | json-schema-typed: 8.0.1 1635 | semver: 7.7.1 1636 | uint8array-extras: 1.4.0 1637 | 1638 | cross-spawn@7.0.6: 1639 | dependencies: 1640 | path-key: 3.1.1 1641 | shebang-command: 2.0.0 1642 | which: 2.0.2 1643 | 1644 | crypto-random-string@4.0.0: 1645 | dependencies: 1646 | type-fest: 1.4.0 1647 | 1648 | debounce-fn@6.0.0: 1649 | dependencies: 1650 | mimic-function: 5.0.1 1651 | 1652 | debug@4.4.0: 1653 | dependencies: 1654 | ms: 2.1.3 1655 | 1656 | dot-prop@9.0.0: 1657 | dependencies: 1658 | type-fest: 4.40.0 1659 | 1660 | emoji-regex@10.4.0: {} 1661 | 1662 | emoji-regex@8.0.0: {} 1663 | 1664 | env-paths@3.0.0: {} 1665 | 1666 | execa@9.5.2: 1667 | dependencies: 1668 | '@sindresorhus/merge-streams': 4.0.0 1669 | cross-spawn: 7.0.6 1670 | figures: 6.1.0 1671 | get-stream: 9.0.1 1672 | human-signals: 8.0.1 1673 | is-plain-obj: 4.1.0 1674 | is-stream: 4.0.1 1675 | npm-run-path: 6.0.0 1676 | pretty-ms: 9.2.0 1677 | signal-exit: 4.1.0 1678 | strip-final-newline: 4.0.0 1679 | yoctocolors: 2.1.1 1680 | 1681 | external-editor@3.1.0: 1682 | dependencies: 1683 | chardet: 0.7.0 1684 | iconv-lite: 0.4.24 1685 | tmp: 0.0.33 1686 | 1687 | fast-deep-equal@3.1.3: {} 1688 | 1689 | fast-uri@3.0.6: {} 1690 | 1691 | figures@6.1.0: 1692 | dependencies: 1693 | is-unicode-supported: 2.1.0 1694 | 1695 | forwarded-parse@2.1.2: {} 1696 | 1697 | fs-extra@11.2.0: 1698 | dependencies: 1699 | graceful-fs: 4.2.11 1700 | jsonfile: 6.1.0 1701 | universalify: 2.0.1 1702 | 1703 | function-bind@1.1.2: {} 1704 | 1705 | get-east-asian-width@1.3.0: {} 1706 | 1707 | get-stream@9.0.1: 1708 | dependencies: 1709 | '@sec-ant/readable-stream': 0.4.1 1710 | is-stream: 4.0.1 1711 | 1712 | graceful-fs@4.2.11: {} 1713 | 1714 | hasown@2.0.2: 1715 | dependencies: 1716 | function-bind: 1.1.2 1717 | 1718 | human-signals@8.0.1: {} 1719 | 1720 | iconv-lite@0.4.24: 1721 | dependencies: 1722 | safer-buffer: 2.1.2 1723 | 1724 | import-in-the-middle@1.13.1: 1725 | dependencies: 1726 | acorn: 8.14.1 1727 | acorn-import-attributes: 1.9.5(acorn@8.14.1) 1728 | cjs-module-lexer: 1.4.3 1729 | module-details-from-path: 1.0.3 1730 | 1731 | is-core-module@2.16.1: 1732 | dependencies: 1733 | hasown: 2.0.2 1734 | 1735 | is-fullwidth-code-point@3.0.0: {} 1736 | 1737 | is-interactive@2.0.0: {} 1738 | 1739 | is-plain-obj@4.1.0: {} 1740 | 1741 | is-stream@3.0.0: {} 1742 | 1743 | is-stream@4.0.1: {} 1744 | 1745 | is-unicode-supported@1.3.0: {} 1746 | 1747 | is-unicode-supported@2.1.0: {} 1748 | 1749 | isexe@2.0.0: {} 1750 | 1751 | json-schema-traverse@1.0.0: {} 1752 | 1753 | json-schema-typed@8.0.1: {} 1754 | 1755 | jsonfile@6.1.0: 1756 | dependencies: 1757 | universalify: 2.0.1 1758 | optionalDependencies: 1759 | graceful-fs: 4.2.11 1760 | 1761 | ky@1.7.4: {} 1762 | 1763 | lefthook-darwin-arm64@1.11.9: 1764 | optional: true 1765 | 1766 | lefthook-darwin-x64@1.11.9: 1767 | optional: true 1768 | 1769 | lefthook-freebsd-arm64@1.11.9: 1770 | optional: true 1771 | 1772 | lefthook-freebsd-x64@1.11.9: 1773 | optional: true 1774 | 1775 | lefthook-linux-arm64@1.11.9: 1776 | optional: true 1777 | 1778 | lefthook-linux-x64@1.11.9: 1779 | optional: true 1780 | 1781 | lefthook-openbsd-arm64@1.11.9: 1782 | optional: true 1783 | 1784 | lefthook-openbsd-x64@1.11.9: 1785 | optional: true 1786 | 1787 | lefthook-windows-arm64@1.11.9: 1788 | optional: true 1789 | 1790 | lefthook-windows-x64@1.11.9: 1791 | optional: true 1792 | 1793 | lefthook@1.11.9: 1794 | optionalDependencies: 1795 | lefthook-darwin-arm64: 1.11.9 1796 | lefthook-darwin-x64: 1.11.9 1797 | lefthook-freebsd-arm64: 1.11.9 1798 | lefthook-freebsd-x64: 1.11.9 1799 | lefthook-linux-arm64: 1.11.9 1800 | lefthook-linux-x64: 1.11.9 1801 | lefthook-openbsd-arm64: 1.11.9 1802 | lefthook-openbsd-x64: 1.11.9 1803 | lefthook-windows-arm64: 1.11.9 1804 | lefthook-windows-x64: 1.11.9 1805 | 1806 | log-symbols@6.0.0: 1807 | dependencies: 1808 | chalk: 5.4.1 1809 | is-unicode-supported: 1.3.0 1810 | 1811 | mimic-function@5.0.1: {} 1812 | 1813 | minipass@7.1.2: {} 1814 | 1815 | minizlib@3.0.2: 1816 | dependencies: 1817 | minipass: 7.1.2 1818 | 1819 | mkdirp@3.0.1: {} 1820 | 1821 | module-details-from-path@1.0.3: {} 1822 | 1823 | move-file@3.1.0: 1824 | dependencies: 1825 | path-exists: 5.0.0 1826 | 1827 | ms@2.1.3: {} 1828 | 1829 | mute-stream@2.0.0: {} 1830 | 1831 | npm-run-path@6.0.0: 1832 | dependencies: 1833 | path-key: 4.0.0 1834 | unicorn-magic: 0.3.0 1835 | 1836 | onetime@7.0.0: 1837 | dependencies: 1838 | mimic-function: 5.0.1 1839 | 1840 | ora@8.1.1: 1841 | dependencies: 1842 | chalk: 5.4.1 1843 | cli-cursor: 5.0.0 1844 | cli-spinners: 2.9.2 1845 | is-interactive: 2.0.0 1846 | is-unicode-supported: 2.1.0 1847 | log-symbols: 6.0.0 1848 | stdin-discarder: 0.2.2 1849 | string-width: 7.2.0 1850 | strip-ansi: 7.1.0 1851 | 1852 | os-tmpdir@1.0.2: {} 1853 | 1854 | parse-ms@4.0.0: {} 1855 | 1856 | path-exists@5.0.0: {} 1857 | 1858 | path-key@3.1.1: {} 1859 | 1860 | path-key@4.0.0: {} 1861 | 1862 | path-parse@1.0.7: {} 1863 | 1864 | pg-int8@1.0.1: {} 1865 | 1866 | pg-protocol@1.9.5: {} 1867 | 1868 | pg-types@2.2.0: 1869 | dependencies: 1870 | pg-int8: 1.0.1 1871 | postgres-array: 2.0.0 1872 | postgres-bytea: 1.0.0 1873 | postgres-date: 1.0.7 1874 | postgres-interval: 1.2.0 1875 | 1876 | postgres-array@2.0.0: {} 1877 | 1878 | postgres-bytea@1.0.0: {} 1879 | 1880 | postgres-date@1.0.7: {} 1881 | 1882 | postgres-interval@1.2.0: 1883 | dependencies: 1884 | xtend: 4.0.2 1885 | 1886 | pretty-ms@9.2.0: 1887 | dependencies: 1888 | parse-ms: 4.0.0 1889 | 1890 | require-from-string@2.0.2: {} 1891 | 1892 | require-in-the-middle@7.5.2: 1893 | dependencies: 1894 | debug: 4.4.0 1895 | module-details-from-path: 1.0.3 1896 | resolve: 1.22.10 1897 | transitivePeerDependencies: 1898 | - supports-color 1899 | 1900 | resolve@1.22.10: 1901 | dependencies: 1902 | is-core-module: 2.16.1 1903 | path-parse: 1.0.7 1904 | supports-preserve-symlinks-flag: 1.0.0 1905 | 1906 | restore-cursor@5.1.0: 1907 | dependencies: 1908 | onetime: 7.0.0 1909 | signal-exit: 4.1.0 1910 | 1911 | safer-buffer@2.1.2: {} 1912 | 1913 | semver@7.7.1: {} 1914 | 1915 | shebang-command@2.0.0: 1916 | dependencies: 1917 | shebang-regex: 3.0.0 1918 | 1919 | shebang-regex@3.0.0: {} 1920 | 1921 | shimmer@1.2.1: {} 1922 | 1923 | signal-exit@4.1.0: {} 1924 | 1925 | stdin-discarder@0.2.2: {} 1926 | 1927 | string-width@4.2.3: 1928 | dependencies: 1929 | emoji-regex: 8.0.0 1930 | is-fullwidth-code-point: 3.0.0 1931 | strip-ansi: 6.0.1 1932 | 1933 | string-width@7.2.0: 1934 | dependencies: 1935 | emoji-regex: 10.4.0 1936 | get-east-asian-width: 1.3.0 1937 | strip-ansi: 7.1.0 1938 | 1939 | strip-ansi@6.0.1: 1940 | dependencies: 1941 | ansi-regex: 5.0.1 1942 | 1943 | strip-ansi@7.1.0: 1944 | dependencies: 1945 | ansi-regex: 6.1.0 1946 | 1947 | strip-final-newline@4.0.0: {} 1948 | 1949 | stubborn-fs@1.2.5: {} 1950 | 1951 | supports-preserve-symlinks-flag@1.0.0: {} 1952 | 1953 | tar@7.4.3: 1954 | dependencies: 1955 | '@isaacs/fs-minipass': 4.0.1 1956 | chownr: 3.0.0 1957 | minipass: 7.1.2 1958 | minizlib: 3.0.2 1959 | mkdirp: 3.0.1 1960 | yallist: 5.0.0 1961 | 1962 | temp-dir@3.0.0: {} 1963 | 1964 | tempy@3.1.0: 1965 | dependencies: 1966 | is-stream: 3.0.0 1967 | temp-dir: 3.0.0 1968 | type-fest: 2.19.0 1969 | unique-string: 3.0.0 1970 | 1971 | tmp@0.0.33: 1972 | dependencies: 1973 | os-tmpdir: 1.0.2 1974 | 1975 | ts-pattern@5.7.0: {} 1976 | 1977 | type-fest@0.21.3: {} 1978 | 1979 | type-fest@1.4.0: {} 1980 | 1981 | type-fest@2.19.0: {} 1982 | 1983 | type-fest@4.40.0: {} 1984 | 1985 | typescript@5.7.3: {} 1986 | 1987 | uint8array-extras@1.4.0: {} 1988 | 1989 | unicorn-magic@0.3.0: {} 1990 | 1991 | unique-string@3.0.0: 1992 | dependencies: 1993 | crypto-random-string: 4.0.0 1994 | 1995 | universalify@2.0.1: {} 1996 | 1997 | when-exit@2.1.4: {} 1998 | 1999 | which@2.0.2: 2000 | dependencies: 2001 | isexe: 2.0.0 2002 | 2003 | wrap-ansi@6.2.0: 2004 | dependencies: 2005 | ansi-styles: 4.3.0 2006 | string-width: 4.2.3 2007 | strip-ansi: 6.0.1 2008 | 2009 | xtend@4.0.2: {} 2010 | 2011 | yallist@5.0.0: {} 2012 | 2013 | yoctocolors-cjs@2.1.2: {} 2014 | 2015 | yoctocolors@2.1.1: {} 2016 | -------------------------------------------------------------------------------- /src/functions.ts: -------------------------------------------------------------------------------- 1 | import path from 'node:path'; 2 | import { cwd } from 'node:process'; 3 | import { debug } from '@/lib/debug.js'; 4 | import { type Target, replacableIndicator, repos } from '@/lib/repos.js'; 5 | import { spinner } from '@/lib/spinner.js'; 6 | import { Future } from '@swan-io/boxed'; 7 | import chalk from 'chalk'; 8 | import { copyFile, exists, readdir, writeFile } from 'fs-extra'; 9 | import ky from 'ky'; 10 | import { moveFile } from 'move-file'; 11 | import { extract } from 'tar'; 12 | import { temporaryFile } from 'tempy'; 13 | 14 | /** 15 | * Make sure you can create a start-ui project with the specified cli arguments 16 | * Exit the program if requirements are not met 17 | */ 18 | export const checkEnv = async ({ outDirPath }: { outDirPath: string }) => { 19 | const checkDirExistResult = await Future.fromPromise(exists(outDirPath)); 20 | if (checkDirExistResult.isError()) { 21 | spinner.fail('Cannot check if the folder exists. Make sure you have sufficient rights on your system.'); 22 | process.exit(7); 23 | } 24 | 25 | // First, check if the destination folder already exists 26 | if (!checkDirExistResult.value) { 27 | // If the folder do not already exists, continue the script 28 | return; 29 | } 30 | 31 | console.log(); 32 | console.log(`This folder may already exists: ${chalk.yellow.underline(path.join(cwd(), outDirPath))}`); 33 | console.log('If this is the case, try removing it first.'); 34 | console.log(); 35 | process.exit(2); 36 | }; 37 | 38 | /** 39 | * Download .tar.gz file from specified branch on the github repository 40 | * @returns .tar.gz file path where it was downloaded 41 | */ 42 | export const downloadAndSaveRepoTarball = async ({ 43 | target, 44 | branch, 45 | }: { 46 | target: Target; 47 | branch: string; 48 | }) => { 49 | const tmpFilePath = temporaryFile(); 50 | const targetInfos = repos[target]; 51 | const repoUrl = targetInfos.url.replace(replacableIndicator, branch); 52 | 53 | const responseResult = await Future.fromPromise(ky(repoUrl, { responseType: 'stream' }).arrayBuffer()); 54 | if (responseResult.isError()) { 55 | debug('Cannot download template from repository', responseResult.error); 56 | spinner.fail( 57 | `Cannot download template from repository. Make sure that your connection is ok or that the specified branch exists (${repoUrl}).`, 58 | ); 59 | process.exit(1); 60 | } 61 | 62 | // [TODO]: prefer to use a standardized alternative instead of Buffer 63 | const saveFileResult = await Future.fromPromise(writeFile(tmpFilePath, Buffer.from(responseResult.value))); 64 | if (saveFileResult.isError()) { 65 | debug('Cannot saved downloaded template file', saveFileResult.error); 66 | spinner.fail( 67 | `Cannot download template from repository. Make sure that your connection is ok or that the specified branch exists (${repoUrl}).`, 68 | ); 69 | process.exit(1); 70 | } 71 | 72 | return tmpFilePath; 73 | }; 74 | 75 | /** 76 | * Extract tar file into provided folder 77 | * @returns extracted folder path 78 | */ 79 | export const extractTemplateFolder = async ({ 80 | tarballPath, 81 | targetFolderPath, 82 | }: { 83 | tarballPath: string; 84 | targetFolderPath: string; 85 | }) => { 86 | const extractResult = await Future.fromPromise(extract({ file: tarballPath, cwd: targetFolderPath })); 87 | if (extractResult.isError()) { 88 | debug('an error occurred while extracting the template archive.', extractResult.error); 89 | spinner.fail(chalk.red('An error occurred while extracting the template archive')); 90 | process.exit(2); 91 | } 92 | 93 | const filesResult = await Future.fromPromise(readdir(targetFolderPath)); 94 | if (filesResult.isError()) { 95 | debug('An error occurred while reading the extracting files', filesResult.error); 96 | spinner.fail('An error occurred while extracting the template archive'); 97 | process.exit(3); 98 | } 99 | 100 | if (!filesResult.value[0]) { 101 | debug('An error occurred while reading folder name', filesResult.value.length); 102 | spinner.fail('An error occurred while extracting the template archive'); 103 | process.exit(6); 104 | } 105 | return filesResult.value[0]; 106 | }; 107 | 108 | /** 109 | * Copy files from extracted folder into correct new project folder 110 | */ 111 | export const copyFilesToNewProject = async ({ 112 | fromFolderPath, 113 | toFolderPath, 114 | }: { 115 | fromFolderPath: string; 116 | toFolderPath: string; 117 | }) => { 118 | const moveResult = await Future.fromPromise(moveFile(fromFolderPath, toFolderPath)); 119 | 120 | moveResult.match({ 121 | Ok: () => { 122 | debug('Moved files from', fromFolderPath, 'to', toFolderPath); 123 | }, 124 | Error: (moveResultError) => { 125 | debug('An error occurred while moving files.', moveResultError); 126 | spinner.fail(chalk.red('An error occurred while moving files.')); 127 | process.exit(5); 128 | }, 129 | }); 130 | }; 131 | 132 | /** 133 | * Utility to create the file associated 134 | * to its .example sibling. 135 | * 136 | * `ensureExampleFile('.env.example')` will create `.env` file next to the .example one. 137 | */ 138 | export const ensureExampleFile = async (filePath: string) => { 139 | // Make sure there is a file to copy 140 | 141 | // get the path for the final file name (without .example) 142 | const filePathWithoutExample = filePath.replace('.example', ''); 143 | 144 | return Future.fromPromise(copyFile(filePath, filePathWithoutExample)); 145 | }; 146 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | // note: This import needs to stay at the top 4 | // it allows us to catch unhandled error as soon as they appear 5 | import '@/lib/sentry.js'; 6 | 7 | import path from 'node:path'; 8 | import { cwd } from 'node:process'; 9 | 10 | import { confirm } from '@inquirer/prompts'; 11 | import { Future, Option } from '@swan-io/boxed'; 12 | import chalk from 'chalk'; 13 | import { $ } from 'execa'; 14 | import { temporaryDirectoryTask } from 'tempy'; 15 | 16 | import { checkEnv, copyFilesToNewProject, downloadAndSaveRepoTarball, extractTemplateFolder } from '@/functions.js'; 17 | import { program } from '@/lib/cli.js'; 18 | import { config } from '@/lib/conf.js'; 19 | import { debug } from '@/lib/debug.js'; 20 | import { type Target, repos } from '@/lib/repos.js'; 21 | import { spinner } from '@/lib/spinner.js'; 22 | import native from '@/target/native/index.js'; 23 | import web from '@/target/web/index.js'; 24 | import { match } from 'ts-pattern'; 25 | 26 | const parsedCliArgs = program.parse(process.argv); 27 | const outDirPath = Option.fromNullable(parsedCliArgs.args[0]); 28 | if (outDirPath.isNone()) { 29 | program.outputHelp(); 30 | process.exit(); 31 | } 32 | 33 | const options = parsedCliArgs.opts(); 34 | const type = Option.fromNullable(options.type).getOr('web') as Target; 35 | 36 | // [NOTE] 37 | // We make this option available in the global scope, 38 | // so debug() function can access it without the need to pass it 39 | // as a parameter everytime we want to use it 40 | global.isVerbose = options.verbose; 41 | 42 | // If this is the first time launching the cli 43 | // Ask for telemetry usage approval 44 | if (!config.has('allowTelemetry')) { 45 | console.log( 46 | 'create-start-ui is using telemetry to track bugs.\nCollected data is anonymous and helps us to fix issues.', 47 | ); 48 | 49 | const telemetryApproval = await confirm({ 50 | message: 'Do you allow us to use telemetry to track bugs?', 51 | default: true, 52 | }); 53 | 54 | config.set('allowTelemetry', telemetryApproval); 55 | } 56 | 57 | // Check that there is no existing folder with the same name 58 | // as the outDirPath 59 | await checkEnv({ outDirPath: outDirPath.value }); 60 | 61 | // Download template zip file from target repo 62 | spinner.start(`Creating template into ${path.join(cwd(), outDirPath.value)}`); 63 | const tempFilePath = await downloadAndSaveRepoTarball({ 64 | target: type, 65 | branch: options.branch ?? repos[type].defaultBranch, 66 | }); 67 | 68 | await temporaryDirectoryTask(async (tmpDir) => { 69 | const extractedFolderName = await extractTemplateFolder({ 70 | tarballPath: tempFilePath, 71 | targetFolderPath: tmpDir, 72 | }); 73 | 74 | const tmpTemplateFolder = path.join(tmpDir, extractedFolderName); 75 | await copyFilesToNewProject({ 76 | fromFolderPath: tmpTemplateFolder, 77 | toFolderPath: outDirPath.value, 78 | }); 79 | }); 80 | 81 | spinner.succeed(); 82 | process.chdir(outDirPath.value); 83 | 84 | if (!options.skipInstall) { 85 | spinner.start('Installing dependencies with pnpm...'); 86 | 87 | // Make sure pnpm is installed before trying anything 88 | const checkPnpmCliResult = await Future.fromPromise($`pnpm -v`); 89 | await checkPnpmCliResult.match({ 90 | Ok: async () => { 91 | const pnpmInstallExecutionResult = await Future.fromPromise($`pnpm install`); 92 | if (pnpmInstallExecutionResult.isError()) { 93 | debug('pnpm install failed', pnpmInstallExecutionResult.error); 94 | spinner.warn('Something went wrong while installing dependencies with pnpm.'); 95 | } 96 | spinner.succeed('Installing dependencies with pnpm...'); 97 | }, 98 | Error: (error) => { 99 | debug('pnpm not detected', error); 100 | spinner.warn(chalk.yellow('Unable to find pnpm. You will need to install dependencies yourself.')); 101 | }, 102 | }); 103 | } 104 | 105 | // Init git repository and add first commit 106 | if (!options.skipGitInit) { 107 | spinner.start('Initializing repository...'); 108 | 109 | try { 110 | await $`git init`; 111 | await $`git add .`; 112 | await $`git commit -m "${'feat: initial commit'}"`; 113 | spinner.succeed(); 114 | } catch (error) { 115 | debug('Failed to initialize git repository', error); 116 | spinner.warn('Unable to run git init, skipping'); 117 | } 118 | } 119 | 120 | console.log(''); 121 | console.log(chalk.green('✅ Project created!')); 122 | console.log( 123 | `➡️ Run \`${chalk.grey(`cd ${outDirPath.value}`)}\` and follow getting started instructions in the README.md`, 124 | ); 125 | 126 | // Once the repo template has been copied into 127 | // the disired folder, run target specific scripts 128 | match(type).with('web', web).with('native', native).exhaustive(); 129 | -------------------------------------------------------------------------------- /src/lib/cli.ts: -------------------------------------------------------------------------------- 1 | import type { Target } from '@/lib/repos.js'; 2 | import { Command } from 'commander'; 3 | 4 | import packageJson from '../../package.json' with { type: 'json' }; 5 | 6 | const isTarget = (value: string): value is Target => { 7 | return ['web', 'native'].includes(value); 8 | }; 9 | 10 | const parseTarget = (value: string) => { 11 | return isTarget(value) ? value : null; 12 | }; 13 | 14 | export const program = new Command() 15 | .name(packageJson.name) 16 | .argument('', 'Name of the app to create') 17 | .option('-b, --branch ', 'Specify a branch you want to use to start') 18 | .option('-t, --type ', 'Type of app you want to create', parseTarget) 19 | .option('--skip-install', 'Skip node modules installation step', false) 20 | .option('--skip-git-init', 'Skip git init step', false) 21 | .option('--verbose', 'Add additional details if something goes wrong', false) 22 | .showHelpAfterError() 23 | .version(packageJson.version); 24 | -------------------------------------------------------------------------------- /src/lib/conf.ts: -------------------------------------------------------------------------------- 1 | import Conf from 'conf'; 2 | 3 | type CliConfig = { 4 | allowTelemetry?: boolean; 5 | }; 6 | 7 | export const config = new Conf({ 8 | projectName: 'create-start-ui', 9 | schema: { 10 | allowTelemetry: { 11 | type: 'boolean', 12 | default: undefined, 13 | }, 14 | }, 15 | defaults: { 16 | allowTelemetry: undefined, 17 | }, 18 | }); 19 | -------------------------------------------------------------------------------- /src/lib/debug.ts: -------------------------------------------------------------------------------- 1 | import chalk from 'chalk'; 2 | 3 | /** 4 | * function used to log debug message only if --verbose flag is used 5 | * Act as a wrapper around console.log 6 | */ 7 | export const debug = (...args: unknown[]) => { 8 | if (global.isVerbose) { 9 | console.debug( 10 | `\n${chalk.magenta('DEBUG')}\n`, 11 | ...args.flatMap((valueToDisplay) => [chalk.magenta('|>'), valueToDisplay, '\n']), 12 | ); 13 | } 14 | }; 15 | -------------------------------------------------------------------------------- /src/lib/repos.ts: -------------------------------------------------------------------------------- 1 | export type Repo = { 2 | url: string; 3 | defaultBranch: string; 4 | }; 5 | export type Target = 'web' | 'native'; 6 | 7 | export const replacableIndicator = ''; 8 | 9 | export const repos: Record = { 10 | web: { 11 | url: `https://github.com/BearStudio/start-ui-web/archive/refs/heads/${replacableIndicator}.tar.gz`, 12 | defaultBranch: 'master', 13 | }, 14 | native: { 15 | url: `https://github.com/BearStudio/start-ui-native/archive/refs/heads/${replacableIndicator}.tar.gz`, 16 | defaultBranch: 'main', 17 | }, 18 | } as const; 19 | -------------------------------------------------------------------------------- /src/lib/sentry.ts: -------------------------------------------------------------------------------- 1 | import { config } from '@/lib/conf.js'; 2 | import * as Sentry from '@sentry/node'; 3 | import packageJson from '../../package.json' with { type: 'json' }; 4 | 5 | export const sentry = Sentry.init({ 6 | dsn: 'https://2512a71f28fa9372bce8824d1ccc038c@sentry.bearstudio.info/4', 7 | release: packageJson.version, 8 | 9 | tracesSampleRate: 1.0, 10 | 11 | // Make sure no events will be sent to sentry 12 | // if telemetry is disabled 13 | beforeSend: (event) => { 14 | if (config.get('allowTelemetry')) return event; 15 | return null; 16 | }, 17 | }); 18 | -------------------------------------------------------------------------------- /src/lib/spinner.ts: -------------------------------------------------------------------------------- 1 | import ora from 'ora'; 2 | 3 | export const spinner = ora({ text: '' }); 4 | -------------------------------------------------------------------------------- /src/target/native/index.ts: -------------------------------------------------------------------------------- 1 | // TODO: add native specific scripts here 2 | // - renaming assets 3 | // - updating package names 4 | export default () => {}; 5 | -------------------------------------------------------------------------------- /src/target/web/index.ts: -------------------------------------------------------------------------------- 1 | export default () => 2 | console.log('ℹ️ Check https://docs.web.start-ui.com/ for additional guides or details about 🚀 Start UI [web]'); 3 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "compilerOptions": { 4 | "esModuleInterop": true, 5 | "skipLibCheck": true, 6 | "target": "es2022", 7 | "resolveJsonModule": true, 8 | "moduleDetection": "force", 9 | "isolatedModules": true, 10 | 11 | "strict": true, 12 | "noUncheckedIndexedAccess": true, 13 | 14 | "moduleResolution": "NodeNext", 15 | "module": "NodeNext", 16 | 17 | "lib": ["ES2022"], 18 | 19 | "forceConsistentCasingInFileNames": true, 20 | "noEmit": true, 21 | 22 | "baseUrl": "./", 23 | "paths": { 24 | "@/*": ["src/*"] 25 | } 26 | }, 27 | "include": ["src", "globals.d.ts"] 28 | } 29 | --------------------------------------------------------------------------------