This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

Merge pull request #608 from cosmik-network/feature/sentry-monitoring-20260309

Feature/sentry monitoring 20260309

+1009 -118
+1 -1
.github/workflows/fly-dev-deploy.yml
··· 11 11 steps: 12 12 - uses: actions/checkout@v4 13 13 - uses: superfly/flyctl-actions/setup-flyctl@master 14 - - run: flyctl deploy --remote-only -c fly.development.toml 14 + - run: flyctl deploy --remote-only -c fly.development.toml --build-arg GIT_SHA=${{ github.sha }} 15 15 env: 16 16 FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}
+1 -1
.github/workflows/fly-prod-deploy.yml
··· 11 11 steps: 12 12 - uses: actions/checkout@v4 13 13 - uses: superfly/flyctl-actions/setup-flyctl@master 14 - - run: flyctl deploy --remote-only -c fly.production.toml 14 + - run: flyctl deploy --remote-only -c fly.production.toml --build-arg GIT_SHA=${{ github.sha }} 15 15 env: 16 16 FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}
+9
Dockerfile
··· 16 16 # Throw-away build stage to reduce size of final image 17 17 FROM base AS build 18 18 19 + # Accept build argument for git SHA (for Sentry release tracking) 20 + ARG GIT_SHA 21 + 19 22 # Install packages needed to build node modules 20 23 RUN apt-get update -qq && \ 21 24 apt-get install --no-install-recommends -y build-essential node-gyp pkg-config python-is-python3 ··· 36 39 37 40 # Final stage for app image 38 41 FROM base 42 + 43 + # Accept build argument for git SHA (needs to be declared in each stage) 44 + ARG GIT_SHA 45 + 46 + # Set as environment variable for runtime access (Sentry release tracking) 47 + ENV GIT_SHA=${GIT_SHA} 39 48 40 49 # Copy built application 41 50 COPY --from=build /app /app
+6 -6
fly.development.toml
··· 4 4 [build] 5 5 6 6 [processes] 7 - web = "npm start" 8 - feed-worker = "npm run worker:feeds" 9 - search-worker = "npm run worker:search" 10 - firehose-worker = "npm run worker:firehose" 11 - notification-worker = "npm run worker:notifications" 12 - sync-worker = "npm run worker:sync" 7 + web = "PROCESS_TYPE=web npm start" 8 + feed-worker = "PROCESS_TYPE=feed-worker npm run worker:feeds" 9 + search-worker = "PROCESS_TYPE=search-worker npm run worker:search" 10 + firehose-worker = "PROCESS_TYPE=firehose-worker npm run worker:firehose" 11 + notification-worker = "PROCESS_TYPE=notification-worker npm run worker:notifications" 12 + sync-worker = "PROCESS_TYPE=sync-worker npm run worker:sync" 13 13 14 14 [http_service] 15 15 internal_port = 3000
+6 -6
fly.production.toml
··· 4 4 [build] 5 5 6 6 [processes] 7 - web = "npm start" 8 - feed-worker = "npm run worker:feeds" 9 - search-worker = "npm run worker:search" 10 - firehose-worker = "npm run worker:firehose" 11 - notification-worker = "npm run worker:notifications" 12 - sync-worker = "npm run worker:sync" 7 + web = "PROCESS_TYPE=web npm start" 8 + feed-worker = "PROCESS_TYPE=feed-worker npm run worker:feeds" 9 + search-worker = "PROCESS_TYPE=search-worker npm run worker:search" 10 + firehose-worker = "PROCESS_TYPE=firehose-worker npm run worker:firehose" 11 + notification-worker = "PROCESS_TYPE=notification-worker npm run worker:notifications" 12 + sync-worker = "PROCESS_TYPE=sync-worker npm run worker:sync" 13 13 14 14 [http_service] 15 15 internal_port = 3000
+901 -104
package-lock.json
··· 23 23 "@atproto/syntax": "^0.4.0", 24 24 "@atproto/xrpc-server": "^0.7.15", 25 25 "@semble/types": "*", 26 + "@sentry/node": "^10.42.0", 26 27 "@upstash/vector": "^1.2.2", 27 28 "atpi": "^1.0.7", 28 29 "bullmq": "^5.56.8", ··· 1125 1126 "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", 1126 1127 "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", 1127 1128 "dev": true, 1128 - "peer": true, 1129 1129 "dependencies": { 1130 1130 "@babel/code-frame": "^7.27.1", 1131 1131 "@babel/generator": "^7.28.3", ··· 1783 1783 "url": "https://opencollective.com/csstools" 1784 1784 } 1785 1785 ], 1786 - "peer": true, 1787 1786 "engines": { 1788 1787 "node": ">=18" 1789 1788 }, ··· 1806 1805 "url": "https://opencollective.com/csstools" 1807 1806 } 1808 1807 ], 1809 - "peer": true, 1810 1808 "engines": { 1811 1809 "node": ">=18" 1812 1810 } ··· 2861 2859 "node": ">=12" 2862 2860 } 2863 2861 }, 2862 + "node_modules/@fastify/otel": { 2863 + "version": "0.16.0", 2864 + "resolved": "https://registry.npmjs.org/@fastify/otel/-/otel-0.16.0.tgz", 2865 + "integrity": "sha512-2304BdM5Q/kUvQC9qJO1KZq3Zn1WWsw+WWkVmFEaj1UE2hEIiuFqrPeglQOwEtw/ftngisqfQ3v70TWMmwhhHA==", 2866 + "funding": [ 2867 + { 2868 + "type": "github", 2869 + "url": "https://github.com/sponsors/fastify" 2870 + }, 2871 + { 2872 + "type": "opencollective", 2873 + "url": "https://opencollective.com/fastify" 2874 + } 2875 + ], 2876 + "dependencies": { 2877 + "@opentelemetry/core": "^2.0.0", 2878 + "@opentelemetry/instrumentation": "^0.208.0", 2879 + "@opentelemetry/semantic-conventions": "^1.28.0", 2880 + "minimatch": "^10.0.3" 2881 + }, 2882 + "peerDependencies": { 2883 + "@opentelemetry/api": "^1.9.0" 2884 + } 2885 + }, 2886 + "node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation": { 2887 + "version": "0.208.0", 2888 + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.208.0.tgz", 2889 + "integrity": "sha512-Eju0L4qWcQS+oXxi6pgh7zvE2byogAkcsVv0OjHF/97iOz1N/aKE6etSGowYkie+YA1uo6DNwdSxaaNnLvcRlA==", 2890 + "dependencies": { 2891 + "@opentelemetry/api-logs": "0.208.0", 2892 + "import-in-the-middle": "^2.0.0", 2893 + "require-in-the-middle": "^8.0.0" 2894 + }, 2895 + "engines": { 2896 + "node": "^18.19.0 || >=20.6.0" 2897 + }, 2898 + "peerDependencies": { 2899 + "@opentelemetry/api": "^1.3.0" 2900 + } 2901 + }, 2902 + "node_modules/@fastify/otel/node_modules/balanced-match": { 2903 + "version": "4.0.4", 2904 + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", 2905 + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", 2906 + "engines": { 2907 + "node": "18 || 20 || >=22" 2908 + } 2909 + }, 2910 + "node_modules/@fastify/otel/node_modules/brace-expansion": { 2911 + "version": "5.0.4", 2912 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", 2913 + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", 2914 + "dependencies": { 2915 + "balanced-match": "^4.0.2" 2916 + }, 2917 + "engines": { 2918 + "node": "18 || 20 || >=22" 2919 + } 2920 + }, 2921 + "node_modules/@fastify/otel/node_modules/minimatch": { 2922 + "version": "10.2.4", 2923 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", 2924 + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", 2925 + "dependencies": { 2926 + "brace-expansion": "^5.0.2" 2927 + }, 2928 + "engines": { 2929 + "node": "18 || 20 || >=22" 2930 + }, 2931 + "funding": { 2932 + "url": "https://github.com/sponsors/isaacs" 2933 + } 2934 + }, 2864 2935 "node_modules/@floating-ui/core": { 2865 2936 "version": "1.7.3", 2866 2937 "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz", ··· 4578 4649 "version": "3.1.1", 4579 4650 "resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-3.1.1.tgz", 4580 4651 "integrity": "sha512-0TTacJyZ9mDmY+VefuthVshaNIyCGZHJG2fMnGaDttCt8HmjUF7SizlHJpaCDoGnN635nK1wpzfpx/Xx5S4WnQ==", 4581 - "peer": true, 4582 4652 "dependencies": { 4583 4653 "@mdx-js/mdx": "^3.0.0", 4584 4654 "source-map": "^0.7.0" ··· 4636 4706 "version": "3.1.1", 4637 4707 "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.1.tgz", 4638 4708 "integrity": "sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==", 4639 - "peer": true, 4640 4709 "dependencies": { 4641 4710 "@types/mdx": "^2.0.0" 4642 4711 }, ··· 5008 5077 "version": "1.9.0", 5009 5078 "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", 5010 5079 "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", 5011 - "devOptional": true, 5012 - "peer": true, 5013 5080 "engines": { 5014 5081 "node": ">=8.0.0" 5015 5082 } ··· 5018 5085 "version": "0.208.0", 5019 5086 "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.208.0.tgz", 5020 5087 "integrity": "sha512-CjruKY9V6NMssL/T1kAFgzosF1v9o6oeN+aX5JB/C/xPNtmgIJqcXHG7fA82Ou1zCpWGl4lROQUKwUNE1pMCyg==", 5021 - "dev": true, 5022 5088 "dependencies": { 5023 5089 "@opentelemetry/api": "^1.3.0" 5024 5090 }, ··· 5026 5092 "node": ">=8.0.0" 5027 5093 } 5028 5094 }, 5095 + "node_modules/@opentelemetry/context-async-hooks": { 5096 + "version": "2.6.0", 5097 + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-2.6.0.tgz", 5098 + "integrity": "sha512-L8UyDwqpTcbkIK5cgwDRDYDoEhQoj8wp8BwsO19w3LB1Z41yEQm2VJyNfAi9DrLP/YTqXqWpKHyZfR9/tFYo1Q==", 5099 + "engines": { 5100 + "node": "^18.19.0 || >=20.6.0" 5101 + }, 5102 + "peerDependencies": { 5103 + "@opentelemetry/api": ">=1.0.0 <1.10.0" 5104 + } 5105 + }, 5029 5106 "node_modules/@opentelemetry/core": { 5030 5107 "version": "2.2.0", 5031 5108 "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.2.0.tgz", 5032 5109 "integrity": "sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==", 5033 - "dev": true, 5034 5110 "dependencies": { 5035 5111 "@opentelemetry/semantic-conventions": "^1.29.0" 5036 5112 }, ··· 5060 5136 "@opentelemetry/api": "^1.3.0" 5061 5137 } 5062 5138 }, 5139 + "node_modules/@opentelemetry/instrumentation": { 5140 + "version": "0.211.0", 5141 + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.211.0.tgz", 5142 + "integrity": "sha512-h0nrZEC/zvI994nhg7EgQ8URIHt0uDTwN90r3qQUdZORS455bbx+YebnGeEuFghUT0HlJSrLF4iHw67f+odY+Q==", 5143 + "dependencies": { 5144 + "@opentelemetry/api-logs": "0.211.0", 5145 + "import-in-the-middle": "^2.0.0", 5146 + "require-in-the-middle": "^8.0.0" 5147 + }, 5148 + "engines": { 5149 + "node": "^18.19.0 || >=20.6.0" 5150 + }, 5151 + "peerDependencies": { 5152 + "@opentelemetry/api": "^1.3.0" 5153 + } 5154 + }, 5155 + "node_modules/@opentelemetry/instrumentation-amqplib": { 5156 + "version": "0.58.0", 5157 + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-amqplib/-/instrumentation-amqplib-0.58.0.tgz", 5158 + "integrity": "sha512-fjpQtH18J6GxzUZ+cwNhWUpb71u+DzT7rFkg5pLssDGaEber91Y2WNGdpVpwGivfEluMlNMZumzjEqfg8DeKXQ==", 5159 + "dependencies": { 5160 + "@opentelemetry/core": "^2.0.0", 5161 + "@opentelemetry/instrumentation": "^0.211.0", 5162 + "@opentelemetry/semantic-conventions": "^1.33.0" 5163 + }, 5164 + "engines": { 5165 + "node": "^18.19.0 || >=20.6.0" 5166 + }, 5167 + "peerDependencies": { 5168 + "@opentelemetry/api": "^1.3.0" 5169 + } 5170 + }, 5171 + "node_modules/@opentelemetry/instrumentation-connect": { 5172 + "version": "0.54.0", 5173 + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.54.0.tgz", 5174 + "integrity": "sha512-43RmbhUhqt3uuPnc16cX6NsxEASEtn8z/cYV8Zpt6EP4p2h9s4FNuJ4Q9BbEQ2C0YlCCB/2crO1ruVz/hWt8fA==", 5175 + "dependencies": { 5176 + "@opentelemetry/core": "^2.0.0", 5177 + "@opentelemetry/instrumentation": "^0.211.0", 5178 + "@opentelemetry/semantic-conventions": "^1.27.0", 5179 + "@types/connect": "3.4.38" 5180 + }, 5181 + "engines": { 5182 + "node": "^18.19.0 || >=20.6.0" 5183 + }, 5184 + "peerDependencies": { 5185 + "@opentelemetry/api": "^1.3.0" 5186 + } 5187 + }, 5188 + "node_modules/@opentelemetry/instrumentation-dataloader": { 5189 + "version": "0.28.0", 5190 + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.28.0.tgz", 5191 + "integrity": "sha512-ExXGBp0sUj8yhm6Znhf9jmuOaGDsYfDES3gswZnKr4MCqoBWQdEFn6EoDdt5u+RdbxQER+t43FoUihEfTSqsjA==", 5192 + "dependencies": { 5193 + "@opentelemetry/instrumentation": "^0.211.0" 5194 + }, 5195 + "engines": { 5196 + "node": "^18.19.0 || >=20.6.0" 5197 + }, 5198 + "peerDependencies": { 5199 + "@opentelemetry/api": "^1.3.0" 5200 + } 5201 + }, 5202 + "node_modules/@opentelemetry/instrumentation-express": { 5203 + "version": "0.59.0", 5204 + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-express/-/instrumentation-express-0.59.0.tgz", 5205 + "integrity": "sha512-pMKV/qnHiW/Q6pmbKkxt0eIhuNEtvJ7sUAyee192HErlr+a1Jx+FZ3WjfmzhQL1geewyGEiPGkmjjAgNY8TgDA==", 5206 + "dependencies": { 5207 + "@opentelemetry/core": "^2.0.0", 5208 + "@opentelemetry/instrumentation": "^0.211.0", 5209 + "@opentelemetry/semantic-conventions": "^1.27.0" 5210 + }, 5211 + "engines": { 5212 + "node": "^18.19.0 || >=20.6.0" 5213 + }, 5214 + "peerDependencies": { 5215 + "@opentelemetry/api": "^1.3.0" 5216 + } 5217 + }, 5218 + "node_modules/@opentelemetry/instrumentation-fs": { 5219 + "version": "0.30.0", 5220 + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.30.0.tgz", 5221 + "integrity": "sha512-n3Cf8YhG7reaj5dncGlRIU7iT40bxPOjsBEA5Bc1a1g6e9Qvb+JFJ7SEiMlPbUw4PBmxE3h40ltE8LZ3zVt6OA==", 5222 + "dependencies": { 5223 + "@opentelemetry/core": "^2.0.0", 5224 + "@opentelemetry/instrumentation": "^0.211.0" 5225 + }, 5226 + "engines": { 5227 + "node": "^18.19.0 || >=20.6.0" 5228 + }, 5229 + "peerDependencies": { 5230 + "@opentelemetry/api": "^1.3.0" 5231 + } 5232 + }, 5233 + "node_modules/@opentelemetry/instrumentation-generic-pool": { 5234 + "version": "0.54.0", 5235 + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.54.0.tgz", 5236 + "integrity": "sha512-8dXMBzzmEdXfH/wjuRvcJnUFeWzZHUnExkmFJ2uPfa31wmpyBCMxO59yr8f/OXXgSogNgi/uPo9KW9H7LMIZ+g==", 5237 + "dependencies": { 5238 + "@opentelemetry/instrumentation": "^0.211.0" 5239 + }, 5240 + "engines": { 5241 + "node": "^18.19.0 || >=20.6.0" 5242 + }, 5243 + "peerDependencies": { 5244 + "@opentelemetry/api": "^1.3.0" 5245 + } 5246 + }, 5247 + "node_modules/@opentelemetry/instrumentation-graphql": { 5248 + "version": "0.58.0", 5249 + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.58.0.tgz", 5250 + "integrity": "sha512-+yWVVY7fxOs3j2RixCbvue8vUuJ1inHxN2q1sduqDB0Wnkr4vOzVKRYl/Zy7B31/dcPS72D9lo/kltdOTBM3bQ==", 5251 + "dependencies": { 5252 + "@opentelemetry/instrumentation": "^0.211.0" 5253 + }, 5254 + "engines": { 5255 + "node": "^18.19.0 || >=20.6.0" 5256 + }, 5257 + "peerDependencies": { 5258 + "@opentelemetry/api": "^1.3.0" 5259 + } 5260 + }, 5261 + "node_modules/@opentelemetry/instrumentation-hapi": { 5262 + "version": "0.57.0", 5263 + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.57.0.tgz", 5264 + "integrity": "sha512-Os4THbvls8cTQTVA8ApLfZZztuuqGEeqog0XUnyRW7QVF0d/vOVBEcBCk1pazPFmllXGEdNbbat8e2fYIWdFbw==", 5265 + "dependencies": { 5266 + "@opentelemetry/core": "^2.0.0", 5267 + "@opentelemetry/instrumentation": "^0.211.0", 5268 + "@opentelemetry/semantic-conventions": "^1.27.0" 5269 + }, 5270 + "engines": { 5271 + "node": "^18.19.0 || >=20.6.0" 5272 + }, 5273 + "peerDependencies": { 5274 + "@opentelemetry/api": "^1.3.0" 5275 + } 5276 + }, 5277 + "node_modules/@opentelemetry/instrumentation-http": { 5278 + "version": "0.211.0", 5279 + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.211.0.tgz", 5280 + "integrity": "sha512-n0IaQ6oVll9PP84SjbOCwDjaJasWRHi6BLsbMLiT6tNj7QbVOkuA5sk/EfZczwI0j5uTKl1awQPivO/ldVtsqA==", 5281 + "dependencies": { 5282 + "@opentelemetry/core": "2.5.0", 5283 + "@opentelemetry/instrumentation": "0.211.0", 5284 + "@opentelemetry/semantic-conventions": "^1.29.0", 5285 + "forwarded-parse": "2.1.2" 5286 + }, 5287 + "engines": { 5288 + "node": "^18.19.0 || >=20.6.0" 5289 + }, 5290 + "peerDependencies": { 5291 + "@opentelemetry/api": "^1.3.0" 5292 + } 5293 + }, 5294 + "node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core": { 5295 + "version": "2.5.0", 5296 + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.5.0.tgz", 5297 + "integrity": "sha512-ka4H8OM6+DlUhSAZpONu0cPBtPPTQKxbxVzC4CzVx5+K4JnroJVBtDzLAMx4/3CDTJXRvVFhpFjtl4SaiTNoyQ==", 5298 + "dependencies": { 5299 + "@opentelemetry/semantic-conventions": "^1.29.0" 5300 + }, 5301 + "engines": { 5302 + "node": "^18.19.0 || >=20.6.0" 5303 + }, 5304 + "peerDependencies": { 5305 + "@opentelemetry/api": ">=1.0.0 <1.10.0" 5306 + } 5307 + }, 5308 + "node_modules/@opentelemetry/instrumentation-ioredis": { 5309 + "version": "0.59.0", 5310 + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.59.0.tgz", 5311 + "integrity": "sha512-875UxzBHWkW+P4Y45SoFM2AR8f8TzBMD8eO7QXGCyFSCUMP5s9vtt/BS8b/r2kqLyaRPK6mLbdnZznK3XzQWvw==", 5312 + "dependencies": { 5313 + "@opentelemetry/instrumentation": "^0.211.0", 5314 + "@opentelemetry/redis-common": "^0.38.2", 5315 + "@opentelemetry/semantic-conventions": "^1.33.0" 5316 + }, 5317 + "engines": { 5318 + "node": "^18.19.0 || >=20.6.0" 5319 + }, 5320 + "peerDependencies": { 5321 + "@opentelemetry/api": "^1.3.0" 5322 + } 5323 + }, 5324 + "node_modules/@opentelemetry/instrumentation-kafkajs": { 5325 + "version": "0.20.0", 5326 + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-kafkajs/-/instrumentation-kafkajs-0.20.0.tgz", 5327 + "integrity": "sha512-yJXOuWZROzj7WmYCUiyT27tIfqBrVtl1/TwVbQyWPz7rL0r1Lu7kWjD0PiVeTCIL6CrIZ7M2s8eBxsTAOxbNvw==", 5328 + "dependencies": { 5329 + "@opentelemetry/instrumentation": "^0.211.0", 5330 + "@opentelemetry/semantic-conventions": "^1.30.0" 5331 + }, 5332 + "engines": { 5333 + "node": "^18.19.0 || >=20.6.0" 5334 + }, 5335 + "peerDependencies": { 5336 + "@opentelemetry/api": "^1.3.0" 5337 + } 5338 + }, 5339 + "node_modules/@opentelemetry/instrumentation-knex": { 5340 + "version": "0.55.0", 5341 + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-knex/-/instrumentation-knex-0.55.0.tgz", 5342 + "integrity": "sha512-FtTL5DUx5Ka/8VK6P1VwnlUXPa3nrb7REvm5ddLUIeXXq4tb9pKd+/ThB1xM/IjefkRSN3z8a5t7epYw1JLBJQ==", 5343 + "dependencies": { 5344 + "@opentelemetry/instrumentation": "^0.211.0", 5345 + "@opentelemetry/semantic-conventions": "^1.33.1" 5346 + }, 5347 + "engines": { 5348 + "node": "^18.19.0 || >=20.6.0" 5349 + }, 5350 + "peerDependencies": { 5351 + "@opentelemetry/api": "^1.3.0" 5352 + } 5353 + }, 5354 + "node_modules/@opentelemetry/instrumentation-koa": { 5355 + "version": "0.59.0", 5356 + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.59.0.tgz", 5357 + "integrity": "sha512-K9o2skADV20Skdu5tG2bogPKiSpXh4KxfLjz6FuqIVvDJNibwSdu5UvyyBzRVp1rQMV6UmoIk6d3PyPtJbaGSg==", 5358 + "dependencies": { 5359 + "@opentelemetry/core": "^2.0.0", 5360 + "@opentelemetry/instrumentation": "^0.211.0", 5361 + "@opentelemetry/semantic-conventions": "^1.36.0" 5362 + }, 5363 + "engines": { 5364 + "node": "^18.19.0 || >=20.6.0" 5365 + }, 5366 + "peerDependencies": { 5367 + "@opentelemetry/api": "^1.9.0" 5368 + } 5369 + }, 5370 + "node_modules/@opentelemetry/instrumentation-lru-memoizer": { 5371 + "version": "0.55.0", 5372 + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-lru-memoizer/-/instrumentation-lru-memoizer-0.55.0.tgz", 5373 + "integrity": "sha512-FDBfT7yDGcspN0Cxbu/k8A0Pp1Jhv/m7BMTzXGpcb8ENl3tDj/51U65R5lWzUH15GaZA15HQ5A5wtafklxYj7g==", 5374 + "dependencies": { 5375 + "@opentelemetry/instrumentation": "^0.211.0" 5376 + }, 5377 + "engines": { 5378 + "node": "^18.19.0 || >=20.6.0" 5379 + }, 5380 + "peerDependencies": { 5381 + "@opentelemetry/api": "^1.3.0" 5382 + } 5383 + }, 5384 + "node_modules/@opentelemetry/instrumentation-mongodb": { 5385 + "version": "0.64.0", 5386 + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.64.0.tgz", 5387 + "integrity": "sha512-pFlCJjweTqVp7B220mCvCld1c1eYKZfQt1p3bxSbcReypKLJTwat+wbL2YZoX9jPi5X2O8tTKFEOahO5ehQGsA==", 5388 + "dependencies": { 5389 + "@opentelemetry/instrumentation": "^0.211.0", 5390 + "@opentelemetry/semantic-conventions": "^1.33.0" 5391 + }, 5392 + "engines": { 5393 + "node": "^18.19.0 || >=20.6.0" 5394 + }, 5395 + "peerDependencies": { 5396 + "@opentelemetry/api": "^1.3.0" 5397 + } 5398 + }, 5399 + "node_modules/@opentelemetry/instrumentation-mongoose": { 5400 + "version": "0.57.0", 5401 + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.57.0.tgz", 5402 + "integrity": "sha512-MthiekrU/BAJc5JZoZeJmo0OTX6ycJMiP6sMOSRTkvz5BrPMYDqaJos0OgsLPL/HpcgHP7eo5pduETuLguOqcg==", 5403 + "dependencies": { 5404 + "@opentelemetry/core": "^2.0.0", 5405 + "@opentelemetry/instrumentation": "^0.211.0", 5406 + "@opentelemetry/semantic-conventions": "^1.33.0" 5407 + }, 5408 + "engines": { 5409 + "node": "^18.19.0 || >=20.6.0" 5410 + }, 5411 + "peerDependencies": { 5412 + "@opentelemetry/api": "^1.3.0" 5413 + } 5414 + }, 5415 + "node_modules/@opentelemetry/instrumentation-mysql": { 5416 + "version": "0.57.0", 5417 + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.57.0.tgz", 5418 + "integrity": "sha512-HFS/+FcZ6Q7piM7Il7CzQ4VHhJvGMJWjx7EgCkP5AnTntSN5rb5Xi3TkYJHBKeR27A0QqPlGaCITi93fUDs++Q==", 5419 + "dependencies": { 5420 + "@opentelemetry/instrumentation": "^0.211.0", 5421 + "@opentelemetry/semantic-conventions": "^1.33.0", 5422 + "@types/mysql": "2.15.27" 5423 + }, 5424 + "engines": { 5425 + "node": "^18.19.0 || >=20.6.0" 5426 + }, 5427 + "peerDependencies": { 5428 + "@opentelemetry/api": "^1.3.0" 5429 + } 5430 + }, 5431 + "node_modules/@opentelemetry/instrumentation-mysql2": { 5432 + "version": "0.57.0", 5433 + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.57.0.tgz", 5434 + "integrity": "sha512-nHSrYAwF7+aV1E1V9yOOP9TchOodb6fjn4gFvdrdQXiRE7cMuffyLLbCZlZd4wsspBzVwOXX8mpURdRserAhNA==", 5435 + "dependencies": { 5436 + "@opentelemetry/instrumentation": "^0.211.0", 5437 + "@opentelemetry/semantic-conventions": "^1.33.0", 5438 + "@opentelemetry/sql-common": "^0.41.2" 5439 + }, 5440 + "engines": { 5441 + "node": "^18.19.0 || >=20.6.0" 5442 + }, 5443 + "peerDependencies": { 5444 + "@opentelemetry/api": "^1.3.0" 5445 + } 5446 + }, 5447 + "node_modules/@opentelemetry/instrumentation-pg": { 5448 + "version": "0.63.0", 5449 + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.63.0.tgz", 5450 + "integrity": "sha512-dKm/ODNN3GgIQVlbD6ZPxwRc3kleLf95hrRWXM+l8wYo+vSeXtEpQPT53afEf6VFWDVzJK55VGn8KMLtSve/cg==", 5451 + "dependencies": { 5452 + "@opentelemetry/core": "^2.0.0", 5453 + "@opentelemetry/instrumentation": "^0.211.0", 5454 + "@opentelemetry/semantic-conventions": "^1.34.0", 5455 + "@opentelemetry/sql-common": "^0.41.2", 5456 + "@types/pg": "8.15.6", 5457 + "@types/pg-pool": "2.0.7" 5458 + }, 5459 + "engines": { 5460 + "node": "^18.19.0 || >=20.6.0" 5461 + }, 5462 + "peerDependencies": { 5463 + "@opentelemetry/api": "^1.3.0" 5464 + } 5465 + }, 5466 + "node_modules/@opentelemetry/instrumentation-redis": { 5467 + "version": "0.59.0", 5468 + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-redis/-/instrumentation-redis-0.59.0.tgz", 5469 + "integrity": "sha512-JKv1KDDYA2chJ1PC3pLP+Q9ISMQk6h5ey+99mB57/ARk0vQPGZTTEb4h4/JlcEpy7AYT8HIGv7X6l+br03Neeg==", 5470 + "dependencies": { 5471 + "@opentelemetry/instrumentation": "^0.211.0", 5472 + "@opentelemetry/redis-common": "^0.38.2", 5473 + "@opentelemetry/semantic-conventions": "^1.27.0" 5474 + }, 5475 + "engines": { 5476 + "node": "^18.19.0 || >=20.6.0" 5477 + }, 5478 + "peerDependencies": { 5479 + "@opentelemetry/api": "^1.3.0" 5480 + } 5481 + }, 5482 + "node_modules/@opentelemetry/instrumentation-tedious": { 5483 + "version": "0.30.0", 5484 + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-tedious/-/instrumentation-tedious-0.30.0.tgz", 5485 + "integrity": "sha512-bZy9Q8jFdycKQ2pAsyuHYUHNmCxCOGdG6eg1Mn75RvQDccq832sU5OWOBnc12EFUELI6icJkhR7+EQKMBam2GA==", 5486 + "dependencies": { 5487 + "@opentelemetry/instrumentation": "^0.211.0", 5488 + "@opentelemetry/semantic-conventions": "^1.33.0", 5489 + "@types/tedious": "^4.0.14" 5490 + }, 5491 + "engines": { 5492 + "node": "^18.19.0 || >=20.6.0" 5493 + }, 5494 + "peerDependencies": { 5495 + "@opentelemetry/api": "^1.3.0" 5496 + } 5497 + }, 5498 + "node_modules/@opentelemetry/instrumentation-undici": { 5499 + "version": "0.21.0", 5500 + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-undici/-/instrumentation-undici-0.21.0.tgz", 5501 + "integrity": "sha512-gok0LPUOTz2FQ1YJMZzaHcOzDFyT64XJ8M9rNkugk923/p6lDGms/cRW1cqgqp6N6qcd6K6YdVHwPEhnx9BWbw==", 5502 + "dependencies": { 5503 + "@opentelemetry/core": "^2.0.0", 5504 + "@opentelemetry/instrumentation": "^0.211.0", 5505 + "@opentelemetry/semantic-conventions": "^1.24.0" 5506 + }, 5507 + "engines": { 5508 + "node": "^18.19.0 || >=20.6.0" 5509 + }, 5510 + "peerDependencies": { 5511 + "@opentelemetry/api": "^1.7.0" 5512 + } 5513 + }, 5514 + "node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs": { 5515 + "version": "0.211.0", 5516 + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.211.0.tgz", 5517 + "integrity": "sha512-swFdZq8MCdmdR22jTVGQDhwqDzcI4M10nhjXkLr1EsIzXgZBqm4ZlmmcWsg3TSNf+3mzgOiqveXmBLZuDi2Lgg==", 5518 + "dependencies": { 5519 + "@opentelemetry/api": "^1.3.0" 5520 + }, 5521 + "engines": { 5522 + "node": ">=8.0.0" 5523 + } 5524 + }, 5063 5525 "node_modules/@opentelemetry/otlp-exporter-base": { 5064 5526 "version": "0.208.0", 5065 5527 "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.208.0.tgz", ··· 5113 5575 "@opentelemetry/api": ">=1.3.0 <1.10.0" 5114 5576 } 5115 5577 }, 5578 + "node_modules/@opentelemetry/redis-common": { 5579 + "version": "0.38.2", 5580 + "resolved": "https://registry.npmjs.org/@opentelemetry/redis-common/-/redis-common-0.38.2.tgz", 5581 + "integrity": "sha512-1BCcU93iwSRZvDAgwUxC/DV4T/406SkMfxGqu5ojc3AvNI+I9GhV7v0J1HljsczuuhcnFLYqD5VmwVXfCGHzxA==", 5582 + "engines": { 5583 + "node": "^18.19.0 || >=20.6.0" 5584 + } 5585 + }, 5116 5586 "node_modules/@opentelemetry/resources": { 5117 - "version": "2.5.1", 5118 - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.5.1.tgz", 5119 - "integrity": "sha512-BViBCdE/GuXRlp9k7nS1w6wJvY5fnFX5XvuEtWsTAOQFIO89Eru7lGW3WbfbxtCuZ/GbrJfAziXG0w0dpxL7eQ==", 5120 - "dev": true, 5587 + "version": "2.6.0", 5588 + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.6.0.tgz", 5589 + "integrity": "sha512-D4y/+OGe3JSuYUCBxtH5T9DSAWNcvCb/nQWIga8HNtXTVPQn59j0nTBAgaAXxUVBDl40mG3Tc76b46wPlZaiJQ==", 5121 5590 "dependencies": { 5122 - "@opentelemetry/core": "2.5.1", 5591 + "@opentelemetry/core": "2.6.0", 5123 5592 "@opentelemetry/semantic-conventions": "^1.29.0" 5124 5593 }, 5125 5594 "engines": { ··· 5130 5599 } 5131 5600 }, 5132 5601 "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/core": { 5133 - "version": "2.5.1", 5134 - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.5.1.tgz", 5135 - "integrity": "sha512-Dwlc+3HAZqpgTYq0MUyZABjFkcrKTePwuiFVLjahGD8cx3enqihmpAmdgNFO1R4m/sIe5afjJrA25Prqy4NXlA==", 5136 - "dev": true, 5602 + "version": "2.6.0", 5603 + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.6.0.tgz", 5604 + "integrity": "sha512-HLM1v2cbZ4TgYN6KEOj+Bbj8rAKriOdkF9Ed3tG25FoprSiQl7kYc+RRT6fUZGOvx0oMi5U67GoFdT+XUn8zEg==", 5137 5605 "dependencies": { 5138 5606 "@opentelemetry/semantic-conventions": "^1.29.0" 5139 5607 }, ··· 5213 5681 "version": "2.2.0", 5214 5682 "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.2.0.tgz", 5215 5683 "integrity": "sha512-xWQgL0Bmctsalg6PaXExmzdedSp3gyKV8mQBwK/j9VGdCDu2fmXIb2gAehBKbkXCpJ4HPkgv3QfoJWRT4dHWbw==", 5216 - "dev": true, 5217 5684 "dependencies": { 5218 5685 "@opentelemetry/core": "2.2.0", 5219 5686 "@opentelemetry/resources": "2.2.0", ··· 5230 5697 "version": "2.2.0", 5231 5698 "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", 5232 5699 "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", 5233 - "dev": true, 5234 5700 "dependencies": { 5235 5701 "@opentelemetry/core": "2.2.0", 5236 5702 "@opentelemetry/semantic-conventions": "^1.29.0" ··· 5246 5712 "version": "1.39.0", 5247 5713 "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.39.0.tgz", 5248 5714 "integrity": "sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==", 5249 - "dev": true, 5250 5715 "engines": { 5251 5716 "node": ">=14" 5717 + } 5718 + }, 5719 + "node_modules/@opentelemetry/sql-common": { 5720 + "version": "0.41.2", 5721 + "resolved": "https://registry.npmjs.org/@opentelemetry/sql-common/-/sql-common-0.41.2.tgz", 5722 + "integrity": "sha512-4mhWm3Z8z+i508zQJ7r6Xi7y4mmoJpdvH0fZPFRkWrdp5fq7hhZ2HhYokEOLkfqSMgPR4Z9EyB3DBkbKGOqZiQ==", 5723 + "dependencies": { 5724 + "@opentelemetry/core": "^2.0.0" 5725 + }, 5726 + "engines": { 5727 + "node": "^18.19.0 || >=20.6.0" 5728 + }, 5729 + "peerDependencies": { 5730 + "@opentelemetry/api": "^1.1.0" 5252 5731 } 5253 5732 }, 5254 5733 "node_modules/@paralleldrive/cuid2": { ··· 5407 5886 "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.9.3.tgz", 5408 5887 "integrity": "sha512-4KlM1Zr/jpsqWuMXr2zmGsaOUs1zMMFh9vfCNKRZkptf+uk8I3sugHbNdo+F5B+4e2yMuOEb1zgAmvJLeuH6ww==", 5409 5888 "dev": true, 5410 - "peer": true, 5411 5889 "dependencies": { 5412 5890 "@mischnic/json-sourcemap": "^0.1.0", 5413 5891 "@parcel/cache": "2.9.3", ··· 7320 7798 "os": [ 7321 7799 "android" 7322 7800 ], 7801 + "peer": true, 7323 7802 "engines": { 7324 7803 "node": ">= 10.0.0" 7325 7804 }, ··· 7340 7819 "os": [ 7341 7820 "darwin" 7342 7821 ], 7822 + "peer": true, 7343 7823 "engines": { 7344 7824 "node": ">= 10.0.0" 7345 7825 }, ··· 7360 7840 "os": [ 7361 7841 "darwin" 7362 7842 ], 7843 + "peer": true, 7363 7844 "engines": { 7364 7845 "node": ">= 10.0.0" 7365 7846 }, ··· 7380 7861 "os": [ 7381 7862 "freebsd" 7382 7863 ], 7864 + "peer": true, 7383 7865 "engines": { 7384 7866 "node": ">= 10.0.0" 7385 7867 }, ··· 7400 7882 "os": [ 7401 7883 "linux" 7402 7884 ], 7885 + "peer": true, 7403 7886 "engines": { 7404 7887 "node": ">= 10.0.0" 7405 7888 }, ··· 7420 7903 "os": [ 7421 7904 "linux" 7422 7905 ], 7906 + "peer": true, 7423 7907 "engines": { 7424 7908 "node": ">= 10.0.0" 7425 7909 }, ··· 7440 7924 "os": [ 7441 7925 "linux" 7442 7926 ], 7927 + "peer": true, 7443 7928 "engines": { 7444 7929 "node": ">= 10.0.0" 7445 7930 }, ··· 7460 7945 "os": [ 7461 7946 "linux" 7462 7947 ], 7948 + "peer": true, 7463 7949 "engines": { 7464 7950 "node": ">= 10.0.0" 7465 7951 }, ··· 7480 7966 "os": [ 7481 7967 "linux" 7482 7968 ], 7969 + "peer": true, 7483 7970 "engines": { 7484 7971 "node": ">= 10.0.0" 7485 7972 }, ··· 7500 7987 "os": [ 7501 7988 "linux" 7502 7989 ], 7990 + "peer": true, 7503 7991 "engines": { 7504 7992 "node": ">= 10.0.0" 7505 7993 }, ··· 7520 8008 "os": [ 7521 8009 "win32" 7522 8010 ], 8011 + "peer": true, 7523 8012 "engines": { 7524 8013 "node": ">= 10.0.0" 7525 8014 }, ··· 7540 8029 "os": [ 7541 8030 "win32" 7542 8031 ], 8032 + "peer": true, 7543 8033 "engines": { 7544 8034 "node": ">= 10.0.0" 7545 8035 }, ··· 7560 8050 "os": [ 7561 8051 "win32" 7562 8052 ], 8053 + "peer": true, 7563 8054 "engines": { 7564 8055 "node": ">= 10.0.0" 7565 8056 }, ··· 8230 8721 "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", 8231 8722 "dev": true, 8232 8723 "hasInstallScript": true, 8233 - "peer": true, 8234 8724 "bin": { 8235 8725 "esbuild": "bin/esbuild" 8236 8726 }, ··· 8395 8885 "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", 8396 8886 "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", 8397 8887 "dev": true, 8398 - "peer": true, 8399 8888 "bin": { 8400 8889 "tsc": "bin/tsc", 8401 8890 "tsserver": "bin/tsserver" ··· 9221 9710 "integrity": "sha512-PMrNdOGVIiUczixF+AkodxIigAr3OM2LMfs565uTPZaIUip7S+njoaZRoIT66VJJviWtbLtzJHR49YJtIRIiWQ==", 9222 9711 "dev": true 9223 9712 }, 9713 + "node_modules/@prisma/instrumentation": { 9714 + "version": "7.2.0", 9715 + "resolved": "https://registry.npmjs.org/@prisma/instrumentation/-/instrumentation-7.2.0.tgz", 9716 + "integrity": "sha512-Rh9Z4x5kEj1OdARd7U18AtVrnL6rmLSI0qYShaB4W7Wx5BKbgzndWF+QnuzMb7GLfVdlT5aYCXoPQVYuYtVu0g==", 9717 + "dependencies": { 9718 + "@opentelemetry/instrumentation": "^0.207.0" 9719 + }, 9720 + "peerDependencies": { 9721 + "@opentelemetry/api": "^1.8" 9722 + } 9723 + }, 9724 + "node_modules/@prisma/instrumentation/node_modules/@opentelemetry/api-logs": { 9725 + "version": "0.207.0", 9726 + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.207.0.tgz", 9727 + "integrity": "sha512-lAb0jQRVyleQQGiuuvCOTDVspc14nx6XJjP4FspJ1sNARo3Regq4ZZbrc3rN4b1TYSuUCvgH+UXUPug4SLOqEQ==", 9728 + "dependencies": { 9729 + "@opentelemetry/api": "^1.3.0" 9730 + }, 9731 + "engines": { 9732 + "node": ">=8.0.0" 9733 + } 9734 + }, 9735 + "node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation": { 9736 + "version": "0.207.0", 9737 + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.207.0.tgz", 9738 + "integrity": "sha512-y6eeli9+TLKnznrR8AZlQMSJT7wILpXH+6EYq5Vf/4Ao+huI7EedxQHwRgVUOMLFbe7VFDvHJrX9/f4lcwnJsA==", 9739 + "dependencies": { 9740 + "@opentelemetry/api-logs": "0.207.0", 9741 + "import-in-the-middle": "^2.0.0", 9742 + "require-in-the-middle": "^8.0.0" 9743 + }, 9744 + "engines": { 9745 + "node": "^18.19.0 || >=20.6.0" 9746 + }, 9747 + "peerDependencies": { 9748 + "@opentelemetry/api": "^1.3.0" 9749 + } 9750 + }, 9224 9751 "node_modules/@protobufjs/aspromise": { 9225 9752 "version": "1.1.2", 9226 9753 "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", ··· 9621 10148 "resolved": "src/types", 9622 10149 "link": true 9623 10150 }, 10151 + "node_modules/@sentry/core": { 10152 + "version": "10.42.0", 10153 + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.42.0.tgz", 10154 + "integrity": "sha512-L4rMrXMqUKBanpjpMT+TuAVk6xAijz6AWM6RiEYpohAr7SGcCEc1/T0+Ep1eLV8+pwWacfU27OvELIyNeOnGzA==", 10155 + "engines": { 10156 + "node": ">=18" 10157 + } 10158 + }, 10159 + "node_modules/@sentry/node": { 10160 + "version": "10.42.0", 10161 + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-10.42.0.tgz", 10162 + "integrity": "sha512-ZZfU3Fnni7Aj0lTX4e3QpY3UxK4FGuzfM20316UAJycBGnripm+sDHwcekPMGfLnk/FrN9wa1atspVlHvOI0WQ==", 10163 + "dependencies": { 10164 + "@fastify/otel": "0.16.0", 10165 + "@opentelemetry/api": "^1.9.0", 10166 + "@opentelemetry/context-async-hooks": "^2.5.1", 10167 + "@opentelemetry/core": "^2.5.1", 10168 + "@opentelemetry/instrumentation": "^0.211.0", 10169 + "@opentelemetry/instrumentation-amqplib": "0.58.0", 10170 + "@opentelemetry/instrumentation-connect": "0.54.0", 10171 + "@opentelemetry/instrumentation-dataloader": "0.28.0", 10172 + "@opentelemetry/instrumentation-express": "0.59.0", 10173 + "@opentelemetry/instrumentation-fs": "0.30.0", 10174 + "@opentelemetry/instrumentation-generic-pool": "0.54.0", 10175 + "@opentelemetry/instrumentation-graphql": "0.58.0", 10176 + "@opentelemetry/instrumentation-hapi": "0.57.0", 10177 + "@opentelemetry/instrumentation-http": "0.211.0", 10178 + "@opentelemetry/instrumentation-ioredis": "0.59.0", 10179 + "@opentelemetry/instrumentation-kafkajs": "0.20.0", 10180 + "@opentelemetry/instrumentation-knex": "0.55.0", 10181 + "@opentelemetry/instrumentation-koa": "0.59.0", 10182 + "@opentelemetry/instrumentation-lru-memoizer": "0.55.0", 10183 + "@opentelemetry/instrumentation-mongodb": "0.64.0", 10184 + "@opentelemetry/instrumentation-mongoose": "0.57.0", 10185 + "@opentelemetry/instrumentation-mysql": "0.57.0", 10186 + "@opentelemetry/instrumentation-mysql2": "0.57.0", 10187 + "@opentelemetry/instrumentation-pg": "0.63.0", 10188 + "@opentelemetry/instrumentation-redis": "0.59.0", 10189 + "@opentelemetry/instrumentation-tedious": "0.30.0", 10190 + "@opentelemetry/instrumentation-undici": "0.21.0", 10191 + "@opentelemetry/resources": "^2.5.1", 10192 + "@opentelemetry/sdk-trace-base": "^2.5.1", 10193 + "@opentelemetry/semantic-conventions": "^1.39.0", 10194 + "@prisma/instrumentation": "7.2.0", 10195 + "@sentry/core": "10.42.0", 10196 + "@sentry/node-core": "10.42.0", 10197 + "@sentry/opentelemetry": "10.42.0", 10198 + "import-in-the-middle": "^2.0.6" 10199 + }, 10200 + "engines": { 10201 + "node": ">=18" 10202 + } 10203 + }, 10204 + "node_modules/@sentry/node-core": { 10205 + "version": "10.42.0", 10206 + "resolved": "https://registry.npmjs.org/@sentry/node-core/-/node-core-10.42.0.tgz", 10207 + "integrity": "sha512-9tf3fPV6M071aps72D+PEtdQPTuj+SuqO2+PpTfdPP5ZL4TTKYo3VK0li76SL+5wGdTFGV5qmsokHq9IRBA0iA==", 10208 + "dependencies": { 10209 + "@sentry/core": "10.42.0", 10210 + "@sentry/opentelemetry": "10.42.0", 10211 + "import-in-the-middle": "^2.0.6" 10212 + }, 10213 + "engines": { 10214 + "node": ">=18" 10215 + }, 10216 + "peerDependencies": { 10217 + "@opentelemetry/api": "^1.9.0", 10218 + "@opentelemetry/context-async-hooks": "^1.30.1 || ^2.1.0", 10219 + "@opentelemetry/core": "^1.30.1 || ^2.1.0", 10220 + "@opentelemetry/instrumentation": ">=0.57.1 <1", 10221 + "@opentelemetry/resources": "^1.30.1 || ^2.1.0", 10222 + "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.1.0", 10223 + "@opentelemetry/semantic-conventions": "^1.39.0" 10224 + }, 10225 + "peerDependenciesMeta": { 10226 + "@opentelemetry/api": { 10227 + "optional": true 10228 + }, 10229 + "@opentelemetry/context-async-hooks": { 10230 + "optional": true 10231 + }, 10232 + "@opentelemetry/core": { 10233 + "optional": true 10234 + }, 10235 + "@opentelemetry/instrumentation": { 10236 + "optional": true 10237 + }, 10238 + "@opentelemetry/resources": { 10239 + "optional": true 10240 + }, 10241 + "@opentelemetry/sdk-trace-base": { 10242 + "optional": true 10243 + }, 10244 + "@opentelemetry/semantic-conventions": { 10245 + "optional": true 10246 + } 10247 + } 10248 + }, 10249 + "node_modules/@sentry/node/node_modules/@opentelemetry/core": { 10250 + "version": "2.6.0", 10251 + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.6.0.tgz", 10252 + "integrity": "sha512-HLM1v2cbZ4TgYN6KEOj+Bbj8rAKriOdkF9Ed3tG25FoprSiQl7kYc+RRT6fUZGOvx0oMi5U67GoFdT+XUn8zEg==", 10253 + "dependencies": { 10254 + "@opentelemetry/semantic-conventions": "^1.29.0" 10255 + }, 10256 + "engines": { 10257 + "node": "^18.19.0 || >=20.6.0" 10258 + }, 10259 + "peerDependencies": { 10260 + "@opentelemetry/api": ">=1.0.0 <1.10.0" 10261 + } 10262 + }, 10263 + "node_modules/@sentry/node/node_modules/@opentelemetry/sdk-trace-base": { 10264 + "version": "2.6.0", 10265 + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.6.0.tgz", 10266 + "integrity": "sha512-g/OZVkqlxllgFM7qMKqbPV9c1DUPhQ7d4n3pgZFcrnrNft9eJXZM2TNHTPYREJBrtNdRytYyvwjgL5geDKl3EQ==", 10267 + "dependencies": { 10268 + "@opentelemetry/core": "2.6.0", 10269 + "@opentelemetry/resources": "2.6.0", 10270 + "@opentelemetry/semantic-conventions": "^1.29.0" 10271 + }, 10272 + "engines": { 10273 + "node": "^18.19.0 || >=20.6.0" 10274 + }, 10275 + "peerDependencies": { 10276 + "@opentelemetry/api": ">=1.3.0 <1.10.0" 10277 + } 10278 + }, 10279 + "node_modules/@sentry/opentelemetry": { 10280 + "version": "10.42.0", 10281 + "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-10.42.0.tgz", 10282 + "integrity": "sha512-5vsYz683iihzlIj3sT1+tEixf0awwXK86a+aYsnMHrTXJDrkBDq4U0ZT+yxdPfJlkaxRtYycFR08SXr2pSm7Eg==", 10283 + "dependencies": { 10284 + "@sentry/core": "10.42.0" 10285 + }, 10286 + "engines": { 10287 + "node": ">=18" 10288 + }, 10289 + "peerDependencies": { 10290 + "@opentelemetry/api": "^1.9.0", 10291 + "@opentelemetry/context-async-hooks": "^1.30.1 || ^2.1.0", 10292 + "@opentelemetry/core": "^1.30.1 || ^2.1.0", 10293 + "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.1.0", 10294 + "@opentelemetry/semantic-conventions": "^1.39.0" 10295 + } 10296 + }, 9624 10297 "node_modules/@shikijs/core": { 9625 10298 "version": "3.20.0", 9626 10299 "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.20.0.tgz", ··· 9812 10485 "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.6.14.tgz", 9813 10486 "integrity": "sha512-1P/w4FSNRqP8j3JQBOi3yGt8PVOgSRbP66Ok520T78eJBeqx9ukCfl912PQZ7SPbW3TIunBwLXMZOjZwBB/JmA==", 9814 10487 "dev": true, 10488 + "peer": true, 9815 10489 "dependencies": { 9816 10490 "@storybook/theming": "8.6.14", 9817 10491 "better-opn": "^3.0.2", ··· 9843 10517 "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.6.14.tgz", 9844 10518 "integrity": "sha512-r4y+LsiB37V5hzpQo+BM10PaCsp7YlZ0YcZzQP1OCkPlYXmUAFy2VvDKaFRpD8IeNPKug2u4iFm/laDEbs03dg==", 9845 10519 "dev": true, 10520 + "peer": true, 9846 10521 "funding": { 9847 10522 "type": "opencollective", 9848 10523 "url": "https://opencollective.com/storybook" ··· 10177 10852 "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz", 10178 10853 "integrity": "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==", 10179 10854 "dev": true, 10180 - "peer": true, 10181 10855 "dependencies": { 10182 10856 "@babel/core": "^7.19.6", 10183 10857 "@svgr/babel-preset": "^6.5.1", ··· 10413 11087 "os": [ 10414 11088 "darwin" 10415 11089 ], 11090 + "peer": true, 10416 11091 "engines": { 10417 11092 "node": ">=10" 10418 11093 } ··· 10429 11104 "os": [ 10430 11105 "darwin" 10431 11106 ], 11107 + "peer": true, 10432 11108 "engines": { 10433 11109 "node": ">=10" 10434 11110 } ··· 10445 11121 "os": [ 10446 11122 "linux" 10447 11123 ], 11124 + "peer": true, 10448 11125 "engines": { 10449 11126 "node": ">=10" 10450 11127 } ··· 10461 11138 "os": [ 10462 11139 "linux" 10463 11140 ], 11141 + "peer": true, 10464 11142 "engines": { 10465 11143 "node": ">=10" 10466 11144 } ··· 10477 11155 "os": [ 10478 11156 "linux" 10479 11157 ], 11158 + "peer": true, 10480 11159 "engines": { 10481 11160 "node": ">=10" 10482 11161 } ··· 10493 11172 "os": [ 10494 11173 "linux" 10495 11174 ], 11175 + "peer": true, 10496 11176 "engines": { 10497 11177 "node": ">=10" 10498 11178 } ··· 10509 11189 "os": [ 10510 11190 "linux" 10511 11191 ], 11192 + "peer": true, 10512 11193 "engines": { 10513 11194 "node": ">=10" 10514 11195 } ··· 10525 11206 "os": [ 10526 11207 "win32" 10527 11208 ], 11209 + "peer": true, 10528 11210 "engines": { 10529 11211 "node": ">=10" 10530 11212 } ··· 10541 11223 "os": [ 10542 11224 "win32" 10543 11225 ], 11226 + "peer": true, 10544 11227 "engines": { 10545 11228 "node": ">=10" 10546 11229 } ··· 10557 11240 "os": [ 10558 11241 "win32" 10559 11242 ], 11243 + "peer": true, 10560 11244 "engines": { 10561 11245 "node": ">=10" 10562 11246 } ··· 10643 11327 "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", 10644 11328 "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", 10645 11329 "dev": true, 11330 + "peer": true, 10646 11331 "dependencies": { 10647 11332 "@babel/code-frame": "^7.10.4", 10648 11333 "@babel/runtime": "^7.12.5", ··· 10662 11347 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 10663 11348 "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 10664 11349 "dev": true, 11350 + "peer": true, 10665 11351 "engines": { 10666 11352 "node": ">=8" 10667 11353 } ··· 10671 11357 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", 10672 11358 "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", 10673 11359 "dev": true, 11360 + "peer": true, 10674 11361 "engines": { 10675 11362 "node": ">=10" 10676 11363 }, ··· 10683 11370 "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", 10684 11371 "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", 10685 11372 "dev": true, 11373 + "peer": true, 10686 11374 "dependencies": { 10687 11375 "dequal": "^2.0.3" 10688 11376 } ··· 10692 11380 "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", 10693 11381 "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", 10694 11382 "dev": true, 11383 + "peer": true, 10695 11384 "dependencies": { 10696 11385 "ansi-regex": "^5.0.1", 10697 11386 "ansi-styles": "^5.0.0", ··· 10705 11394 "version": "17.0.2", 10706 11395 "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", 10707 11396 "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", 10708 - "dev": true 11397 + "dev": true, 11398 + "peer": true 10709 11399 }, 10710 11400 "node_modules/@testing-library/jest-dom": { 10711 11401 "version": "6.9.1", ··· 10784 11474 "version": "5.0.4", 10785 11475 "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", 10786 11476 "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", 10787 - "dev": true 11477 + "dev": true, 11478 + "peer": true 10788 11479 }, 10789 11480 "node_modules/@types/babel__core": { 10790 11481 "version": "7.20.5", ··· 10861 11552 "version": "3.4.38", 10862 11553 "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", 10863 11554 "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", 10864 - "dev": true, 10865 11555 "dependencies": { 10866 11556 "@types/node": "*" 10867 11557 } ··· 10949 11639 "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.3.tgz", 10950 11640 "integrity": "sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==", 10951 11641 "dev": true, 10952 - "peer": true, 10953 11642 "dependencies": { 10954 11643 "@types/body-parser": "*", 10955 11644 "@types/express-serve-static-core": "^5.0.0", ··· 11125 11814 "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", 11126 11815 "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==" 11127 11816 }, 11817 + "node_modules/@types/mysql": { 11818 + "version": "2.15.27", 11819 + "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.27.tgz", 11820 + "integrity": "sha512-YfWiV16IY0OeBfBCk8+hXKmdTKrKlwKN1MNKAPBu5JYxLwBEZl7QzeEpGnlZb3VMGJrrGmB84gXiH+ofs/TezA==", 11821 + "dependencies": { 11822 + "@types/node": "*" 11823 + } 11824 + }, 11128 11825 "node_modules/@types/node": { 11129 11826 "version": "20.19.23", 11130 11827 "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.23.tgz", 11131 11828 "integrity": "sha512-yIdlVVVHXpmqRhtyovZAcSy0MiPcYWGkoO4CGe/+jpP0hmNuihm4XhHbADpK++MsiLHP5MVlv+bcgdF99kSiFQ==", 11132 - "dev": true, 11133 - "peer": true, 11134 11829 "dependencies": { 11135 11830 "undici-types": "~6.21.0" 11136 11831 } ··· 11142 11837 "dev": true 11143 11838 }, 11144 11839 "node_modules/@types/pg": { 11145 - "version": "8.15.5", 11146 - "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.15.5.tgz", 11147 - "integrity": "sha512-LF7lF6zWEKxuT3/OR8wAZGzkg4ENGXFNyiV/JeOt9z5B+0ZVwbql9McqX5c/WStFq1GaGso7H1AzP/qSzmlCKQ==", 11148 - "dev": true, 11149 - "peer": true, 11840 + "version": "8.15.6", 11841 + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.15.6.tgz", 11842 + "integrity": "sha512-NoaMtzhxOrubeL/7UZuNTrejB4MPAJ0RpxZqXQf2qXuVlTPuG6Y8p4u9dKRaue4yjmC7ZhzVO2/Yyyn25znrPQ==", 11150 11843 "dependencies": { 11151 11844 "@types/node": "*", 11152 11845 "pg-protocol": "*", 11153 11846 "pg-types": "^2.2.0" 11154 11847 } 11155 11848 }, 11849 + "node_modules/@types/pg-pool": { 11850 + "version": "2.0.7", 11851 + "resolved": "https://registry.npmjs.org/@types/pg-pool/-/pg-pool-2.0.7.tgz", 11852 + "integrity": "sha512-U4CwmGVQcbEuqpyju8/ptOKg6gEC+Tqsvj2xS9o1g71bUh8twxnC6ZL5rZKCsGN0iyH0CwgUyc9VR5owNQF9Ng==", 11853 + "dependencies": { 11854 + "@types/pg": "*" 11855 + } 11856 + }, 11156 11857 "node_modules/@types/qs": { 11157 11858 "version": "6.14.0", 11158 11859 "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", ··· 11169 11870 "version": "19.1.8", 11170 11871 "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.8.tgz", 11171 11872 "integrity": "sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==", 11172 - "peer": true, 11173 11873 "dependencies": { 11174 11874 "csstype": "^3.0.2" 11175 11875 } ··· 11286 11986 "@types/superagent": "^8.1.0" 11287 11987 } 11288 11988 }, 11989 + "node_modules/@types/tedious": { 11990 + "version": "4.0.14", 11991 + "resolved": "https://registry.npmjs.org/@types/tedious/-/tedious-4.0.14.tgz", 11992 + "integrity": "sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==", 11993 + "dependencies": { 11994 + "@types/node": "*" 11995 + } 11996 + }, 11289 11997 "node_modules/@types/tough-cookie": { 11290 11998 "version": "4.0.5", 11291 11999 "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", ··· 11361 12069 "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.2.tgz", 11362 12070 "integrity": "sha512-BnOroVl1SgrPLywqxyqdJ4l3S2MsKVLDVxZvjI1Eoe8ev2r3kGDo+PcMihNmDE+6/KjkTubSJnmqGZZjQSBq/g==", 11363 12071 "dev": true, 11364 - "peer": true, 11365 12072 "dependencies": { 11366 12073 "@typescript-eslint/scope-manager": "8.46.2", 11367 12074 "@typescript-eslint/types": "8.46.2", ··· 11941 12648 "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", 11942 12649 "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", 11943 12650 "dev": true, 11944 - "peer": true, 11945 12651 "dependencies": { 11946 12652 "@vitest/utils": "3.2.4", 11947 12653 "pathe": "^2.0.3", ··· 12226 12932 "version": "8.15.0", 12227 12933 "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", 12228 12934 "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", 12229 - "peer": true, 12230 12935 "bin": { 12231 12936 "acorn": "bin/acorn" 12232 12937 }, ··· 12234 12939 "node": ">=0.4.0" 12235 12940 } 12236 12941 }, 12942 + "node_modules/acorn-import-attributes": { 12943 + "version": "1.9.5", 12944 + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", 12945 + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", 12946 + "peerDependencies": { 12947 + "acorn": "^8" 12948 + } 12949 + }, 12237 12950 "node_modules/acorn-jsx": { 12238 12951 "version": "5.3.2", 12239 12952 "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", ··· 12246 12959 "version": "1.7.1", 12247 12960 "resolved": "https://registry.npmjs.org/aframe/-/aframe-1.7.1.tgz", 12248 12961 "integrity": "sha512-dcc7PWI5z8pyJ0s2W0mUd8d83339frgMXhUvWr1yxkdgg6zSExkuQwsSJjiNn7XWKMUUqKYDvV/WzQQRA+OBXA==", 12962 + "peer": true, 12249 12963 "dependencies": { 12250 12964 "buffer": "^6.0.3", 12251 12965 "debug": "^4.3.4", ··· 12293 13007 "name": "super-three", 12294 13008 "version": "0.173.5", 12295 13009 "resolved": "https://registry.npmjs.org/super-three/-/super-three-0.173.5.tgz", 12296 - "integrity": "sha512-ecjojbhUg/5QrixwqF4s6gvtJap9XQz7TcnFUX/J8Yosgb2eE2ZUqsyqr/JczFG//6hwIaZPeAa9M5DNaM1dmQ==" 13010 + "integrity": "sha512-ecjojbhUg/5QrixwqF4s6gvtJap9XQz7TcnFUX/J8Yosgb2eE2ZUqsyqr/JczFG//6hwIaZPeAa9M5DNaM1dmQ==", 13011 + "peer": true 12297 13012 }, 12298 13013 "node_modules/agent-base": { 12299 13014 "version": "7.1.4", ··· 12323 13038 "node_modules/an-array": { 12324 13039 "version": "1.0.0", 12325 13040 "resolved": "https://registry.npmjs.org/an-array/-/an-array-1.0.0.tgz", 12326 - "integrity": "sha512-M175GYI7RmsYu24Ok383yZQa3eveDfNnmhTe3OQ3bm70bEovz2gWenH+ST/n32M8lrwLWk74hcPds5CDRPe2wg==" 13041 + "integrity": "sha512-M175GYI7RmsYu24Ok383yZQa3eveDfNnmhTe3OQ3bm70bEovz2gWenH+ST/n32M8lrwLWk74hcPds5CDRPe2wg==", 13042 + "peer": true 12327 13043 }, 12328 13044 "node_modules/ansi-escapes": { 12329 13045 "version": "4.3.2", ··· 12508 13224 "version": "1.0.1", 12509 13225 "resolved": "https://registry.npmjs.org/array-shuffle/-/array-shuffle-1.0.1.tgz", 12510 13226 "integrity": "sha512-PBqgo1Y2XWSksBzq3GFPEb798ZrW2snAcmr4drbVeF/6MT/5aBlkGJEvu5A/CzXHf4EjbHOj/ZowatjlIiVidA==", 13227 + "peer": true, 12511 13228 "engines": { 12512 13229 "node": ">=0.10.0" 12513 13230 } ··· 12638 13355 "node_modules/as-number": { 12639 13356 "version": "1.0.0", 12640 13357 "resolved": "https://registry.npmjs.org/as-number/-/as-number-1.0.0.tgz", 12641 - "integrity": "sha512-HkI/zLo2AbSRO4fqVkmyf3hms0bJDs3iboHqTrNuwTiCRvdYXM7HFhfhB6Dk51anV2LM/IMB83mtK9mHw4FlAg==" 13358 + "integrity": "sha512-HkI/zLo2AbSRO4fqVkmyf3hms0bJDs3iboHqTrNuwTiCRvdYXM7HFhfhB6Dk51anV2LM/IMB83mtK9mHw4FlAg==", 13359 + "peer": true 12642 13360 }, 12643 13361 "node_modules/asap": { 12644 13362 "version": "2.0.6", ··· 13294 14012 "version": "1.2.1", 13295 14013 "resolved": "https://registry.npmjs.org/browser-assert/-/browser-assert-1.2.1.tgz", 13296 14014 "integrity": "sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==", 13297 - "dev": true 14015 + "dev": true, 14016 + "peer": true 13298 14017 }, 13299 14018 "node_modules/browserslist": { 13300 14019 "version": "4.27.0", ··· 13315 14034 "url": "https://github.com/sponsors/ai" 13316 14035 } 13317 14036 ], 13318 - "peer": true, 13319 14037 "dependencies": { 13320 14038 "baseline-browser-mapping": "^2.8.19", 13321 14039 "caniuse-lite": "^1.0.30001751", ··· 13387 14105 "version": "0.0.1", 13388 14106 "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", 13389 14107 "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", 14108 + "peer": true, 13390 14109 "engines": { 13391 14110 "node": ">=0.4.0" 13392 14111 } ··· 13674 14393 "version": "2.7.0", 13675 14394 "resolved": "https://registry.npmjs.org/centra/-/centra-2.7.0.tgz", 13676 14395 "integrity": "sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==", 14396 + "peer": true, 13677 14397 "dependencies": { 13678 14398 "follow-redirects": "^1.15.6" 13679 14399 } ··· 14117 14837 "version": "1.0.3", 14118 14838 "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", 14119 14839 "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", 14840 + "peer": true, 14120 14841 "dependencies": { 14121 14842 "mimic-response": "^1.0.0" 14122 14843 }, ··· 14128 14849 "version": "1.0.1", 14129 14850 "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", 14130 14851 "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", 14852 + "peer": true, 14131 14853 "engines": { 14132 14854 "node": ">=4" 14133 14855 } ··· 14858 15580 "version": "3.0.0", 14859 15581 "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", 14860 15582 "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", 14861 - "peer": true, 14862 15583 "engines": { 14863 15584 "node": ">=12" 14864 15585 } ··· 15019 15740 "node_modules/dayjs": { 15020 15741 "version": "1.11.18", 15021 15742 "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.18.tgz", 15022 - "integrity": "sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==", 15023 - "peer": true 15743 + "integrity": "sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==" 15024 15744 }, 15025 15745 "node_modules/debug": { 15026 15746 "version": "4.4.3", ··· 15101 15821 "version": "2.0.0", 15102 15822 "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-2.0.0.tgz", 15103 15823 "integrity": "sha512-2QhG3Kxulu4XIF3WL5C5x0sc/S17JLgm1SfvDfIRsR/5m7ZGmcejII7fZ2RyWhN0UWIJm0TNM/eKow6LAn3evQ==", 15824 + "peer": true, 15104 15825 "dependencies": { 15105 15826 "is-obj": "^1.0.0" 15106 15827 }, ··· 15440 16161 "version": "0.5.16", 15441 16162 "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", 15442 16163 "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", 15443 - "dev": true 16164 + "dev": true, 16165 + "peer": true 15444 16166 }, 15445 16167 "node_modules/dom-helpers": { 15446 16168 "version": "5.2.1", ··· 15477 16199 "node_modules/dom-walk": { 15478 16200 "version": "0.1.2", 15479 16201 "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", 15480 - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" 16202 + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", 16203 + "peer": true 15481 16204 }, 15482 16205 "node_modules/domelementtype": { 15483 16206 "version": "2.3.0", ··· 15703 16426 "version": "2.0.0", 15704 16427 "resolved": "https://registry.npmjs.org/dtype/-/dtype-2.0.0.tgz", 15705 16428 "integrity": "sha512-s2YVcLKdFGS0hpFqJaTwscsyt0E8nNFdmo73Ocd81xNPj4URI4rj6D60A+vFMIw7BXWlb4yRkEwfBqcZzPGiZg==", 16429 + "peer": true, 15706 16430 "engines": { 15707 16431 "node": ">= 0.8.0" 15708 16432 } ··· 15723 16447 "node_modules/duplexer3": { 15724 16448 "version": "0.1.5", 15725 16449 "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", 15726 - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" 16450 + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", 16451 + "peer": true 15727 16452 }, 15728 16453 "node_modules/eastasianwidth": { 15729 16454 "version": "0.2.0", ··· 15749 16474 "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", 15750 16475 "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", 15751 16476 "dev": true, 15752 - "peer": true, 15753 16477 "dependencies": { 15754 16478 "jake": "^10.8.5" 15755 16479 }, ··· 15838 16562 "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", 15839 16563 "dev": true, 15840 16564 "optional": true, 16565 + "peer": true, 15841 16566 "dependencies": { 15842 16567 "prr": "~1.0.1" 15843 16568 }, ··· 16062 16787 "integrity": "sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==", 16063 16788 "dev": true, 16064 16789 "hasInstallScript": true, 16065 - "peer": true, 16066 16790 "bin": { 16067 16791 "esbuild": "bin/esbuild" 16068 16792 }, ··· 16141 16865 "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.38.0.tgz", 16142 16866 "integrity": "sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==", 16143 16867 "dev": true, 16144 - "peer": true, 16145 16868 "dependencies": { 16146 16869 "@eslint-community/eslint-utils": "^4.8.0", 16147 16870 "@eslint-community/regexpp": "^4.12.1", ··· 16228 16951 "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", 16229 16952 "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", 16230 16953 "dev": true, 16231 - "peer": true, 16232 16954 "bin": { 16233 16955 "eslint-config-prettier": "bin/cli.js" 16234 16956 }, ··· 16324 17046 "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", 16325 17047 "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", 16326 17048 "dev": true, 16327 - "peer": true, 16328 17049 "dependencies": { 16329 17050 "@rtsao/scc": "^1.1.0", 16330 17051 "array-includes": "^3.1.9", ··· 17346 18067 "url": "https://github.com/sponsors/RubenVerborgh" 17347 18068 } 17348 18069 ], 18070 + "peer": true, 17349 18071 "engines": { 17350 18072 "node": ">=4.0" 17351 18073 }, ··· 17460 18182 "engines": { 17461 18183 "node": ">= 0.6" 17462 18184 } 18185 + }, 18186 + "node_modules/forwarded-parse": { 18187 + "version": "2.1.2", 18188 + "resolved": "https://registry.npmjs.org/forwarded-parse/-/forwarded-parse-2.1.2.tgz", 18189 + "integrity": "sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==" 17463 18190 }, 17464 18191 "node_modules/fraction.js": { 17465 18192 "version": "4.3.7", ··· 17727 18454 "version": "4.4.0", 17728 18455 "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", 17729 18456 "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", 18457 + "peer": true, 17730 18458 "dependencies": { 17731 18459 "min-document": "^2.19.0", 17732 18460 "process": "^0.11.10" ··· 17865 18593 "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", 17866 18594 "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", 17867 18595 "dev": true, 17868 - "peer": true, 17869 18596 "dependencies": { 17870 18597 "minimist": "^1.2.5", 17871 18598 "neo-async": "^2.6.2", ··· 18321 19048 "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", 18322 19049 "dev": true, 18323 19050 "optional": true, 19051 + "peer": true, 18324 19052 "bin": { 18325 19053 "image-size": "bin/image-size.js" 18326 19054 }, ··· 18350 19078 "url": "https://github.com/sponsors/sindresorhus" 18351 19079 } 18352 19080 }, 19081 + "node_modules/import-in-the-middle": { 19082 + "version": "2.0.6", 19083 + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-2.0.6.tgz", 19084 + "integrity": "sha512-3vZV3jX0XRFW3EJDTwzWoZa+RH1b8eTTx6YOCjglrLyPuepwoBti1k3L2dKwdCUrnVEfc5CuRuGstaC/uQJJaw==", 19085 + "dependencies": { 19086 + "acorn": "^8.15.0", 19087 + "acorn-import-attributes": "^1.9.5", 19088 + "cjs-module-lexer": "^2.2.0", 19089 + "module-details-from-path": "^1.0.4" 19090 + } 19091 + }, 19092 + "node_modules/import-in-the-middle/node_modules/cjs-module-lexer": { 19093 + "version": "2.2.0", 19094 + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", 19095 + "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==" 19096 + }, 18353 19097 "node_modules/import-local": { 18354 19098 "version": "3.2.0", 18355 19099 "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", ··· 18528 19272 "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", 18529 19273 "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", 18530 19274 "dev": true, 19275 + "peer": true, 18531 19276 "dependencies": { 18532 19277 "call-bound": "^1.0.2", 18533 19278 "has-tostringtag": "^1.0.2" ··· 18627 19372 "node_modules/is-buffer": { 18628 19373 "version": "1.1.6", 18629 19374 "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 18630 - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" 19375 + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 19376 + "peer": true 18631 19377 }, 18632 19378 "node_modules/is-bun-module": { 18633 19379 "version": "2.0.0", ··· 18758 19504 "node_modules/is-function": { 18759 19505 "version": "1.0.2", 18760 19506 "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", 18761 - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" 19507 + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", 19508 + "peer": true 18762 19509 }, 18763 19510 "node_modules/is-generator-fn": { 18764 19511 "version": "2.1.0", ··· 18868 19615 "version": "1.0.1", 18869 19616 "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", 18870 19617 "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", 19618 + "peer": true, 18871 19619 "engines": { 18872 19620 "node": ">=0.10.0" 18873 19621 } ··· 19239 19987 "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", 19240 19988 "dev": true, 19241 19989 "license": "MIT", 19242 - "peer": true, 19243 19990 "dependencies": { 19244 19991 "@jest/core": "^29.7.0", 19245 19992 "@jest/types": "^29.6.3", ··· 19947 20694 "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.8.0.tgz", 19948 20695 "integrity": "sha512-iZ8Bdb84lWRuGHamRXFyML07r21pcwBrLkHEuHgEY5UbCouBwv7ECknDRKzsQIXMiqpPymqtIf8TC/shYKB5rw==", 19949 20696 "dev": true, 20697 + "peer": true, 19950 20698 "engines": { 19951 20699 "node": ">=12.0.0" 19952 20700 } ··· 19956 20704 "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.1.0.tgz", 19957 20705 "integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==", 19958 20706 "dev": true, 19959 - "peer": true, 19960 20707 "dependencies": { 19961 20708 "cssstyle": "^4.2.1", 19962 20709 "data-urls": "^5.0.0", ··· 20190 20937 "version": "1.3.4", 20191 20938 "resolved": "https://registry.npmjs.org/layout-bmfont-text/-/layout-bmfont-text-1.3.4.tgz", 20192 20939 "integrity": "sha512-mceomHZ8W7pSKQhTdLvOe1Im4n37u8xa5Gr0J3KPCHRMO/9o7+goWIOzZcUUd+Xgzy3+22bvoIQ0OaN3LRtgaw==", 20940 + "peer": true, 20193 20941 "dependencies": { 20194 20942 "as-number": "^1.0.0", 20195 20943 "word-wrapper": "^1.0.7", ··· 20276 21024 "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", 20277 21025 "dev": true, 20278 21026 "optional": true, 21027 + "peer": true, 20279 21028 "dependencies": { 20280 21029 "pify": "^4.0.1", 20281 21030 "semver": "^5.6.0" ··· 20290 21039 "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 20291 21040 "dev": true, 20292 21041 "optional": true, 21042 + "peer": true, 20293 21043 "bin": { 20294 21044 "mime": "cli.js" 20295 21045 }, ··· 20303 21053 "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", 20304 21054 "dev": true, 20305 21055 "optional": true, 21056 + "peer": true, 20306 21057 "bin": { 20307 21058 "semver": "bin/semver" 20308 21059 } ··· 20313 21064 "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 20314 21065 "dev": true, 20315 21066 "optional": true, 21067 + "peer": true, 20316 21068 "engines": { 20317 21069 "node": ">=0.10.0" 20318 21070 } ··· 20380 21132 "os": [ 20381 21133 "android" 20382 21134 ], 21135 + "peer": true, 20383 21136 "engines": { 20384 21137 "node": ">= 12.0.0" 20385 21138 }, ··· 20400 21153 "os": [ 20401 21154 "darwin" 20402 21155 ], 21156 + "peer": true, 20403 21157 "engines": { 20404 21158 "node": ">= 12.0.0" 20405 21159 }, ··· 20420 21174 "os": [ 20421 21175 "darwin" 20422 21176 ], 21177 + "peer": true, 20423 21178 "engines": { 20424 21179 "node": ">= 12.0.0" 20425 21180 }, ··· 20440 21195 "os": [ 20441 21196 "freebsd" 20442 21197 ], 21198 + "peer": true, 20443 21199 "engines": { 20444 21200 "node": ">= 12.0.0" 20445 21201 }, ··· 20460 21216 "os": [ 20461 21217 "linux" 20462 21218 ], 21219 + "peer": true, 20463 21220 "engines": { 20464 21221 "node": ">= 12.0.0" 20465 21222 }, ··· 20480 21237 "os": [ 20481 21238 "linux" 20482 21239 ], 21240 + "peer": true, 20483 21241 "engines": { 20484 21242 "node": ">= 12.0.0" 20485 21243 }, ··· 20500 21258 "os": [ 20501 21259 "linux" 20502 21260 ], 21261 + "peer": true, 20503 21262 "engines": { 20504 21263 "node": ">= 12.0.0" 20505 21264 }, ··· 20520 21279 "os": [ 20521 21280 "linux" 20522 21281 ], 21282 + "peer": true, 20523 21283 "engines": { 20524 21284 "node": ">= 12.0.0" 20525 21285 }, ··· 20540 21300 "os": [ 20541 21301 "linux" 20542 21302 ], 21303 + "peer": true, 20543 21304 "engines": { 20544 21305 "node": ">= 12.0.0" 20545 21306 }, ··· 20560 21321 "os": [ 20561 21322 "win32" 20562 21323 ], 21324 + "peer": true, 20563 21325 "engines": { 20564 21326 "node": ">= 12.0.0" 20565 21327 }, ··· 20580 21342 "os": [ 20581 21343 "win32" 20582 21344 ], 21345 + "peer": true, 20583 21346 "engines": { 20584 21347 "node": ">= 12.0.0" 20585 21348 }, ··· 20661 21424 "version": "1.4.2", 20662 21425 "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.2.tgz", 20663 21426 "integrity": "sha512-qElWkmjW9Oq1F9EI5Gt7aD9zcdHb9spJCW1L/dmPf7KzCCEJxq8nhHz5eCgI9aMf7vrG/wyaCqdsI+Iy9ZTlog==", 21427 + "peer": true, 20664 21428 "dependencies": { 20665 21429 "buffer-equal": "0.0.1", 20666 21430 "mime": "^1.3.4", ··· 20676 21440 "version": "1.6.0", 20677 21441 "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 20678 21442 "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 21443 + "peer": true, 20679 21444 "bin": { 20680 21445 "mime": "cli.js" 20681 21446 }, ··· 20717 21482 "version": "4.17.21", 20718 21483 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 20719 21484 "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 20720 - "dev": true, 20721 - "peer": true 21485 + "dev": true 20722 21486 }, 20723 21487 "node_modules/lodash-es": { 20724 21488 "version": "4.17.23", ··· 20861 21625 "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", 20862 21626 "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", 20863 21627 "dev": true, 21628 + "peer": true, 20864 21629 "bin": { 20865 21630 "lz-string": "bin/bin.js" 20866 21631 } ··· 20919 21684 "version": "0.0.1", 20920 21685 "resolved": "https://registry.npmjs.org/map-limit/-/map-limit-0.0.1.tgz", 20921 21686 "integrity": "sha512-pJpcfLPnIF/Sk3taPW21G/RQsEEirGaFpCW3oXRwH9dnFHPHNGjNyvh++rdmC2fNqEaTw2MhYJraoJWAHx8kEg==", 21687 + "peer": true, 20922 21688 "dependencies": { 20923 21689 "once": "~1.3.0" 20924 21690 } ··· 20927 21693 "version": "1.3.3", 20928 21694 "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", 20929 21695 "integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==", 21696 + "peer": true, 20930 21697 "dependencies": { 20931 21698 "wrappy": "1" 20932 21699 } ··· 21823 22590 "version": "2.19.2", 21824 22591 "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.2.tgz", 21825 22592 "integrity": "sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==", 22593 + "peer": true, 21826 22594 "dependencies": { 21827 22595 "dom-walk": "^0.1.0" 21828 22596 } ··· 21909 22677 "resolved": "https://registry.npmjs.org/module-alias/-/module-alias-2.2.3.tgz", 21910 22678 "integrity": "sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q==", 21911 22679 "dev": true 22680 + }, 22681 + "node_modules/module-details-from-path": { 22682 + "version": "1.0.4", 22683 + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.4.tgz", 22684 + "integrity": "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==" 21912 22685 }, 21913 22686 "node_modules/ms": { 21914 22687 "version": "2.1.3", ··· 22034 22807 "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", 22035 22808 "dev": true, 22036 22809 "optional": true, 22810 + "peer": true, 22037 22811 "dependencies": { 22038 22812 "iconv-lite": "^0.6.3", 22039 22813 "sax": "^1.2.4" ··· 22062 22836 "node_modules/new-array": { 22063 22837 "version": "1.0.0", 22064 22838 "resolved": "https://registry.npmjs.org/new-array/-/new-array-1.0.0.tgz", 22065 - "integrity": "sha512-K5AyFYbuHZ4e/ti52y7k18q8UHsS78FlRd85w2Fmsd6AkuLipDihPflKC0p3PN5i8II7+uHxo+CtkLiJDfmS5A==" 22839 + "integrity": "sha512-K5AyFYbuHZ4e/ti52y7k18q8UHsS78FlRd85w2Fmsd6AkuLipDihPflKC0p3PN5i8II7+uHxo+CtkLiJDfmS5A==", 22840 + "peer": true 22066 22841 }, 22067 22842 "node_modules/next": { 22068 22843 "version": "15.4.10", 22069 22844 "resolved": "https://registry.npmjs.org/next/-/next-15.4.10.tgz", 22070 22845 "integrity": "sha512-itVlc79QjpKMFMRhP+kbGKaSG/gZM6RCvwhEbwmCNF06CdDiNaoHcbeg0PqkEa2GOcn8KJ0nnc7+yL7EjoYLHQ==", 22071 - "peer": true, 22072 22846 "dependencies": { 22073 22847 "@next/env": "15.4.10", 22074 22848 "@swc/helpers": "0.5.15", ··· 22180 22954 "version": "3.0.0", 22181 22955 "resolved": "https://registry.npmjs.org/nice-color-palettes/-/nice-color-palettes-3.0.0.tgz", 22182 22956 "integrity": "sha512-lL4AjabAAFi313tjrtmgm/bxCRzp4l3vCshojfV/ij3IPdtnRqv6Chcw+SqJUhbe7g3o3BecaqCJYUNLswGBhQ==", 22957 + "peer": true, 22183 22958 "dependencies": { 22184 22959 "got": "^9.2.2", 22185 22960 "map-limit": "0.0.1", ··· 22194 22969 "version": "0.14.0", 22195 22970 "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", 22196 22971 "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", 22972 + "peer": true, 22197 22973 "engines": { 22198 22974 "node": ">=6" 22199 22975 } ··· 22202 22978 "version": "1.1.2", 22203 22979 "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", 22204 22980 "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", 22981 + "peer": true, 22205 22982 "dependencies": { 22206 22983 "defer-to-connect": "^1.0.1" 22207 22984 }, ··· 22213 22990 "version": "6.1.0", 22214 22991 "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", 22215 22992 "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", 22993 + "peer": true, 22216 22994 "dependencies": { 22217 22995 "clone-response": "^1.0.2", 22218 22996 "get-stream": "^5.1.0", ··· 22230 23008 "version": "5.2.0", 22231 23009 "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 22232 23010 "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 23011 + "peer": true, 22233 23012 "dependencies": { 22234 23013 "pump": "^3.0.0" 22235 23014 }, ··· 22244 23023 "version": "2.0.0", 22245 23024 "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", 22246 23025 "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", 23026 + "peer": true, 22247 23027 "engines": { 22248 23028 "node": ">=8" 22249 23029 } ··· 22252 23032 "version": "3.3.0", 22253 23033 "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", 22254 23034 "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", 23035 + "peer": true, 22255 23036 "dependencies": { 22256 23037 "mimic-response": "^1.0.0" 22257 23038 }, ··· 22262 23043 "node_modules/nice-color-palettes/node_modules/defer-to-connect": { 22263 23044 "version": "1.1.3", 22264 23045 "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", 22265 - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" 23046 + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", 23047 + "peer": true 22266 23048 }, 22267 23049 "node_modules/nice-color-palettes/node_modules/get-stream": { 22268 23050 "version": "4.1.0", 22269 23051 "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", 22270 23052 "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", 23053 + "peer": true, 22271 23054 "dependencies": { 22272 23055 "pump": "^3.0.0" 22273 23056 }, ··· 22279 23062 "version": "9.6.0", 22280 23063 "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", 22281 23064 "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", 23065 + "peer": true, 22282 23066 "dependencies": { 22283 23067 "@sindresorhus/is": "^0.14.0", 22284 23068 "@szmarczak/http-timer": "^1.1.2", ··· 22299 23083 "node_modules/nice-color-palettes/node_modules/json-buffer": { 22300 23084 "version": "3.0.0", 22301 23085 "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", 22302 - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" 23086 + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", 23087 + "peer": true 22303 23088 }, 22304 23089 "node_modules/nice-color-palettes/node_modules/keyv": { 22305 23090 "version": "3.1.0", 22306 23091 "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", 22307 23092 "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", 23093 + "peer": true, 22308 23094 "dependencies": { 22309 23095 "json-buffer": "3.0.0" 22310 23096 } ··· 22313 23099 "version": "1.0.1", 22314 23100 "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", 22315 23101 "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", 23102 + "peer": true, 22316 23103 "engines": { 22317 23104 "node": ">=0.10.0" 22318 23105 } ··· 22321 23108 "version": "1.0.1", 22322 23109 "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", 22323 23110 "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", 23111 + "peer": true, 22324 23112 "engines": { 22325 23113 "node": ">=4" 22326 23114 } ··· 22329 23117 "version": "4.5.1", 22330 23118 "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", 22331 23119 "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", 23120 + "peer": true, 22332 23121 "engines": { 22333 23122 "node": ">=8" 22334 23123 } ··· 22337 23126 "version": "1.1.0", 22338 23127 "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", 22339 23128 "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", 23129 + "peer": true, 22340 23130 "engines": { 22341 23131 "node": ">=6" 22342 23132 } ··· 22345 23135 "version": "1.0.2", 22346 23136 "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", 22347 23137 "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", 23138 + "peer": true, 22348 23139 "dependencies": { 22349 23140 "lowercase-keys": "^1.0.0" 22350 23141 } ··· 23010 23801 "node_modules/parse-bmfont-ascii": { 23011 23802 "version": "1.0.6", 23012 23803 "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", 23013 - "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==" 23804 + "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==", 23805 + "peer": true 23014 23806 }, 23015 23807 "node_modules/parse-bmfont-binary": { 23016 23808 "version": "1.0.6", 23017 23809 "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", 23018 - "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==" 23810 + "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==", 23811 + "peer": true 23019 23812 }, 23020 23813 "node_modules/parse-bmfont-xml": { 23021 23814 "version": "1.1.6", 23022 23815 "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.6.tgz", 23023 23816 "integrity": "sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==", 23817 + "peer": true, 23024 23818 "dependencies": { 23025 23819 "xml-parse-from-string": "^1.0.0", 23026 23820 "xml2js": "^0.5.0" ··· 23052 23846 "node_modules/parse-headers": { 23053 23847 "version": "2.0.6", 23054 23848 "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.6.tgz", 23055 - "integrity": "sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A==" 23849 + "integrity": "sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A==", 23850 + "peer": true 23056 23851 }, 23057 23852 "node_modules/parse-json": { 23058 23853 "version": "5.2.0", ··· 23241 24036 "resolved": "https://registry.npmjs.org/pg/-/pg-8.16.3.tgz", 23242 24037 "integrity": "sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==", 23243 24038 "dev": true, 23244 - "peer": true, 23245 24039 "dependencies": { 23246 24040 "pg-connection-string": "^2.9.1", 23247 24041 "pg-pool": "^3.10.1", ··· 23281 24075 "version": "1.0.1", 23282 24076 "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", 23283 24077 "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", 23284 - "dev": true, 23285 24078 "engines": { 23286 24079 "node": ">=4.0.0" 23287 24080 } ··· 23298 24091 "node_modules/pg-protocol": { 23299 24092 "version": "1.10.3", 23300 24093 "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.3.tgz", 23301 - "integrity": "sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==", 23302 - "dev": true 24094 + "integrity": "sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==" 23303 24095 }, 23304 24096 "node_modules/pg-types": { 23305 24097 "version": "2.2.0", 23306 24098 "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", 23307 24099 "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", 23308 - "dev": true, 23309 24100 "dependencies": { 23310 24101 "pg-int8": "1.0.1", 23311 24102 "postgres-array": "~2.0.0", ··· 23331 24122 "resolved": "https://registry.npmjs.org/phin/-/phin-3.7.1.tgz", 23332 24123 "integrity": "sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==", 23333 24124 "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", 24125 + "peer": true, 23334 24126 "dependencies": { 23335 24127 "centra": "^2.7.0" 23336 24128 }, ··· 23361 24153 "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", 23362 24154 "dev": true, 23363 24155 "optional": true, 24156 + "peer": true, 23364 24157 "engines": { 23365 24158 "node": ">=6" 23366 24159 } ··· 24125 24918 "url": "https://github.com/sponsors/ai" 24126 24919 } 24127 24920 ], 24128 - "peer": true, 24129 24921 "dependencies": { 24130 24922 "nanoid": "^3.3.11", 24131 24923 "picocolors": "^1.1.1", ··· 24300 25092 "version": "3.4.7", 24301 25093 "resolved": "https://registry.npmjs.org/postgres/-/postgres-3.4.7.tgz", 24302 25094 "integrity": "sha512-Jtc2612XINuBjIl/QTWsV5UvE8UHuNblcO3vVADSrKsrc6RqGX6lOW1cEo3CM2v0XG4Nat8nI+YM7/f26VxXLw==", 24303 - "peer": true, 24304 25095 "engines": { 24305 25096 "node": ">=12" 24306 25097 }, ··· 24313 25104 "version": "2.0.0", 24314 25105 "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", 24315 25106 "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", 24316 - "dev": true, 24317 25107 "engines": { 24318 25108 "node": ">=4" 24319 25109 } ··· 24322 25112 "version": "1.0.0", 24323 25113 "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", 24324 25114 "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", 24325 - "dev": true, 24326 25115 "engines": { 24327 25116 "node": ">=0.10.0" 24328 25117 } ··· 24331 25120 "version": "1.0.7", 24332 25121 "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", 24333 25122 "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", 24334 - "dev": true, 24335 25123 "engines": { 24336 25124 "node": ">=0.10.0" 24337 25125 } ··· 24340 25128 "version": "1.2.0", 24341 25129 "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", 24342 25130 "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", 24343 - "dev": true, 24344 25131 "dependencies": { 24345 25132 "xtend": "^4.0.0" 24346 25133 }, ··· 24353 25140 "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.351.4.tgz", 24354 25141 "integrity": "sha512-vLSYHMN31FGs1cTJ/SCW0aCLiV6K6ZW63Q1K3B16iWRBVTwz/kg6sJZi6Z/oFeKOuy9I5K/LbVLDBCaTTlcESA==", 24355 25142 "dev": true, 24356 - "peer": true, 24357 25143 "dependencies": { 24358 25144 "@opentelemetry/api": "^1.9.0", 24359 25145 "@opentelemetry/api-logs": "^0.208.0", ··· 24447 25233 "version": "2.0.0", 24448 25234 "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", 24449 25235 "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", 25236 + "peer": true, 24450 25237 "engines": { 24451 25238 "node": ">=4" 24452 25239 } ··· 24456 25243 "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", 24457 25244 "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", 24458 25245 "dev": true, 24459 - "peer": true, 24460 25246 "bin": { 24461 25247 "prettier": "bin/prettier.cjs" 24462 25248 }, ··· 24649 25435 "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", 24650 25436 "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", 24651 25437 "dev": true, 24652 - "optional": true 25438 + "optional": true, 25439 + "peer": true 24653 25440 }, 24654 25441 "node_modules/pstree.remy": { 24655 25442 "version": "1.1.8", ··· 24709 25496 "version": "2.0.1", 24710 25497 "resolved": "https://registry.npmjs.org/quad-indices/-/quad-indices-2.0.1.tgz", 24711 25498 "integrity": "sha512-6jtmCsEbGAh5npThXrBaubbTjPcF0rMbn57XCJVI7LkW8PUT56V+uIrRCCWCn85PSgJC9v8Pm5tnJDwmOBewvA==", 25499 + "peer": true, 24712 25500 "dependencies": { 24713 25501 "an-array": "^1.0.0", 24714 25502 "dtype": "^2.0.0", ··· 24828 25616 "version": "19.1.0", 24829 25617 "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", 24830 25618 "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", 24831 - "peer": true, 24832 25619 "engines": { 24833 25620 "node": ">=0.10.0" 24834 25621 } ··· 24879 25666 "version": "19.1.0", 24880 25667 "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", 24881 25668 "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", 24882 - "peer": true, 24883 25669 "dependencies": { 24884 25670 "scheduler": "^0.26.0" 24885 25671 }, ··· 25469 26255 "node": ">=0.10.0" 25470 26256 } 25471 26257 }, 26258 + "node_modules/require-in-the-middle": { 26259 + "version": "8.0.1", 26260 + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-8.0.1.tgz", 26261 + "integrity": "sha512-QT7FVMXfWOYFbeRBF6nu+I6tr2Tf3u0q8RIEjNob/heKY/nh7drD/k7eeMFmSQgnTtCzLDcCu/XEnpW2wk4xCQ==", 26262 + "dependencies": { 26263 + "debug": "^4.3.5", 26264 + "module-details-from-path": "^1.0.3" 26265 + }, 26266 + "engines": { 26267 + "node": ">=9.3.0 || >=8.10.0 <9.0.0" 26268 + } 26269 + }, 25472 26270 "node_modules/resolve": { 25473 26271 "version": "1.22.11", 25474 26272 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", ··· 25641 26439 "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.5.tgz", 25642 26440 "integrity": "sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==", 25643 26441 "dev": true, 25644 - "peer": true, 25645 26442 "dependencies": { 25646 26443 "@types/estree": "1.0.8" 25647 26444 }, ··· 25829 26626 "resolved": "https://registry.npmjs.org/sass/-/sass-1.93.2.tgz", 25830 26627 "integrity": "sha512-t+YPtOQHpGW1QWsh1CHQ5cPIr9lbbGZLZnbihP/D/qZj/yuV68m8qarcV17nvkOX81BCrvzAlq2klCQFZghyTg==", 25831 26628 "devOptional": true, 25832 - "peer": true, 25833 26629 "dependencies": { 25834 26630 "chokidar": "^4.0.0", 25835 26631 "immutable": "^5.0.2", ··· 25848 26644 "node_modules/sax": { 25849 26645 "version": "1.4.1", 25850 26646 "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", 25851 - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" 26647 + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", 26648 + "peer": true 25852 26649 }, 25853 26650 "node_modules/saxes": { 25854 26651 "version": "6.0.0", ··· 26392 27189 "resolved": "https://registry.npmjs.org/storybook/-/storybook-9.1.13.tgz", 26393 27190 "integrity": "sha512-G3KZ36EVzXyHds72B/qtWiJnhUpM0xOUeYlDcO9DSHL1bDTv15cW4+upBl+mcBZrDvU838cn7Bv4GpF+O5MCfw==", 26394 27191 "dev": true, 26395 - "peer": true, 26396 27192 "dependencies": { 26397 27193 "@storybook/global": "^5.0.0", 26398 27194 "@testing-library/jest-dom": "^6.6.3", ··· 26935 27731 "node_modules/super-animejs": { 26936 27732 "version": "3.1.0", 26937 27733 "resolved": "https://registry.npmjs.org/super-animejs/-/super-animejs-3.1.0.tgz", 26938 - "integrity": "sha512-6MFAFJDRuvwkovxQZPruuyHinTa4rgj4hNLOndjcYYhZLckoXtVRY9rJPuq8p6c/tgZJrFYEAYAfJ2/hhNtUCA==" 27734 + "integrity": "sha512-6MFAFJDRuvwkovxQZPruuyHinTa4rgj4hNLOndjcYYhZLckoXtVRY9rJPuq8p6c/tgZJrFYEAYAfJ2/hhNtUCA==", 27735 + "peer": true 26939 27736 }, 26940 27737 "node_modules/superagent": { 26941 27738 "version": "10.2.3", ··· 26999 27796 "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.2.tgz", 27000 27797 "integrity": "sha512-My2tytF2e2NnHSpn2M7/3VdXT4JdTglYVUuSuK/mXL2XtulPYbeBfl8Dm1QiaKRn0zoULRnL+EtfZHHP0k4H3A==", 27001 27798 "devOptional": true, 27002 - "peer": true, 27003 27799 "dependencies": { 27004 27800 "@ampproject/remapping": "^2.2.1", 27005 27801 "@jridgewell/sourcemap-codec": "^1.4.15", ··· 27257 28053 "node_modules/three": { 27258 28054 "version": "0.183.2", 27259 28055 "resolved": "https://registry.npmjs.org/three/-/three-0.183.2.tgz", 27260 - "integrity": "sha512-di3BsL2FEQ1PA7Hcvn4fyJOlxRRgFYBpMTcyOgkwJIaDOdJMebEFPA+t98EvjuljDx4hNulAGwF6KIjtwI5jgQ==", 27261 - "peer": true 28056 + "integrity": "sha512-di3BsL2FEQ1PA7Hcvn4fyJOlxRRgFYBpMTcyOgkwJIaDOdJMebEFPA+t98EvjuljDx4hNulAGwF6KIjtwI5jgQ==" 27262 28057 }, 27263 28058 "node_modules/three-bmfont-text": { 27264 28059 "version": "3.0.0", 27265 28060 "resolved": "git+ssh://git@github.com/dmarcos/three-bmfont-text.git#eed4878795be9b3e38cf6aec6b903f56acd1f695", 27266 28061 "integrity": "sha512-JcaccaRCcK/A4c0igPQ9RCw91cil7pLhogDVmrThEvP20B/vbFaaNlmn3frF7pWeo3lATUiNrxVfgxm9qfr9GA==", 28062 + "peer": true, 27267 28063 "dependencies": { 27268 28064 "array-shuffle": "^1.0.1", 27269 28065 "layout-bmfont-text": "^1.2.0", ··· 27431 28227 "version": "1.0.0", 27432 28228 "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", 27433 28229 "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", 28230 + "peer": true, 27434 28231 "engines": { 27435 28232 "node": ">=6" 27436 28233 } ··· 27951 28748 "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", 27952 28749 "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", 27953 28750 "dev": true, 27954 - "peer": true, 27955 28751 "bin": { 27956 28752 "tsc": "bin/tsc", 27957 28753 "tsserver": "bin/tsserver" ··· 28022 28818 "node_modules/undici-types": { 28023 28819 "version": "6.21.0", 28024 28820 "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", 28025 - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", 28026 - "dev": true 28821 + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==" 28027 28822 }, 28028 28823 "node_modules/unicorn-magic": { 28029 28824 "version": "0.1.0", ··· 28265 29060 "version": "3.0.0", 28266 29061 "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", 28267 29062 "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", 29063 + "peer": true, 28268 29064 "dependencies": { 28269 29065 "prepend-http": "^2.0.0" 28270 29066 }, ··· 28360 29156 "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", 28361 29157 "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", 28362 29158 "dev": true, 29159 + "peer": true, 28363 29160 "dependencies": { 28364 29161 "inherits": "^2.0.3", 28365 29162 "is-arguments": "^1.0.4", ··· 28461 29258 "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", 28462 29259 "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", 28463 29260 "dev": true, 28464 - "peer": true, 28465 29261 "dependencies": { 28466 29262 "esbuild": "^0.25.0", 28467 29263 "fdir": "^6.4.4", ··· 28608 29404 "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", 28609 29405 "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", 28610 29406 "dev": true, 28611 - "peer": true, 28612 29407 "dependencies": { 28613 29408 "@types/chai": "^5.2.2", 28614 29409 "@vitest/expect": "3.2.4", ··· 28681 29476 "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz", 28682 29477 "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==", 28683 29478 "devOptional": true, 28684 - "peer": true, 28685 29479 "dependencies": { 28686 29480 "@vue/compiler-dom": "3.3.4", 28687 29481 "@vue/compiler-sfc": "3.3.4", ··· 28898 29692 "node_modules/word-wrapper": { 28899 29693 "version": "1.0.7", 28900 29694 "resolved": "https://registry.npmjs.org/word-wrapper/-/word-wrapper-1.0.7.tgz", 28901 - "integrity": "sha512-VOPBFCm9b6FyYKQYfn9AVn2dQvdR/YOVFV6IBRA1TBMJWKffvhEX1af6FMGrttILs2Q9ikCRhLqkbY2weW6dOQ==" 29695 + "integrity": "sha512-VOPBFCm9b6FyYKQYfn9AVn2dQvdR/YOVFV6IBRA1TBMJWKffvhEX1af6FMGrttILs2Q9ikCRhLqkbY2weW6dOQ==", 29696 + "peer": true 28902 29697 }, 28903 29698 "node_modules/wordwrap": { 28904 29699 "version": "1.0.0", ··· 29068 29863 "version": "2.6.0", 29069 29864 "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", 29070 29865 "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", 29866 + "peer": true, 29071 29867 "dependencies": { 29072 29868 "global": "~4.4.0", 29073 29869 "is-function": "^1.0.1", ··· 29087 29883 "node_modules/xml-parse-from-string": { 29088 29884 "version": "1.0.1", 29089 29885 "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", 29090 - "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==" 29886 + "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==", 29887 + "peer": true 29091 29888 }, 29092 29889 "node_modules/xml2js": { 29093 29890 "version": "0.5.0", 29094 29891 "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", 29095 29892 "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", 29893 + "peer": true, 29096 29894 "dependencies": { 29097 29895 "sax": ">=0.6.0", 29098 29896 "xmlbuilder": "~11.0.0" ··· 29105 29903 "version": "11.0.1", 29106 29904 "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", 29107 29905 "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", 29906 + "peer": true, 29108 29907 "engines": { 29109 29908 "node": ">=4.0" 29110 29909 } ··· 29453 30252 "version": "8.3.1", 29454 30253 "resolved": "https://registry.npmjs.org/@mantine/core/-/core-8.3.1.tgz", 29455 30254 "integrity": "sha512-OYfxn9cTv+K6RZ8+Ozn/HDQXkB8Fmn+KJJt5lxyFDP9F09EHnC59Ldadv1LyUZVBGtNqz4sn6b3vBShbxwAmYw==", 29456 - "peer": true, 29457 30255 "dependencies": { 29458 30256 "@floating-ui/react": "^0.27.16", 29459 30257 "clsx": "^2.1.1", ··· 29524 30322 "version": "8.3.1", 29525 30323 "resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-8.3.1.tgz", 29526 30324 "integrity": "sha512-lQutBS+Q0iz/cNFvdrsYassPWo3RtWcmDGJeOtKfHigLzFOhxUuLOkQgepDbMf3WcVMB/tist6Px1PQOv57JTw==", 29527 - "peer": true, 29528 30325 "peerDependencies": { 29529 30326 "react": "^18.x || ^19.x" 29530 30327 }
+1
package.json
··· 75 75 "@atproto/syntax": "^0.4.0", 76 76 "@atproto/xrpc-server": "^0.7.15", 77 77 "@semble/types": "*", 78 + "@sentry/node": "^10.42.0", 78 79 "@upstash/vector": "^1.2.2", 79 80 "atpi": "^1.0.7", 80 81 "bullmq": "^5.56.8",
+3
src/index.ts
··· 1 + // IMPORTANT: Import instrument.ts first to initialize Sentry as early as possible 2 + import './instrument'; 3 + 1 4 import { configService } from './shared/infrastructure/config'; 2 5 import { AppProcess } from './shared/infrastructure/processes/AppProcess'; 3 6 import { FeedWorkerProcess } from './shared/infrastructure/processes/FeedWorkerProcess';
+34
src/instrument.ts
··· 1 + import * as Sentry from '@sentry/node'; 2 + import { configService } from './shared/infrastructure/config'; 3 + 4 + const sentryConfig = configService.getSentryConfig(); 5 + 6 + // Only initialize Sentry if DSN is provided 7 + if (sentryConfig.dsn) { 8 + // Determine release from environment (git SHA injected during deployment) 9 + const release = 10 + process.env.SENTRY_RELEASE || process.env.GIT_SHA || undefined; 11 + 12 + Sentry.init({ 13 + dsn: sentryConfig.dsn, 14 + environment: sentryConfig.environment, 15 + release: release, 16 + // Performance Monitoring - Start at 10% to manage costs (Fly.io recommendation) 17 + tracesSampleRate: 1.0, 18 + // Send default PII (includes IP addresses, user data) 19 + sendDefaultPii: true, 20 + }); 21 + 22 + // Add Fly.io-specific context tags 23 + Sentry.setTags({ 24 + serverName: process.env.FLY_MACHINE_ID || 'local', 25 + region: process.env.FLY_REGION || 'local', 26 + processType: process.env.PROCESS_TYPE || 'unknown', 27 + }); 28 + 29 + console.log( 30 + `[Sentry] Initialized for environment: ${sentryConfig.environment}${release ? ` (release: ${release})` : ''}`, 31 + ); 32 + } else { 33 + console.log('[Sentry] Skipped initialization (no DSN provided)'); 34 + }
+12
src/shared/infrastructure/config/EnvironmentConfigService.ts
··· 67 67 maxRetriesPerRequest: number | null; // Disable automatic retries 68 68 }; 69 69 }; 70 + sentry: { 71 + dsn: string; 72 + environment: string; 73 + }; 70 74 } 71 75 72 76 export class EnvironmentConfigService { ··· 171 175 }, 172 176 redisUrl: process.env.REDIS_URL || 'redis://localhost:6379', 173 177 }, 178 + sentry: { 179 + dsn: process.env.SENTRY_DSN || '', 180 + environment: environment, 181 + }, 174 182 }; 175 183 176 184 this.applyEnvironmentSpecificConfig(); ··· 245 253 246 254 public getRedisConfig() { 247 255 return this.config.workers.redisConfig; 256 + } 257 + 258 + public getSentryConfig() { 259 + return this.config.sentry; 248 260 } 249 261 250 262 public getRuntimeConfig() {
+4
src/shared/infrastructure/http/app.ts
··· 2 2 import cors from 'cors'; 3 3 import cookieParser from 'cookie-parser'; 4 4 import { Router } from 'express'; 5 + import * as Sentry from '@sentry/node'; 5 6 import { createUserRoutes } from '../../../modules/user/infrastructure/http/routes/userRoutes'; 6 7 import { createAtprotoRoutes } from '../../../modules/atproto/infrastructure/atprotoRoutes'; 7 8 import { createCardsModuleRoutes } from '../../../modules/cards/infrastructure/http/routes'; ··· 184 185 app.use('/api/search', searchRouter); 185 186 app.use('/api/notifications', notificationRouter); 186 187 app.use('/api/test', testRouter); 188 + 189 + // Sentry error handler - must be after all routes and before other error middleware 190 + Sentry.setupExpressErrorHandler(app); 187 191 188 192 return app; 189 193 };
+15
src/shared/infrastructure/http/middleware/AuthMiddleware.ts
··· 1 1 import { Request, Response, NextFunction } from 'express'; 2 + import * as Sentry from '@sentry/node'; 2 3 import { ITokenService } from '../../../../modules/user/application/services/ITokenService'; 3 4 import { CookieService } from '../services/CookieService'; 4 5 ··· 60 61 61 62 // Attach user DID to request for use in controllers 62 63 req.did = didResult.value; 64 + 65 + // Set user context in Sentry for error tracking 66 + Sentry.setUser({ id: didResult.value }); 63 67 64 68 // Continue to the next middleware or controller 65 69 next(); ··· 93 97 if (didResult.isOk() && didResult.value) { 94 98 // Attach user DID to request for use in controllers 95 99 req.did = didResult.value; 100 + 101 + // Set user context in Sentry for error tracking 102 + Sentry.setUser({ id: didResult.value }); 96 103 } 97 104 98 105 // Continue to the controller regardless of token validity ··· 132 139 } 133 140 134 141 req.did = didResult.value; 142 + 143 + // Set user context in Sentry for error tracking 144 + Sentry.setUser({ id: didResult.value }); 145 + 135 146 next(); 136 147 } catch (error) { 137 148 res.status(500).json({ message: 'Authentication error' }); ··· 168 179 } 169 180 170 181 req.did = didResult.value; 182 + 183 + // Set user context in Sentry for error tracking 184 + Sentry.setUser({ id: didResult.value }); 185 + 171 186 next(); 172 187 } catch (error) { 173 188 res.status(500).json({ message: 'Authentication error' });
+3
src/workers/feed-worker.ts
··· 1 + // IMPORTANT: Import instrument.ts first to initialize Sentry as early as possible 2 + import '../instrument'; 3 + 1 4 import { EnvironmentConfigService } from '../shared/infrastructure/config/EnvironmentConfigService'; 2 5 import { FeedWorkerProcess } from '../shared/infrastructure/processes/FeedWorkerProcess'; 3 6
+3
src/workers/firehose-worker.ts
··· 1 + // IMPORTANT: Import instrument.ts first to initialize Sentry as early as possible 2 + import '../instrument'; 3 + 1 4 import { EnvironmentConfigService } from '../shared/infrastructure/config/EnvironmentConfigService'; 2 5 import { RepositoryFactory } from '../shared/infrastructure/http/factories/RepositoryFactory'; 3 6 import { ServiceFactory } from '../shared/infrastructure/http/factories/ServiceFactory';
+3
src/workers/notification-worker.ts
··· 1 + // IMPORTANT: Import instrument.ts first to initialize Sentry as early as possible 2 + import '../instrument'; 3 + 1 4 import { EnvironmentConfigService } from '../shared/infrastructure/config/EnvironmentConfigService'; 2 5 import { NotificationWorkerProcess } from '../shared/infrastructure/processes/NotificationWorkerProcess'; 3 6
+3
src/workers/search-worker.ts
··· 1 + // IMPORTANT: Import instrument.ts first to initialize Sentry as early as possible 2 + import '../instrument'; 3 + 1 4 import { EnvironmentConfigService } from '../shared/infrastructure/config/EnvironmentConfigService'; 2 5 import { SearchWorkerProcess } from '../shared/infrastructure/processes/SearchWorkerProcess'; 3 6
+3
src/workers/sync-worker.ts
··· 1 + // IMPORTANT: Import instrument.ts first to initialize Sentry as early as possible 2 + import '../instrument'; 3 + 1 4 import { EnvironmentConfigService } from '../shared/infrastructure/config/EnvironmentConfigService'; 2 5 import { SyncWorkerProcess } from '../shared/infrastructure/processes/SyncWorkerProcess'; 3 6
+1
tsup.config.ts
··· 3 3 export default defineConfig({ 4 4 entry: { 5 5 index: 'src/index.ts', 6 + instrument: 'src/instrument.ts', 6 7 'workers/feed-worker': 'src/workers/feed-worker.ts', 7 8 'workers/search-worker': 'src/workers/search-worker.ts', 8 9 'workers/firehose-worker': 'src/workers/firehose-worker.ts',