an attempt to make a lightweight, easily self-hostable, scoped bluesky appview

view server notifs and initial frontend work

rimar1337 e064ac2d 90bc2e09

+1854 -1615
+2 -1
.gitignore
··· 6 6 indexserver.ts 7 7 dbs/ 8 8 config.jsonc 9 - config.json 9 + config.json 10 + cache/
+1 -1
config.ts
··· 2 2 import * as z from "npm:zod"; 3 3 4 4 // configure these from the config.jsonc file (you can use config.jsonc.example as reference) 5 - const indexTarget = z.string().refine( 5 + export const indexTarget = z.string().refine( 6 6 (val) => { 7 7 const parts = val.split("#"); 8 8 if (parts.length !== 2) return false;
+772 -1494
deno.lock
··· 3 3 "specifiers": { 4 4 "jsr:@db/sqlite@0.11": "0.11.1", 5 5 "jsr:@denosaurs/plug@1": "1.1.0", 6 - "jsr:@noble/secp256k1@*": "2.3.0", 7 - "jsr:@panva/jose@*": "6.0.12", 8 6 "jsr:@std/assert@0.217": "0.217.0", 9 7 "jsr:@std/encoding@1": "1.0.10", 10 8 "jsr:@std/fmt@1": "1.0.8", ··· 14 12 "jsr:@std/path@0.217": "0.217.0", 15 13 "jsr:@std/path@1": "1.1.1", 16 14 "jsr:@std/path@^1.1.1": "1.1.1", 17 - "npm:@atproto/api@*": "0.15.12", 15 + "npm:@atproto/api@*": "0.16.2", 18 16 "npm:@atproto/identity@*": "0.4.8", 19 - "npm:@atproto/lex-cli@*": "0.9.1", 20 - "npm:@atproto/lexicon@*": "0.4.11", 17 + "npm:@atproto/lexicon@*": "0.4.12", 21 18 "npm:@atproto/xrpc-server@*": "0.9.1", 22 19 "npm:@atproto/xrpc@*": "0.7.1", 23 - "npm:@ipld/car@*": "5.4.2", 24 - "npm:@ipld/dag-cbor@*": "9.2.4", 25 - "npm:@types/express@4.17.15": "4.17.15", 26 - "npm:@types/node@*": "22.15.15", 20 + "npm:@babel/core@*": "7.28.3", 21 + "npm:babel-plugin-react-compiler@*": "19.1.0-rc.2", 27 22 "npm:did-jwt@*": "8.0.17", 28 23 "npm:did-resolver@*": "4.1.0", 29 - "npm:docsify-cli@*": "4.4.4", 30 - "npm:express@*": "5.1.0", 24 + "npm:esbuild-plugin-cache@*": "0.2.10", 25 + "npm:esbuild@0.20.2": "0.20.2", 31 26 "npm:ky@*": "1.8.1", 32 27 "npm:multiformats@*": "13.4.0", 33 28 "npm:quick-lru@*": "7.0.1", 34 - "npm:vite@*": "7.1.3_@types+node@22.15.15_picomatch@4.0.3", 35 29 "npm:web-did-resolver@*": "2.0.30", 36 - "npm:zod@*": "3.25.46" 30 + "npm:zod@*": "4.0.17" 37 31 }, 38 32 "jsr": { 39 33 "@db/sqlite@0.11.1": { ··· 51 45 "jsr:@std/fs", 52 46 "jsr:@std/path@1" 53 47 ] 54 - }, 55 - "@noble/secp256k1@2.3.0": { 56 - "integrity": "63eb4479a7c548e0ddea1cb5ea9bf7efacafe495e7f1c07bce1b4108df95967f" 57 - }, 58 - "@panva/jose@6.0.12": { 59 - "integrity": "b228cf79558ccc979046855bb140cd5d7bd86564dc047e563632a686b1346dcc" 60 48 }, 61 49 "@std/assert@0.217.0": { 62 50 "integrity": "c98e279362ca6982d5285c3b89517b757c1e3477ee9f14eb2fdf80a45aaa9642" ··· 94 82 } 95 83 }, 96 84 "npm": { 97 - "@atproto/api@0.15.12": { 98 - "integrity": "sha512-51IHenZMA+Ekfe2OlZL/mTFqvZQU93jI4xsLvTFhGc4tSQYCHV9r/AJTANPZLFrhm9GfWZ0n90r/9IQl9eicjg==", 85 + "@ampproject/remapping@2.3.0": { 86 + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", 87 + "dependencies": [ 88 + "@jridgewell/gen-mapping", 89 + "@jridgewell/trace-mapping" 90 + ] 91 + }, 92 + "@atproto/api@0.16.2": { 93 + "integrity": "sha512-sSTg31J8ws8DNaoiizp+/uJideRxRaJsq+Nyl8rnSxGw0w3oCvoeRU19iRWh2t0jZEmiRJAGkveGu23NKmPYEQ==", 99 94 "dependencies": [ 100 95 "@atproto/common-web", 101 - "@atproto/lexicon@0.4.11", 96 + "@atproto/lexicon", 102 97 "@atproto/syntax", 103 - "@atproto/xrpc@0.7.0", 98 + "@atproto/xrpc", 104 99 "await-lock", 105 100 "multiformats@9.9.0", 106 101 "tlds", 107 - "zod" 102 + "zod@3.25.76" 108 103 ] 109 104 }, 110 105 "@atproto/common-web@0.4.2": { ··· 113 108 "graphemer", 114 109 "multiformats@9.9.0", 115 110 "uint8arrays@3.0.0", 116 - "zod" 111 + "zod@3.25.76" 117 112 ] 118 113 }, 119 114 "@atproto/common@0.4.11": { 120 115 "integrity": "sha512-Knv0viYXNMfCdIE7jLUiWJKnnMfEwg+vz2epJQi8WOjqtqCFb3W/3Jn72ZiuovIfpdm13MaOiny6w2NErUQC6g==", 121 116 "dependencies": [ 122 117 "@atproto/common-web", 123 - "@ipld/dag-cbor@7.0.3", 118 + "@ipld/dag-cbor", 124 119 "cbor-x", 125 120 "iso-datestring-validator", 126 121 "multiformats@9.9.0", ··· 140 135 "dependencies": [ 141 136 "@atproto/common-web", 142 137 "@atproto/crypto" 143 - ] 144 - }, 145 - "@atproto/lex-cli@0.9.1": { 146 - "integrity": "sha512-ftcUZd8rElHeUJq6pTcQkURnTEe7woCF4I1NK3j5GpT/itacEZtcppabjy5o2aUsbktZsALj3ch3xm7ZZ+Zp0w==", 147 - "dependencies": [ 148 - "@atproto/lexicon@0.4.12", 149 - "@atproto/syntax", 150 - "chalk@4.1.2", 151 - "commander", 152 - "prettier", 153 - "ts-morph", 154 - "yesno", 155 - "zod" 156 - ], 157 - "bin": true 158 - }, 159 - "@atproto/lexicon@0.4.11": { 160 - "integrity": "sha512-btefdnvNz2Ao2I+qbmj0F06HC8IlrM/IBz6qOBS50r0S6uDf5tOO+Mv2tSVdimFkdzyDdLtBI1sV36ONxz2cOw==", 161 - "dependencies": [ 162 - "@atproto/common-web", 163 - "@atproto/syntax", 164 - "iso-datestring-validator", 165 - "multiformats@9.9.0", 166 - "zod" 167 138 ] 168 139 }, 169 140 "@atproto/lexicon@0.4.12": { ··· 173 144 "@atproto/syntax", 174 145 "iso-datestring-validator", 175 146 "multiformats@9.9.0", 176 - "zod" 147 + "zod@3.25.76" 177 148 ] 178 149 }, 179 150 "@atproto/syntax@0.4.0": { ··· 184 155 "dependencies": [ 185 156 "@atproto/common", 186 157 "@atproto/crypto", 187 - "@atproto/lexicon@0.4.12", 188 - "@atproto/xrpc@0.7.1", 158 + "@atproto/lexicon", 159 + "@atproto/xrpc", 189 160 "cbor-x", 190 - "express@4.21.2", 161 + "express", 191 162 "http-errors", 192 - "mime-types@2.1.35", 163 + "mime-types", 193 164 "rate-limiter-flexible", 194 165 "uint8arrays@3.0.0", 195 - "ws@8.18.3", 196 - "zod" 166 + "ws", 167 + "zod@3.25.76" 197 168 ] 198 169 }, 199 - "@atproto/xrpc@0.7.0": { 200 - "integrity": "sha512-SfhP9dGx2qclaScFDb58Jnrmim5nk4geZXCqg6sB0I/KZhZEkr9iIx1hLCp+sxkIfEsmEJjeWO4B0rjUIJW5cw==", 170 + "@atproto/xrpc@0.7.1": { 171 + "integrity": "sha512-ANHEzlskYlMEdH18m+Itp3a8d0pEJao2qoDybDoMupTnoeNkya4VKIaOgAi6ERQnqatBBZyn9asW+7rJmSt/8g==", 172 + "dependencies": [ 173 + "@atproto/lexicon", 174 + "zod@3.25.76" 175 + ] 176 + }, 177 + "@babel/code-frame@7.27.1": { 178 + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", 179 + "dependencies": [ 180 + "@babel/helper-validator-identifier", 181 + "js-tokens", 182 + "picocolors" 183 + ] 184 + }, 185 + "@babel/compat-data@7.28.0": { 186 + "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==" 187 + }, 188 + "@babel/core@7.28.3": { 189 + "integrity": "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==", 201 190 "dependencies": [ 202 - "@atproto/lexicon@0.4.11", 203 - "zod" 191 + "@ampproject/remapping", 192 + "@babel/code-frame", 193 + "@babel/generator", 194 + "@babel/helper-compilation-targets", 195 + "@babel/helper-module-transforms", 196 + "@babel/helpers", 197 + "@babel/parser", 198 + "@babel/template", 199 + "@babel/traverse", 200 + "@babel/types", 201 + "convert-source-map", 202 + "debug@4.4.1", 203 + "gensync", 204 + "json5", 205 + "semver" 204 206 ] 205 207 }, 206 - "@atproto/xrpc@0.7.1": { 207 - "integrity": "sha512-ANHEzlskYlMEdH18m+Itp3a8d0pEJao2qoDybDoMupTnoeNkya4VKIaOgAi6ERQnqatBBZyn9asW+7rJmSt/8g==", 208 + "@babel/generator@7.28.3": { 209 + "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", 208 210 "dependencies": [ 209 - "@atproto/lexicon@0.4.12", 210 - "zod" 211 + "@babel/parser", 212 + "@babel/types", 213 + "@jridgewell/gen-mapping", 214 + "@jridgewell/trace-mapping", 215 + "jsesc" 216 + ] 217 + }, 218 + "@babel/helper-compilation-targets@7.27.2": { 219 + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", 220 + "dependencies": [ 221 + "@babel/compat-data", 222 + "@babel/helper-validator-option", 223 + "browserslist", 224 + "lru-cache", 225 + "semver" 226 + ] 227 + }, 228 + "@babel/helper-globals@7.28.0": { 229 + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==" 230 + }, 231 + "@babel/helper-module-imports@7.27.1": { 232 + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", 233 + "dependencies": [ 234 + "@babel/traverse", 235 + "@babel/types" 236 + ] 237 + }, 238 + "@babel/helper-module-transforms@7.28.3_@babel+core@7.28.3": { 239 + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", 240 + "dependencies": [ 241 + "@babel/core", 242 + "@babel/helper-module-imports", 243 + "@babel/helper-validator-identifier", 244 + "@babel/traverse" 245 + ] 246 + }, 247 + "@babel/helper-string-parser@7.27.1": { 248 + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==" 249 + }, 250 + "@babel/helper-validator-identifier@7.27.1": { 251 + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==" 252 + }, 253 + "@babel/helper-validator-option@7.27.1": { 254 + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==" 255 + }, 256 + "@babel/helpers@7.28.3": { 257 + "integrity": "sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw==", 258 + "dependencies": [ 259 + "@babel/template", 260 + "@babel/types" 261 + ] 262 + }, 263 + "@babel/parser@7.28.3": { 264 + "integrity": "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==", 265 + "dependencies": [ 266 + "@babel/types" 267 + ], 268 + "bin": true 269 + }, 270 + "@babel/template@7.27.2": { 271 + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", 272 + "dependencies": [ 273 + "@babel/code-frame", 274 + "@babel/parser", 275 + "@babel/types" 276 + ] 277 + }, 278 + "@babel/traverse@7.28.3": { 279 + "integrity": "sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==", 280 + "dependencies": [ 281 + "@babel/code-frame", 282 + "@babel/generator", 283 + "@babel/helper-globals", 284 + "@babel/parser", 285 + "@babel/template", 286 + "@babel/types", 287 + "debug@4.4.1" 288 + ] 289 + }, 290 + "@babel/types@7.28.2": { 291 + "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", 292 + "dependencies": [ 293 + "@babel/helper-string-parser", 294 + "@babel/helper-validator-identifier" 211 295 ] 212 296 }, 213 297 "@cbor-extract/cbor-extract-darwin-arm64@2.2.0": { ··· 240 324 "os": ["win32"], 241 325 "cpu": ["x64"] 242 326 }, 243 - "@esbuild/aix-ppc64@0.25.9": { 244 - "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==", 327 + "@esbuild/aix-ppc64@0.20.2": { 328 + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", 245 329 "os": ["aix"], 246 330 "cpu": ["ppc64"] 247 331 }, 248 - "@esbuild/android-arm64@0.25.9": { 249 - "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==", 332 + "@esbuild/android-arm64@0.20.2": { 333 + "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", 250 334 "os": ["android"], 251 335 "cpu": ["arm64"] 252 336 }, 253 - "@esbuild/android-arm@0.25.9": { 254 - "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==", 337 + "@esbuild/android-arm@0.20.2": { 338 + "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", 255 339 "os": ["android"], 256 340 "cpu": ["arm"] 257 341 }, 258 - "@esbuild/android-x64@0.25.9": { 259 - "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==", 342 + "@esbuild/android-x64@0.20.2": { 343 + "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", 260 344 "os": ["android"], 261 345 "cpu": ["x64"] 262 346 }, 263 - "@esbuild/darwin-arm64@0.25.9": { 264 - "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==", 347 + "@esbuild/darwin-arm64@0.20.2": { 348 + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", 265 349 "os": ["darwin"], 266 350 "cpu": ["arm64"] 267 351 }, 268 - "@esbuild/darwin-x64@0.25.9": { 269 - "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==", 352 + "@esbuild/darwin-x64@0.20.2": { 353 + "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", 270 354 "os": ["darwin"], 271 355 "cpu": ["x64"] 272 356 }, 273 - "@esbuild/freebsd-arm64@0.25.9": { 274 - "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==", 357 + "@esbuild/freebsd-arm64@0.20.2": { 358 + "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", 275 359 "os": ["freebsd"], 276 360 "cpu": ["arm64"] 277 361 }, 278 - "@esbuild/freebsd-x64@0.25.9": { 279 - "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==", 362 + "@esbuild/freebsd-x64@0.20.2": { 363 + "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", 280 364 "os": ["freebsd"], 281 365 "cpu": ["x64"] 282 366 }, 283 - "@esbuild/linux-arm64@0.25.9": { 284 - "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==", 367 + "@esbuild/linux-arm64@0.20.2": { 368 + "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", 285 369 "os": ["linux"], 286 370 "cpu": ["arm64"] 287 371 }, 288 - "@esbuild/linux-arm@0.25.9": { 289 - "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==", 372 + "@esbuild/linux-arm@0.20.2": { 373 + "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", 290 374 "os": ["linux"], 291 375 "cpu": ["arm"] 292 376 }, 293 - "@esbuild/linux-ia32@0.25.9": { 294 - "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==", 377 + "@esbuild/linux-ia32@0.20.2": { 378 + "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", 295 379 "os": ["linux"], 296 380 "cpu": ["ia32"] 297 381 }, 298 - "@esbuild/linux-loong64@0.25.9": { 299 - "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==", 382 + "@esbuild/linux-loong64@0.20.2": { 383 + "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", 300 384 "os": ["linux"], 301 385 "cpu": ["loong64"] 302 386 }, 303 - "@esbuild/linux-mips64el@0.25.9": { 304 - "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==", 387 + "@esbuild/linux-mips64el@0.20.2": { 388 + "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", 305 389 "os": ["linux"], 306 390 "cpu": ["mips64el"] 307 391 }, 308 - "@esbuild/linux-ppc64@0.25.9": { 309 - "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==", 392 + "@esbuild/linux-ppc64@0.20.2": { 393 + "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", 310 394 "os": ["linux"], 311 395 "cpu": ["ppc64"] 312 396 }, 313 - "@esbuild/linux-riscv64@0.25.9": { 314 - "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==", 397 + "@esbuild/linux-riscv64@0.20.2": { 398 + "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", 315 399 "os": ["linux"], 316 400 "cpu": ["riscv64"] 317 401 }, 318 - "@esbuild/linux-s390x@0.25.9": { 319 - "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==", 402 + "@esbuild/linux-s390x@0.20.2": { 403 + "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", 320 404 "os": ["linux"], 321 405 "cpu": ["s390x"] 322 406 }, 323 - "@esbuild/linux-x64@0.25.9": { 324 - "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==", 407 + "@esbuild/linux-x64@0.20.2": { 408 + "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", 325 409 "os": ["linux"], 326 410 "cpu": ["x64"] 327 411 }, 328 - "@esbuild/netbsd-arm64@0.25.9": { 329 - "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==", 330 - "os": ["netbsd"], 331 - "cpu": ["arm64"] 332 - }, 333 - "@esbuild/netbsd-x64@0.25.9": { 334 - "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==", 412 + "@esbuild/netbsd-x64@0.20.2": { 413 + "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", 335 414 "os": ["netbsd"], 336 415 "cpu": ["x64"] 337 416 }, 338 - "@esbuild/openbsd-arm64@0.25.9": { 339 - "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==", 340 - "os": ["openbsd"], 341 - "cpu": ["arm64"] 342 - }, 343 - "@esbuild/openbsd-x64@0.25.9": { 344 - "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==", 417 + "@esbuild/openbsd-x64@0.20.2": { 418 + "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", 345 419 "os": ["openbsd"], 346 420 "cpu": ["x64"] 347 421 }, 348 - "@esbuild/openharmony-arm64@0.25.9": { 349 - "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==", 350 - "os": ["openharmony"], 351 - "cpu": ["arm64"] 352 - }, 353 - "@esbuild/sunos-x64@0.25.9": { 354 - "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==", 422 + "@esbuild/sunos-x64@0.20.2": { 423 + "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", 355 424 "os": ["sunos"], 356 425 "cpu": ["x64"] 357 426 }, 358 - "@esbuild/win32-arm64@0.25.9": { 359 - "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==", 427 + "@esbuild/win32-arm64@0.20.2": { 428 + "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", 360 429 "os": ["win32"], 361 430 "cpu": ["arm64"] 362 431 }, 363 - "@esbuild/win32-ia32@0.25.9": { 364 - "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==", 432 + "@esbuild/win32-ia32@0.20.2": { 433 + "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", 365 434 "os": ["win32"], 366 435 "cpu": ["ia32"] 367 436 }, 368 - "@esbuild/win32-x64@0.25.9": { 369 - "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==", 437 + "@esbuild/win32-x64@0.20.2": { 438 + "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", 370 439 "os": ["win32"], 371 440 "cpu": ["x64"] 372 441 }, 373 - "@ipld/car@5.4.2": { 374 - "integrity": "sha512-gfyrJvePyXnh2Fbj8mPg4JYvEZ3izhk8C9WgAle7xIYbrJNSXmNQ6BxAls8Gof97vvGbCROdxbTWRmHJtTCbcg==", 442 + "@ipld/dag-cbor@7.0.3": { 443 + "integrity": "sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA==", 375 444 "dependencies": [ 376 - "@ipld/dag-cbor@9.2.4", 377 - "cborg@4.2.11", 378 - "multiformats@13.4.0", 379 - "varint" 445 + "cborg", 446 + "multiformats@9.9.0" 380 447 ] 381 448 }, 382 - "@ipld/dag-cbor@7.0.3": { 383 - "integrity": "sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA==", 449 + "@jridgewell/gen-mapping@0.3.13": { 450 + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", 384 451 "dependencies": [ 385 - "cborg@1.10.2", 386 - "multiformats@9.9.0" 452 + "@jridgewell/sourcemap-codec", 453 + "@jridgewell/trace-mapping" 387 454 ] 388 455 }, 389 - "@ipld/dag-cbor@9.2.4": { 390 - "integrity": "sha512-GbDWYl2fdJgkYtIJN0HY9oO0o50d1nB4EQb7uYWKUd2ztxCjxiEW3PjwGG0nqUpN1G4Cug6LX8NzbA7fKT+zfA==", 456 + "@jridgewell/resolve-uri@3.1.2": { 457 + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==" 458 + }, 459 + "@jridgewell/sourcemap-codec@1.5.5": { 460 + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==" 461 + }, 462 + "@jridgewell/trace-mapping@0.3.30": { 463 + "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", 391 464 "dependencies": [ 392 - "cborg@4.2.11", 393 - "multiformats@13.4.0" 465 + "@jridgewell/resolve-uri", 466 + "@jridgewell/sourcemap-codec" 394 467 ] 395 468 }, 396 469 "@multiformats/base-x@4.0.1": { ··· 408 481 "@noble/hashes@1.8.0": { 409 482 "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==" 410 483 }, 411 - "@rollup/rollup-android-arm-eabi@4.46.4": { 412 - "integrity": "sha512-B2wfzCJ+ps/OBzRjeds7DlJumCU3rXMxJJS1vzURyj7+KBHGONm7c9q1TfdBl4vCuNMkDvARn3PBl2wZzuR5mw==", 413 - "os": ["android"], 414 - "cpu": ["arm"] 415 - }, 416 - "@rollup/rollup-android-arm64@4.46.4": { 417 - "integrity": "sha512-FGJYXvYdn8Bs6lAlBZYT5n+4x0ciEp4cmttsvKAZc/c8/JiPaQK8u0c/86vKX8lA7OY/+37lIQSe0YoAImvBAA==", 418 - "os": ["android"], 419 - "cpu": ["arm64"] 420 - }, 421 - "@rollup/rollup-darwin-arm64@4.46.4": { 422 - "integrity": "sha512-/9qwE/BM7ATw/W/OFEMTm3dmywbJyLQb4f4v5nmOjgYxPIGpw7HaxRi6LnD4Pjn/q7k55FGeHe1/OD02w63apA==", 423 - "os": ["darwin"], 424 - "cpu": ["arm64"] 425 - }, 426 - "@rollup/rollup-darwin-x64@4.46.4": { 427 - "integrity": "sha512-QkWfNbeRuzFnv2d0aPlrzcA3Ebq2mE8kX/5Pl7VdRShbPBjSnom7dbT8E3Jmhxo2RL784hyqGvR5KHavCJQciw==", 428 - "os": ["darwin"], 429 - "cpu": ["x64"] 430 - }, 431 - "@rollup/rollup-freebsd-arm64@4.46.4": { 432 - "integrity": "sha512-+ToyOMYnSfV8D+ckxO6NthPln/PDNp1P6INcNypfZ7muLmEvPKXqduUiD8DlJpMMT8LxHcE5W0dK9kXfJke9Zw==", 433 - "os": ["freebsd"], 434 - "cpu": ["arm64"] 435 - }, 436 - "@rollup/rollup-freebsd-x64@4.46.4": { 437 - "integrity": "sha512-cGT6ey/W+sje6zywbLiqmkfkO210FgRz7tepWAzzEVgQU8Hn91JJmQWNqs55IuglG8sJdzk7XfNgmGRtcYlo1w==", 438 - "os": ["freebsd"], 439 - "cpu": ["x64"] 440 - }, 441 - "@rollup/rollup-linux-arm-gnueabihf@4.46.4": { 442 - "integrity": "sha512-9fhTJyOb275w5RofPSl8lpr4jFowd+H4oQKJ9XTYzD1JWgxdZKE8bA6d4npuiMemkecQOcigX01FNZNCYnQBdA==", 443 - "os": ["linux"], 444 - "cpu": ["arm"] 445 - }, 446 - "@rollup/rollup-linux-arm-musleabihf@4.46.4": { 447 - "integrity": "sha512-+6kCIM5Zjvz2HwPl/udgVs07tPMIp1VU2Y0c72ezjOvSvEfAIWsUgpcSDvnC7g9NrjYR6X9bZT92mZZ90TfvXw==", 448 - "os": ["linux"], 449 - "cpu": ["arm"] 450 - }, 451 - "@rollup/rollup-linux-arm64-gnu@4.46.4": { 452 - "integrity": "sha512-SWuXdnsayCZL4lXoo6jn0yyAj7TTjWE4NwDVt9s7cmu6poMhtiras5c8h6Ih6Y0Zk6Z+8t/mLumvpdSPTWub2Q==", 453 - "os": ["linux"], 454 - "cpu": ["arm64"] 455 - }, 456 - "@rollup/rollup-linux-arm64-musl@4.46.4": { 457 - "integrity": "sha512-vDknMDqtMhrrroa5kyX6tuC0aRZZlQ+ipDfbXd2YGz5HeV2t8HOl/FDAd2ynhs7Ki5VooWiiZcCtxiZ4IjqZwQ==", 458 - "os": ["linux"], 459 - "cpu": ["arm64"] 460 - }, 461 - "@rollup/rollup-linux-loongarch64-gnu@4.46.4": { 462 - "integrity": "sha512-mCBkjRZWhvjtl/x+Bd4fQkWZT8canStKDxGrHlBiTnZmJnWygGcvBylzLVCZXka4dco5ymkWhZlLwKCGFF4ivw==", 463 - "os": ["linux"], 464 - "cpu": ["loong64"] 465 - }, 466 - "@rollup/rollup-linux-ppc64-gnu@4.46.4": { 467 - "integrity": "sha512-YMdz2phOTFF+Z66dQfGf0gmeDSi5DJzY5bpZyeg9CPBkV9QDzJ1yFRlmi/j7WWRf3hYIWrOaJj5jsfwgc8GTHQ==", 468 - "os": ["linux"], 469 - "cpu": ["ppc64"] 470 - }, 471 - "@rollup/rollup-linux-riscv64-gnu@4.46.4": { 472 - "integrity": "sha512-r0WKLSfFAK8ucG024v2yiLSJMedoWvk8yWqfNICX28NHDGeu3F/wBf8KG6mclghx4FsLePxJr/9N8rIj1PtCnw==", 473 - "os": ["linux"], 474 - "cpu": ["riscv64"] 475 - }, 476 - "@rollup/rollup-linux-riscv64-musl@4.46.4": { 477 - "integrity": "sha512-IaizpPP2UQU3MNyPH1u0Xxbm73D+4OupL0bjo4Hm0496e2wg3zuvoAIhubkD1NGy9fXILEExPQy87mweujEatA==", 478 - "os": ["linux"], 479 - "cpu": ["riscv64"] 480 - }, 481 - "@rollup/rollup-linux-s390x-gnu@4.46.4": { 482 - "integrity": "sha512-aCM29orANR0a8wk896p6UEgIfupReupnmISz6SUwMIwTGaTI8MuKdE0OD2LvEg8ondDyZdMvnaN3bW4nFbATPA==", 483 - "os": ["linux"], 484 - "cpu": ["s390x"] 485 - }, 486 - "@rollup/rollup-linux-x64-gnu@4.46.4": { 487 - "integrity": "sha512-0Xj1vZE3cbr/wda8d/m+UeuSL+TDpuozzdD4QaSzu/xSOMK0Su5RhIkF7KVHFQsobemUNHPLEcYllL7ZTCP/Cg==", 488 - "os": ["linux"], 489 - "cpu": ["x64"] 490 - }, 491 - "@rollup/rollup-linux-x64-musl@4.46.4": { 492 - "integrity": "sha512-kM/orjpolfA5yxsx84kI6bnK47AAZuWxglGKcNmokw2yy9i5eHY5UAjcX45jemTJnfHAWo3/hOoRqEeeTdL5hw==", 493 - "os": ["linux"], 494 - "cpu": ["x64"] 495 - }, 496 - "@rollup/rollup-win32-arm64-msvc@4.46.4": { 497 - "integrity": "sha512-cNLH4psMEsWKILW0isbpQA2OvjXLbKvnkcJFmqAptPQbtLrobiapBJVj6RoIvg6UXVp5w0wnIfd/Q56cNpF+Ew==", 498 - "os": ["win32"], 499 - "cpu": ["arm64"] 500 - }, 501 - "@rollup/rollup-win32-ia32-msvc@4.46.4": { 502 - "integrity": "sha512-OiEa5lRhiANpv4SfwYVgQ3opYWi/QmPDC5ve21m8G9pf6ZO+aX1g2EEF1/IFaM1xPSP7mK0msTRXlPs6mIagkg==", 503 - "os": ["win32"], 504 - "cpu": ["ia32"] 505 - }, 506 - "@rollup/rollup-win32-x64-msvc@4.46.4": { 507 - "integrity": "sha512-IKL9mewGZ5UuuX4NQlwOmxPyqielvkAPUS2s1cl6yWjjQvyN3h5JTdVFGD5Jr5xMjRC8setOfGQDVgX8V+dkjg==", 508 - "os": ["win32"], 509 - "cpu": ["x64"] 510 - }, 511 484 "@scure/base@1.2.6": { 512 485 "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==" 513 486 }, 514 - "@sindresorhus/is@0.14.0": { 515 - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" 516 - }, 517 - "@szmarczak/http-timer@1.1.2": { 518 - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", 487 + "@types/node-fetch@2.6.13": { 488 + "integrity": "sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==", 519 489 "dependencies": [ 520 - "defer-to-connect" 521 - ] 522 - }, 523 - "@ts-morph/common@0.25.0": { 524 - "integrity": "sha512-kMnZz+vGGHi4GoHnLmMhGNjm44kGtKUXGnOvrKmMwAuvNjM/PgKVGfUnL7IDvK7Jb2QQ82jq3Zmp04Gy+r3Dkg==", 525 - "dependencies": [ 526 - "minimatch", 527 - "path-browserify", 528 - "tinyglobby" 490 + "@types/node@22.15.15", 491 + "form-data" 529 492 ] 530 493 }, 531 - "@types/body-parser@1.19.6": { 532 - "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", 533 - "dependencies": [ 534 - "@types/connect", 535 - "@types/node" 536 - ] 537 - }, 538 - "@types/connect@3.4.38": { 539 - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", 540 - "dependencies": [ 541 - "@types/node" 542 - ] 543 - }, 544 - "@types/estree@1.0.8": { 545 - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==" 546 - }, 547 - "@types/express-serve-static-core@4.19.6": { 548 - "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", 549 - "dependencies": [ 550 - "@types/node", 551 - "@types/qs", 552 - "@types/range-parser", 553 - "@types/send" 554 - ] 555 - }, 556 - "@types/express@4.17.15": { 557 - "integrity": "sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==", 558 - "dependencies": [ 559 - "@types/body-parser", 560 - "@types/express-serve-static-core", 561 - "@types/qs", 562 - "@types/serve-static" 563 - ] 564 - }, 565 - "@types/http-errors@2.0.5": { 566 - "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==" 567 - }, 568 - "@types/mime@1.3.5": { 569 - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" 494 + "@types/node@14.18.63": { 495 + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==" 570 496 }, 571 497 "@types/node@22.15.15": { 572 498 "integrity": "sha512-R5muMcZob3/Jjchn5LcO8jdKwSCbzqmPB6ruBxMcf9kbxtniZHP327s6C37iOfuw8mbKK3cAQa7sEl7afLrQ8A==", ··· 574 500 "undici-types" 575 501 ] 576 502 }, 577 - "@types/qs@6.14.0": { 578 - "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==" 579 - }, 580 - "@types/range-parser@1.2.7": { 581 - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" 582 - }, 583 - "@types/send@0.17.5": { 584 - "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", 585 - "dependencies": [ 586 - "@types/mime", 587 - "@types/node" 588 - ] 589 - }, 590 - "@types/serve-static@1.15.8": { 591 - "integrity": "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==", 592 - "dependencies": [ 593 - "@types/http-errors", 594 - "@types/node", 595 - "@types/send" 596 - ] 597 - }, 598 503 "abort-controller@3.0.0": { 599 504 "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", 600 505 "dependencies": [ ··· 604 509 "accepts@1.3.8": { 605 510 "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 606 511 "dependencies": [ 607 - "mime-types@2.1.35", 608 - "negotiator@0.6.3" 609 - ] 610 - }, 611 - "accepts@2.0.0": { 612 - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", 613 - "dependencies": [ 614 - "mime-types@3.0.1", 615 - "negotiator@1.0.0" 616 - ] 617 - }, 618 - "ansi-align@3.0.1": { 619 - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", 620 - "dependencies": [ 621 - "string-width" 622 - ] 623 - }, 624 - "ansi-colors@4.1.3": { 625 - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" 626 - }, 627 - "ansi-regex@2.1.1": { 628 - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" 629 - }, 630 - "ansi-regex@5.0.1": { 631 - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" 632 - }, 633 - "ansi-styles@2.2.1": { 634 - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==" 635 - }, 636 - "ansi-styles@3.2.1": { 637 - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 638 - "dependencies": [ 639 - "color-convert@1.9.3" 640 - ] 641 - }, 642 - "ansi-styles@4.3.0": { 643 - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 644 - "dependencies": [ 645 - "color-convert@2.0.1" 646 - ] 647 - }, 648 - "anymatch@3.1.3": { 649 - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 650 - "dependencies": [ 651 - "normalize-path", 652 - "picomatch@2.3.1" 512 + "mime-types", 513 + "negotiator" 653 514 ] 654 515 }, 655 516 "array-flatten@1.1.1": { 656 517 "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" 657 518 }, 519 + "asynckit@0.4.0": { 520 + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 521 + }, 658 522 "atomic-sleep@1.0.0": { 659 523 "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==" 660 524 }, 661 525 "await-lock@2.2.2": { 662 526 "integrity": "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==" 663 527 }, 664 - "balanced-match@1.0.2": { 665 - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 528 + "babel-plugin-react-compiler@19.1.0-rc.2": { 529 + "integrity": "sha512-kSNA//p5fMO6ypG8EkEVPIqAjwIXm5tMjfD1XRPL/sRjYSbJ6UsvORfaeolNWnZ9n310aM0xJP7peW26BuCVzA==", 530 + "dependencies": [ 531 + "@babel/types" 532 + ] 666 533 }, 667 534 "base64-js@1.5.1": { 668 535 "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" 669 - }, 670 - "binary-extensions@2.3.0": { 671 - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==" 672 536 }, 673 537 "body-parser@1.20.3": { 674 538 "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", ··· 679 543 "depd", 680 544 "destroy", 681 545 "http-errors", 682 - "iconv-lite@0.4.24", 683 - "on-finished@2.4.1", 684 - "qs@6.13.0", 685 - "raw-body@2.5.2", 686 - "type-is@1.6.18", 546 + "iconv-lite", 547 + "on-finished", 548 + "qs", 549 + "raw-body", 550 + "type-is", 687 551 "unpipe" 688 552 ] 689 553 }, 690 - "body-parser@2.2.0": { 691 - "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", 692 - "dependencies": [ 693 - "bytes", 694 - "content-type", 695 - "debug@4.4.1", 696 - "http-errors", 697 - "iconv-lite@0.6.3", 698 - "on-finished@2.4.1", 699 - "qs@6.14.0", 700 - "raw-body@3.0.0", 701 - "type-is@2.0.1" 702 - ] 703 - }, 704 - "boxen@4.2.0": { 705 - "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", 706 - "dependencies": [ 707 - "ansi-align", 708 - "camelcase", 709 - "chalk@3.0.0", 710 - "cli-boxes", 711 - "string-width", 712 - "term-size", 713 - "type-fest", 714 - "widest-line" 715 - ] 716 - }, 717 - "brace-expansion@2.0.2": { 718 - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", 719 - "dependencies": [ 720 - "balanced-match" 721 - ] 722 - }, 723 - "braces@3.0.3": { 724 - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 554 + "browserslist@4.25.3": { 555 + "integrity": "sha512-cDGv1kkDI4/0e5yON9yM5G/0A5u8sf5TnmdX5C9qHzI9PPu++sQ9zjm1k9NiOrf3riY4OkK0zSGqfvJyJsgCBQ==", 725 556 "dependencies": [ 726 - "fill-range" 727 - ] 557 + "caniuse-lite", 558 + "electron-to-chromium", 559 + "node-releases", 560 + "update-browserslist-db" 561 + ], 562 + "bin": true 728 563 }, 729 564 "buffer@6.0.3": { 730 565 "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", ··· 736 571 "bytes@3.1.2": { 737 572 "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" 738 573 }, 739 - "cacheable-request@6.1.0": { 740 - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", 741 - "dependencies": [ 742 - "clone-response", 743 - "get-stream@5.2.0", 744 - "http-cache-semantics", 745 - "keyv", 746 - "lowercase-keys@2.0.0", 747 - "normalize-url", 748 - "responselike" 749 - ] 750 - }, 751 574 "call-bind-apply-helpers@1.0.2": { 752 575 "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", 753 576 "dependencies": [ ··· 762 585 "get-intrinsic" 763 586 ] 764 587 }, 765 - "camelcase@5.3.1": { 766 - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" 588 + "caniuse-lite@1.0.30001737": { 589 + "integrity": "sha512-BiloLiXtQNrY5UyF0+1nSJLXUENuhka2pzy2Fx5pGxqavdrxSCW4U6Pn/PoG3Efspi2frRbHpBV2XsrPE6EDlw==" 767 590 }, 768 591 "canonicalize@2.1.0": { 769 592 "integrity": "sha512-F705O3xrsUtgt98j7leetNhTWPe+5S72rlL5O4jA1pKqBVQ/dT1O1D6PFxmSXvc0SUOinWS57DKx0I3CHrXJHQ==", ··· 795 618 "integrity": "sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug==", 796 619 "bin": true 797 620 }, 798 - "cborg@4.2.11": { 799 - "integrity": "sha512-7gs3iaqtsD9OHowgqzc6ixQGwSBONqosVR2co0Bg0pARgrLap+LCcEIXJuuIz2jHy0WWQeDMFPEsU2r17I2XPQ==", 800 - "bin": true 801 - }, 802 - "chalk@1.1.3": { 803 - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", 621 + "combined-stream@1.0.8": { 622 + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 804 623 "dependencies": [ 805 - "ansi-styles@2.2.1", 806 - "escape-string-regexp", 807 - "has-ansi", 808 - "strip-ansi@3.0.1", 809 - "supports-color@2.0.0" 810 - ] 811 - }, 812 - "chalk@2.4.2": { 813 - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 814 - "dependencies": [ 815 - "ansi-styles@3.2.1", 816 - "escape-string-regexp", 817 - "supports-color@5.5.0" 818 - ] 819 - }, 820 - "chalk@3.0.0": { 821 - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", 822 - "dependencies": [ 823 - "ansi-styles@4.3.0", 824 - "supports-color@7.2.0" 825 - ] 826 - }, 827 - "chalk@4.1.2": { 828 - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 829 - "dependencies": [ 830 - "ansi-styles@4.3.0", 831 - "supports-color@7.2.0" 832 - ] 833 - }, 834 - "chokidar@3.6.0": { 835 - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", 836 - "dependencies": [ 837 - "anymatch", 838 - "braces", 839 - "glob-parent", 840 - "is-binary-path", 841 - "is-glob", 842 - "normalize-path", 843 - "readdirp" 844 - ], 845 - "optionalDependencies": [ 846 - "fsevents" 847 - ] 848 - }, 849 - "ci-info@2.0.0": { 850 - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" 851 - }, 852 - "cli-boxes@2.2.1": { 853 - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" 854 - }, 855 - "cliui@6.0.0": { 856 - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", 857 - "dependencies": [ 858 - "string-width", 859 - "strip-ansi@6.0.1", 860 - "wrap-ansi" 861 - ] 862 - }, 863 - "clone-response@1.0.3": { 864 - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", 865 - "dependencies": [ 866 - "mimic-response" 867 - ] 868 - }, 869 - "code-block-writer@13.0.3": { 870 - "integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==" 871 - }, 872 - "color-convert@1.9.3": { 873 - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 874 - "dependencies": [ 875 - "color-name@1.1.3" 876 - ] 877 - }, 878 - "color-convert@2.0.1": { 879 - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 880 - "dependencies": [ 881 - "color-name@1.1.4" 882 - ] 883 - }, 884 - "color-name@1.1.3": { 885 - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" 886 - }, 887 - "color-name@1.1.4": { 888 - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 889 - }, 890 - "commander@9.5.0": { 891 - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==" 892 - }, 893 - "configstore@5.0.1": { 894 - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", 895 - "dependencies": [ 896 - "dot-prop", 897 - "graceful-fs", 898 - "make-dir", 899 - "unique-string", 900 - "write-file-atomic", 901 - "xdg-basedir" 902 - ] 903 - }, 904 - "connect-history-api-fallback@1.6.0": { 905 - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==" 906 - }, 907 - "connect-livereload@0.6.1": { 908 - "integrity": "sha512-3R0kMOdL7CjJpU66fzAkCe6HNtd3AavCS4m+uW4KtJjrdGPT0SQEZieAYd+cm+lJoBznNQ4lqipYWkhBMgk00g==" 909 - }, 910 - "connect@3.7.0": { 911 - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", 912 - "dependencies": [ 913 - "debug@2.6.9", 914 - "finalhandler@1.1.2", 915 - "parseurl", 916 - "utils-merge" 624 + "delayed-stream" 917 625 ] 918 626 }, 919 627 "content-disposition@0.5.4": { ··· 922 630 "safe-buffer" 923 631 ] 924 632 }, 925 - "content-disposition@1.0.0": { 926 - "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", 927 - "dependencies": [ 928 - "safe-buffer" 929 - ] 930 - }, 931 633 "content-type@1.0.5": { 932 634 "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" 933 635 }, 636 + "convert-source-map@2.0.0": { 637 + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" 638 + }, 934 639 "cookie-signature@1.0.6": { 935 640 "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" 936 - }, 937 - "cookie-signature@1.2.2": { 938 - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==" 939 641 }, 940 642 "cookie@0.7.1": { 941 643 "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==" 942 644 }, 943 - "cookie@0.7.2": { 944 - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==" 945 - }, 946 - "cp-file@7.0.0": { 947 - "integrity": "sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw==", 948 - "dependencies": [ 949 - "graceful-fs", 950 - "make-dir", 951 - "nested-error-stacks", 952 - "p-event" 953 - ] 954 - }, 955 645 "cross-fetch@4.1.0": { 956 646 "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", 957 647 "dependencies": [ 958 648 "node-fetch" 959 649 ] 960 - }, 961 - "crypto-random-string@2.0.0": { 962 - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" 963 650 }, 964 651 "debug@2.6.9": { 965 652 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", ··· 973 660 "ms@2.1.3" 974 661 ] 975 662 }, 976 - "decamelize@1.2.0": { 977 - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" 663 + "delayed-stream@1.0.0": { 664 + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" 978 665 }, 979 - "decompress-response@3.3.0": { 980 - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", 666 + "deno-cache@0.2.12": { 667 + "integrity": "sha512-Jv8utRPQhsm+kx9ky0OdUnTWBLKGlFcBoLjQqrpuDd9zhuciCLPmklbz1YYfdaeM0dgp1nwRoqlHu5sH3vmJGQ==", 981 668 "dependencies": [ 982 - "mimic-response" 669 + "@types/node@14.18.63", 670 + "@types/node-fetch", 671 + "node-fetch" 983 672 ] 984 673 }, 985 - "deep-extend@0.6.0": { 986 - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" 987 - }, 988 - "defer-to-connect@1.1.3": { 989 - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" 674 + "deno-importmap@0.1.6": { 675 + "integrity": "sha512-nZ5ZA8qW5F0Yzq1VhRp1wARpWSfD0FQvI1IUHXbE3oROO6tcYomTIWSAZGzO4LGQl1hTG6UmhPNTP3d4uMXzMg==", 676 + "dependencies": [ 677 + "@types/node@14.18.63" 678 + ] 990 679 }, 991 680 "depd@2.0.0": { 992 681 "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" ··· 1014 703 "did-resolver@4.1.0": { 1015 704 "integrity": "sha512-S6fWHvCXkZg2IhS4RcVHxwuyVejPR7c+a4Go0xbQ9ps5kILa8viiYQgrM4gfTyeTjJ0ekgJH9gk/BawTpmkbZA==" 1016 705 }, 1017 - "docsify-cli@4.4.4": { 1018 - "integrity": "sha512-NAZgg6b0BsDuq/Pe+P19Qb2J1d+ZVbS0eGkeCNxyu4F9/CQSsRqZqAvPJ9/0I+BCHn4sgftA2jluqhQVzKzrSA==", 1019 - "dependencies": [ 1020 - "chalk@2.4.2", 1021 - "connect", 1022 - "connect-history-api-fallback", 1023 - "connect-livereload", 1024 - "cp-file", 1025 - "docsify", 1026 - "docsify-server-renderer", 1027 - "enquirer", 1028 - "fs-extra", 1029 - "get-port", 1030 - "livereload", 1031 - "lru-cache", 1032 - "open", 1033 - "serve-static@1.16.2", 1034 - "update-notifier", 1035 - "yargonaut", 1036 - "yargs" 1037 - ], 1038 - "bin": true 1039 - }, 1040 - "docsify-server-renderer@4.13.1": { 1041 - "integrity": "sha512-XNJeCK3zp+mVO7JZFn0bH4hNBAMMC1MbuCU7CBsjLHYn4NHrjIgCBGmylzEan3/4Qm6kbSzQx8XzUK5T7GQxHw==", 1042 - "dependencies": [ 1043 - "debug@4.4.1", 1044 - "docsify", 1045 - "node-fetch", 1046 - "resolve-pathname" 1047 - ], 1048 - "deprecated": true 1049 - }, 1050 - "docsify@4.13.1": { 1051 - "integrity": "sha512-BsDypTBhw0mfslw9kZgAspCMZSM+sUIIDg5K/t1hNLkvbem9h64ZQc71e1IpY+iWsi/KdeqfazDfg52y2Lmm0A==", 1052 - "dependencies": [ 1053 - "marked", 1054 - "medium-zoom", 1055 - "opencollective-postinstall", 1056 - "prismjs", 1057 - "strip-indent", 1058 - "tinydate", 1059 - "tweezer.js" 1060 - ], 1061 - "scripts": true 1062 - }, 1063 - "dot-prop@5.3.0": { 1064 - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", 1065 - "dependencies": [ 1066 - "is-obj" 1067 - ] 1068 - }, 1069 706 "dunder-proto@1.0.1": { 1070 707 "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", 1071 708 "dependencies": [ ··· 1074 711 "gopd" 1075 712 ] 1076 713 }, 1077 - "duplexer3@0.1.5": { 1078 - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" 1079 - }, 1080 714 "ee-first@1.1.1": { 1081 715 "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" 1082 716 }, 1083 - "emoji-regex@8.0.0": { 1084 - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 717 + "electron-to-chromium@1.5.209": { 718 + "integrity": "sha512-Xoz0uMrim9ZETCQt8UgM5FxQF9+imA7PBpokoGcZloA1uw2LeHzTlip5cb5KOAsXZLjh/moN2vReN3ZjJmjI9A==" 1085 719 }, 1086 720 "encodeurl@1.0.2": { 1087 721 "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" ··· 1089 723 "encodeurl@2.0.0": { 1090 724 "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==" 1091 725 }, 1092 - "end-of-stream@1.4.5": { 1093 - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", 1094 - "dependencies": [ 1095 - "once" 1096 - ] 1097 - }, 1098 - "enquirer@2.4.1": { 1099 - "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", 1100 - "dependencies": [ 1101 - "ansi-colors", 1102 - "strip-ansi@6.0.1" 1103 - ] 1104 - }, 1105 726 "es-define-property@1.0.1": { 1106 727 "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" 1107 728 }, ··· 1114 735 "es-errors" 1115 736 ] 1116 737 }, 1117 - "esbuild@0.25.9": { 1118 - "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==", 738 + "es-set-tostringtag@2.1.0": { 739 + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", 740 + "dependencies": [ 741 + "es-errors", 742 + "get-intrinsic", 743 + "has-tostringtag", 744 + "hasown" 745 + ] 746 + }, 747 + "esbuild-plugin-cache@0.2.10": { 748 + "integrity": "sha512-e2Z8TgorvVKuj2A8/VP+sC04rt47JTpaew+9uP4CN7106W/cQxY1cqC1KWm+szwpfzJbBqXOpAqN4JPRySbW+A==", 749 + "dependencies": [ 750 + "deno-cache", 751 + "deno-importmap" 752 + ] 753 + }, 754 + "esbuild@0.20.2": { 755 + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", 1119 756 "optionalDependencies": [ 1120 757 "@esbuild/aix-ppc64", 1121 758 "@esbuild/android-arm", ··· 1134 771 "@esbuild/linux-riscv64", 1135 772 "@esbuild/linux-s390x", 1136 773 "@esbuild/linux-x64", 1137 - "@esbuild/netbsd-arm64", 1138 774 "@esbuild/netbsd-x64", 1139 - "@esbuild/openbsd-arm64", 1140 775 "@esbuild/openbsd-x64", 1141 - "@esbuild/openharmony-arm64", 1142 776 "@esbuild/sunos-x64", 1143 777 "@esbuild/win32-arm64", 1144 778 "@esbuild/win32-ia32", ··· 1147 781 "scripts": true, 1148 782 "bin": true 1149 783 }, 1150 - "escape-goat@2.1.1": { 1151 - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" 784 + "escalade@3.2.0": { 785 + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==" 1152 786 }, 1153 787 "escape-html@1.0.3": { 1154 788 "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" 1155 - }, 1156 - "escape-string-regexp@1.0.5": { 1157 - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" 1158 789 }, 1159 790 "etag@1.8.1": { 1160 791 "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" ··· 1168 799 "express@4.21.2": { 1169 800 "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", 1170 801 "dependencies": [ 1171 - "accepts@1.3.8", 802 + "accepts", 1172 803 "array-flatten", 1173 - "body-parser@1.20.3", 1174 - "content-disposition@0.5.4", 804 + "body-parser", 805 + "content-disposition", 1175 806 "content-type", 1176 - "cookie@0.7.1", 1177 - "cookie-signature@1.0.6", 807 + "cookie", 808 + "cookie-signature", 1178 809 "debug@2.6.9", 1179 810 "depd", 1180 811 "encodeurl@2.0.0", 1181 812 "escape-html", 1182 813 "etag", 1183 - "finalhandler@1.3.1", 1184 - "fresh@0.5.2", 814 + "finalhandler", 815 + "fresh", 1185 816 "http-errors", 1186 - "merge-descriptors@1.0.3", 817 + "merge-descriptors", 1187 818 "methods", 1188 - "on-finished@2.4.1", 819 + "on-finished", 1189 820 "parseurl", 1190 - "path-to-regexp@0.1.12", 821 + "path-to-regexp", 1191 822 "proxy-addr", 1192 - "qs@6.13.0", 823 + "qs", 1193 824 "range-parser", 1194 825 "safe-buffer", 1195 - "send@0.19.0", 1196 - "serve-static@1.16.2", 826 + "send", 827 + "serve-static", 1197 828 "setprototypeof", 1198 - "statuses@2.0.1", 1199 - "type-is@1.6.18", 829 + "statuses", 830 + "type-is", 1200 831 "utils-merge", 1201 832 "vary" 1202 833 ] 1203 834 }, 1204 - "express@5.1.0": { 1205 - "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", 1206 - "dependencies": [ 1207 - "accepts@2.0.0", 1208 - "body-parser@2.2.0", 1209 - "content-disposition@1.0.0", 1210 - "content-type", 1211 - "cookie@0.7.2", 1212 - "cookie-signature@1.2.2", 1213 - "debug@4.4.1", 1214 - "encodeurl@2.0.0", 1215 - "escape-html", 1216 - "etag", 1217 - "finalhandler@2.1.0", 1218 - "fresh@2.0.0", 1219 - "http-errors", 1220 - "merge-descriptors@2.0.0", 1221 - "mime-types@3.0.1", 1222 - "on-finished@2.4.1", 1223 - "once", 1224 - "parseurl", 1225 - "proxy-addr", 1226 - "qs@6.14.0", 1227 - "range-parser", 1228 - "router", 1229 - "send@1.2.0", 1230 - "serve-static@2.2.0", 1231 - "statuses@2.0.2", 1232 - "type-is@2.0.1", 1233 - "vary" 1234 - ] 1235 - }, 1236 835 "fast-redact@3.5.0": { 1237 836 "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==" 1238 837 }, 1239 - "fdir@6.5.0_picomatch@4.0.3": { 1240 - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", 1241 - "dependencies": [ 1242 - "picomatch@4.0.3" 1243 - ], 1244 - "optionalPeers": [ 1245 - "picomatch@4.0.3" 1246 - ] 1247 - }, 1248 - "figlet@1.8.2": { 1249 - "integrity": "sha512-iPCpE9B/rOcjewIzDnagP9F2eySzGeHReX8WlrZQJkqFBk2wvq8gY0c6U6Hd2y9HnX1LQcYSeP7aEHoPt6sVKQ==", 1250 - "bin": true 1251 - }, 1252 - "fill-range@7.1.1": { 1253 - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 1254 - "dependencies": [ 1255 - "to-regex-range" 1256 - ] 1257 - }, 1258 - "finalhandler@1.1.2": { 1259 - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 1260 - "dependencies": [ 1261 - "debug@2.6.9", 1262 - "encodeurl@1.0.2", 1263 - "escape-html", 1264 - "on-finished@2.3.0", 1265 - "parseurl", 1266 - "statuses@1.5.0", 1267 - "unpipe" 1268 - ] 1269 - }, 1270 838 "finalhandler@1.3.1": { 1271 839 "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", 1272 840 "dependencies": [ 1273 841 "debug@2.6.9", 1274 842 "encodeurl@2.0.0", 1275 843 "escape-html", 1276 - "on-finished@2.4.1", 844 + "on-finished", 1277 845 "parseurl", 1278 - "statuses@2.0.1", 846 + "statuses", 1279 847 "unpipe" 1280 848 ] 1281 849 }, 1282 - "finalhandler@2.1.0": { 1283 - "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", 850 + "form-data@4.0.4": { 851 + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", 1284 852 "dependencies": [ 1285 - "debug@4.4.1", 1286 - "encodeurl@2.0.0", 1287 - "escape-html", 1288 - "on-finished@2.4.1", 1289 - "parseurl", 1290 - "statuses@2.0.2" 1291 - ] 1292 - }, 1293 - "find-up@4.1.0": { 1294 - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 1295 - "dependencies": [ 1296 - "locate-path", 1297 - "path-exists" 853 + "asynckit", 854 + "combined-stream", 855 + "es-set-tostringtag", 856 + "hasown", 857 + "mime-types" 1298 858 ] 1299 859 }, 1300 860 "forwarded@0.2.0": { ··· 1303 863 "fresh@0.5.2": { 1304 864 "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" 1305 865 }, 1306 - "fresh@2.0.0": { 1307 - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==" 1308 - }, 1309 - "fs-extra@8.1.0": { 1310 - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", 1311 - "dependencies": [ 1312 - "graceful-fs", 1313 - "jsonfile", 1314 - "universalify" 1315 - ] 1316 - }, 1317 - "fsevents@2.3.3": { 1318 - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1319 - "os": ["darwin"], 1320 - "scripts": true 1321 - }, 1322 866 "function-bind@1.1.2": { 1323 867 "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" 1324 868 }, 1325 - "get-caller-file@2.0.5": { 1326 - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" 869 + "gensync@1.0.0-beta.2": { 870 + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" 1327 871 }, 1328 872 "get-intrinsic@1.3.0": { 1329 873 "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", ··· 1340 884 "math-intrinsics" 1341 885 ] 1342 886 }, 1343 - "get-port@5.1.1": { 1344 - "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==" 1345 - }, 1346 887 "get-proto@1.0.1": { 1347 888 "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", 1348 889 "dependencies": [ ··· 1350 891 "es-object-atoms" 1351 892 ] 1352 893 }, 1353 - "get-stream@4.1.0": { 1354 - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", 1355 - "dependencies": [ 1356 - "pump" 1357 - ] 1358 - }, 1359 - "get-stream@5.2.0": { 1360 - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 1361 - "dependencies": [ 1362 - "pump" 1363 - ] 1364 - }, 1365 - "glob-parent@5.1.2": { 1366 - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1367 - "dependencies": [ 1368 - "is-glob" 1369 - ] 1370 - }, 1371 - "global-dirs@2.1.0": { 1372 - "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", 1373 - "dependencies": [ 1374 - "ini" 1375 - ] 1376 - }, 1377 894 "gopd@1.2.0": { 1378 895 "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" 1379 896 }, 1380 - "got@9.6.0": { 1381 - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", 1382 - "dependencies": [ 1383 - "@sindresorhus/is", 1384 - "@szmarczak/http-timer", 1385 - "cacheable-request", 1386 - "decompress-response", 1387 - "duplexer3", 1388 - "get-stream@4.1.0", 1389 - "lowercase-keys@1.0.1", 1390 - "mimic-response", 1391 - "p-cancelable", 1392 - "to-readable-stream", 1393 - "url-parse-lax" 1394 - ] 1395 - }, 1396 - "graceful-fs@4.2.11": { 1397 - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" 1398 - }, 1399 897 "graphemer@1.4.0": { 1400 898 "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" 1401 899 }, 1402 - "has-ansi@2.0.0": { 1403 - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", 1404 - "dependencies": [ 1405 - "ansi-regex@2.1.1" 1406 - ] 1407 - }, 1408 - "has-flag@3.0.0": { 1409 - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" 1410 - }, 1411 - "has-flag@4.0.0": { 1412 - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 1413 - }, 1414 900 "has-symbols@1.1.0": { 1415 901 "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==" 1416 902 }, 1417 - "has-yarn@2.1.0": { 1418 - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" 903 + "has-tostringtag@1.0.2": { 904 + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", 905 + "dependencies": [ 906 + "has-symbols" 907 + ] 1419 908 }, 1420 909 "hasown@2.0.2": { 1421 910 "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", ··· 1423 912 "function-bind" 1424 913 ] 1425 914 }, 1426 - "http-cache-semantics@4.2.0": { 1427 - "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==" 1428 - }, 1429 915 "http-errors@2.0.0": { 1430 916 "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 1431 917 "dependencies": [ 1432 918 "depd", 1433 919 "inherits", 1434 920 "setprototypeof", 1435 - "statuses@2.0.1", 921 + "statuses", 1436 922 "toidentifier" 1437 923 ] 1438 924 }, ··· 1442 928 "safer-buffer" 1443 929 ] 1444 930 }, 1445 - "iconv-lite@0.6.3": { 1446 - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", 1447 - "dependencies": [ 1448 - "safer-buffer" 1449 - ] 1450 - }, 1451 931 "ieee754@1.2.1": { 1452 932 "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" 1453 933 }, 1454 - "import-lazy@2.1.0": { 1455 - "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==" 1456 - }, 1457 - "imurmurhash@0.1.4": { 1458 - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" 1459 - }, 1460 934 "inherits@2.0.4": { 1461 935 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1462 936 }, 1463 - "ini@1.3.7": { 1464 - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==" 1465 - }, 1466 937 "ipaddr.js@1.9.1": { 1467 938 "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 1468 939 }, 1469 - "is-binary-path@2.1.0": { 1470 - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1471 - "dependencies": [ 1472 - "binary-extensions" 1473 - ] 1474 - }, 1475 - "is-ci@2.0.0": { 1476 - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", 1477 - "dependencies": [ 1478 - "ci-info" 1479 - ], 1480 - "bin": true 1481 - }, 1482 - "is-extglob@2.1.1": { 1483 - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" 1484 - }, 1485 - "is-fullwidth-code-point@3.0.0": { 1486 - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" 1487 - }, 1488 - "is-glob@4.0.3": { 1489 - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1490 - "dependencies": [ 1491 - "is-extglob" 1492 - ] 1493 - }, 1494 - "is-installed-globally@0.3.2": { 1495 - "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", 1496 - "dependencies": [ 1497 - "global-dirs", 1498 - "is-path-inside" 1499 - ] 1500 - }, 1501 - "is-npm@4.0.0": { 1502 - "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==" 1503 - }, 1504 - "is-number@7.0.0": { 1505 - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" 1506 - }, 1507 - "is-obj@2.0.0": { 1508 - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" 1509 - }, 1510 - "is-path-inside@3.0.3": { 1511 - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" 1512 - }, 1513 - "is-promise@4.0.0": { 1514 - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" 1515 - }, 1516 - "is-typedarray@1.0.0": { 1517 - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" 1518 - }, 1519 - "is-wsl@1.1.0": { 1520 - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==" 1521 - }, 1522 - "is-yarn-global@0.3.0": { 1523 - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" 1524 - }, 1525 940 "iso-datestring-validator@2.2.2": { 1526 941 "integrity": "sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==" 1527 942 }, 1528 - "json-buffer@3.0.0": { 1529 - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" 943 + "js-tokens@4.0.0": { 944 + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 1530 945 }, 1531 - "jsonfile@4.0.0": { 1532 - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", 1533 - "optionalDependencies": [ 1534 - "graceful-fs" 1535 - ] 946 + "jsesc@3.1.0": { 947 + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", 948 + "bin": true 1536 949 }, 1537 - "keyv@3.1.0": { 1538 - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", 1539 - "dependencies": [ 1540 - "json-buffer" 1541 - ] 950 + "json5@2.2.3": { 951 + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", 952 + "bin": true 1542 953 }, 1543 954 "ky@1.8.1": { 1544 955 "integrity": "sha512-7Bp3TpsE+L+TARSnnDpk3xg8Idi8RwSLdj6CMbNWoOARIrGrbuLGusV0dYwbZOm4bB3jHNxSw8Wk/ByDqJEnDw==" 1545 956 }, 1546 - "latest-version@5.1.0": { 1547 - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", 1548 - "dependencies": [ 1549 - "package-json" 1550 - ] 1551 - }, 1552 - "livereload-js@3.4.1": { 1553 - "integrity": "sha512-5MP0uUeVCec89ZbNOT/i97Mc+q3SxXmiUGhRFOTmhrGPn//uWVQdCvcLJDy64MSBR5MidFdOR7B9viumoavy6g==" 1554 - }, 1555 - "livereload@0.9.3": { 1556 - "integrity": "sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw==", 1557 - "dependencies": [ 1558 - "chokidar", 1559 - "livereload-js", 1560 - "opts", 1561 - "ws@7.5.10" 1562 - ], 1563 - "bin": true 1564 - }, 1565 - "locate-path@5.0.0": { 1566 - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 1567 - "dependencies": [ 1568 - "p-locate" 1569 - ] 1570 - }, 1571 - "lowercase-keys@1.0.1": { 1572 - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" 1573 - }, 1574 - "lowercase-keys@2.0.0": { 1575 - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" 1576 - }, 1577 957 "lru-cache@5.1.1": { 1578 958 "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", 1579 959 "dependencies": [ 1580 960 "yallist" 1581 961 ] 1582 962 }, 1583 - "make-dir@3.1.0": { 1584 - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 1585 - "dependencies": [ 1586 - "semver" 1587 - ] 1588 - }, 1589 - "marked@1.2.9": { 1590 - "integrity": "sha512-H8lIX2SvyitGX+TRdtS06m1jHMijKN/XjfH6Ooii9fvxMlh8QdqBfBDkGUpMWH2kQNrtixjzYUa3SH8ROTgRRw==", 1591 - "bin": true 1592 - }, 1593 963 "math-intrinsics@1.1.0": { 1594 964 "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" 1595 965 }, 1596 966 "media-typer@0.3.0": { 1597 967 "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" 1598 - }, 1599 - "media-typer@1.1.0": { 1600 - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==" 1601 - }, 1602 - "medium-zoom@1.1.0": { 1603 - "integrity": "sha512-ewyDsp7k4InCUp3jRmwHBRFGyjBimKps/AJLjRSox+2q/2H4p/PNpQf+pwONWlJiOudkBXtbdmVbFjqyybfTmQ==" 1604 968 }, 1605 969 "merge-descriptors@1.0.3": { 1606 970 "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==" 1607 971 }, 1608 - "merge-descriptors@2.0.0": { 1609 - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==" 1610 - }, 1611 972 "methods@1.1.2": { 1612 973 "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" 1613 974 }, 1614 975 "mime-db@1.52.0": { 1615 976 "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 1616 977 }, 1617 - "mime-db@1.54.0": { 1618 - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==" 1619 - }, 1620 978 "mime-types@2.1.35": { 1621 979 "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1622 980 "dependencies": [ 1623 - "mime-db@1.52.0" 1624 - ] 1625 - }, 1626 - "mime-types@3.0.1": { 1627 - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", 1628 - "dependencies": [ 1629 - "mime-db@1.54.0" 981 + "mime-db" 1630 982 ] 1631 983 }, 1632 984 "mime@1.6.0": { 1633 985 "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 1634 986 "bin": true 1635 987 }, 1636 - "mimic-response@1.0.1": { 1637 - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" 1638 - }, 1639 - "min-indent@1.0.1": { 1640 - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" 1641 - }, 1642 - "minimatch@9.0.5": { 1643 - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 1644 - "dependencies": [ 1645 - "brace-expansion" 1646 - ] 1647 - }, 1648 - "minimist@1.2.8": { 1649 - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" 1650 - }, 1651 988 "ms@2.0.0": { 1652 989 "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" 1653 990 }, ··· 1667 1004 "multiformats@9.9.0": { 1668 1005 "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==" 1669 1006 }, 1670 - "nanoid@3.3.11": { 1671 - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", 1672 - "bin": true 1673 - }, 1674 1007 "negotiator@0.6.3": { 1675 1008 "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" 1676 1009 }, 1677 - "negotiator@1.0.0": { 1678 - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==" 1679 - }, 1680 - "nested-error-stacks@2.1.1": { 1681 - "integrity": "sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==" 1682 - }, 1683 1010 "node-fetch@2.7.0": { 1684 1011 "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", 1685 1012 "dependencies": [ ··· 1693 1020 ], 1694 1021 "bin": true 1695 1022 }, 1696 - "normalize-path@3.0.0": { 1697 - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" 1698 - }, 1699 - "normalize-url@4.5.1": { 1700 - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" 1023 + "node-releases@2.0.19": { 1024 + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==" 1701 1025 }, 1702 1026 "object-inspect@1.13.4": { 1703 1027 "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==" ··· 1705 1029 "on-exit-leak-free@2.1.2": { 1706 1030 "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==" 1707 1031 }, 1708 - "on-finished@2.3.0": { 1709 - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", 1710 - "dependencies": [ 1711 - "ee-first" 1712 - ] 1713 - }, 1714 1032 "on-finished@2.4.1": { 1715 1033 "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 1716 1034 "dependencies": [ 1717 1035 "ee-first" 1718 1036 ] 1719 1037 }, 1720 - "once@1.4.0": { 1721 - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1722 - "dependencies": [ 1723 - "wrappy" 1724 - ] 1725 - }, 1726 - "open@6.4.0": { 1727 - "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", 1728 - "dependencies": [ 1729 - "is-wsl" 1730 - ] 1731 - }, 1732 - "opencollective-postinstall@2.0.3": { 1733 - "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", 1734 - "bin": true 1735 - }, 1736 - "opts@2.0.2": { 1737 - "integrity": "sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==" 1738 - }, 1739 - "p-cancelable@1.1.0": { 1740 - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" 1741 - }, 1742 - "p-event@4.2.0": { 1743 - "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", 1744 - "dependencies": [ 1745 - "p-timeout" 1746 - ] 1747 - }, 1748 - "p-finally@1.0.0": { 1749 - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==" 1750 - }, 1751 - "p-limit@2.3.0": { 1752 - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 1753 - "dependencies": [ 1754 - "p-try" 1755 - ] 1756 - }, 1757 - "p-locate@4.1.0": { 1758 - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 1759 - "dependencies": [ 1760 - "p-limit" 1761 - ] 1762 - }, 1763 - "p-timeout@3.2.0": { 1764 - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", 1765 - "dependencies": [ 1766 - "p-finally" 1767 - ] 1768 - }, 1769 - "p-try@2.2.0": { 1770 - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" 1771 - }, 1772 - "package-json@6.5.0": { 1773 - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", 1774 - "dependencies": [ 1775 - "got", 1776 - "registry-auth-token", 1777 - "registry-url", 1778 - "semver" 1779 - ] 1780 - }, 1781 - "parent-require@1.0.0": { 1782 - "integrity": "sha512-2MXDNZC4aXdkkap+rBBMv0lUsfJqvX5/2FiYYnfCnorZt3Pk06/IOR5KeaoghgS2w07MLWgjbsnyaq6PdHn2LQ==" 1783 - }, 1784 1038 "parseurl@1.3.3": { 1785 1039 "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 1786 1040 }, 1787 - "path-browserify@1.0.1": { 1788 - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" 1789 - }, 1790 - "path-exists@4.0.0": { 1791 - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" 1792 - }, 1793 1041 "path-to-regexp@0.1.12": { 1794 1042 "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" 1795 1043 }, 1796 - "path-to-regexp@8.2.0": { 1797 - "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==" 1798 - }, 1799 1044 "picocolors@1.1.1": { 1800 1045 "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" 1801 - }, 1802 - "picomatch@2.3.1": { 1803 - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" 1804 - }, 1805 - "picomatch@4.0.3": { 1806 - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==" 1807 1046 }, 1808 1047 "pino-abstract-transport@1.2.0": { 1809 1048 "integrity": "sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==", ··· 1832 1071 ], 1833 1072 "bin": true 1834 1073 }, 1835 - "postcss@8.5.6": { 1836 - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", 1837 - "dependencies": [ 1838 - "nanoid", 1839 - "picocolors", 1840 - "source-map-js" 1841 - ] 1842 - }, 1843 - "prepend-http@2.0.0": { 1844 - "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==" 1845 - }, 1846 - "prettier@3.6.2": { 1847 - "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", 1848 - "bin": true 1849 - }, 1850 - "prismjs@1.30.0": { 1851 - "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==" 1852 - }, 1853 1074 "process-warning@3.0.0": { 1854 1075 "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==" 1855 1076 }, ··· 1863 1084 "ipaddr.js" 1864 1085 ] 1865 1086 }, 1866 - "pump@3.0.3": { 1867 - "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", 1868 - "dependencies": [ 1869 - "end-of-stream", 1870 - "once" 1871 - ] 1872 - }, 1873 - "pupa@2.1.1": { 1874 - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", 1875 - "dependencies": [ 1876 - "escape-goat" 1877 - ] 1878 - }, 1879 1087 "qs@6.13.0": { 1880 1088 "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", 1881 - "dependencies": [ 1882 - "side-channel" 1883 - ] 1884 - }, 1885 - "qs@6.14.0": { 1886 - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", 1887 1089 "dependencies": [ 1888 1090 "side-channel" 1889 1091 ] ··· 1905 1107 "dependencies": [ 1906 1108 "bytes", 1907 1109 "http-errors", 1908 - "iconv-lite@0.4.24", 1110 + "iconv-lite", 1909 1111 "unpipe" 1910 1112 ] 1911 1113 }, 1912 - "raw-body@3.0.0": { 1913 - "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", 1914 - "dependencies": [ 1915 - "bytes", 1916 - "http-errors", 1917 - "iconv-lite@0.6.3", 1918 - "unpipe" 1919 - ] 1920 - }, 1921 - "rc@1.2.8": { 1922 - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 1923 - "dependencies": [ 1924 - "deep-extend", 1925 - "ini", 1926 - "minimist", 1927 - "strip-json-comments" 1928 - ], 1929 - "bin": true 1930 - }, 1931 1114 "readable-stream@4.7.0": { 1932 1115 "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", 1933 1116 "dependencies": [ ··· 1938 1121 "string_decoder" 1939 1122 ] 1940 1123 }, 1941 - "readdirp@3.6.0": { 1942 - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1943 - "dependencies": [ 1944 - "picomatch@2.3.1" 1945 - ] 1946 - }, 1947 1124 "real-require@0.2.0": { 1948 1125 "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==" 1949 1126 }, 1950 - "registry-auth-token@4.2.2": { 1951 - "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", 1952 - "dependencies": [ 1953 - "rc" 1954 - ] 1955 - }, 1956 - "registry-url@5.1.0": { 1957 - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", 1958 - "dependencies": [ 1959 - "rc" 1960 - ] 1961 - }, 1962 - "require-directory@2.1.1": { 1963 - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" 1964 - }, 1965 - "require-main-filename@2.0.0": { 1966 - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" 1967 - }, 1968 - "resolve-pathname@3.0.0": { 1969 - "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" 1970 - }, 1971 - "responselike@1.0.2": { 1972 - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", 1973 - "dependencies": [ 1974 - "lowercase-keys@1.0.1" 1975 - ] 1976 - }, 1977 - "rollup@4.46.4": { 1978 - "integrity": "sha512-YbxoxvoqNg9zAmw4+vzh1FkGAiZRK+LhnSrbSrSXMdZYsRPDWoshcSd/pldKRO6lWzv/e9TiJAVQyirYIeSIPQ==", 1979 - "dependencies": [ 1980 - "@types/estree" 1981 - ], 1982 - "optionalDependencies": [ 1983 - "@rollup/rollup-android-arm-eabi", 1984 - "@rollup/rollup-android-arm64", 1985 - "@rollup/rollup-darwin-arm64", 1986 - "@rollup/rollup-darwin-x64", 1987 - "@rollup/rollup-freebsd-arm64", 1988 - "@rollup/rollup-freebsd-x64", 1989 - "@rollup/rollup-linux-arm-gnueabihf", 1990 - "@rollup/rollup-linux-arm-musleabihf", 1991 - "@rollup/rollup-linux-arm64-gnu", 1992 - "@rollup/rollup-linux-arm64-musl", 1993 - "@rollup/rollup-linux-loongarch64-gnu", 1994 - "@rollup/rollup-linux-ppc64-gnu", 1995 - "@rollup/rollup-linux-riscv64-gnu", 1996 - "@rollup/rollup-linux-riscv64-musl", 1997 - "@rollup/rollup-linux-s390x-gnu", 1998 - "@rollup/rollup-linux-x64-gnu", 1999 - "@rollup/rollup-linux-x64-musl", 2000 - "@rollup/rollup-win32-arm64-msvc", 2001 - "@rollup/rollup-win32-ia32-msvc", 2002 - "@rollup/rollup-win32-x64-msvc", 2003 - "fsevents" 2004 - ], 2005 - "bin": true 2006 - }, 2007 - "router@2.2.0": { 2008 - "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", 2009 - "dependencies": [ 2010 - "debug@4.4.1", 2011 - "depd", 2012 - "is-promise", 2013 - "parseurl", 2014 - "path-to-regexp@8.2.0" 2015 - ] 2016 - }, 2017 1127 "safe-buffer@5.2.1": { 2018 1128 "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 2019 1129 }, ··· 2023 1133 "safer-buffer@2.1.2": { 2024 1134 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 2025 1135 }, 2026 - "semver-diff@3.1.1": { 2027 - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", 2028 - "dependencies": [ 2029 - "semver" 2030 - ] 2031 - }, 2032 1136 "semver@6.3.1": { 2033 1137 "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", 2034 1138 "bin": true ··· 2042 1146 "encodeurl@1.0.2", 2043 1147 "escape-html", 2044 1148 "etag", 2045 - "fresh@0.5.2", 1149 + "fresh", 2046 1150 "http-errors", 2047 1151 "mime", 2048 1152 "ms@2.1.3", 2049 - "on-finished@2.4.1", 1153 + "on-finished", 2050 1154 "range-parser", 2051 - "statuses@2.0.1" 2052 - ] 2053 - }, 2054 - "send@1.2.0": { 2055 - "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", 2056 - "dependencies": [ 2057 - "debug@4.4.1", 2058 - "encodeurl@2.0.0", 2059 - "escape-html", 2060 - "etag", 2061 - "fresh@2.0.0", 2062 - "http-errors", 2063 - "mime-types@3.0.1", 2064 - "ms@2.1.3", 2065 - "on-finished@2.4.1", 2066 - "range-parser", 2067 - "statuses@2.0.2" 1155 + "statuses" 2068 1156 ] 2069 1157 }, 2070 1158 "serve-static@1.16.2": { ··· 2073 1161 "encodeurl@2.0.0", 2074 1162 "escape-html", 2075 1163 "parseurl", 2076 - "send@0.19.0" 2077 - ] 2078 - }, 2079 - "serve-static@2.2.0": { 2080 - "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", 2081 - "dependencies": [ 2082 - "encodeurl@2.0.0", 2083 - "escape-html", 2084 - "parseurl", 2085 - "send@1.2.0" 1164 + "send" 2086 1165 ] 2087 - }, 2088 - "set-blocking@2.0.0": { 2089 - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" 2090 1166 }, 2091 1167 "setprototypeof@1.2.0": { 2092 1168 "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" ··· 2127 1203 "side-channel-weakmap" 2128 1204 ] 2129 1205 }, 2130 - "signal-exit@3.0.7": { 2131 - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" 2132 - }, 2133 1206 "sonic-boom@3.8.1": { 2134 1207 "integrity": "sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==", 2135 1208 "dependencies": [ 2136 1209 "atomic-sleep" 2137 1210 ] 2138 1211 }, 2139 - "source-map-js@1.2.1": { 2140 - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==" 2141 - }, 2142 1212 "split2@4.2.0": { 2143 1213 "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==" 2144 1214 }, 2145 - "statuses@1.5.0": { 2146 - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" 2147 - }, 2148 1215 "statuses@2.0.1": { 2149 1216 "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" 2150 1217 }, 2151 - "statuses@2.0.2": { 2152 - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==" 2153 - }, 2154 - "string-width@4.2.3": { 2155 - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 2156 - "dependencies": [ 2157 - "emoji-regex", 2158 - "is-fullwidth-code-point", 2159 - "strip-ansi@6.0.1" 2160 - ] 2161 - }, 2162 1218 "string_decoder@1.3.0": { 2163 1219 "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 2164 1220 "dependencies": [ 2165 1221 "safe-buffer" 2166 1222 ] 2167 1223 }, 2168 - "strip-ansi@3.0.1": { 2169 - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", 2170 - "dependencies": [ 2171 - "ansi-regex@2.1.1" 2172 - ] 2173 - }, 2174 - "strip-ansi@6.0.1": { 2175 - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2176 - "dependencies": [ 2177 - "ansi-regex@5.0.1" 2178 - ] 2179 - }, 2180 - "strip-indent@3.0.0": { 2181 - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", 2182 - "dependencies": [ 2183 - "min-indent" 2184 - ] 2185 - }, 2186 - "strip-json-comments@2.0.1": { 2187 - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" 2188 - }, 2189 - "supports-color@2.0.0": { 2190 - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==" 2191 - }, 2192 - "supports-color@5.5.0": { 2193 - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2194 - "dependencies": [ 2195 - "has-flag@3.0.0" 2196 - ] 2197 - }, 2198 - "supports-color@7.2.0": { 2199 - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2200 - "dependencies": [ 2201 - "has-flag@4.0.0" 2202 - ] 2203 - }, 2204 - "term-size@2.2.1": { 2205 - "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==" 2206 - }, 2207 1224 "thread-stream@2.7.0": { 2208 1225 "integrity": "sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==", 2209 1226 "dependencies": [ 2210 1227 "real-require" 2211 1228 ] 2212 1229 }, 2213 - "tinydate@1.3.0": { 2214 - "integrity": "sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w==" 2215 - }, 2216 - "tinyglobby@0.2.14_picomatch@4.0.3": { 2217 - "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", 2218 - "dependencies": [ 2219 - "fdir", 2220 - "picomatch@4.0.3" 2221 - ] 2222 - }, 2223 1230 "tlds@1.259.0": { 2224 1231 "integrity": "sha512-AldGGlDP0PNgwppe2quAvuBl18UcjuNtOnDuUkqhd6ipPqrYYBt3aTxK1QTsBVknk97lS2JcafWMghjGWFtunw==", 2225 1232 "bin": true 2226 1233 }, 2227 - "to-readable-stream@1.0.0": { 2228 - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" 2229 - }, 2230 - "to-regex-range@5.0.1": { 2231 - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2232 - "dependencies": [ 2233 - "is-number" 2234 - ] 2235 - }, 2236 1234 "toidentifier@1.0.1": { 2237 1235 "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" 2238 1236 }, 2239 1237 "tr46@0.0.3": { 2240 1238 "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 2241 1239 }, 2242 - "ts-morph@24.0.0": { 2243 - "integrity": "sha512-2OAOg/Ob5yx9Et7ZX4CvTCc0UFoZHwLEJ+dpDPSUi5TgwwlTlX47w+iFRrEwzUZwYACjq83cgjS/Da50Ga37uw==", 2244 - "dependencies": [ 2245 - "@ts-morph/common", 2246 - "code-block-writer" 2247 - ] 2248 - }, 2249 - "tweezer.js@1.5.0": { 2250 - "integrity": "sha512-aSiJz7rGWNAQq7hjMK9ZYDuEawXupcCWgl3woQQSoDP2Oh8O4srWb/uO1PzzHIsrPEOqrjJ2sUb9FERfzuBabQ==" 2251 - }, 2252 - "type-fest@0.8.1": { 2253 - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" 2254 - }, 2255 1240 "type-is@1.6.18": { 2256 1241 "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 2257 1242 "dependencies": [ 2258 - "media-typer@0.3.0", 2259 - "mime-types@2.1.35" 2260 - ] 2261 - }, 2262 - "type-is@2.0.1": { 2263 - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", 2264 - "dependencies": [ 2265 - "content-type", 2266 - "media-typer@1.1.0", 2267 - "mime-types@3.0.1" 2268 - ] 2269 - }, 2270 - "typedarray-to-buffer@3.1.5": { 2271 - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", 2272 - "dependencies": [ 2273 - "is-typedarray" 1243 + "media-typer", 1244 + "mime-types" 2274 1245 ] 2275 1246 }, 2276 1247 "uint8arrays@3.0.0": { ··· 2288 1259 "undici-types@6.21.0": { 2289 1260 "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==" 2290 1261 }, 2291 - "unique-string@2.0.0": { 2292 - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", 2293 - "dependencies": [ 2294 - "crypto-random-string" 2295 - ] 2296 - }, 2297 - "universalify@0.1.2": { 2298 - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" 2299 - }, 2300 1262 "unpipe@1.0.0": { 2301 1263 "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" 2302 1264 }, 2303 - "update-notifier@4.1.3": { 2304 - "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", 2305 - "dependencies": [ 2306 - "boxen", 2307 - "chalk@3.0.0", 2308 - "configstore", 2309 - "has-yarn", 2310 - "import-lazy", 2311 - "is-ci", 2312 - "is-installed-globally", 2313 - "is-npm", 2314 - "is-yarn-global", 2315 - "latest-version", 2316 - "pupa", 2317 - "semver-diff", 2318 - "xdg-basedir" 2319 - ] 2320 - }, 2321 - "url-parse-lax@3.0.0": { 2322 - "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", 1265 + "update-browserslist-db@1.1.3_browserslist@4.25.3": { 1266 + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", 2323 1267 "dependencies": [ 2324 - "prepend-http" 2325 - ] 1268 + "browserslist", 1269 + "escalade", 1270 + "picocolors" 1271 + ], 1272 + "bin": true 2326 1273 }, 2327 1274 "utils-merge@1.0.1": { 2328 1275 "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" 2329 1276 }, 2330 - "varint@6.0.0": { 2331 - "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==" 2332 - }, 2333 1277 "vary@1.1.2": { 2334 1278 "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" 2335 1279 }, 2336 - "vite@7.1.3_@types+node@22.15.15_picomatch@4.0.3": { 2337 - "integrity": "sha512-OOUi5zjkDxYrKhTV3V7iKsoS37VUM7v40+HuwEmcrsf11Cdx9y3DIr2Px6liIcZFwt3XSRpQvFpL3WVy7ApkGw==", 2338 - "dependencies": [ 2339 - "@types/node", 2340 - "esbuild", 2341 - "fdir", 2342 - "picomatch@4.0.3", 2343 - "postcss", 2344 - "rollup", 2345 - "tinyglobby" 2346 - ], 2347 - "optionalDependencies": [ 2348 - "fsevents" 2349 - ], 2350 - "optionalPeers": [ 2351 - "@types/node" 2352 - ], 2353 - "bin": true 2354 - }, 2355 1280 "web-did-resolver@2.0.30": { 2356 1281 "integrity": "sha512-lsv0T+y/zD1bEVkcNfcppk4hQXBlqqoXfYcRG4183Yv53FkY29HNPGErwkNI/AG+lxxsUIR77JqS6pn9uHw/Vw==", 2357 1282 "dependencies": [ ··· 2369 1294 "webidl-conversions" 2370 1295 ] 2371 1296 }, 2372 - "which-module@2.0.1": { 2373 - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" 2374 - }, 2375 - "widest-line@3.1.0": { 2376 - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", 2377 - "dependencies": [ 2378 - "string-width" 2379 - ] 2380 - }, 2381 - "wrap-ansi@6.2.0": { 2382 - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", 2383 - "dependencies": [ 2384 - "ansi-styles@4.3.0", 2385 - "string-width", 2386 - "strip-ansi@6.0.1" 2387 - ] 2388 - }, 2389 - "wrappy@1.0.2": { 2390 - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 2391 - }, 2392 - "write-file-atomic@3.0.3": { 2393 - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", 2394 - "dependencies": [ 2395 - "imurmurhash", 2396 - "is-typedarray", 2397 - "signal-exit", 2398 - "typedarray-to-buffer" 2399 - ] 2400 - }, 2401 - "ws@7.5.10": { 2402 - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==" 2403 - }, 2404 1297 "ws@8.18.3": { 2405 1298 "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==" 2406 1299 }, 2407 - "xdg-basedir@4.0.0": { 2408 - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" 2409 - }, 2410 - "y18n@4.0.3": { 2411 - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" 2412 - }, 2413 1300 "yallist@3.1.1": { 2414 1301 "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" 2415 1302 }, 2416 - "yargonaut@1.1.4": { 2417 - "integrity": "sha512-rHgFmbgXAAzl+1nngqOcwEljqHGG9uUZoPjsdZEs1w5JW9RXYzrSvH/u70C1JE5qFi0qjsdhnUX/dJRpWqitSA==", 2418 - "dependencies": [ 2419 - "chalk@1.1.3", 2420 - "figlet", 2421 - "parent-require" 2422 - ] 1303 + "zod@3.25.76": { 1304 + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==" 2423 1305 }, 2424 - "yargs-parser@18.1.3": { 2425 - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", 2426 - "dependencies": [ 2427 - "camelcase", 2428 - "decamelize" 2429 - ] 2430 - }, 2431 - "yargs@15.4.1": { 2432 - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", 2433 - "dependencies": [ 2434 - "cliui", 2435 - "decamelize", 2436 - "find-up", 2437 - "get-caller-file", 2438 - "require-directory", 2439 - "require-main-filename", 2440 - "set-blocking", 2441 - "string-width", 2442 - "which-module", 2443 - "y18n", 2444 - "yargs-parser" 2445 - ] 2446 - }, 2447 - "yesno@0.4.0": { 2448 - "integrity": "sha512-tdBxmHvbXPBKYIg81bMCB7bVeDmHkRzk5rVJyYYXurwKkHq/MCd8rz4HSJUP7hW0H2NlXiq8IFiWvYKEHhlotA==" 2449 - }, 2450 - "zod@3.25.46": { 2451 - "integrity": "sha512-IqRxcHEIjqLd4LNS/zKffB3Jzg3NwqJxQQ0Ns7pdrvgGkwQsEBdEQcOHaBVqvvZArShRzI39+aMST3FBGmTrLQ==" 1306 + "zod@4.0.17": { 1307 + "integrity": "sha512-1PHjlYRevNxxdy2JZ8JcNAw7rX8V9P1AKkP+x/xZfxB0K5FYfuV+Ug6P/6NVSR2jHQ+FzDDoDHS04nYUsOIyLQ==" 2452 1308 } 2453 1309 }, 1310 + "redirects": { 1311 + "https://esm.sh/@alloc/quick-lru@^5.2.0?target=denonext": "https://esm.sh/@alloc/quick-lru@5.2.0?target=denonext", 1312 + "https://esm.sh/@jridgewell/gen-mapping@^0.3.2?target=denonext": "https://esm.sh/@jridgewell/gen-mapping@0.3.13?target=denonext", 1313 + "https://esm.sh/@jridgewell/resolve-uri@^3.1.0?target=denonext": "https://esm.sh/@jridgewell/resolve-uri@3.1.2?target=denonext", 1314 + "https://esm.sh/@jridgewell/sourcemap-codec@^1.4.14?target=denonext": "https://esm.sh/@jridgewell/sourcemap-codec@1.5.5?target=denonext", 1315 + "https://esm.sh/@jridgewell/sourcemap-codec@^1.5.0?target=denonext": "https://esm.sh/@jridgewell/sourcemap-codec@1.5.5?target=denonext", 1316 + "https://esm.sh/@jridgewell/trace-mapping@^0.3.24?target=denonext": "https://esm.sh/@jridgewell/trace-mapping@0.3.30?target=denonext", 1317 + "https://esm.sh/@nodelib/fs.stat@^2.0.2?target=denonext": "https://esm.sh/@nodelib/fs.stat@2.0.5?target=denonext", 1318 + "https://esm.sh/@nodelib/fs.walk@^1.2.3?target=denonext": "https://esm.sh/@nodelib/fs.walk@1.2.8?target=denonext", 1319 + "https://esm.sh/@tailwindcss/line-clamp?target=denonext": "https://esm.sh/@tailwindcss/line-clamp@0.4.4?target=denonext", 1320 + "https://esm.sh/autoprefixer@10": "https://esm.sh/autoprefixer@10.4.21", 1321 + "https://esm.sh/braces@^3.0.3?target=denonext": "https://esm.sh/braces@3.0.3?target=denonext", 1322 + "https://esm.sh/browserslist@^4.24.4?target=denonext": "https://esm.sh/browserslist@4.25.3?target=denonext", 1323 + "https://esm.sh/camelcase-css@^2.0.1?target=denonext": "https://esm.sh/camelcase-css@2.0.1?target=denonext", 1324 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/background-clip-text?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/background-clip-text?target=denonext", 1325 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/background-img-opts?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/background-img-opts?target=denonext", 1326 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/border-image?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/border-image?target=denonext", 1327 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/border-radius?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/border-radius?target=denonext", 1328 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/calc?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/calc?target=denonext", 1329 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-animation?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-animation?target=denonext", 1330 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-any-link?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-any-link?target=denonext", 1331 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-appearance?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-appearance?target=denonext", 1332 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-autofill?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-autofill?target=denonext", 1333 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-backdrop-filter?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-backdrop-filter?target=denonext", 1334 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-boxdecorationbreak?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-boxdecorationbreak?target=denonext", 1335 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-boxshadow?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-boxshadow?target=denonext", 1336 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-clip-path?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-clip-path?target=denonext", 1337 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-crisp-edges?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-crisp-edges?target=denonext", 1338 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-cross-fade?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-cross-fade?target=denonext", 1339 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-deviceadaptation?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-deviceadaptation?target=denonext", 1340 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-element-function?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-element-function?target=denonext", 1341 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-featurequeries?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-featurequeries?target=denonext", 1342 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-file-selector-button?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-file-selector-button?target=denonext", 1343 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-filter-function?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-filter-function?target=denonext", 1344 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-filters?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-filters?target=denonext", 1345 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-gradients?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-gradients?target=denonext", 1346 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-grid?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-grid?target=denonext", 1347 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-hyphens?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-hyphens?target=denonext", 1348 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-image-set?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-image-set?target=denonext", 1349 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-logical-props?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-logical-props?target=denonext", 1350 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-masks?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-masks?target=denonext", 1351 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-media-resolution?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-media-resolution?target=denonext", 1352 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-overscroll-behavior?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-overscroll-behavior?target=denonext", 1353 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-placeholder-shown?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-placeholder-shown?target=denonext", 1354 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-placeholder?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-placeholder?target=denonext", 1355 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-print-color-adjust?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-print-color-adjust?target=denonext", 1356 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-read-only-write?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-read-only-write?target=denonext", 1357 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-regions?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-regions?target=denonext", 1358 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-selection?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-selection?target=denonext", 1359 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-shapes?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-shapes?target=denonext", 1360 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-snappoints?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-snappoints?target=denonext", 1361 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-sticky?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-sticky?target=denonext", 1362 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-text-align-last?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-text-align-last?target=denonext", 1363 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-text-orientation?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-text-orientation?target=denonext", 1364 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-text-spacing?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-text-spacing?target=denonext", 1365 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-transitions?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-transitions?target=denonext", 1366 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-width-stretch?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-width-stretch?target=denonext", 1367 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css-writing-mode?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-writing-mode?target=denonext", 1368 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css3-boxsizing?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css3-boxsizing?target=denonext", 1369 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css3-cursors-grab?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css3-cursors-grab?target=denonext", 1370 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css3-cursors-newer?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css3-cursors-newer?target=denonext", 1371 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/css3-tabsize?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css3-tabsize?target=denonext", 1372 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/flexbox?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/flexbox?target=denonext", 1373 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/font-feature?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/font-feature?target=denonext", 1374 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/font-kerning?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/font-kerning?target=denonext", 1375 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/fullscreen?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/fullscreen?target=denonext", 1376 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/intrinsic-width?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/intrinsic-width?target=denonext", 1377 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/mdn-css-backdrop-pseudo-element?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/mdn-css-backdrop-pseudo-element?target=denonext", 1378 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/mdn-css-unicode-bidi-isolate-override?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/mdn-css-unicode-bidi-isolate-override?target=denonext", 1379 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/mdn-css-unicode-bidi-isolate?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/mdn-css-unicode-bidi-isolate?target=denonext", 1380 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/mdn-css-unicode-bidi-plaintext?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/mdn-css-unicode-bidi-plaintext?target=denonext", 1381 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/mdn-text-decoration-color?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/mdn-text-decoration-color?target=denonext", 1382 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/mdn-text-decoration-line?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/mdn-text-decoration-line?target=denonext", 1383 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/mdn-text-decoration-shorthand?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/mdn-text-decoration-shorthand?target=denonext", 1384 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/mdn-text-decoration-style?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/mdn-text-decoration-style?target=denonext", 1385 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/multicolumn?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/multicolumn?target=denonext", 1386 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/object-fit?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/object-fit?target=denonext", 1387 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/pointer?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/pointer?target=denonext", 1388 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/text-decoration?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/text-decoration?target=denonext", 1389 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/text-emphasis?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/text-emphasis?target=denonext", 1390 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/text-overflow?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/text-overflow?target=denonext", 1391 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/text-size-adjust?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/text-size-adjust?target=denonext", 1392 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/transforms2d?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/transforms2d?target=denonext", 1393 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/transforms3d?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/transforms3d?target=denonext", 1394 + "https://esm.sh/caniuse-lite@^1.0.30001702/data/features/user-select-none?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/data/features/user-select-none?target=denonext", 1395 + "https://esm.sh/caniuse-lite@^1.0.30001702/dist/unpacker/agents?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/dist/unpacker/agents?target=denonext", 1396 + "https://esm.sh/caniuse-lite@^1.0.30001702/dist/unpacker/feature?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/dist/unpacker/feature?target=denonext", 1397 + "https://esm.sh/caniuse-lite@^1.0.30001735/dist/unpacker/agents?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/dist/unpacker/agents?target=denonext", 1398 + "https://esm.sh/caniuse-lite@^1.0.30001735/dist/unpacker/feature?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/dist/unpacker/feature?target=denonext", 1399 + "https://esm.sh/caniuse-lite@^1.0.30001735/dist/unpacker/region?target=denonext": "https://esm.sh/caniuse-lite@1.0.30001737/dist/unpacker/region?target=denonext", 1400 + "https://esm.sh/cssesc@^3.0.0?target=denonext": "https://esm.sh/cssesc@3.0.0?target=denonext", 1401 + "https://esm.sh/didyoumean@^1.2.2?target=denonext": "https://esm.sh/didyoumean@1.2.2?target=denonext", 1402 + "https://esm.sh/dlv@^1.1.3?target=denonext": "https://esm.sh/dlv@1.1.3?target=denonext", 1403 + "https://esm.sh/electron-to-chromium@^1.5.204/versions?target=denonext": "https://esm.sh/electron-to-chromium@1.5.209/versions?target=denonext", 1404 + "https://esm.sh/fast-glob@^3.3.2?target=denonext": "https://esm.sh/fast-glob@3.3.3?target=denonext", 1405 + "https://esm.sh/fastq@^1.6.0?target=denonext": "https://esm.sh/fastq@1.19.1?target=denonext", 1406 + "https://esm.sh/fill-range@^7.1.1?target=denonext": "https://esm.sh/fill-range@7.1.1?target=denonext", 1407 + "https://esm.sh/fraction.js@^4.3.7?target=denonext": "https://esm.sh/fraction.js@4.3.7?target=denonext", 1408 + "https://esm.sh/glob-parent@^5.1.2?target=denonext": "https://esm.sh/glob-parent@5.1.2?target=denonext", 1409 + "https://esm.sh/glob-parent@^6.0.2?target=denonext": "https://esm.sh/glob-parent@6.0.2?target=denonext", 1410 + "https://esm.sh/is-extglob@^2.1.1?target=denonext": "https://esm.sh/is-extglob@2.1.1?target=denonext", 1411 + "https://esm.sh/is-glob@^4.0.1?target=denonext": "https://esm.sh/is-glob@4.0.3?target=denonext", 1412 + "https://esm.sh/is-glob@^4.0.3?target=denonext": "https://esm.sh/is-glob@4.0.3?target=denonext", 1413 + "https://esm.sh/jiti@^1.21.6/dist/babel?target=denonext": "https://esm.sh/jiti@1.21.7/dist/babel?target=denonext", 1414 + "https://esm.sh/jiti@^1.21.6?target=denonext": "https://esm.sh/jiti@1.21.7?target=denonext", 1415 + "https://esm.sh/lines-and-columns@^1.1.6?target=denonext": "https://esm.sh/lines-and-columns@1.2.4?target=denonext", 1416 + "https://esm.sh/merge2@^1.3.0?target=denonext": "https://esm.sh/merge2@1.4.1?target=denonext", 1417 + "https://esm.sh/micromatch@^4.0.8?target=denonext": "https://esm.sh/micromatch@4.0.8?target=denonext", 1418 + "https://esm.sh/nanoid@^3.3.11/non-secure?target=denonext": "https://esm.sh/nanoid@3.3.11/non-secure?target=denonext", 1419 + "https://esm.sh/node-releases@^2.0.19/data/processed/envs.json?module": "https://esm.sh/node-releases@2.0.19/data/processed/envs.json?module", 1420 + "https://esm.sh/node-releases@^2.0.19/data/release-schedule/release-schedule.json?module": "https://esm.sh/node-releases@2.0.19/data/release-schedule/release-schedule.json?module", 1421 + "https://esm.sh/normalize-path@^3.0.0?target=denonext": "https://esm.sh/normalize-path@3.0.0?target=denonext", 1422 + "https://esm.sh/normalize-range@^0.1.2?target=denonext": "https://esm.sh/normalize-range@0.1.2?target=denonext", 1423 + "https://esm.sh/object-hash@^3.0.0?target=denonext": "https://esm.sh/object-hash@3.0.0?target=denonext", 1424 + "https://esm.sh/picocolors@^1.1.1?target=denonext": "https://esm.sh/picocolors@1.1.1?target=denonext", 1425 + "https://esm.sh/picomatch@^2.3.1/lib/utils?target=denonext": "https://esm.sh/picomatch@2.3.1/lib/utils?target=denonext", 1426 + "https://esm.sh/picomatch@^2.3.1?target=denonext": "https://esm.sh/picomatch@2.3.1?target=denonext", 1427 + "https://esm.sh/postcss-js@^4.0.1?target=denonext": "https://esm.sh/postcss-js@4.0.1?target=denonext", 1428 + "https://esm.sh/postcss-nested@^6.2.0?target=denonext": "https://esm.sh/postcss-nested@6.2.0?target=denonext", 1429 + "https://esm.sh/postcss-selector-parser@^6.1.1?target=denonext": "https://esm.sh/postcss-selector-parser@6.1.2?target=denonext", 1430 + "https://esm.sh/postcss-selector-parser@^6.1.2/dist/util/unesc?target=denonext": "https://esm.sh/postcss-selector-parser@6.1.2/dist/util/unesc?target=denonext", 1431 + "https://esm.sh/postcss-selector-parser@^6.1.2?target=denonext": "https://esm.sh/postcss-selector-parser@6.1.2?target=denonext", 1432 + "https://esm.sh/postcss-value-parser@^4.2.0?target=denonext": "https://esm.sh/postcss-value-parser@4.2.0?target=denonext", 1433 + "https://esm.sh/postcss@8": "https://esm.sh/postcss@8.5.6", 1434 + "https://esm.sh/postcss@^8.1.0?target=denonext": "https://esm.sh/postcss@8.5.6?target=denonext", 1435 + "https://esm.sh/postcss@^8.2.14?target=denonext": "https://esm.sh/postcss@8.5.6?target=denonext", 1436 + "https://esm.sh/postcss@^8.4.21?target=denonext": "https://esm.sh/postcss@8.5.6?target=denonext", 1437 + "https://esm.sh/postcss@^8.4.47?target=denonext": "https://esm.sh/postcss@8.5.6?target=denonext", 1438 + "https://esm.sh/queue-microtask@^1.2.2?target=denonext": "https://esm.sh/queue-microtask@1.2.3?target=denonext", 1439 + "https://esm.sh/reusify@^1.0.4?target=denonext": "https://esm.sh/reusify@1.1.0?target=denonext", 1440 + "https://esm.sh/run-parallel@^1.1.9?target=denonext": "https://esm.sh/run-parallel@1.2.0?target=denonext", 1441 + "https://esm.sh/source-map-js@^1.2.1?target=denonext": "https://esm.sh/source-map-js@1.2.1?target=denonext", 1442 + "https://esm.sh/sucrase@^3.35.0?target=denonext": "https://esm.sh/sucrase@3.35.0?target=denonext", 1443 + "https://esm.sh/tailwindcss@3": "https://esm.sh/tailwindcss@3.4.17", 1444 + "https://esm.sh/tailwindcss@^4.0.0-beta.9/plugin?target=denonext": "https://esm.sh/tailwindcss@4.1.12/plugin?target=denonext", 1445 + "https://esm.sh/to-regex-range@^5.0.1?target=denonext": "https://esm.sh/to-regex-range@5.0.1?target=denonext", 1446 + "https://esm.sh/ts-interface-checker@^0.1.9?target=denonext": "https://esm.sh/ts-interface-checker@0.1.13?target=denonext", 1447 + "https://esm.sh/util-deprecate@^1.0.2?target=denonext": "https://esm.sh/util-deprecate@1.0.2?target=denonext" 1448 + }, 2454 1449 "remote": { 2455 - "https://deno.land/x/lru@1.0.2/mod.ts": "1d44b87c4d40ff33749ae5fd85fe234344e0dace835fdfeb48413edea9461159", 2456 - "https://esm.sh/multiformats@13.1.1/bases/base58": "3ec9726ed217d96c33924e3357102a0c4ee9130f68ea362525a1a4df0ff306a4", 2457 - "https://esm.sh/multiformats@13.1.1/denonext/bases/base58.mjs": "d99841a98cda1b2685519b4914e62e61fd22dc2647a02cc6f70bee0658635302", 2458 - "https://esm.sh/multiformats@13.1.1/denonext/bytes.mjs": "d8578dcc54b8e5c345f6b3b83ed1ada64f400353fc2e7d8b15179723856d7315", 2459 - "https://esm.sh/multiformats@13.1.1/denonext/dist/src/bases/base.mjs": "a72250e285c1709319c71742654598cd0f149b03b616b268a0abd63fe396fc6c" 1450 + "https://esm.sh/@alloc/quick-lru@5.2.0/denonext/quick-lru.mjs": "18d5ab8b0ee2b8c0ba55eab65a86f126f480d5d0ca85eeefa32f9ee2e399f110", 1451 + "https://esm.sh/@alloc/quick-lru@5.2.0?target=denonext": "8506b81cc497d3d01a8b06176598c36333efab2f6773b5f681f4bfbeba33079d", 1452 + "https://esm.sh/@jridgewell/gen-mapping@0.3.13/denonext/gen-mapping.mjs": "297f733cd1f48cde4050055e4379df23b701394106946ec8692f41fd4fbc06a3", 1453 + "https://esm.sh/@jridgewell/gen-mapping@0.3.13?target=denonext": "d3eb8a4aee09dd989ae0d8121874e9ef41d7b1c2261a8809250654d040b54e83", 1454 + "https://esm.sh/@jridgewell/resolve-uri@3.1.2/denonext/resolve-uri.mjs": "2da147ad4f55ddeff542640347c789ff19db8db4ead77cce27a0c171f5f5c349", 1455 + "https://esm.sh/@jridgewell/resolve-uri@3.1.2?target=denonext": "9f734a6f626960d09b0ddb1965c08a7d5960fec667f891b4a0a55d23d0bfac51", 1456 + "https://esm.sh/@jridgewell/sourcemap-codec@1.5.5/denonext/sourcemap-codec.mjs": "51baa3e273e77b02f11ce4ed87b71cad04b839a47ba88ab320aafd5d96780eb8", 1457 + "https://esm.sh/@jridgewell/sourcemap-codec@1.5.5?target=denonext": "92c30f6ceeb81e53eb90d72ecbe02f22216c2c8613582768f10fca120d3812ab", 1458 + "https://esm.sh/@jridgewell/trace-mapping@0.3.30/denonext/trace-mapping.mjs": "76ce197a54a9e8296ccefda22951f70f8c889c29bc6ba3ee49f11b6b51084478", 1459 + "https://esm.sh/@jridgewell/trace-mapping@0.3.30?target=denonext": "b48a6080590350f580de059f118f46810488cdceb1158dc2f53513a25451cc08", 1460 + "https://esm.sh/@nodelib/fs.scandir@2.1.5/denonext/fs.scandir.mjs": "274e376535b7b253c73f86a42b3bda10049b6fea75db4cc7b53b88db339286b9", 1461 + "https://esm.sh/@nodelib/fs.stat@2.0.5/denonext/fs.stat.mjs": "54da00841dc5e6b5581f50e299fb9fd23864c11526145c2bd581e5b40737cecf", 1462 + "https://esm.sh/@nodelib/fs.stat@2.0.5?target=denonext": "7703befd72f56697b978206aa0942d7f53aab31b0a55f1244b4fd794fc81499c", 1463 + "https://esm.sh/@nodelib/fs.walk@1.2.8/denonext/fs.walk.mjs": "ce895194f61083880e5aef2390ea4edcfc12597f308be1561a1266392f0f67eb", 1464 + "https://esm.sh/@nodelib/fs.walk@1.2.8?target=denonext": "a68ec3adf7a2812351a3ed3cb8df689acad4c7afc70fee986dcd895be3a9bbbb", 1465 + "https://esm.sh/@tailwindcss/line-clamp@0.4.4/denonext/line-clamp.mjs": "252fa8d82ac4e569e3ee8140c9ca3e216760631da1019cac48e6750feb89d8d3", 1466 + "https://esm.sh/@tailwindcss/line-clamp@0.4.4?target=denonext": "1fbc5f55d06b23c8fc79d58f00831983224f1c15b5249de3cd0a2d51fed22572", 1467 + "https://esm.sh/autoprefixer@10.4.21": "2bb14916b2e4881a32ee311720679c3e57e2d04f45ac808f4f71ae4e0923801c", 1468 + "https://esm.sh/autoprefixer@10.4.21/denonext/autoprefixer.mjs": "0d9874129a69bb35c1392f38f09e6a5a747c0eeb8c2b29e7fc8d4c1868337d92", 1469 + "https://esm.sh/braces@3.0.3/denonext/braces.mjs": "a3909393c947301c3b6348ab2378bd4f96fe001009b9beb44dcf1030dd717f47", 1470 + "https://esm.sh/braces@3.0.3?target=denonext": "58c0fed5cc432a2192aad7eeaf6e3988b96830a6c6ec0ad51dfc97578b2e8dee", 1471 + "https://esm.sh/browserslist@4.25.3/denonext/browserslist.mjs": "df95a5657a9d8a83aa8e834a82e1747b3d6e8ea1ee8d41676c665e05d803c103", 1472 + "https://esm.sh/browserslist@4.25.3?target=denonext": "31d80d40c1963ce619917d0fdb33cfad4ad4c3fb4d431522fde74a5b6dcab228", 1473 + "https://esm.sh/camelcase-css@2.0.1/denonext/camelcase-css.mjs": "1aa67ed93327d93dae71a70444bf1408a8ab3eab8bba2a710d3643b4ed415901", 1474 + "https://esm.sh/camelcase-css@2.0.1?target=denonext": "39dbe8afdc8dc441073d55efa7ce04adb31a07d8d31619fed5d31e299be32c93", 1475 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/background-clip-text?target=denonext": "410cd6f12e4acbbb198bcffa735247c11b114d672cd71e5c355e550394b485fc", 1476 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/background-img-opts?target=denonext": "59bc277f34121910caebe8cbebae46596ad122040cb0fc0a32d91980641cc6e5", 1477 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/border-image?target=denonext": "eaa8f44f48530b9f5b5bde4040ec6bedc60482324912efdbb9c7cbe23b4c40e6", 1478 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/border-radius?target=denonext": "2793c2fb8b38abcc35fd76f4151a8562b1ffbb360090f54d43ef0f69cabdd953", 1479 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/calc?target=denonext": "6810ac3373ad65b4f1df8d5f5df2ee51de539337676380505c69fdfba33b718a", 1480 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-animation?target=denonext": "cd08f5a8d560b438fc4742ccdb35babf59978cee4f0f4d0ea0ce35e532280b77", 1481 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-any-link?target=denonext": "5f170cdba78f28591bbc12bc2c353345fa9c9b99302767673b8ed84518a8f148", 1482 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-appearance?target=denonext": "c6fe9a1b6943c32b48604e96e3719ab7de884c02d94a5a86b299798a56c0ced3", 1483 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-autofill?target=denonext": "2d0fac9e144ea16f0cb22fc09748b4c1525475ed76df9069056e1016ca04694f", 1484 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-backdrop-filter?target=denonext": "1cbb5e4e0dc743651ad302d564dabadf9d7db009e8ecfc67459e68d6899276ef", 1485 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-boxdecorationbreak?target=denonext": "a384c16f0a989c7c11037a7beac2704b6e20880884b20e2b68ccd5caa09b1041", 1486 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-boxshadow?target=denonext": "e2d56528ee8e1fdf7b1c84f7d742411c910d8e1c5e774ca7c6f35fd4aff0185b", 1487 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-clip-path?target=denonext": "da574566b0b2e0f75e4dd20da5ace9303cc3aa783051c9a74d4990ce5783875d", 1488 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-crisp-edges?target=denonext": "d836bcdd65d84c66e14dec3713cc577416fab771869eff01d1c259d0731c60ca", 1489 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-cross-fade?target=denonext": "a1255ba2cc65f09a24d794b120e9042e53cf8182a39088f3deee1acfe4ba30e8", 1490 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-deviceadaptation?target=denonext": "5d279ede28f380339f2317871583446a89858852ff404a7c2f2681169dcdf63c", 1491 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-element-function?target=denonext": "86df7c505abc3598c283cf3bb4e1262272185d5c9c04d0bd0bc4241e744d07af", 1492 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-featurequeries?target=denonext": "cb26e40828c397b118377fe9c46d8827bb49a5c95720ed47155368f9dd9072d5", 1493 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-file-selector-button?target=denonext": "d2efe044761f04e8daa85c6931f2edb53ae8a076efee72a62bbcde98404c4546", 1494 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-filter-function?target=denonext": "00dfd6452d13e7fd78eac05c4b4460d5fca56e59a16f900e6b1aaddc13316c34", 1495 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-filters?target=denonext": "c0ed7f7a41725e851ab52e6f67c7d147566d04e2b501e3dab2c8b3d2dc8f7454", 1496 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-gradients?target=denonext": "723eac5e8252240a41abde46919d8b977516f1a1ba6acb8173a49a547d5b4c47", 1497 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-grid?target=denonext": "6dda1d6ba3b27b5d73f6b924bb8a82a34f1eb109415a20ac8f3284e75fa2c075", 1498 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-hyphens?target=denonext": "1e16430cc4bf0439bf66e6e80965ad89ac2c83a4f684b959289f1cef5929f382", 1499 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-image-set?target=denonext": "c74d4ea198e1e44dbe3a4437a58dd45ad7f9c0dbc68731903643d6aff28159eb", 1500 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-logical-props?target=denonext": "e1d3d069d199e623d5cbfd5a99b74f838fa8a29b4b9535809cc3e6061678fd71", 1501 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-masks?target=denonext": "49b3001ebf77fd07798fb3d1f8bfa397926a86c15d66ec3c745e19df652b0266", 1502 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-media-resolution?target=denonext": "44c93f9033a112f25bb41028a7aea9284c25fa0950f2b14005b5649b86acc2c2", 1503 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-overscroll-behavior?target=denonext": "fa8b69dabf3ad7cca1b765ce9b8277469d12fd92bf8dad3fe537c25ba0bc46ad", 1504 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-placeholder-shown?target=denonext": "eb885bd8860c72500e69088c19d985752d839d0bccbb21f8f5a8515afdc21e2a", 1505 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-placeholder?target=denonext": "3b845f3c43353b5bf195ec1e826bf79d299535693f0deb208693160cdf87de00", 1506 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-print-color-adjust?target=denonext": "89d6b59aef0ca1baacd771a908372ef4f3f011f9e01cd6a2c01b8ae6cb9cbc91", 1507 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-read-only-write?target=denonext": "98a11fd4a5f865982e18d76eea1c3f154bf78e3474a6c3b66e794ce59b3c6fc7", 1508 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-regions?target=denonext": "ed41dcd2492b49a91a8d3b9cdb195f56c231c0feb97470954af91c1d95f5c45f", 1509 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-selection?target=denonext": "166b5f4697cba38a485f734f88fc111158b6e8d022cc95f0da91740ef7068f4a", 1510 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-shapes?target=denonext": "62eb44b6c358eeaf93589babc2f3209f224b6749d56d8d4a87cc459ad014c085", 1511 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-snappoints?target=denonext": "8ec2ae78e2fa3635526e139a5751234da704942a912e753ba4c270aa0b3ab87d", 1512 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-sticky?target=denonext": "4b0cc7d05e9ef45fbe86a3285e915af119ecee64fa11d745ca6ae66dfa416a28", 1513 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-text-align-last?target=denonext": "11314b76a045f01304bca81b40b61d23c93ea7f157418396775a5d350d55b6bd", 1514 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-text-orientation?target=denonext": "569d5ce1d38a5003618a558a522265c2b68bc6227cd15f21fe4a2a2909c85c2d", 1515 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-text-spacing?target=denonext": "4733902f15a9f42900bc1b1fc19fb468efd7ff5afe4c6cb547779b1ddaaeb2bc", 1516 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-transitions?target=denonext": "35b76706059c4ccb1e74d7274559bb8332649a0c29cd6b198ec8174ffb5cf4f1", 1517 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-width-stretch?target=denonext": "97db70aa18a7c3500e32d8caba17de65acbc533073796bf81e032995d99fb460", 1518 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-writing-mode?target=denonext": "d8c2c92808c011fdf3948e28938f089d0656da7aef69845745e9844f2c1f5bf5", 1519 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css3-boxsizing?target=denonext": "8b65cba0f1db351d9f412b1a48180b7ba8e3837c2268dae681b2f957d2c76c4b", 1520 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css3-cursors-grab?target=denonext": "d092f9cffa858b742b93d14366f9fa0baff600b34367098da6b6b3a76efd98f4", 1521 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css3-cursors-newer?target=denonext": "3f6f81cf79f4f977d6bebe979392c0e19b0c4e865528d80c1869230309dba559", 1522 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css3-tabsize?target=denonext": "bf253ccfb4095831b38de00ff84e4888b33a027ff3826bfbc44738018cbb9780", 1523 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/flexbox?target=denonext": "9a6f56410f6e89c8aa34e4df56fe24ded91f4a5df9d7164abadaef021ab26642", 1524 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/font-feature?target=denonext": "4b0b57ea532fa7de37e99570197c4fb4af9dec2aed32da35e8fac42645400729", 1525 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/font-kerning?target=denonext": "e5155e132f2a99faa3c7585d36581a4bd11d64204b156be806287b4d4547b262", 1526 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/fullscreen?target=denonext": "62069c47a7f1f1eb3ce947d4af0c777859bcb9524b5393669e5fc731915e58d0", 1527 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/intrinsic-width?target=denonext": "3d081e99e46156d3630ea3ee2a027dc5fca3f256b693daf160d8348720ae70b0", 1528 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/mdn-css-backdrop-pseudo-element?target=denonext": "c36d9ae3ea67434ef7141f9e57750b9fbef89723d9fe4a4e021bebe73ee00ed6", 1529 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/mdn-css-unicode-bidi-isolate-override?target=denonext": "b5cf96212c3858b21e4345ea5164b23d54cc0b8d205b3e469ef7a5b2562f4266", 1530 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/mdn-css-unicode-bidi-isolate?target=denonext": "249db094ff9a765fe829d325dbca9efd06622515d6435f865bd2761040850b64", 1531 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/mdn-css-unicode-bidi-plaintext?target=denonext": "02a939cc49f116e74495813b3912600f7c1f541a71be82ab897c5eabe5910e7a", 1532 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/mdn-text-decoration-color?target=denonext": "364776cd45c73a6b11089ae8c8d3352fe829950c3a2dc06ed47b091b544fb146", 1533 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/mdn-text-decoration-line?target=denonext": "a639f52a7f11ae01303194ae61238c3f1ea228d6d4349846e9a76ef5dacb4405", 1534 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/mdn-text-decoration-shorthand?target=denonext": "8d27f04a38b7be26f8bdb2e2a8c4b5b9cb53adcccea404fdb538bb273ec1f3fc", 1535 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/mdn-text-decoration-style?target=denonext": "353e35877b7ec3ade3679f7101ba8b2363e6c39ea5eea8972ea1d386d6998038", 1536 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/multicolumn?target=denonext": "5c819517e4c89e4cdc626a97802996df69d2c269d01ea1ce6aca75a684448517", 1537 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/object-fit?target=denonext": "fd6fc4f7ae57de5712e5073ee6961bb57afb0c9e947b9837ea38f1842924468d", 1538 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/pointer?target=denonext": "783269befdd4f21a426a12bbb95bdc4667ecaf9e240ca8851d549e0a200494ac", 1539 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/text-decoration?target=denonext": "090bbeb9e7969784e4db951257aed5babaf0a4e98552877dbc9cf138917a2155", 1540 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/text-emphasis?target=denonext": "c21d9db705a467e4b192a86e760b2e071edababdc106db810230262a1f262522", 1541 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/text-overflow?target=denonext": "6c3c48dd88e402d658461c15cb1d7eb053d91f0866a08b416914e572f149d320", 1542 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/text-size-adjust?target=denonext": "f471ff7716b89dfda4b5296ef98dbc7fe58f3de3a6640f72b553c5f1944d6620", 1543 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/transforms2d?target=denonext": "0dcb50846de392278e49bc7f6bcd2ee37d40457ae103e2e6292726f9670cdbe9", 1544 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/transforms3d?target=denonext": "a7159901d2b73dccc4caa04bd0c0b2ab171c65cf91d7d48b3596cc727fd08316", 1545 + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/user-select-none?target=denonext": "1c5d634aed511a26198d2df4ab1a6ec00fbdde084617140d391c85cf5fea8b04", 1546 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/background-clip-text.mjs": "bdb85956ae42e455d4a62d5e6f250c7fb07ae615ec130480bb3c9d3eb5ec057e", 1547 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/background-img-opts.mjs": "86ec64e7c7278e916e4c7b646010b5648880b33bbde7656467d1b99f91f5e8a7", 1548 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/border-image.mjs": "93cac91d3b2beba05865ad31c591d1e25fb851b59a6ec357e1fa87c6314aa0b7", 1549 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/border-radius.mjs": "381bf81a142193a85d7a0165efea15ea2910ccf0a2bd4e3a8299b286bd30bb5d", 1550 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/calc.mjs": "eab741e8c7640da2c85222bf217e8d17c2f4c8669326d8c57a319ef4b20b79ac", 1551 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-animation.mjs": "607f634b5572f61d0a68604ea809cff0f2b085a860867e331d413dbb4c2745ee", 1552 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-any-link.mjs": "e25fe5d99e87b5585531cf89b8cb79ae610b54cf071f6e177d749d2ce35daf08", 1553 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-appearance.mjs": "87f1fafa407b96e8cda675edc88dd59ad43ac1564c48dd31de9b9f1751143827", 1554 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-autofill.mjs": "697f47c9f40f8a67bc1dcd5b2e97373bb5c5c74550e4d69f8b467d510403adb1", 1555 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-backdrop-filter.mjs": "e72583cd26a0e13335d2558bc5d0b9e0c83d6a71d73d5924a165585a638211c4", 1556 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-boxdecorationbreak.mjs": "a76be63656f090096b4f57e6dae05abb807e5d8eb8315e34b74480ab606eddc6", 1557 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-boxshadow.mjs": "3a9efa13ee4413ad69f18264ab56cd673ca0a5568d854061fb996652df3eeea6", 1558 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-clip-path.mjs": "05c24465e6080304e0d71f12996d004619dd098f1009aa6a6b4558defc46ca72", 1559 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-crisp-edges.mjs": "60822ba941125c8a9727a8157c2c42a2be08babd937da435921a1a7ee511667a", 1560 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-cross-fade.mjs": "d19d727301af8c921be97d963406203addba4dae4b2fef206b54fe5bb354bf37", 1561 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-deviceadaptation.mjs": "b6281816e7439f8c01be80825e7a183991ce53e50f0a1dc4ec1a938bbedf2874", 1562 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-element-function.mjs": "13d5108f90aed723cc0ae3ea8cd3f62e3884f4a28ff43b69b3e41c62e47d480b", 1563 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-featurequeries.mjs": "7352ae67e14b4a01c1add6a640789e7349419f2ef84ee010627d12c76093099b", 1564 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-file-selector-button.mjs": "91c7b2e32daa62f755276ee2cfd4b8891b8582b554f83952b654110754882f15", 1565 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-filter-function.mjs": "70759427567e55124a2ff510aacbd533959dbe4112219da4c5374e268cedb278", 1566 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-filters.mjs": "26f815df8032a8a379d2c7e606d18e3911720c6e31c4e276377f33a5ebd476d4", 1567 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-gradients.mjs": "e87494876bc0b56246c94253b544c73e9b1dc0d8a84e028b21dd629e8c9c3948", 1568 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-grid.mjs": "4fe4b29dc613965e55e5c22e31e229dfc9fbb80150d4efc1a8abc72f5f9b8e14", 1569 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-hyphens.mjs": "edcc22d5457cf0b7b503c60e55b5b0c951a4f0c523d523fea84b8bd88d15946c", 1570 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-image-set.mjs": "e7e7703827d9423f51956269a1a6166bca4ae457c07267ae442dc05fdcf61d67", 1571 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-logical-props.mjs": "ea1c94a9d807f68b0d40e037ebf30a290efcfb373aa7dbe272352a749efdf254", 1572 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-masks.mjs": "669925ddf125deee84c2d7adb1b87837fc537269cdd3ee51683d2ec4a1a52d23", 1573 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-media-resolution.mjs": "078b7975f25d500f87ef521fa7378e52ab97955bbba5918d7a04404107afeba0", 1574 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-overscroll-behavior.mjs": "dce019ccb76022b24143c73121c3851163256b61a2c68e6149751fd7652f54fb", 1575 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-placeholder-shown.mjs": "2b5179cefe731d536a0dd8c815e05d79726a7d7cc7061305e2eb50108cbd05f7", 1576 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-placeholder.mjs": "57df9a96cb719d02395d1f9935646e0218a1ceea5b903ac9c8c6ab890a56ccbb", 1577 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-print-color-adjust.mjs": "1b187f9fd1a418111ab3a0c76e86556a520f47123f5557010294d48dd409c13e", 1578 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-read-only-write.mjs": "2c1a671c7dacb1482cf9e2e0a0415338d3026bfe5e18c0058006fe98760d50d3", 1579 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-regions.mjs": "7222af95c5ccc737fa75507c9da87854d20ecb4c5077b1f629dc6fc6e47fc2a8", 1580 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-selection.mjs": "00e7b6132d470987b628b86a22f069832b31f8183f69b46d450802e47e1f74ea", 1581 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-shapes.mjs": "8e8d0689a39a85dbeabb92a90af7077bb939fd00e2817979c48bc7701f163ce0", 1582 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-snappoints.mjs": "d10e85353ec7514cf80111f85b359adcf476e3c7bb3572bf33e8829347075302", 1583 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-sticky.mjs": "6eae33fbcf2b2262f45bc5684001ed8736cf75b77e6f89870534c4deb7a61be6", 1584 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-text-align-last.mjs": "cd77db521f58d08224873c34a17f0c91009f0c6d09ab4568ff87cd7a564819eb", 1585 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-text-orientation.mjs": "ae59a4601580e55198ac6fe5fd4c947b6a9e03e37a276412a7ebe9592671c187", 1586 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-text-spacing.mjs": "6fe05cca556cc6b2f631aec00f9e55d7e69eda940cd781be84b41140f67b4ebb", 1587 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-transitions.mjs": "ca2f6ab6dac7f45a95edd0dc36d49df93b41db39afec2e476921e0649ec4daf8", 1588 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-width-stretch.mjs": "24ec65468afeb2d23746bf98d6e1057ae13712167d72c135a07333918e50fdb4", 1589 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-writing-mode.mjs": "dc558b48d0c72a8b0af415edcb356a4b275214e91a57c2353eb4a1fa8ba116a5", 1590 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css3-boxsizing.mjs": "2d449b364db28710869692dd514313a198ffbda248508829c520f9f33c94142e", 1591 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css3-cursors-grab.mjs": "8b59711eec9bf66bf1b8fc05cf90150a0faaba7041e2a9e043ddbcc12807e7dd", 1592 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css3-cursors-newer.mjs": "d4d1aa096ee42dd314b903f4dd57105e7a3cb35a1162f7bed622d3015d2854b4", 1593 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css3-tabsize.mjs": "5ffa1dd48a6e51d88f2c670da06097987114f79936fe2edde5994315613494d9", 1594 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/flexbox.mjs": "9534b126de76800b2525ec28866c6305213ef913ea733455769ffbbc2cec0794", 1595 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/font-feature.mjs": "7a980d615bf64ff3745fa5cf0905e294480783ce7c6c03194007a575adc58c8e", 1596 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/font-kerning.mjs": "b83954bf08d971e63fb497fa819c1adc648cdfa785837e6524697b9381ff3c1d", 1597 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/fullscreen.mjs": "5891ff5b7ec68b989b975ed6a503954dbe80948eba1a4f94bdb324fb6d100d68", 1598 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/intrinsic-width.mjs": "f20c350a8a3fe128c6199dd420567261f1b7725f034a9fd88f83c30152c53a54", 1599 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/mdn-css-backdrop-pseudo-element.mjs": "179776d08999cb1b2e8c4ae8e263b49763df8399d471f4909644a6e2c5d012b7", 1600 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/mdn-css-unicode-bidi-isolate-override.mjs": "54c2e15741d8258d040ca81fdd37bdc6f918efc32750980734885fe664a832f7", 1601 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/mdn-css-unicode-bidi-isolate.mjs": "24d550a606b8b4106781d8e563f05e2ada55ca7a1699be521a92a70c819666dd", 1602 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/mdn-css-unicode-bidi-plaintext.mjs": "42b7bc117feb8219fc7f7677bcb15c2efe49a3f6548611a8cca1b557c7ad0305", 1603 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/mdn-text-decoration-color.mjs": "fd03e9cf4d486b231246916f5085563ddc619d36bdfc2bf609a1c55571fb9c96", 1604 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/mdn-text-decoration-line.mjs": "db5a1a9338a7dbe3e88cd5abef6787a232e5434b64db37888d993ef6d55fa40e", 1605 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/mdn-text-decoration-shorthand.mjs": "9b738afd412e2c34b315ed70e59a69a7ab6ea274178720bf464876fe90fc38d9", 1606 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/mdn-text-decoration-style.mjs": "a0d504013edd6c6df38fe148fc799a957bf666b34510f24a1a610374675f7b78", 1607 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/multicolumn.mjs": "bd22ce2f445294b60b1a2b5776c7dc07d571accc521b44392dfe836adefceb87", 1608 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/object-fit.mjs": "39404d9bb268bae0c0c4b3083ae0d87e78795a02b0309ef5fe083b5fe3607e7e", 1609 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/pointer.mjs": "dfbdd4ee5120d8d674b2e23f260a1e0494cbab76c6b55745f7dff1e6580df69e", 1610 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/text-decoration.mjs": "8f6c7af83602e141080880a6654652aea09134d29db67b24f53ad599590a3f87", 1611 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/text-emphasis.mjs": "38205c00c7d5604831283bfe1b1a84561914dee827a61bd1d6f2bd8f4ad6c627", 1612 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/text-overflow.mjs": "7d011a8bc6868ecdc1fdaafa9f6f41f6e84838e406dd46bcb4a27bab7d5f2c48", 1613 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/text-size-adjust.mjs": "10c6dad907ea072ef5f0f1e33c1bde52f01671628f527cd769f499961ea6b6a2", 1614 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/transforms2d.mjs": "aa8f3bf911095e1aabd71aae3fa093e352a99e24f6f8da8821a78276d70efadb", 1615 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/transforms3d.mjs": "f54066b13aea8a87af40013481dd0967f930dae7c860168ec120b5feacab98a9", 1616 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/user-select-none.mjs": "3342ce1ea8ef2d0728d97ae94e620416ee068471998df49d9f0cb4d29323d90b", 1617 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/dist/unpacker/agents.mjs": "41dae44eebe85a886f99258ca97e9c75994f454581fdb3e35e0e2e7592fbf1cf", 1618 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/dist/unpacker/feature.mjs": "4534f80567e4d604455937c88d77df53f9b0b080d6e2c5f69bcae8e315a4a840", 1619 + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/dist/unpacker/region.mjs": "736d74f47016712cdfc6422f6285c3fb661f42358d2cd8c43d97902f65bb06d7", 1620 + "https://esm.sh/caniuse-lite@1.0.30001737/dist/unpacker/agents?target=denonext": "36927a98266c6a725d25d812fea7c8aa1cc889b85f39a6a4323d9bb62d3e6e4f", 1621 + "https://esm.sh/caniuse-lite@1.0.30001737/dist/unpacker/feature?target=denonext": "f258799b1015a81ad8a835cd3f9300276cad296e2380d56da2df0bffd1316c6b", 1622 + "https://esm.sh/caniuse-lite@1.0.30001737/dist/unpacker/region?target=denonext": "e6aec30f45515f3e7b72249ba55d7344395f1f524179cb2dd1fc1914299bbf96", 1623 + "https://esm.sh/cssesc@3.0.0/denonext/cssesc.mjs": "c548acc0c3c5ae183898994347dc3ae57b71cea73f3df1d1643c096c84e75d65", 1624 + "https://esm.sh/cssesc@3.0.0?target=denonext": "46b22fe658d7c495f8c683cf71f88369ec073d6aef6f0f94729672791842b80c", 1625 + "https://esm.sh/didyoumean@1.2.2/denonext/didyoumean.mjs": "eaee3cce9c279c82404e5b2e2d82a6f94c439b7bff49a2643ffed05b279e1a1c", 1626 + "https://esm.sh/didyoumean@1.2.2?target=denonext": "9c183f2cb26fa0cbefe396d71a209ccd3fb48543050a839379a69fd403c3b9d6", 1627 + "https://esm.sh/dlv@1.1.3/denonext/dlv.mjs": "0223283fdcab2dae38eb62b13a9a77bc9fe6026b4b62f2a8f94cf2cd35cac82c", 1628 + "https://esm.sh/dlv@1.1.3?target=denonext": "a3e3bfa84c6b020d6b8cf93f6ac21f95ddea3c4b486e44f0af39696a6468069b", 1629 + "https://esm.sh/electron-to-chromium@1.5.209/denonext/versions.mjs": "c20511234422f9073a83e340b2e9bec41139e3ddabb1f0beae7d78f8e50bec25", 1630 + "https://esm.sh/electron-to-chromium@1.5.209/versions?target=denonext": "249492c791195b333ade914a005df4d04da72a6070149595c95dda573caa8487", 1631 + "https://esm.sh/fast-glob@3.3.3/denonext/fast-glob.mjs": "65877d873498643483aa01a3d773ebf3c5283352687e3ed451fd8e3a04473eae", 1632 + "https://esm.sh/fast-glob@3.3.3?target=denonext": "013bbfcf40dbc297f3ae57f7c85a9fa6af2029e24258e2fd69076dbf0fac7e9f", 1633 + "https://esm.sh/fastq@1.19.1/denonext/fastq.mjs": "a637080c2d32098ce78735f27be3a80a3f33d512f4e3a38b2168e6af6b7f692b", 1634 + "https://esm.sh/fastq@1.19.1?target=denonext": "232620945fc592798bd1f7de68116c945f458f9edc9125ed4ad6aa5d9dd61b88", 1635 + "https://esm.sh/fill-range@7.1.1/denonext/fill-range.mjs": "a617c46f1e0a36d1aaefdcda2790bcf05c986c5ecff805ecc615faad25ff8d02", 1636 + "https://esm.sh/fill-range@7.1.1?target=denonext": "3a1d3f856665be6a3a26a1007b55729d1eaa4142397a605b14b752458b997241", 1637 + "https://esm.sh/fraction.js@4.3.7/denonext/fraction.mjs": "df20348b8214e3af3c8ff08526c03e86fd4ecc23bc0857706278902199d11828", 1638 + "https://esm.sh/fraction.js@4.3.7?target=denonext": "9d79c0e257aa7b4cde79d03065818bcc604a3f27f33dfe53a19e2f94169db123", 1639 + "https://esm.sh/glob-parent@5.1.2/denonext/glob-parent.mjs": "656e4f93468626b7b0c388908d24132e893315386ec1e83322b74cb0dcde5d1c", 1640 + "https://esm.sh/glob-parent@5.1.2?target=denonext": "0e04ba2ebac5a052f7d5671a73c19f72407c2660bd3d5a5be577dd1ffcdfc7dc", 1641 + "https://esm.sh/glob-parent@6.0.2/denonext/glob-parent.mjs": "e629258fece4c22cb6d3a108a97c95ea8df4d735e4c79630f2a7da870bbafa23", 1642 + "https://esm.sh/glob-parent@6.0.2?target=denonext": "e30aa6b9dc68fbde857f7495eb6f05c7c41b5e5a7453be63a48cfd62269aacdb", 1643 + "https://esm.sh/is-extglob@2.1.1/denonext/is-extglob.mjs": "adbceb33b529cc88849ee39364a0eea16088cefb795221d3be31c7d6c2b7a47d", 1644 + "https://esm.sh/is-extglob@2.1.1?target=denonext": "cc21d63edf9dcc600d613af9dc30eeac8c8ee324104dab9f978fa567ec8f3ae4", 1645 + "https://esm.sh/is-glob@4.0.3/denonext/is-glob.mjs": "4555ca21a3af8a883c44c977fd1ff03be73dd7927dea188443992d01749b845d", 1646 + "https://esm.sh/is-glob@4.0.3?target=denonext": "5fef477a765ea5f14bff33ee18156cd8398e8fba5fea6fa636ebe2280349e3ce", 1647 + "https://esm.sh/jiti@1.21.7/denonext/dist/babel.mjs": "95d8f0b529fdeeb7b12eacfa93d6ad80c4548b2b407022e08608c6789b8e7d9f", 1648 + "https://esm.sh/jiti@1.21.7/denonext/jiti.mjs": "75830015c5c1f473ae2014286ed7f9f66b88404641efdfef8c18731463295c7b", 1649 + "https://esm.sh/jiti@1.21.7/dist/babel?target=denonext": "238960d30e4169f10b16b90db8b8e0e3695d3d13b589c2cbde7a70d5eb8761b2", 1650 + "https://esm.sh/jiti@1.21.7?target=denonext": "8b16749a8a79eafecd65003c0a14082274620e9521e2a0137e5825ee353898e8", 1651 + "https://esm.sh/lines-and-columns@1.2.4/denonext/lines-and-columns.mjs": "785cd1f5843f3645f9304248e4cf77987a71c6e2e7207d5b5200c9ea8ed67cdc", 1652 + "https://esm.sh/lines-and-columns@1.2.4?target=denonext": "24df63eccd321681ded34cf71de26b252de505ac6fe86fff5f5fafb810f86441", 1653 + "https://esm.sh/merge2@1.4.1/denonext/merge2.mjs": "b7e2fe0b629b75aabc963fd1e6635d6dcf59f5f2df42111df1ced9d3d064fcec", 1654 + "https://esm.sh/merge2@1.4.1?target=denonext": "a1286ee0e809c60cde57dcd9357fe3979d10abf74324608c83eb5640088c5053", 1655 + "https://esm.sh/micromatch@4.0.8/denonext/micromatch.mjs": "3663f155546be362a116c4a6bcececb00df29ed5870b308809ddb255ade2a78b", 1656 + "https://esm.sh/micromatch@4.0.8?target=denonext": "5e66db24ea49ffe179d951391cb92d5173e4911a45a6793d189a83861dae0b2e", 1657 + "https://esm.sh/nanoid@3.3.11/denonext/non-secure.mjs": "1f166118c1c4b4d4b5356ef0050fed87acf28cdb8a76813803fee72188f18b30", 1658 + "https://esm.sh/nanoid@3.3.11/non-secure?target=denonext": "ac0c34cc5f9846db51a5d868ce6ee815f831a19b1d57a1b8bae9226fc8d68dec", 1659 + "https://esm.sh/node-releases@2.0.19/data/processed/envs.json?module": "62fef61ca0cdd9c90f89cdbf60280aa1ebff036ddb965f4174e69a30e6efb196", 1660 + "https://esm.sh/node-releases@2.0.19/data/release-schedule/release-schedule.json?module": "32b509aa9392ed0744a12a011b07eb5f86d1e0b361392699a20c1b70f631d6aa", 1661 + "https://esm.sh/normalize-path@3.0.0/denonext/normalize-path.mjs": "ecabfab5ffc4bce022eed2b9c50a777cc04b44b17c477eeef8790d7602f4eb93", 1662 + "https://esm.sh/normalize-path@3.0.0?target=denonext": "4fd9f901c0c9062a18ca83ede4b9122f9b3b67ce3839a86344bb8a4d98158359", 1663 + "https://esm.sh/normalize-range@0.1.2/denonext/normalize-range.mjs": "33d8ef29dd3b379c687be93ed8df5b1a001eb0fa2b16e14aa50191377c5dc18f", 1664 + "https://esm.sh/normalize-range@0.1.2?target=denonext": "10ac8bcf3a32c783d03b72181ab7f243aa17a1f7c8a7a87655e2573f2210a380", 1665 + "https://esm.sh/object-hash@3.0.0/denonext/object-hash.mjs": "a0de679d08f71d0ef12da988f1be37af4d050e5ef55e8a35d90d7d3489b3e9da", 1666 + "https://esm.sh/object-hash@3.0.0?target=denonext": "e218e75f3503f2bdd9f9b758658a59f8ce0a76c387ec49e979b5d2039373a97d", 1667 + "https://esm.sh/picocolors@1.1.1/denonext/picocolors.mjs": "fa0033734392d8b8ad0c565338a77fa835e8b00e9ef244bf6f36570dd699ea3f", 1668 + "https://esm.sh/picocolors@1.1.1?target=denonext": "97aaf037b1af74a20fe9f9f2beabba700924823101e86bdcd3ae2c9327376f74", 1669 + "https://esm.sh/picomatch@2.3.1/denonext/lib/utils.mjs": "78f1e101706724181555315f3d8b8d0bb19c602caec154ae911e8a645d1b0b47", 1670 + "https://esm.sh/picomatch@2.3.1/denonext/picomatch.mjs": "b238291b792bb898d06a490c316425f0921457a9ecb30b12909e00b47abd32ec", 1671 + "https://esm.sh/picomatch@2.3.1/lib/utils?target=denonext": "07ebea80a4b1cbb4dc99b7ae7f6dd81321eb5e4ba254cc39fe57bd5a61082b7b", 1672 + "https://esm.sh/picomatch@2.3.1?target=denonext": "e1e7cb8fa5f73ba0cefa1e19003d8adebe6c1dda6d934d656361df441ee5f4b0", 1673 + "https://esm.sh/postcss-js@4.0.1/denonext/async.mjs": "90a7602a50926d3491ea00b07135429174b88b537929703352c8128626c3cd8d", 1674 + "https://esm.sh/postcss-js@4.0.1/denonext/objectifier.mjs": "df146288008cae08140eede11a4152b8d3db59229a69b4d068a4254bd47850c3", 1675 + "https://esm.sh/postcss-js@4.0.1/denonext/parser.mjs": "de35017f0f8fef175ebf8759539fb7d323df119dde251b09d6d1904035d9bab6", 1676 + "https://esm.sh/postcss-js@4.0.1/denonext/postcss-js.mjs": "bc84d0914b55660b458011f5451d98d8c1d6c94096a866883443285482d6a5a7", 1677 + "https://esm.sh/postcss-js@4.0.1/denonext/process-result.mjs": "96840377db6a0c0917035314f38181d3f13451100a33c71f3412d458c4a2a2b5", 1678 + "https://esm.sh/postcss-js@4.0.1/denonext/sync.mjs": "abd39a2f4a9bc2b8c9c1cceeae397cf07f2d7fc016edc0c0edeb98b112bea04c", 1679 + "https://esm.sh/postcss-js@4.0.1?target=denonext": "aba48f8bfa332370cb382dcb55fa57ba1a98952f3f8a4f74f4611b10058a7e3a", 1680 + "https://esm.sh/postcss-nested@6.2.0/denonext/postcss-nested.mjs": "2c772eb1021a4642b60b6ce56739d8727c4f5f5f3f0598b2f25c3805a50c969d", 1681 + "https://esm.sh/postcss-nested@6.2.0?target=denonext": "3f977ced1f70abf693275963f2dfef7491c1e434736b966bd194b3561f3a0ab6", 1682 + "https://esm.sh/postcss-selector-parser@6.1.2/denonext/dist/util/unesc.mjs": "737a8526d9e2c2ace54928cbb4dc6205d850bd81550069faccf6f90dc1ce4d00", 1683 + "https://esm.sh/postcss-selector-parser@6.1.2/denonext/postcss-selector-parser.mjs": "67baf457834e84c652cdc2d2073d072226ba2ae531996094a145ab99df3fb689", 1684 + "https://esm.sh/postcss-selector-parser@6.1.2/dist/util/unesc?target=denonext": "c14466135461e10e035138f0e98fe4c514ed63c922e9a782d67cf6d568e3f9e6", 1685 + "https://esm.sh/postcss-selector-parser@6.1.2?target=denonext": "2537850e0eef50737c135b11ecf6d71bcf2b19daea0a26464889e276ab46b3ec", 1686 + "https://esm.sh/postcss-value-parser@4.2.0/denonext/postcss-value-parser.mjs": "2734c0eb4eb5e6a9905fb179ed2f329a346ac076735dbf0bc889276cbfe952bc", 1687 + "https://esm.sh/postcss-value-parser@4.2.0?target=denonext": "f11ba11f7fe1a5768433011193e133bf80a697154aab65f582bf653305a571d1", 1688 + "https://esm.sh/postcss@8.5.6": "d74fb26c8e5f2355773381813a2514b103cd99d9262961b6d43148f714f343da", 1689 + "https://esm.sh/postcss@8.5.6/denonext/lib/at-rule.mjs": "4d36edc3ca42766858a10199b14ea4295b76ff96ea6b1a81aa29b7b22af7dd45", 1690 + "https://esm.sh/postcss@8.5.6/denonext/lib/comment.mjs": "c697b26e5ba49d581727081fd3de61a65df93ae69f5ab1080df36bc523a3586f", 1691 + "https://esm.sh/postcss@8.5.6/denonext/lib/container.mjs": "842ed0e58a3120a02b91bcc27e0bf8fa8e82281dc48f04f72e78add92fe215a6", 1692 + "https://esm.sh/postcss@8.5.6/denonext/lib/css-syntax-error.mjs": "cde795b92e9c71048d87b903b9565e1ede241bc81e346cb0f9171c2c7825c6a4", 1693 + "https://esm.sh/postcss@8.5.6/denonext/lib/declaration.mjs": "e2fa6617ff8a74fbcae38ab0d4f2ff5417bdb5c300d7695fcd662acdfa300cda", 1694 + "https://esm.sh/postcss@8.5.6/denonext/lib/document.mjs": "39f9f35f25834ffd4cae54678faf5020eb68a9d990c1921cb1f4a16e8d96ec81", 1695 + "https://esm.sh/postcss@8.5.6/denonext/lib/fromJSON.mjs": "9f2e849366a659250ed1bfa3c67faf2cf1c38b5b2677594002498a1ee0fc594e", 1696 + "https://esm.sh/postcss@8.5.6/denonext/lib/input.mjs": "72c43722d17c332720bdcc5ca67925f08b7260643faf33a4328bf87532e9cd4d", 1697 + "https://esm.sh/postcss@8.5.6/denonext/lib/lazy-result.mjs": "61618d7d7bc6f68ce8c7e380b15317e18036e07a29c02cdda521e632559e034a", 1698 + "https://esm.sh/postcss@8.5.6/denonext/lib/list.mjs": "4a56db4aea2f2a981afdce9455086caea47e732c678d75b85cdb76df241314e0", 1699 + "https://esm.sh/postcss@8.5.6/denonext/lib/map-generator.mjs": "d609c0e2114a55cc61969344edec0c8652fdabec840bdd481e133ab04f817866", 1700 + "https://esm.sh/postcss@8.5.6/denonext/lib/no-work-result.mjs": "582acccf822251d8d664518339e62dd8fc7105bbb4488169ffe7cf5ef99fd392", 1701 + "https://esm.sh/postcss@8.5.6/denonext/lib/node.mjs": "9cda4baedeafe756b6a10e76e906720bce6da9f9b808c74fb247d85ae6b96965", 1702 + "https://esm.sh/postcss@8.5.6/denonext/lib/parse.mjs": "9095142e0c755897446b8fd8f9ac8633599e3ba44773498206cdcd36538bfa0a", 1703 + "https://esm.sh/postcss@8.5.6/denonext/lib/parser.mjs": "5fa9d73cc19247b2abb636ff39973fdb4d06149f183dc4670aa8106594b3ae36", 1704 + "https://esm.sh/postcss@8.5.6/denonext/lib/previous-map.mjs": "18e4af2bd986f9211a4961ca81e6b6d8f1ec10adbf6df20a0cbcd6eb8c696efa", 1705 + "https://esm.sh/postcss@8.5.6/denonext/lib/processor.mjs": "bef379a8c94cdb173337b51bde0a5576db39262bf7a759c3650b4471e1fa1c96", 1706 + "https://esm.sh/postcss@8.5.6/denonext/lib/result.mjs": "c1ba7aafbb6c66f9a213beb7fcd9bbc5c9bf8cf96c8d9d52af9ae6b6a4436b51", 1707 + "https://esm.sh/postcss@8.5.6/denonext/lib/root.mjs": "b4fdc0d0380774f92382e32a39f2c0901e111c58d0309084e728ae085570fa72", 1708 + "https://esm.sh/postcss@8.5.6/denonext/lib/rule.mjs": "35cb6df8a6b88a25c2cdae3c67153e1e322f0c5b2ff0af2a4b82621801818aa9", 1709 + "https://esm.sh/postcss@8.5.6/denonext/lib/stringifier.mjs": "f7d92b74abe94e471c03e4be188b0d63f1ef59b6124be4ce1c7e6673940f8a01", 1710 + "https://esm.sh/postcss@8.5.6/denonext/lib/stringify.mjs": "0199bda16f538996aacee2bc24d6425960706407bb966700c5e90e4ea6a18144", 1711 + "https://esm.sh/postcss@8.5.6/denonext/lib/symbols.mjs": "62ba62162b364f32caa44d4025486db497a84f1956b40047b7cc3d0ca336103b", 1712 + "https://esm.sh/postcss@8.5.6/denonext/lib/terminal-highlight.mjs": "261e50c0a1061a389cdd0abc7177a411f63916657a2d2493e42d2eabf8ca66e2", 1713 + "https://esm.sh/postcss@8.5.6/denonext/lib/tokenize.mjs": "8ae691fe6c8535964103e6cbb4be154916c96a80f22746daf6c595b6186b92fa", 1714 + "https://esm.sh/postcss@8.5.6/denonext/lib/warn-once.mjs": "29cca6093c98344a9731ad66d1935501bebfd35e11cc16c47b12ebdbb2835500", 1715 + "https://esm.sh/postcss@8.5.6/denonext/lib/warning.mjs": "71973428e45464675ca11b47c2e463ea00f88ce53aa12335fce71f22b81b1002", 1716 + "https://esm.sh/postcss@8.5.6/denonext/postcss.mjs": "95c0fe458dc732c2d727eb665f410662deba1982e63d7ae31eb09475e77dd0a4", 1717 + "https://esm.sh/postcss@8.5.6?target=denonext": "d74fb26c8e5f2355773381813a2514b103cd99d9262961b6d43148f714f343da", 1718 + "https://esm.sh/queue-microtask@1.2.3/denonext/queue-microtask.mjs": "b0e153a240d836527feea7b9ecfa99fa8e5a5ef7e48b43092b7cecd8649a8712", 1719 + "https://esm.sh/queue-microtask@1.2.3?target=denonext": "fc6002fc339a8edbab36e4e6df1d245a0c3a5dc507edf4e5fb7e857f8b117aa2", 1720 + "https://esm.sh/reusify@1.1.0/denonext/reusify.mjs": "3b91b42988a3ec3984cef34b99cd5f67b4a008609c3d4fc5d35e8f2d1aab8cef", 1721 + "https://esm.sh/reusify@1.1.0?target=denonext": "aea1fd894bd8993f740cf053799f9639ee649122854c1fe4a5425d5aa2dc5e96", 1722 + "https://esm.sh/run-parallel@1.2.0/denonext/run-parallel.mjs": "77808968c9de972bb725e73559c80e64bf9524b7d2f781941115d023fd42e7b3", 1723 + "https://esm.sh/run-parallel@1.2.0?target=denonext": "2acc47cfa930a6c5e502877b2e5ee9cd2a2ec81e4fcc579f3c0bdebe32590de6", 1724 + "https://esm.sh/source-map-js@1.2.1/denonext/source-map-js.mjs": "2129223e17c258b391a47907a69c0b86d1c87cbb66eea7e9b25ff555ec0bbc7c", 1725 + "https://esm.sh/source-map-js@1.2.1?target=denonext": "33ba5cf2ee7c1fe6b63b36c31e9075e290bc5c574055acbdc48c2f24a21d2f83", 1726 + "https://esm.sh/sucrase@3.35.0/denonext/sucrase.mjs": "1d1c05878a5f0656226ee064c90845d01adf23b2bff84521480ffaad6da16d21", 1727 + "https://esm.sh/sucrase@3.35.0?target=denonext": "2e4c449f97b0c91e2800bdb6a1192f46dfaba56fa048e0c50eb8d150bd513195", 1728 + "https://esm.sh/tailwindcss@3.4.17": "0d5c6546923ca69e2d2a1cec444214f239d2df1e5f2b90708b76043809b84c12", 1729 + "https://esm.sh/tailwindcss@3.4.17/denonext/tailwindcss.mjs": "382a6a4ed82273daead6e2eb6af426822a3fbf7303387ee49db16be7699f8b45", 1730 + "https://esm.sh/tailwindcss@4.1.12/denonext/plugin.mjs": "349369852f7afd8ca09ef1682d94766d02e84bc45f927d0f02b374b20be70c9f", 1731 + "https://esm.sh/tailwindcss@4.1.12/plugin?target=denonext": "05b784ebe25c01018a0eab3fe1e1dab62bdbceb114e2371e748f967552510c00", 1732 + "https://esm.sh/to-regex-range@5.0.1/denonext/to-regex-range.mjs": "3f099b66f908b58dd6ee20afd1fed4616ea02fd0c118dc91ff1ed3e72d795bc7", 1733 + "https://esm.sh/to-regex-range@5.0.1?target=denonext": "5d6ed8b93f9fc4009378f84ade74e2681c2264b37e79f978c557037c612086ed", 1734 + "https://esm.sh/ts-interface-checker@0.1.13/denonext/ts-interface-checker.mjs": "482a9d9214862af127455b80dbe15559b107bb8283dc4b6ba10da16757b3dfe8", 1735 + "https://esm.sh/ts-interface-checker@0.1.13?target=denonext": "b1c4bedafbacf4fc6ca1b02c22601fe4e3dee3d3dc14ca3e8fb6f8656a368e72", 1736 + "https://esm.sh/util-deprecate@1.0.2/denonext/util-deprecate.mjs": "083639894972cb68837eef26346c43bdd01357977149e0a4493f76192a4008b8", 1737 + "https://esm.sh/util-deprecate@1.0.2?target=denonext": "859f4df8ba771a4c33143185d3db6a7edb824fab1ed4f9a4b96ac0e6bc3ef1a4" 2460 1738 }, 2461 1739 "workspace": { 2462 1740 "dependencies": [
+1
index/spacedust.ts
··· 41 41 "did:plc:zzhzjga3ab5fcs2vnsv2ist3", 42 42 "did:plc:jz4ibztn56hygfld6j6zjszg", 43 43 ], // this would be all users in the instance to listen for all remote mentions 44 + instant: ["true"] 44 45 // future question for managing this specifically for like remote content tracking (followed users? items that appears in custom feeds?) 45 46 }); 46 47 }
+1
indexserver.ts
··· 1846 1846 //"did:plc:zzhzjga3ab5fcs2vnsv2ist3", 1847 1847 //"did:plc:jz4ibztn56hygfld6j6zjszg", 1848 1848 ], 1849 + instant: ["true"] 1849 1850 }); 1850 1851 //await connectToConstellation(this.did, this.db); 1851 1852 }
+96 -53
main-index.ts
··· 5 5 import { IndexServer, IndexServerConfig } from "./indexserver.ts"; 6 6 import { extractDid } from "./utils/identity.ts"; 7 7 import { config } from "./config.ts"; 8 + import { compile, devWatch } from "./shared-landing/build.ts"; 9 + let { js, html, css } = await compile("index"); 8 10 9 11 // ------------------------------------------ 10 12 // AppView Setup ··· 66 68 // "/xrpc/party.whey.app.bsky.feed.getListFeedPartial", 67 69 // ]); 68 70 69 - Deno.serve({ port: config.indexServer.port }, async (req: Request): Promise<Response> => { 70 - const url = new URL(req.url); 71 - const pathname = url.pathname; 72 - const searchParams = searchParamsToJson(url.searchParams); 71 + 72 + 73 + //console.log("ready to serve"); 74 + Deno.serve( 75 + { port: config.indexServer.port }, 76 + async (req: Request): Promise<Response> => { 77 + const url = new URL(req.url); 78 + const pathname = url.pathname; 79 + const searchParams = searchParamsToJson(url.searchParams); 73 80 74 - if (pathname === "/.well-known/did.json") { 75 - return new Response( 76 - JSON.stringify( 77 - didDocument( 78 - "index", 79 - config.indexServer.did, 80 - config.indexServer.host, 81 - "whatever" 82 - ) 83 - ), 84 - { 85 - headers: withCors({ "Content-Type": "application/json" }), 81 + if (html && js) { 82 + if (pathname === "/" || pathname === "") { 83 + return new Response(html, { 84 + headers: withCors({ "content-type": "text/html; charset=utf-8" }), 85 + }); 86 + } 87 + if (pathname === "/landing-index.js") { 88 + return new Response(js, { 89 + headers: withCors({ 90 + "content-type": "application/javascript; charset=utf-8", 91 + }), 92 + }); 93 + } 94 + } else { 95 + if (pathname === "/" || pathname === "") { 96 + return new Response(`server is compiling your webpage. loading...`, { 97 + headers: withCors({ "content-type": "text/html; charset=utf-8" }), 98 + }); 86 99 } 87 - ); 88 - } 89 - if (pathname === "/health") { 90 - return new Response("OK", { 91 - status: 200, 92 - headers: withCors({ 93 - "Content-Type": "text/plain", 94 - }), 95 - }); 96 - } 97 - if (req.method === "OPTIONS") { 98 - return new Response(null, { 99 - status: 204, 100 - headers: { 101 - "Access-Control-Allow-Origin": "*", 102 - "Access-Control-Allow-Methods": "GET, POST, OPTIONS", 103 - "Access-Control-Allow-Headers": "*", 104 - }, 105 - }); 106 - } 107 - console.log(`request for "${pathname}"`); 108 - const constellation = pathname.startsWith("/links"); 100 + } 101 + if (pathname === "/app.css") { 102 + return new Response(css, { 103 + headers: withCors({ 104 + "content-type": "text/css; charset=utf-8", 105 + }), 106 + }); 107 + } 108 + 109 109 110 - if (constellation) { 111 - const target = searchParams?.target as string; 112 - const safeDid = extractDid(target); 113 - const targetserver = genericIndexServer.handlesDid(safeDid); 114 - if (targetserver) { 115 - return genericIndexServer.constellationAPIHandler(req); 116 - } else { 110 + if (pathname === "/.well-known/did.json") { 117 111 return new Response( 118 - JSON.stringify({ 119 - error: "User not found", 120 - }), 112 + JSON.stringify( 113 + didDocument( 114 + "index", 115 + config.indexServer.did, 116 + config.indexServer.host, 117 + "whatever" 118 + ) 119 + ), 121 120 { 122 - status: 404, 123 121 headers: withCors({ "Content-Type": "application/json" }), 124 122 } 125 123 ); 126 124 } 127 - } else { 128 - // indexServerRoutes.has(pathname) 129 - return await genericIndexServer.indexServerHandler(req); 125 + if (pathname === "/health") { 126 + return new Response("OK", { 127 + status: 200, 128 + headers: withCors({ 129 + "Content-Type": "text/plain", 130 + }), 131 + }); 132 + } 133 + if (req.method === "OPTIONS") { 134 + return new Response(null, { 135 + status: 204, 136 + headers: { 137 + "Access-Control-Allow-Origin": "*", 138 + "Access-Control-Allow-Methods": "GET, POST, OPTIONS", 139 + "Access-Control-Allow-Headers": "*", 140 + }, 141 + }); 142 + } 143 + console.log(`request for "${pathname}"`); 144 + const constellation = pathname.startsWith("/links"); 145 + 146 + if (constellation) { 147 + const target = searchParams?.target as string; 148 + const safeDid = extractDid(target); 149 + const targetserver = genericIndexServer.handlesDid(safeDid); 150 + if (targetserver) { 151 + return genericIndexServer.constellationAPIHandler(req); 152 + } else { 153 + return new Response( 154 + JSON.stringify({ 155 + error: "User not found", 156 + }), 157 + { 158 + status: 404, 159 + headers: withCors({ "Content-Type": "application/json" }), 160 + } 161 + ); 162 + } 163 + } else { 164 + // indexServerRoutes.has(pathname) 165 + return await genericIndexServer.indexServerHandler(req); 166 + } 130 167 } 131 - }); 168 + ); 169 + 170 + devWatch("index", ({ js: newjs, html: newhtml, css: newcss }) => { 171 + js = newjs; 172 + html = newhtml; 173 + css = newcss; 174 + });
+37
main-view.ts
··· 5 5 import { ViewServer, ViewServerConfig } from "./viewserver.ts"; 6 6 import { extractDid } from "./utils/identity.ts"; 7 7 import { config } from "./config.ts"; 8 + import { compile, devWatch } from "./shared-landing/build.ts"; 9 + let { js, html, css } = await compile("view"); 8 10 9 11 // ------------------------------------------ 10 12 // AppView Setup ··· 55 57 const pathname = url.pathname; 56 58 const searchParams = searchParamsToJson(url.searchParams); 57 59 60 + if (html && js) { 61 + if (pathname === "/" || pathname === "") { 62 + return new Response(html, { 63 + headers: withCors({ "content-type": "text/html; charset=utf-8" }), 64 + }); 65 + } 66 + if (pathname === "/landing-view.js") { 67 + return new Response(js, { 68 + headers: withCors({ 69 + "content-type": "application/javascript; charset=utf-8", 70 + }), 71 + }); 72 + } 73 + } else { 74 + if (pathname === "/" || pathname === "") { 75 + return new Response(`server is compiling your webpage. loading...`, { 76 + headers: withCors({ "content-type": "text/html; charset=utf-8" }), 77 + }); 78 + } 79 + } 80 + if (pathname === "/app.css") { 81 + return new Response(css, { 82 + headers: withCors({ 83 + "content-type": "text/css; charset=utf-8", 84 + }), 85 + }); 86 + } 87 + 58 88 if (pathname === "/.well-known/did.json") { 59 89 return new Response( 60 90 JSON.stringify( ··· 92 122 return await genericViewServer.viewServerHandler(req); 93 123 } 94 124 ); 125 + 126 + 127 + devWatch("view", ({ js: newjs, html: newhtml, css: newcss }) => { 128 + js = newjs; 129 + html = newhtml; 130 + css = newcss; 131 + });
+16 -7
readme.md
··· 4 4 this project uses: 5 5 - live sync systems: [jetstream](https://github.com/bluesky-social/jetstream) and [spacedust](https://spacedust.microcosm.blue/) 6 6 - backfill: [listRecords](https://docs.bsky.app/docs/api/com-atproto-repo-list-records) and [constellation](https://constellation.microcosm.blue/) 7 - - the server stuff: [sqlite](https://jsr.io/@db/sqlite) db, typescript with [codegen](https://www.npmjs.com/package/@atproto/lex-cli), and [deno](https://deno.com/) 7 + - the backend server stuff: [sqlite](https://jsr.io/@db/sqlite) db, typescript with [codegen](https://www.npmjs.com/package/@atproto/lex-cli), and [deno](https://deno.com/) 8 + - frontend: still deno and esbuild and tailwind and react and jsx and typescript (was fun getting these to run on deno) 8 9 9 10 ## Status 10 - (as of 26 aug 2025) 11 + (as of 27 aug 2025) 11 12 currently the state of the project is: 12 13 ### Index Server 13 14 - Database: ··· 15 16 - Registration: 16 17 - not there yet. currently manually adding users 17 18 - onboarding backfill is probably next maybe 19 + - got a fancy new ui (not finished) 18 20 - Indexing: 19 21 - Jetstream: 20 22 - its there, i just need to actually handle each and every record type and insert it to the db (like currently 2 out of 12 or so record collections are being inserted into the db) ··· 34 36 - considering making all of the api routes custom instead of the current situation of having some of the Index server routes be the original unmodified bsky.app routes 35 37 36 38 ### View Server 37 - - pratically unimplemented 38 - - currently mostly just proxies api.bsky.app 39 - - i havent split the DB between the Index server and View server yet 40 - - hydration (resolving `Ref`s, handling partials) will be implemented soon i think 41 - - it should (but not yet) have a ranking system to decide which index server to be prioritized if multiple index servers indexes the same user account. (and also should support both api sets (Bluesky AppView API (legacy/fallback) and Bluesky Index Server API )) 39 + - Registration: 40 + - got a fancy new ui (not finished) 41 + - no backfill yet 42 + - Bsky API Routes: 43 + - currently mostly just proxies api.bsky.app 44 + - Notifications works ! thanks to spacedust 45 + - Following feed is probably next 46 + - Database: 47 + - i havent split the DB between the Index server and View server yet 48 + - Hydration (resolving `Ref`s, handling partials): 49 + - It works! not implemented for all routes yet but it can find a route i think maybe idk 50 + - it does now have a ranking system to decide which index server to be prioritized if multiple index servers indexes the same user account. (and also supports both api sets (Bluesky AppView API (legacy/fallback) and Bluesky Index Server API )) 42 51 43 52 ## Running 44 53 this project is pre-alpha and not intended for general use yet. you are welcome to experiment if you dont mind errors or breaking changes.
+4
shared-landing/app.css
··· 1 + /*@import "tailwindcss";*/ 2 + @tailwind base; 3 + @tailwind components; 4 + @tailwind utilities;
+13
shared-landing/browser/deno.json
··· 1 + { 2 + "compilerOptions": { 3 + "lib": ["dom", "esnext"], 4 + "strict": true 5 + }, 6 + "include": ["*.ts", "*.tsx"], 7 + "lint": { 8 + "rules": { 9 + "tags": ["recommended"], 10 + "exclude": ["no-window"] 11 + } 12 + } 13 + }
+12
shared-landing/browser/landing-index.tsx
··· 1 + import React, { useState } from "https://esm.sh/react@19.1.1"; 2 + import { createRoot, hydrateRoot } from "https://esm.sh/react-dom@19.1.1/client"; 3 + import * as ATPAPI from "https://esm.sh/@atproto/api"; 4 + import { AuthProvider } from "../browser/passauthprovider.tsx"; 5 + import { App } from "../browser/landing-shared.tsx"; 6 + 7 + createRoot(document.getElementById("root")!).render( 8 + <AuthProvider> 9 + <App type="index" /> 10 + </AuthProvider> 11 + ); 12 + //hydrateRoot(document.getElementById("root")!, <App />);
+213
shared-landing/browser/landing-shared.tsx
··· 1 + import React, { useState } from "https://esm.sh/react@19.1.1"; 2 + import { createRoot, hydrateRoot } from "https://esm.sh/react-dom@19.1.1/client"; 3 + import * as ATPAPI from "https://esm.sh/@atproto/api"; 4 + import { AuthProvider } from "./passauthprovider.tsx"; 5 + import Login from "./passlogin.tsx"; 6 + //import "./app.css"; 7 + 8 + console.log("script loaded"); 9 + 10 + const exampleUri = new ATPAPI.AtUri("wow"); 11 + const dummyUsers = [ 12 + { 13 + pfp: "https://i.pravatar.cc/150?u=alice", 14 + displayName: `Alice${exampleUri}`, 15 + handle: "@alice.bsky.social", 16 + }, 17 + { 18 + pfp: "https://i.pravatar.cc/150?u=bob", 19 + displayName: "Bob The Builder", 20 + handle: "@bob.test", 21 + }, 22 + { 23 + pfp: "https://i.pravatar.cc/150?u=carol", 24 + displayName: "Carol", 25 + handle: "@carol.dev", 26 + }, 27 + { 28 + pfp: "https://i.pravatar.cc/150?u=dave", 29 + displayName: "Dave", 30 + handle: "@dave.codes", 31 + }, 32 + { 33 + pfp: "https://i.pravatar.cc/150?u=alice", 34 + displayName: "Alice", 35 + handle: "@alice.bsky.social", 36 + }, 37 + { 38 + pfp: "https://i.pravatar.cc/150?u=bob", 39 + displayName: "Bob The Builder", 40 + handle: "@bob.test", 41 + }, 42 + { 43 + pfp: "https://i.pravatar.cc/150?u=carol", 44 + displayName: "Carol", 45 + handle: "@carol.dev", 46 + }, 47 + { 48 + pfp: "https://i.pravatar.cc/150?u=dave", 49 + displayName: "Dave", 50 + handle: "@dave.codes", 51 + }, 52 + { 53 + pfp: "https://i.pravatar.cc/150?u=alice", 54 + displayName: "Alice", 55 + handle: "@alice.bsky.social", 56 + }, 57 + { 58 + pfp: "https://i.pravatar.cc/150?u=bob", 59 + displayName: "Bob The Builder", 60 + handle: "@bob.test", 61 + }, 62 + { 63 + pfp: "https://i.pravatar.cc/150?u=carol", 64 + displayName: "Carol", 65 + handle: "@carol.dev", 66 + }, 67 + { 68 + pfp: "https://i.pravatar.cc/150?u=dave", 69 + displayName: "Dave", 70 + handle: "@dave.codes", 71 + }, 72 + ]; 73 + 74 + function UserList({ 75 + users, 76 + }: { 77 + users: { 78 + pfp: string; 79 + displayName: string; 80 + handle: string; 81 + }[]; 82 + }) { 83 + return ( 84 + <div className="w-full"> 85 + <h2 className="text-xl font-semibold text-gray-700 mb-4"> 86 + Registered Users ({users.length}) 87 + </h2> 88 + <div className="space-y-4 max-h-[300px] min-h-[300px] overflow-y-scroll"> 89 + {users.map((user) => ( 90 + <div key={user.handle} className="flex items-center space-x-4"> 91 + <img 92 + src={user.pfp} 93 + alt={user.displayName} 94 + className="w-12 h-12 rounded-full bg-gray-200" 95 + /> 96 + <div> 97 + <p className="font-bold text-gray-800">{user.displayName}</p> 98 + <p className="text-sm text-gray-500">{user.handle}</p> 99 + </div> 100 + </div> 101 + ))} 102 + </div> 103 + </div> 104 + ); 105 + } 106 + 107 + function RegistrationForm({ isLoggedIn }: { isLoggedIn: boolean }) { 108 + return ( 109 + <div className="w-full"> 110 + <h2 className="text-xl font-semibold text-gray-700 mb-4"> 111 + Register a new account 112 + </h2> 113 + <p className="text-sm text-gray-500 mb-4"> 114 + You must be logged in with an invite code to register. 115 + </p> 116 + <fieldset 117 + disabled={!isLoggedIn} 118 + className="space-y-4 disabled:opacity-50 disabled:cursor-not-allowed" 119 + > 120 + <div> 121 + <label 122 + htmlFor="handle" 123 + className="block text-sm font-medium text-gray-600" 124 + > 125 + Handle 126 + </label> 127 + <input 128 + type="text" 129 + id="handle" 130 + placeholder="your-handle.bsky.social" 131 + className="mt-1 block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500" 132 + /> 133 + </div> 134 + <div> 135 + <label 136 + htmlFor="email" 137 + className="block text-sm font-medium text-gray-600" 138 + > 139 + Email 140 + </label> 141 + <input 142 + type="email" 143 + id="email" 144 + placeholder="you@example.com" 145 + className="mt-1 block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500" 146 + /> 147 + </div> 148 + <div> 149 + <label 150 + htmlFor="invite" 151 + className="block text-sm font-medium text-gray-600" 152 + > 153 + Invite Code 154 + </label> 155 + <input 156 + type="text" 157 + id="invite" 158 + placeholder="xxxx-xxxx-xxxx-xxxx" 159 + className="mt-1 block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500" 160 + /> 161 + </div> 162 + <button 163 + type="submit" 164 + className="w-full px-4 py-2 rounded-md bg-blue-600 text-white font-semibold shadow-sm hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 disabled:bg-gray-400" 165 + > 166 + Create Account 167 + </button> 168 + </fieldset> 169 + </div> 170 + ); 171 + } 172 + 173 + export function App({ type }: { type: "index" | "view" }) { 174 + const [loggedIn, setLoggedIn] = useState(false); 175 + const capitaltitle = type === "index" ? "Index" : "View"; 176 + 177 + return ( 178 + <div className="min-h-screen flex items-center justify-center bg-gray-100 font-sans p-4"> 179 + <div className="w-full max-w-4xl mx-auto bg-white shadow-2xl rounded-2xl p-8 space-y-8 flex flex-col md:flex-row md:space-y-0 md:space-x-12"> 180 + <div className="flex-1"> 181 + <header className="mb-8"> 182 + <h1 className="text-4xl font-bold text-blue-600"> 183 + Skylite {capitaltitle} Server 184 + </h1> 185 + <p className="text-gray-500"> 186 + A lightweight {capitaltitle} server for the Bluesky network.{`\n`}( 187 + {window.location.hostname}) 188 + </p> 189 + </header> 190 + <UserList users={dummyUsers} /> 191 + </div> 192 + 193 + <div className="flex-1"> 194 + <div className="flex justify-between items-center mb-6"> 195 + <h2 className="text-2xl font-bold text-gray-800"> 196 + {loggedIn ? "Welcome!" : "Get Started"} 197 + </h2> 198 + <Login compact /> 199 + {/* <button 200 + type="button" 201 + onClick={() => setLoggedIn(!loggedIn)} 202 + className="px-5 py-2 rounded-lg font-semibold text-white transition-colors duration-200 bg-blue-500 hover:bg-blue-600" 203 + > 204 + {loggedIn ? "Logout" : "Login"} 205 + </button> */} 206 + </div> 207 + <div className="w-full h-px bg-gray-200 my-6"></div> 208 + <RegistrationForm isLoggedIn={loggedIn} /> 209 + </div> 210 + </div> 211 + </div> 212 + ); 213 + }
+12
shared-landing/browser/landing-view.tsx
··· 1 + import React, { useState } from "https://esm.sh/react@19.1.1"; 2 + import { createRoot, hydrateRoot } from "https://esm.sh/react-dom@19.1.1/client"; 3 + import * as ATPAPI from "https://esm.sh/@atproto/api"; 4 + import { AuthProvider } from "./passauthprovider.tsx"; 5 + import { App } from "./landing-shared.tsx"; 6 + 7 + createRoot(document.getElementById("root")!).render( 8 + <AuthProvider> 9 + <App type="view" /> 10 + </AuthProvider> 11 + ); 12 + //hydrateRoot(document.getElementById("root")!, <App />);
+144
shared-landing/browser/passauthprovider.tsx
··· 1 + import React, { createContext, useState, useEffect, useContext } from 'https://esm.sh/react@19.1.1'; 2 + import { AtpAgent, type AtpSessionData } from 'https://esm.sh/@atproto/api'; 3 + 4 + interface AuthContextValue { 5 + agent: AtpAgent | null; 6 + loginStatus: boolean; 7 + login: (user: string, password: string, service?: string) => Promise<void>; 8 + logout: () => Promise<void>; 9 + loading: boolean; 10 + authed: boolean | undefined; 11 + } 12 + 13 + const AuthContext = createContext<AuthContextValue>({} as AuthContextValue); 14 + 15 + export const AuthProvider = ({ children } : { children: React.ReactNode }) => { 16 + const [agent, setAgent] = useState<AtpAgent | null>(null); 17 + const [loginStatus, setLoginStatus] = useState(false); 18 + const [loading, setLoading] = useState(true); 19 + const [increment, setIncrement] = useState(0); 20 + const [authed, setAuthed] = useState<boolean | undefined>(undefined); 21 + 22 + useEffect(() => { 23 + const initialize = async () => { 24 + try { 25 + const service = localStorage.getItem('service'); 26 + // const user = await AsyncStorage.getItem('user'); 27 + // const password = await AsyncStorage.getItem('password'); 28 + const session = localStorage.getItem("sess"); 29 + 30 + if (service && session) { 31 + console.log("Auto-login service is:", service); 32 + const apiAgent = new AtpAgent({ service }); 33 + try { 34 + if (!apiAgent) { 35 + console.log("Agent is null or undefined"); 36 + return; 37 + } 38 + let sess: AtpSessionData = JSON.parse(session); 39 + console.log("resuming session is:", sess); 40 + const { data } = await apiAgent.resumeSession(sess); 41 + console.log("!!!8!!! agent resume session") 42 + setAgent(apiAgent); 43 + setLoginStatus(true); 44 + setLoading(false); 45 + setAuthed(true); 46 + } catch (e) { 47 + console.log("Failed to resume session" + e); 48 + setLoginStatus(true); 49 + localStorage.removeItem("sess"); 50 + localStorage.removeItem('service'); 51 + const apiAgent = new AtpAgent({ service: 'https://api.bsky.app' }); 52 + setAgent(apiAgent); 53 + setLoginStatus(true); 54 + setLoading(false); 55 + setAuthed(false); 56 + return; 57 + } 58 + } 59 + else { 60 + const apiAgent = new AtpAgent({ service: 'https://api.bsky.app' }); 61 + setAgent(apiAgent); 62 + setLoginStatus(true); 63 + setLoading(false); 64 + setAuthed(false); 65 + } 66 + } catch (e) { 67 + console.log('Failed to auto-login:', e); 68 + } finally { 69 + setLoading(false); 70 + } 71 + }; 72 + 73 + initialize(); 74 + }, [increment]); 75 + 76 + const login = async (user: string, password: string, service: string = 'https://bsky.social') => { 77 + try { 78 + let sessionthing 79 + const apiAgent = new AtpAgent({ 80 + service: service, 81 + persistSession: (evt, sess) => { 82 + sessionthing = sess; 83 + }, 84 + }); 85 + await apiAgent.login({ identifier: user, password }); 86 + console.log("!!!8!!! agent logged on") 87 + 88 + localStorage.setItem('service', service); 89 + // await AsyncStorage.setItem('user', user); 90 + // await AsyncStorage.setItem('password', password); 91 + if (sessionthing) { 92 + localStorage.setItem('sess', JSON.stringify(sessionthing)); 93 + } else { 94 + localStorage.setItem('sess', '{}'); 95 + } 96 + 97 + setAgent(apiAgent); 98 + setLoginStatus(true); 99 + setAuthed(true); 100 + } catch (e) { 101 + console.error('Login failed:', e); 102 + } 103 + }; 104 + 105 + const logout = async () => { 106 + if (!agent) { 107 + console.error("Agent is null or undefined"); 108 + return; 109 + } 110 + setLoading(true); 111 + try { 112 + // check if its even in async storage before removing 113 + if (localStorage.getItem('service') && localStorage.getItem('sess')) { 114 + localStorage.removeItem('service'); 115 + localStorage.removeItem('sess'); 116 + } 117 + await agent.logout(); 118 + console.log("!!!8!!! agent logout") 119 + setLoginStatus(false); 120 + setAuthed(undefined); 121 + await agent.com.atproto.server.deleteSession(); 122 + console.log("!!!8!!! agent deltesession") 123 + //setAgent(null); 124 + setIncrement(increment + 1); 125 + } catch (e) { 126 + console.error("Logout failed:", e); 127 + } finally { 128 + setLoading(false); 129 + } 130 + }; 131 + 132 + // why the hell are we doing this 133 + /*if (loading) { 134 + return <div><span>Laoding...ae</span></div>; 135 + }*/ 136 + 137 + return ( 138 + <AuthContext.Provider value={{ agent, loginStatus, login, logout, loading, authed }}> 139 + {children} 140 + </AuthContext.Provider> 141 + ); 142 + }; 143 + 144 + export const useAuth = () => useContext(AuthContext);
+214
shared-landing/browser/passlogin.tsx
··· 1 + import React, { useEffect, useState, useRef } from 'https://esm.sh/react@19.1.1'; 2 + import { useAuth } from './passauthprovider.tsx'; 3 + 4 + interface LoginProps { 5 + compact?: boolean; 6 + } 7 + 8 + export default function Login({ compact = false }: LoginProps) { 9 + const { loginStatus, login, logout, loading, authed } = useAuth(); 10 + const [user, setUser] = useState(''); 11 + const [password, setPassword] = useState(''); 12 + const [serviceURL, setServiceURL] = useState('bsky.social'); 13 + const [showLoginForm, setShowLoginForm] = useState(false); 14 + const formRef = useRef<HTMLDivElement>(null); 15 + 16 + useEffect(() => { 17 + function handleClickOutside(event: MouseEvent) { 18 + if (formRef.current && !formRef.current.contains(event.target as Node)) { 19 + setShowLoginForm(false); 20 + } 21 + } 22 + 23 + if (showLoginForm) { 24 + document.addEventListener('mousedown', handleClickOutside); 25 + } 26 + 27 + return () => { 28 + document.removeEventListener('mousedown', handleClickOutside); 29 + }; 30 + }, [showLoginForm]); 31 + 32 + if (loading) { 33 + return ( 34 + <div className="flex items-center justify-center p-0 text-gray-500 dark:text-gray-400"> 35 + Loading... 36 + </div> 37 + ); 38 + } 39 + 40 + if (compact) { 41 + if (authed) { 42 + return ( 43 + <button 44 + onClick={logout} 45 + className="text-sm bg-gray-600 hover:bg-gray-700 text-white rounded px-3 py-1 font-medium transition-colors" 46 + > 47 + Log out 48 + </button> 49 + ); 50 + } else { 51 + return ( 52 + <div className="relative" ref={formRef}> 53 + <button 54 + onClick={() => setShowLoginForm(!showLoginForm)} 55 + className="text-sm bg-gray-600 hover:bg-gray-700 text-white rounded px-3 py-1 font-medium transition-colors" 56 + > 57 + Log in 58 + </button> 59 + {showLoginForm && ( 60 + <div className="absolute top-full right-0 mt-2 w-80 bg-white dark:bg-gray-900 rounded-lg shadow-lg border border-gray-200 dark:border-gray-700 p-4 z-50"> 61 + <form 62 + onSubmit={e => { 63 + e.preventDefault(); 64 + login(user, password, `https://${serviceURL}`); 65 + setShowLoginForm(false); 66 + }} 67 + className="flex flex-col gap-3" 68 + > 69 + <p className="text-xs text-gray-500 dark:text-gray-400">sorry for the temporary login,<br />oauth will come soon enough i swear</p> 70 + <input 71 + type="text" 72 + placeholder="Username" 73 + value={user} 74 + onChange={e => setUser(e.target.value)} 75 + className="px-3 py-2 rounded border border-gray-300 dark:border-gray-700 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 text-sm focus:outline-none focus:ring-2 focus:ring-blue-500" 76 + autoComplete="username" 77 + /> 78 + <input 79 + type="password" 80 + placeholder="Password" 81 + value={password} 82 + onChange={e => setPassword(e.target.value)} 83 + className="px-3 py-2 rounded border border-gray-300 dark:border-gray-700 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 text-sm focus:outline-none focus:ring-2 focus:ring-blue-500" 84 + autoComplete="current-password" 85 + /> 86 + <input 87 + type="text" 88 + placeholder="bsky.social" 89 + value={serviceURL} 90 + onChange={e => setServiceURL(e.target.value)} 91 + className="px-3 py-2 rounded border border-gray-300 dark:border-gray-700 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 text-sm focus:outline-none focus:ring-2 focus:ring-blue-500" 92 + /> 93 + <button 94 + type="submit" 95 + className="bg-gray-600 hover:bg-gray-700 text-white rounded px-4 py-2 font-medium text-sm transition-colors" 96 + > 97 + Log in 98 + </button> 99 + </form> 100 + </div> 101 + )} 102 + </div> 103 + ); 104 + } 105 + } 106 + 107 + return ( 108 + <div className="p-6 bg-gray-100 dark:bg-gray-900 rounded-xl shadow border border-gray-200 dark:border-gray-800 mt-6 mx-4"> 109 + {authed ? ( 110 + <div className="flex flex-col items-center justify-center text-center"> 111 + <p className="text-lg font-semibold mb-6 text-gray-800 dark:text-gray-100">You are logged in!</p> 112 + <button 113 + onClick={logout} 114 + className="bg-gray-600 hover:bg-gray-700 text-white rounded px-6 py-2 font-semibold text-base transition-colors" 115 + > 116 + Log out 117 + </button> 118 + </div> 119 + ) : ( 120 + <form 121 + onSubmit={e => { 122 + e.preventDefault(); 123 + login(user, password, `https://${serviceURL}`); 124 + }} 125 + className="flex flex-col gap-4" 126 + > 127 + <p className="text-sm text-gray-500 dark:text-gray-400 mb-2">sorry for the temporary login,<br />oauth will come soon enough i swear</p> 128 + <input 129 + type="text" 130 + placeholder="Username" 131 + value={user} 132 + onChange={e => setUser(e.target.value)} 133 + className="px-3 py-2 rounded border border-gray-300 dark:border-gray-700 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 text-base focus:outline-none focus:ring-2 focus:ring-blue-500" 134 + autoComplete="username" 135 + /> 136 + <input 137 + type="password" 138 + placeholder="Password" 139 + value={password} 140 + onChange={e => setPassword(e.target.value)} 141 + className="px-3 py-2 rounded border border-gray-300 dark:border-gray-700 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 text-base focus:outline-none focus:ring-2 focus:ring-blue-500" 142 + autoComplete="current-password" 143 + /> 144 + <input 145 + type="text" 146 + placeholder="bsky.social" 147 + value={serviceURL} 148 + onChange={e => setServiceURL(e.target.value)} 149 + className="px-3 py-2 rounded border border-gray-300 dark:border-gray-700 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 text-base focus:outline-none focus:ring-2 focus:ring-blue-500" 150 + /> 151 + <button 152 + type="submit" 153 + className="bg-gray-600 hover:bg-gray-700 text-white rounded px-6 py-2 font-semibold text-base transition-colors mt-2" 154 + > 155 + Log in 156 + </button> 157 + </form> 158 + )} 159 + </div> 160 + ); 161 + } 162 + 163 + export const ProfileThing = () => { 164 + const { agent, loading, loginStatus, authed } = useAuth(); 165 + const [response, setResponse] = useState<any>(null); 166 + 167 + useEffect(() => { 168 + if (loginStatus && agent && !loading && authed) { 169 + fetchUser(); 170 + } 171 + }, [loginStatus, agent, loading, authed]); 172 + 173 + const fetchUser = async () => { 174 + if (!agent) { 175 + console.error("Agent is null or undefined"); 176 + return; 177 + } 178 + const res = await agent.app.bsky.actor.getProfile({ 179 + actor: agent.assertDid, 180 + }); 181 + setResponse(res.data); 182 + }; 183 + 184 + if (!authed) { 185 + return ( 186 + <div className="inline-block"> 187 + <span className="text-gray-100 text-base font-medium px-1.5">Login</span> 188 + </div> 189 + ); 190 + } 191 + 192 + if (!response) { 193 + return ( 194 + <div className="flex flex-col items-start gap-1.5"> 195 + <span className="w-5 h-5 border-2 border-gray-200 dark:border-gray-600 border-t-transparent rounded-full animate-spin inline-block" /> 196 + <span className="text-gray-100">Loading... </span> 197 + </div> 198 + ); 199 + } 200 + 201 + return ( 202 + <div className="flex flex-row items-start gap-1.5"> 203 + <img 204 + src={response?.avatar} 205 + alt="avatar" 206 + className="w-[30px] h-[30px] rounded-full object-cover" 207 + /> 208 + <div> 209 + <div className="text-gray-100 text-xs">{response?.displayName}</div> 210 + <div className="text-gray-100 text-xs">@{response?.handle}</div> 211 + </div> 212 + </div> 213 + ); 214 + };
+79
shared-landing/build.ts
··· 1 + import * as esbuild from "npm:esbuild@0.20.2"; 2 + import { ReactCompilerEsbuildPlugin } from "./reactcompileresbuild.ts"; 3 + import { cache } from "npm:esbuild-plugin-cache"; 4 + import tailwindconfig from "../tailwind.config.ts"; 5 + import tailwindcss from "https://esm.sh/tailwindcss@3"; 6 + import postcss from "https://esm.sh/postcss@8"; 7 + import autoprefixer from "https://esm.sh/autoprefixer@10"; 8 + 9 + const rawcss = await Deno.readTextFile("./shared-landing/app.css"); 10 + 11 + // @ts-ignore its fiiine 12 + const cssResult = await postcss([ 13 + tailwindcss(tailwindconfig), 14 + autoprefixer(), 15 + ]).process(rawcss, { 16 + from: "./shared-landing/app.css", 17 + map: false, 18 + }); 19 + 20 + // helper build function 21 + async function build(entry: string) { 22 + const template = await Deno.readTextFile( 23 + `./shared-landing/template-${entry}.html` 24 + ); 25 + const importmap = { 26 + imports: { 27 + "react/jsx-runtime": "https://esm.sh/react@19.1.1/jsx-runtime", 28 + "react/compiler-runtime": "https://esm.sh/react@19.1.1/compiler-runtime", 29 + }, 30 + }; 31 + 32 + const result = await esbuild.build({ 33 + entryPoints: [`./shared-landing/browser/landing-${entry}.tsx`], 34 + bundle: true, 35 + format: "esm", 36 + jsx: "transform", 37 + write: false, // keep in memory 38 + loader: { ".tsx": "tsx" }, 39 + jsxFactory: "React.createElement", 40 + jsxFragment: "React.Fragment", 41 + platform: "browser", 42 + external: ["react/jsx-runtime", "react/compiler-runtime"], 43 + plugins: [ 44 + cache({ importmap, directory: "./cache" }), 45 + ReactCompilerEsbuildPlugin({ 46 + filter: /\.tsx?$/, 47 + sourceMaps: true, 48 + runtimeModulePath: "https://esm.sh/react@19.1.1/jsx-runtime", 49 + }), 50 + ], 51 + }); 52 + 53 + const js = result.outputFiles[0].text; 54 + const html = template.replace( 55 + "<!--SCRIPT-INJECT-->", 56 + `<script type="module" src="/landing-${entry}.js"></script>` 57 + ); 58 + 59 + return { js, html, css: cssResult.css }; 60 + } 61 + 62 + // public compile function 63 + export async function compile(target: "index" | "view") { 64 + return await build(target); 65 + } 66 + 67 + // watch loop 68 + export async function devWatch( 69 + target: "index" | "view", 70 + onBuild: (data: { js: string; html: string; css: string }) => void 71 + ) { 72 + for await (const event of Deno.watchFs(".")) { 73 + if (event.paths.some((p) => p.endsWith(".tsx"))) { 74 + console.log("Rebuilding bundle…"); 75 + const data = await compile(target); 76 + onBuild(data); 77 + } 78 + } 79 + }
+85
shared-landing/reactcompileresbuild.ts
··· 1 + //https://gist.github.com/sikanhe/f9ac68dd4c78c914c29cc98e7b875466 2 + import { readFileSync } from "node:fs" 3 + import * as babel from "npm:@babel/core" 4 + //import BabelPluginReactCompiler from "npm:babel-plugin-react-compiler" 5 + import BabelPluginReactCompiler from "npm:babel-plugin-react-compiler" 6 + import * as esbuild from "npm:esbuild@0.20.2"; 7 + import QuickLRU from "npm:quick-lru" 8 + 9 + export function ReactCompilerEsbuildPlugin({ 10 + filter, 11 + sourceMaps, 12 + runtimeModulePath, 13 + }: { filter: RegExp; sourceMaps: boolean; runtimeModulePath: string }): esbuild.Plugin { 14 + return { 15 + name: "esbuild-react-compiler-plugin", 16 + setup(build) { 17 + // Cache previous outputs for incremental rebuilds 18 + const buildCache = new QuickLRU<string, string>({ maxSize: 1000 }) 19 + 20 + let timings: number[] = [] 21 + 22 + build.onEnd(() => { 23 + if (timings.length < 1) return 24 + 25 + const totalTime = timings.reduce((sum, x) => sum + x, 0).toFixed(0) 26 + console.log(`[⚛️ React Compiler] ${timings.length} files changed`) 27 + console.log(`[⚛️ React Compiler] Used ${totalTime} ms`) 28 + 29 + timings = [] 30 + }) 31 + 32 + build.onLoad({ filter, namespace: "" }, (args) => { 33 + const contents = readFileSync(args.path, "utf8") 34 + 35 + const t0 = performance.now() 36 + 37 + if (buildCache.has(contents)) { 38 + return { 39 + contents: buildCache.get(contents), 40 + loader: "js", 41 + } 42 + } 43 + 44 + const output = build.esbuild.transformSync(contents, { 45 + loader: "tsx", 46 + jsx: "automatic", 47 + define: build.initialOptions.define, 48 + target: build.initialOptions.target, 49 + }) 50 + 51 + const transformResult = babel.transformSync(output.code, { 52 + plugins: [ 53 + // Warning: using string config here (ie 'babel-plugin-react-compiler') instead of the directly 54 + // imported object is much slower than directly passing the plugin object because 55 + // Babel has to resolve the plugin file from node_modules 56 + [ 57 + BabelPluginReactCompiler, 58 + { 59 + runtimeModule: runtimeModulePath, 60 + }, 61 + ], 62 + ], 63 + filename: args.path, 64 + caller: { 65 + name: "esbuild-react-compiler-plugin", 66 + supportsStaticESM: true, 67 + }, 68 + // TODO: figure out sourcemap setting and chaining 69 + sourceMaps, 70 + }) 71 + 72 + timings.push(performance.now() - t0) 73 + 74 + if (transformResult?.code) { 75 + buildCache.set(contents, transformResult?.code) 76 + } 77 + 78 + return { 79 + contents: transformResult?.code ?? undefined, 80 + loader: "js", 81 + } 82 + }) 83 + }, 84 + } 85 + }
+14
shared-landing/template-index.html
··· 1 + <!DOCTYPE html> 2 + <html lang="en"> 3 + <head> 4 + <meta charset="UTF-8" /> 5 + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> 6 + <title>Skylite Index Server</title> 7 + <!-- <script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script> --> 8 + <!--SCRIPT-INJECT--> 9 + <link href="./app.css" rel="stylesheet"> 10 + </head> 11 + <body class="bg-gray-100 min-h-screen flex items-center justify-center"> 12 + <div id="root"></div> 13 + </body> 14 + </html>
+14
shared-landing/template-view.html
··· 1 + <!DOCTYPE html> 2 + <html lang="en"> 3 + <head> 4 + <meta charset="UTF-8" /> 5 + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> 6 + <title>Skylite View Server</title> 7 + <!-- <script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script> --> 8 + <!--SCRIPT-INJECT--> 9 + <link href="./app.css" rel="stylesheet"> 10 + </head> 11 + <body class="bg-gray-100 min-h-screen flex items-center justify-center"> 12 + <div id="root"></div> 13 + </body> 14 + </html>
+11
tailwind.config.ts
··· 1 + /** @type {import('npm:tailwindcss').Config} */ 2 + export default { 3 + content: ["./**/*.{tsx,html}"], // make sure all your HTML/JSX paths are here 4 + theme: { 5 + extend: {}, 6 + }, 7 + plugins: [ 8 + // add Tailwind UI plugins if you want, like forms/typography 9 + // require("@tailwindcss/forms"), etc. 10 + ], 11 + };
+3 -1
utils/server.ts
··· 155 155 collection: string, 156 156 rkey: string 157 157 ): Promise<GetRecord> { 158 - const url = `${config.slingshot}/xrpc/com.atproto.repo.getRecord?repo=${did}&collection=${collection}&rkey=${rkey}`; 158 + const identity = await resolveIdentity(did); 159 + //const url = `${config.slingshot}/xrpc/com.atproto.repo.getRecord?repo=${did}&collection=${collection}&rkey=${rkey}`; 160 + const url = `${identity.pds}/xrpc/com.atproto.repo.getRecord?repo=${did}&collection=${collection}&rkey=${rkey}`; 159 161 const result = (await cachedFetch(url)) as GetRecord; 160 162 return result as GetRecord; 161 163 }
+1
utils/sharders.ts
··· 242 242 wantedSubjects: string[]; 243 243 wantedSubjectDids: string[]; 244 244 wantedSources: string[]; 245 + instant: string[]; 245 246 } 246 247 247 248 export class JetstreamManager extends ShardedConnectionManager<JetstreamParams> {
+109 -58
viewserver.ts
··· 24 24 import { uncid } from "./indexserver.ts"; 25 25 import { getAuthenticatedDid } from "./utils/auth.ts"; 26 26 27 + const temporarydevelopmentblockednotiftypes: ATPAPI.AppBskyNotificationListNotifications.Notification["reason"][] = [ 28 + //'like', 29 + //'repost', 30 + //'follow', 31 + //'mention', 32 + //'reply', 33 + //'quote', 34 + //'starterpack-joined', 35 + //'liked-via-repost', 36 + //'repost-via-repost', 37 + ]; 38 + 27 39 export interface ViewServerConfig { 28 40 baseDbPath: string; 29 41 systemDbPath: string; ··· 35 47 cid: string | null; 36 48 rev: string | null; 37 49 createdat: number | null; 38 - indexedat: number; 50 + indexedAt: number; 39 51 json: string | null; 40 52 } 41 53 interface GeneratorRow extends BaseRow { ··· 368 380 } 369 381 370 382 case "app.bsky.actor.getProfiles": { 371 - const jsonTyped = 383 + const jsonhalfTyped = 372 384 jsonUntyped as ViewServerTypes.AppBskyActorGetProfiles.QueryParams; 373 - 385 + const actors = jsonhalfTyped.actors as string[] | string 386 + const queryactors = Array.isArray(actors) 387 + ? actors 388 + : [actors]; 389 + //console.log("queryactors:",jsonTyped.actors) 374 390 const response: ViewServerTypes.AppBskyActorGetProfiles.OutputSchema = { 375 - profiles: (await this.resolveGetProfiles(jsonTyped.actors)) ?? [], 391 + profiles: (await this.resolveGetProfiles(queryactors)) ?? [], 376 392 }; 377 393 378 394 return new Response(JSON.stringify(response), { ··· 465 481 jsonUntyped as ViewServerTypes.AppBskyNotificationListNotifications.QueryParams; 466 482 467 483 const response: ViewServerTypes.AppBskyNotificationListNotifications.OutputSchema = 468 - await this.queryNotificationsList(authdid, jsonTyped.cursor); 484 + await this.queryNotificationsList(authdid, jsonTyped.cursor, jsonTyped.limit); 469 485 470 486 return new Response(JSON.stringify(response), { 471 487 headers: withCors({ "Content-Type": "application/json" }), ··· 719 735 } 720 736 async queryNotificationsList( 721 737 did: string, 722 - cursor?: string 738 + cursor?: string, 739 + limit?: number 723 740 ): Promise<ATPAPI.AppBskyNotificationListNotifications.OutputSchema> { 724 741 if (!this.handlesDid(did)) { 725 742 return { notifications: [] }; ··· 729 746 return { notifications: [] }; 730 747 } 731 748 732 - const NOTIFS_LIMIT = 30; 749 + const NOTIFS_LIMIT = limit ?? 30; 750 + const offset = cursor ? parseInt(cursor, 10) : 0; 751 + 733 752 const mapReason = ( 734 753 field: string 735 754 ): ··· 777 796 778 797 // --- Build Query --- 779 798 let query = ` 780 - SELECT srcuri, suburi, srcfield, indexedat 799 + SELECT srcuri, suburi, srcfield, indexedAt 781 800 FROM backlink_skeleton 782 801 WHERE 783 802 -- Find actions targeting the user's content or profile 784 803 (suburi LIKE ? OR suburi = ?) 785 804 -- Exclude notifications from the user themselves 786 805 AND srcuri NOT LIKE ? 806 + ORDER BY indexedAt DESC, srcuri DESC 807 + LIMIT ? OFFSET ? 787 808 `; 788 - const params: (string | number)[] = [`at://${did}/%`, did, `at://${did}/%`]; 809 + const params: (string | number)[] = [ 810 + `at://${did}/%`, 811 + did, 812 + `at://${did}/%`, 813 + NOTIFS_LIMIT, 814 + offset 815 + ]; 789 816 790 - if (cursor) { 791 - const [indexedat, srcuri] = cursor.split("::"); 792 - if (indexedat && srcuri) { 793 - query += ` AND (indexedat < ? OR (indexedat = ? AND srcuri < ?))`; 794 - params.push(parseInt(indexedat, 10), parseInt(indexedat, 10), srcuri); 795 - } 796 - } 817 + // if (cursor) { 818 + // const [indexedAt, srcuri] = cursor.split("::"); 819 + // if (indexedAt && srcuri && !Number.isNaN(+indexedAt)) { 820 + // query += ` AND (indexedAt < ? OR (indexedAt = ? AND srcuri < ?))`; 821 + // params.push(+indexedAt, +indexedAt, srcuri); 822 + // } 823 + // } 797 824 798 - query += ` ORDER BY indexedat DESC, srcuri DESC LIMIT ${NOTIFS_LIMIT}`; 825 + // query += ` ORDER BY indexedAt DESC, srcuri DESC LIMIT ${NOTIFS_LIMIT}`; 799 826 800 827 // --- Fetch and Process --- 801 828 const stmt = db.prepare(query); 802 829 const rows = stmt.all(...params) as { 803 830 srcuri: string; 804 - suburi: string; 831 + suburi: string; // might be uri, might be just a did 805 832 srcfield: string; 806 - indexedat: number; 833 + indexedAt: number; 807 834 }[]; 808 835 809 836 const notificationPromises = rows.map(async (row) => { 810 - const reason = mapReason(row.srcfield); 811 - // Skip if it's a backlink type we don't have a notification for 812 - if (!reason) return null; 837 + try { 838 + const reason = mapReason(row.srcfield); 839 + // i have a hunch that follow notifs are crashing the client 840 + if (!reason || temporarydevelopmentblockednotiftypes.includes(reason)) { 841 + return null; 842 + } 843 + // Skip if it's a backlink type we don't have a notification for 844 + if (!reason) return null; 845 + 846 + const srcURI = new AtUri(row.srcuri); 847 + const [authorRes, recordRes] = await Promise.allSettled([ 848 + this.resolveProfileView(srcURI.host, ""), 849 + getSlingshotRecord(srcURI.host, srcURI.collection, srcURI.rkey), 850 + ]); 851 + 852 + const author = authorRes.status === "fulfilled" ? authorRes.value : null; 853 + const getrecord = recordRes.status === "fulfilled" ? recordRes.value : null; 854 + 855 + const reasonsubject = 856 + row.suburi.startsWith("at://") ? row.suburi : `at://${row.suburi}`; 857 + // If we can't resolve the author or the record, we can't form a valid notification 858 + if (!author || !getrecord || !reason || !reasonsubject) return null; 813 859 814 - const srcURI = new AtUri(row.srcuri); 815 - const [author, getrecord] = await Promise.all([ 816 - await this.resolveProfileView(srcURI.host, ""), 817 - await getSlingshotRecord(srcURI.host, srcURI.collection, srcURI.rkey), 818 - // TODO: shit histhi shitshit 819 - //this.queryProfile(authorDid), 820 - // Assumes you have a method to fetch the raw record content by URI and CID 821 - // This would fetch the like, repost, follow, or post record itself. 822 - //this.getRecord(row.srcuri, row.srccid), 823 - ]); 824 - const reasonsubject = row.suburi; 825 - // If we can't resolve the author or the record, we can't form a valid notification 826 - if (!author || !getrecord || !reason || !reasonsubject) return null; 860 + author.viewer = { 861 + "muted": false, 862 + "blockedBy": false, 863 + //"following": 864 + } // TODO: proper mutes and blocks here 827 865 828 - return { 829 - uri: row.srcuri, 830 - cid: getrecord.cid, 831 - author: author, 832 - reason: reason, 833 - // The reasonSubject is the URI of the post that was liked, reposted, or replied to 834 - reasonSubject: reasonsubject, 835 - record: getrecord.value, 836 - isRead: false, // Placeholder for read-state logic 837 - indexedAt: new Date(/*row.indexedat*/).toISOString(), 838 - // labels: [], // Placeholder for label logic 839 - } as ATPAPI.AppBskyNotificationListNotifications.Notification; 866 + if (!getrecord?.value?.$type) getrecord.value.$type = srcURI.collection 867 + return { 868 + uri: row.srcuri, 869 + cid: getrecord.cid, 870 + author: author, 871 + reason: reason, 872 + // The reasonSubject is the URI of the post that was liked, reposted, or replied to 873 + reasonSubject: reasonsubject, 874 + record: getrecord.value, 875 + isRead: false, // Placeholder for read-state logic 876 + indexedAt: new Date(row.indexedAt).toISOString(), 877 + labels: [], // Placeholder for label logic 878 + } as ATPAPI.AppBskyNotificationListNotifications.Notification; 879 + } catch (e) {console.log("error:",e)} 840 880 }); 841 881 842 - const notifications = (await Promise.all(notificationPromises)).filter( 843 - (n): n is ATPAPI.AppBskyNotificationListNotifications.Notification => !!n 844 - ); 882 + const seen = new Set<string>(); 883 + const notifications = (await Promise.all(notificationPromises)) 884 + .filter((n): n is ATPAPI.AppBskyNotificationListNotifications.Notification => { 885 + if (!n) return false; 886 + const key = `${n.uri}:${n.reason}:${n.reasonSubject}`; 887 + if (seen.has(key)) return false; 888 + seen.add(key); 889 + return true; 890 + }); 845 891 846 892 // --- Create next cursor --- 847 - const lastItem = rows[rows.length - 1]; 848 - const nextCursor = lastItem 849 - ? `${lastItem.indexedat}::${lastItem.srcuri}` 850 - : undefined; 893 + const nextCursor:number = Number(offset) + Number(limit ?? 0) 894 + // const lastItem = rows[rows.length - 1]; 895 + // const nextCursor = lastItem 896 + // ? `${lastItem.indexedAt}::${lastItem.srcuri}` 897 + // : undefined; 851 898 852 899 return { 853 - cursor: nextCursor, 900 + cursor: `${nextCursor}`,//nextCursor, 854 901 notifications: notifications, 902 + priority:false, 903 + seenAt: new Date().toISOString() 855 904 }; 856 905 } 857 906 async resolveProfileView( ··· 1140 1189 //"did:plc:zzhzjga3ab5fcs2vnsv2ist3", 1141 1190 //"did:plc:jz4ibztn56hygfld6j6zjszg", 1142 1191 ], 1192 + instant: ["true"] 1143 1193 }); 1144 1194 //await connectToConstellation(this.did, this.db); 1145 1195 } ··· 1176 1226 did: string, 1177 1227 kind: "skylite_index" | "bsky_appview" 1178 1228 ): Promise<string | null> { 1179 - const identity = await resolveIdentity(did); 1180 - const declUrl = `${identity.pds}/xrpc/com.atproto.repo.getRecord?repo=${identity.did}&collection=party.whey.skylite.declaration&rkey=self`; 1229 + //const identity = await resolveIdentity(did); 1230 + //const declUrl = `${identity.pds}/xrpc/com.atproto.repo.getRecord?repo=${identity.did}&collection=party.whey.skylite.declaration&rkey=self`; 1181 1231 1182 - const data = (await cachedFetch(declUrl)) as any; 1232 + //const data = (await cachedFetch(declUrl)) as any; 1233 + const data = await getSlingshotRecord(did,"party.whey.skylite.declaration","self") as any; 1183 1234 //if (!resp.ok) throw new Error(`Failed to fetch declaration for ${did}`); 1184 1235 //const data = await resp.json(); 1185 1236